.Net ORM / Производительность платформы бизнес-объектов - PullRequest
4 голосов
/ 30 октября 2009

В настоящее время я работаю с пользовательским слоем бизнес-объекта (с использованием шаблона фасада), в котором свойства объекта загружаются из хранимых процедур, а также предоставляют место для бизнес-логики. Это хорошо сработало в попытке перевести нашу кодовую базу на более многоуровневую и стандартизированную модель приложения, но мы считаем, что этот подход является скорее эволюционным шагом, чем постоянным.

В настоящее время я пытаюсь перейти к более формальной структуре, чтобы некоторые архитектурные решения не были моими собственными. В прошлом я работал с CSLA и Linq для SQL, и хотя мне нравятся многие решения по проектированию в CLSA, я нахожу его немного раздутым для моих вкусов, и что Linq to SQL может не иметь желаемой производительности. Меня интересует популярность NHibernate и стремление Linq к Entity, однако производительность является ключевой проблемой, поскольку существуют случаи, когда необходимо извлекать большое количество записей одновременно (> 15 КБ) (пожалуйста, не обсуждайте причину для этого) и мне любопытно, насколько производительность выглядит наилучшим выбором для принятия формальной .Net Object Framwork?

ПРИМЕЧАНИЕ: Это будет использоваться в основном в приложениях Winform и WPF.

Дубликат: https://stackoverflow.com/questions/146087/best-performing-orm-for-net

Ответы [ 3 ]

8 голосов
/ 04 декабря 2009

http://ormbattle.net - тест производительности там, кажется, почти то, что вы хотите увидеть.

Вы должны взглянуть на материализационный тест (производительность выборки большого количества предметов - именно то, что он показывает); Более того, вы можете сравнить производительность ORM с производительностью почти идеального SQL на обычном ADO.NET, делая то же самое.

1 голос
/ 04 ноября 2009

Производительность O / R mapper будет сильно зависеть от того, как разработано ваше приложение и как вы отображаете бизнес-объекты. Например, вы можете легко снизить производительность, отложив загрузку дочернего объекта в цикле, так что 1 выбор из 1000 объектов превращается в 1001 выбор (google n + 1 выбор).

Один из самых больших приростов производительности при использовании картографирования операций ввода / вывода связан с производительностью разработчиков, которая зачастую важнее производительности приложений. Производительность приложений обычно приемлема для конечных пользователей для большинства приложений, работающих на новейшем оборудовании. Производительность разработчиков остается узким местом, независимо от того, насколько Mountain Dew применяется к этой проблеме. : -)

1 голос
/ 30 октября 2009

С любой ORM вы получите ускорение из коробки через Уровень 1 в кеше процедур. Особенно с грузами, если он уже там, он не отправится в Плутон (БД). Большинство ORM имеют возможность внедрить кэш процессов L2 out. Приятно то, что они просто подключаются к ORM. Оформить заказ NCache для NHibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...