Сравнение и Контраст NHibernate и OpenAccess от Telerik

Вы использовали OpenAccess ORM от Telerik? Как это соотносится с NHibernate? Когда я должен использовать его над NHibernate?

Ответ 1

Мне тоже интересно то же самое. С одной стороны, есть NH с его свободным открытым исходным кодом, но с ограниченными возможностями поддержки. С другой стороны, довольно новое дополнение к хорошо известному ящику инструментов, OA.

OA стоит денег, но вы получаете поддержку. NH является бесплатным, но поддержка была известна, по крайней мере, в моем кратком опыте, чтобы быть ограниченным и медленным в прибытии.

Я думаю, что оба они, вероятно, являются прекрасными продуктами. Я решил дать OA попробовать, так как я уже являюсь пользователем инструментов Telerik. OA и ее поддержка в любом случае оплачиваются.

NH использует простые классы и объекты без каких-либо украшений в свойствах класса. Для OA требуются декорации (красиво созданные графическим интерфейсом OA Visual Studio).

NH требует "сеанса", в котором нужно выполнять единицу работы с базой данных; OA называет это "областью". Обе используют "транзакцию".

OA имеет интеграцию с Visual Studio и может передавать и обратную карту в базу данных и обратно. Прямое отображение - это то, что вы можете создавать свои классы, а затем "нажимать" их в базу данных для сохранения. "Реверс" - это для вас разработчики "модели домена", которые я предпочитаю.

OA определенно претерпевает некоторые важные обновления, так как Telerik играет "догнать" за недавнее приобретение и выпуск OpenAccess, ранее принадлежавшего Vanatec (из Германии).

Что касается точки зрения "простоты использования" и "производительности/масштабируемости", я бы хотел, чтобы я знал, где каждый из них. Я уверен, что кто-то там может собрать честный тест между ними и сделать эти определения.

Одна вещь, которая мне нравится в NH, - это доступные шаблоны для генерации нужного кода не только для "немых" бизнес-объектов (которые сейчас генерируются OA), но и для BLL и DLL. После долгих разговоров с Telerik у меня создалось впечатление, что они планируют больше вариантов генерации кода, поэтому OA более полезно из коробки.

Надеюсь, это поможет! Кто-то, пожалуйста, попробуйте получить некоторые статистические данные о проблемах с производительностью.

Ответ 2

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

Изменить

Для записи я большой сторонник nHibernate и open source в целом. Я использую nHibernate в течение последних шести месяцев, используя его для всех новых работ в нашем веб-приложении. Для моей нынешней компании это хорошо подходит (Startups love free).

Однако моему предыдущему работодателю было бы очень сложно принять компонент, поддерживаемый сообществом, в качестве основной части своей инфраструктуры. Это совершенно разумно, поскольку сайты этих компаний являются единственным источником дохода. Хотите ли вы сделать ставку на весь свой бизнес на программное обеспечение, не связанное с ним? Некоторые люди не хотели бы рисковать.

Лично я нашел поддержку nHibernate на уровне и даже лучше с некоторыми коммерческими поставщиками.

Моя точка зрения заключается не в bash OSS, а в том, чтобы выделить одно преимущество использования программного обеспечения, имеющего поддержку соправа, с полностью укомплектованным и выделенным каналом поддержки.

Ответ 3

Еще одна причина: в настоящее время OpenAccess имеет лучшие характеристики производительности, если вам нужен быстрый ORM для вашего проекта, это будет лучший выбор. Подробнее см. тесты ORM.

Ответ 4

Я бы сказал, что nHibernate является бесплатным, а OpenAccess - 399 долларов. Хотя CodeSmith с шаблонами nHibernate составляет $99- $399, если вы хотите, чтобы nHibernate легко автоматизировался. Похоже, что OpenAccess обладает большей прозрачностью в слое данных и, вероятно, проще в обслуживании. Но если вы использовали что-то вроде Spring.Net, вы бы не только автоматизировали данные nHibernate, но и автоматический уровень сервиса. Хотя возьмите это с солью, потому что nHibernate и Spring.Net - это еще одна партия файлов конфигурации, которые необходимо поддерживать. Уверен, что OpenAccess - это графический интерфейс. Либо один работает, но там есть еще больше информации о nHibernate.