2014-02-17 5 views
0

На основе this презентации (для более подробной информации) кажется, что чрезмерные слои и сборка могут вызвать проблемы с производительностью. посмотрите на данном сценарии, речь идет о передаче сообщений на «Контакты» части приложения:Больше проблем и проблем с производительностью

[HttpPost] 
public ActionResult Create(ContactViewModel contactViewModel) 
{ 
    var request = new CreateContactRequest(contactViewModel); 
    _contactService.CreateContact(request); 
    return View(); 
} 

это просто действие контроллера MVC, чтобы создать контакт по шаблону ответа на запрос, теперь о методе обслуживания имп в слое службы у меня есть этот кусок кода:

public CreateContactResponse CreateContact(CreateContactRequest request) 
{ 
    var response = new CreateContactResponse(); 
    var contact = request.ContactViewModel.ConvertToContactModel(); 
    try 
    { 
     _contactRepository.Add(contact); 
     _unitOfWork.Commit(); 
     response.Success = true; 
     response.MessageType = MessageType.Success; 
     response.Message = ServiceMessages.GeneralServiceSuccessMessageOnCreation; 
     _logger.Log(response.Message); 
    } 
    catch (Exception exception) 
    { 
     response.Success = false; 
     response.MessageType = MessageType.UnSuccess; 
     response.Message = ServiceMessages.GeneralServiceErrorMessageOnCreation; 
     _logger.Error(exception.Message); 
    } 
    return response; 
} 

методы обслуживания преобразующего модель представления для моделирования методом расширения и вызывает ниже метод NHibernate сохраняться в базе данных в хранилище слоя:

public void Add(T entity) 
{ 
    SessionFactory.GetCurrentSession().Save(entity); 
} 

и, наконец, после фиксации по шаблону UnitOfWork, он сохраняется в базе данных. Я действительно уменьшил количество кода и весь процесс создания этого простого контакта в базе данных. эта реализация кода была выполнена в Domain Driven Design и ее шаблонах. это, очевидно, является более удобным для чтения и ремонтопригодно и расширяемым для каждого изменения, но я также могу написать что-то вроде этого для создания контакта:

[HttpPost] 
public ActionResult Create(Contact contact) 
{ 
    SessionFactory.GetCurrentSession().Save(contact); 
    return View(); 
} 

в этом виде реализации, нет необходимости идти бросить пять слоев упорствовать контакт, да !? Я знаю, что для создания контакта и такого простого бизнеса второй имп является лучшим, но для сложных предприятий невозможно иметь действие, чтобы справляться со всем. определенно называя A by B и B на C и ... делает своего рода проблему с производительностью.

Теперь я просто хочу знать, какие способы оптимизации производительности многоуровневой архитектуры?

+0

метода, требующая не может вызвать проблемы с производительностью. Если у вас «есть» проблема с производительностью, вам нужно определить, где именно происходит узкое место. Если вы этого не сделаете, забудьте все это. Преждевременная оптимизация - это корень всего зла. –

+0

, тогда вы можете увидеть презентацию, которая мне понравилась выше, чтобы увидеть образец. – Ehsan

+2

@HighCore Это неправда. Если вызывающие методы не приходят со стоимостью, не было бы причин для входящих вызовов. Я не могу сказать, является ли вызов вызовом в вопросе, но ваше утверждение о том, что «вызывающие методы никогда не могут вызвать проблему с производительностью», просто неверно. –

ответ

Смежные вопросы