Дозвуковой против NHibernate - PullRequest
       62

Дозвуковой против NHibernate

72 голосов
/ 04 августа 2008

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

Ответы [ 15 ]

3 голосов
/ 30 августа 2008

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

Другой наш вариант - создать некоторую золотую середину, где мы используем subsonic для запроса и загрузки произвольных объектов с их функциональностью «выполнять как типизированный список», которая выполняет сопоставление на основе имени произвольного оператора sql в стиле linq. Или попытаться воссоздать некоторые из них в nhibernate и рефакторинг остальных.

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

3 голосов
/ 04 августа 2008

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

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

2 голосов
/ 03 ноября 2009

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

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

Решение о комплектации ORM не зависит исключительно от самой ORM.

2 голосов
/ 08 февраля 2009

Примите несоответствие импеданса!

проверить это

:)

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

0 голосов
/ 25 октября 2008

Совет, который я получил по этой теме, заключается в том, что Subsonic не масштабируется для обработки более сложных сценариев, и поэтому, если вы пойдете по этому пути, вы получите работу, пытающуюся перейти на более продвинутый ORM.

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

...