Дозвуковой Vs NHibernate

голоса
72

Что такое консенсус относительно того, когда использовать один из этих инструментов adversed к другому? Я считаю Дозвуковые очень полезным с точки зрения получения вещей сделать быстро, но на крупных проектах, как правило, не в масштабе, и ее связи модель домена вашей модели базы данных. То есть, где Nhibernate приходит как он дает вам легкие Pocos, которые не связаны с вашей моделью базы данных, но время установки намного дольше.

Задан 04/08/2008 в 17:29
источник пользователем
На других языках...                            


15 ответов

голоса
83

Мне задают этот вопрос много, и на самом деле это сводится к тому, сколько вы хотите, чтобы играть на скрипке. Я не могу сказать вам, как повреждение комментарии Криса Cyvas в RE дозвукового масштабирования было - и я в ответ на это до сих пор :(.

Сделка - парфюм-накрест, SubSonic весы очень хорошо. С точки зрения роста проекта - Любой инструмент вы используете, будет требовать вашего внимания. Даже NHibernate.

Я написал пост о том, как использовать Repository модель с DI (как вы бы с NHIb или любым инструментом по этому вопросу) с дозвуковой скоростью 2.1:

http://blog.wekeroad.com/blog/subsonic-writing-decoupled-testable-code-with-subsonic-2-1/

Я также написал сообщение о выполнении дозвуковых:

http://blog.wekeroad.com/blog/subsonic-scaling/

Надеюсь это поможет.

Ответил 12/09/2008 d 22:54
источник пользователем

голоса
45

Я бы рекомендовал SubSonic, если ваш проект работает с учетом ActiveRecord, что база данных является ваша модель. Вы получите один класс за стол и все просто волшебно работают. Конечно, вы можете настроить и переопределить вещи, но если вы (или ваш проект) в корне не согласны с подходом класса каждой таблицы, я хотел бы посмотреть на NHibernate, поскольку она начинается с более сложным (но более гибким) подходом картографирования вашего модель предметной области в базе данных.

Если вы используете относительно простую базу данных, которая находится под вашим контролем (как, вы можете изменить столбцы без отправки восемь форм в базе данных разделения надзора наблюдательным советом), я рекомендовал бы начать с SubSonic и переход к NHibernate, если SubSonic не удовлетворить ваши потребности.

Ответил 06/08/2008 d 22:47
источник пользователем

голоса
31

За что его ценности ... Я имел возможность использовать обе технологии вполне ABIT больше, так как задать этот вопрос. И я должен остаться, который, если эти технологии вы выбираете вопросы, очень мало. Конечно NHibernate позволяет вашим хозяйствующим субъектам, чтобы быть немного меньше, в сочетании с вашей структуры базы данных, но я до сих пор считаю, что есть много случаев, когда вы все еще должны сгибаться воле базы данных.

На мой взгляд , единственно верный способ это полностью отделить вашу модель домена из модели базы данных, чтобы написать свой собственный DTOS ( по существу Pocos для передачи данных вокруг), а затем отобразить их на ваш ОРМ выбора в вашем слое данных. Но в большинстве случаев, этот подход будет мне больше хлопот , чем его ценность.

Ответил 05/03/2009 d 10:23
источник пользователем

голоса
13

Немного не по теме, но в том же духе. Вы смотрели на замок ActiveRecord написано поверх NHibernate и устраняет необходимость тратить время создания сопоставления XML из кода в базу данных. Как NHibernate вы можете структурировать объекты домена , как вы хотите , а затем сгенерировать схему базы данных из этой структуры.

Использование ActiveWriter , а вклад инструмент, вы можете легко карту из базы данных в предметной области.

Ответил 05/08/2008 d 06:07
источник пользователем

голоса
9

Вы можете рассмотреть глядя на Fluent NHibernate; это делает управляющий NHibernate ветер. Не знаю, как трудно было бы перейти существующую схему, но если вы создаете новое приложение, это приятно, чтобы определить модель предметной области и создание базы данных в значительной степени любого сервере БД вы можете думать. Читая другие комментарии здесь, я думаю, что свободный NHibernate приносит NHibernate наравне с SubSonic для простоты конфигурации.

Ответил 04/03/2009 d 21:17
источник пользователем

голоса
7

Я написал сообщение в блоге недавно о .NET ORMs , который имеет Дозвуковые в нем, и ActiveRecord. Исходя из моего опыта , это зависит от того, что проект делает, Дозвуковой работает намного лучше , если вы приехали из фона SQL , но NHibernate имеет более наверх него. ActiveRecord хорош для небольших проектов, я не уверен , что это быстрее для больших проектов , чем прилипание к NHibernate.

Ответил 07/10/2008 d 11:10
источник пользователем

голоса
7

Я не могу дать хорошее сравнение, как я еще не на самом деле используется NHibernate на проекте, но я использовал SubSonic и были очень счастливы с ним. До сих пор я не ударил каких-либо серьезных препятствий при его использовании.

Проверьте этот пост от Rob Конери, один из создателей SubSonic. Он говорит о том , как отделить ваш дозвуковых код от остальной части приложения. Он даже упоминает о том , что эта архитектура позволила бы вам позже поменять SubSonic на какой - то другой уровень доступа к данным , таких как NHibernate или LINQ к SQL.

Я знаю, что на самом деле не ответить на ваш вопрос, но я надеюсь, что это все-таки помогает.

Ответил 04/09/2008 d 20:25
источник пользователем

голоса
5

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

  • NHibernate мой выбор для более масштабных проектов, поскольку его использование облегченных ПОКО лет. Если бы я когда-либо переключить мой ОРМ «Я считаю, что» это было бы намного легче реорганизовать.
  • SubSonic это мой выбор, когда я меньше масштабный проект. Я считаю, что производительность мудрый SubSonic хорошо масштабируется. Тем не менее, я чувствую себя тесно связан с ним, потому что он так выгравирован в моем проекте. В меньшем проекте я все еще могу его отключить, поскольку базовый код настолько мал, и это действительно помогает мне выдирать код, как рекламируется.
Ответил 26/01/2009 d 14:37
источник пользователем

голоса
4

Опять немного не по теме, но я второй замок ActiveRecord - вместо того , чтобы использовать базу данных в качестве модели (Дозвуковые подход) или расходов часов в XML Спагетти (NHibernate подход) вы просто место атрибуты вашей модели классов.

Вы даже можете получить ActiveRecord для создания схемы базы данных для вас.

Мы использовали этот подход на довольно много проектов, в настоящее время и преимущества заключаются в следующем:

  • Легкий путь обновления для NHibernate, если это необходимо в будущем
  • Поддержка простых моделей наследования - например. Автомобиль -> Автомобиль
  • Схема он генерирует, скорее всего, как бы вы его создали в любом случае, так что вы можете потратить больше времени на построение приложения, а не беспокоиться о сохранении вашей модели / дб в синхронизации.
Ответил 16/09/2008 d 13:15
источник пользователем

голоса
4

Я думаю, вы в значительной степени прибил его. Дозвуковой генерирует код, так что ваш бизнес-объекты будут отражать вашу структуру базы данных. NHibernate использует отображение файлов, которые отображают бизнес-объекты в базе данных, так что ваши объекты могут быть структурированы, как вам нравится.

Насколько велик проект это? Буду ли необходима долгосрочная поддержка? Является ли экономическая эффективность дозвукового будет компенсировать любые потенциальные проблемы масштабирования?

Ответил 04/08/2008 d 18:12
источник пользователем

голоса
3

Рассмотрим вашу команду и размер проекта при рассмотрении ActiveRecord.

По моему опыту, ActiveRecord абстракция на вершине NHibernate, который начинает течь, как решето, пытаясь более сложные сценарии.

Если у вас есть умеренно сильно сложная или не простая схема, палка с NHibernate. Вы можете нарезать и кости его почти до совершенства.

В другом месте вы можете попасть в беду, когда вам нужно умеренно сложный запрос. ActiveRecord скрывает много реализации NHibernate ... но вам это нужно для сложного запроса, который станет очень трудно, если вы совершенно не знакомы с HQL. Будьте осторожны, чтобы члены команды не только поредактируют по краям вместо обучения NHibernate и HQL.

Ответил 02/10/2008 d 20:26
источник пользователем

голоса
3

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

Наш другой вариант заключается в создании какой-то золотую середину, где мы используем SubSonic для запроса и загрузить произвольные объекты с их «выполнить в виде машинописного списка» функциональность, которая делает отображение на основе имен от произвольного оператора SQL LINQ стиль. Или попытаться воссоздать некоторые из них в NHibernate и реорганизовать остальное.

Поэтому я говорю дозвуковой имеет смысл в небольших приложениях, но обслуживание на дозвуковых приложениях становится довольно волосатым, мы особенно несладко с перекрытием кода подтверждения, и до / после в коде вызвало событие. Для активного шаблона рекорда, дозвуковой, безусловно, 80%, но делает нечто в слоеном пути, и останавливает вас от какого-либо реального контроля над вашей иерархией наследования, так как каждый класс должен наследовать таблицу, чтобы вернуться к этой таблице.

Ответил 30/08/2008 d 07:18
источник пользователем

голоса
2

Я считаю, что вы должны придерживаться одной, которые вы можете использовать лучшие. Конечной целью является производительность и хороший исполнительский код качества. Если вы знаете SubSonic в и затем придерживаться его, и если вы знаете, NHibernate в глубину палкой NHibernate. Это очень субъективный вопрос. Следует также учитывать тот факт, что то, что ваш член команды испытывает опыт с. Если вы разбираетесь в ней вы сможете легко поддерживать его.

Я видел крупные проекты с использованием SubSonic тогда NHibernate уже известный и широко используются.

Решение собирание ОРМ не только зависит от самого ОРМ.

Ответил 03/11/2009 d 06:52
источник пользователем

голоса
2

Объятия импеданс Рассогласование!

Проверь это

:)

Или нет. Если вы хотите производительность, сделать это самостоятельно. Если вы хотите быстро и легко, идти с NHibernate и ActiveRecord. Если вы любите делать вид, что вы на самом деле знаете, что происходит на уровне доступа к данным, использовать NHibernate и сидеть с XML в течение всего дня, чтобы получить многие ко многим идти ... Или просто ... эээ .. сделать это самостоятельно - ADO.Net FTW!

Ответил 08/02/2009 d 02:51
источник пользователем

голоса
0

Совет я получил по этой теме, что Дозвуковые не масштабируется до обработки более сложных сценариев и поэтому, если вы идете по этому пути, вы будете в конечном итоге с работой пытается поменять к более продвинутой ОРМ.

Я, таким образом, более заинтересован в использовании NHibernate для сложных случаев, замок Active Record для простых случаев, и я приглядывал за Fluent NHibernate, который должен сделать NHibernate отображения намного проще (особенно когда конвенция поддержка карт на основе улучшается).

Ответил 25/10/2008 d 15:20
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more