На основе 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 и ... делает своего рода проблему с производительностью.
Теперь я просто хочу знать, какие способы оптимизации производительности многоуровневой архитектуры?
метода, требующая не может вызвать проблемы с производительностью. Если у вас «есть» проблема с производительностью, вам нужно определить, где именно происходит узкое место. Если вы этого не сделаете, забудьте все это. Преждевременная оптимизация - это корень всего зла. –
, тогда вы можете увидеть презентацию, которая мне понравилась выше, чтобы увидеть образец. – Ehsan
@HighCore Это неправда. Если вызывающие методы не приходят со стоимостью, не было бы причин для входящих вызовов. Я не могу сказать, является ли вызов вызовом в вопросе, но ваше утверждение о том, что «вызывающие методы никогда не могут вызвать проблему с производительностью», просто неверно. –