На протяжении многих лет я написал много кода ejb, oledb и ADO. Мой опыт работы с маркерами O/R в лучшем случае - это свиньи для скорости, а в худшем - кошмар.NHibernate O/R Вопрос
Является NHibernate или весной .NET стоит проблема и почему?
На протяжении многих лет я написал много кода ejb, oledb и ADO. Мой опыт работы с маркерами O/R в лучшем случае - это свиньи для скорости, а в худшем - кошмар.NHibernate O/R Вопрос
Является NHibernate или весной .NET стоит проблема и почему?
Они стоят «проблемы», потому что они позволяют вам четко определять свои данные в модели, отделенной от поведения и другого кода. Вам не нужно писать пользовательский DAL. Они помогают с разделением проблем.
Это зависит от вашего внимания, я думаю.
В моем магазине некоторые люди любят их (настоящие головы пропеллера Java/OO), а некоторые люди презирают их (с большим количеством навыков SQL).
Я во второй группе, но я разработчик DBA.
Они не зло, как таковые, но просто полезный инструмент, если он используется правильно, без какого-либо религиозного багажа.
Если вы не против жесткой связи с SQL Server и относительно жесткой связи с схемой, вы можете рассмотреть возможность поиска в LINQ to SQL. Это часть фреймворка, довольно проста и удивительно проста в программировании. Вы можете работать с ним и программировать в течение нескольких минут, используя конструктор, который поставляется с VS 2008.
Сказанное: LINQ to SQL не является be-all-end-all; NHibernate, безусловно, более устойчив во многих отношениях, а также происходит целая миграция Entity Framework.
Но LINQ to SQL не медведь для скорости. И я могу сказать вам по собственному опыту, что, хотя разработчик не совсем уверен в ошибках, он довольно устойчив, а базовые основы - это , а не багги.
LINQ to SQL на самом деле довольно мощный и зрелый ORM.
Если вам нужен рабочий пример мощности LINQ to SQL, взгляните на этот веб-сайт. Он использует LINQ to SQL для внутреннего интерфейса, и я не думаю, что это медленный процесс.
Я не использовал модуль данных Spring.Net, поэтому я не буду комментировать это. Я использовал Spring.Net для своего IOC. В общем, я думаю, вы можете сделать лучше для этого.
NHibernate очень хорошо. Это будет медленнее, чем прямо ADO.Net, но в целом вам не о чем беспокоиться. Ключ в том, что NHibernate позволяет быстро и быстро обновить код базы данных, чтобы вы могли беспокоиться о фактическом коде приложения. Ваше приложение больше, чем база данных.
Затем, когда вы найдете запрос, который занимает много времени и влияет на производительность приложения, перепишите метод THAT с использованием традиционного подхода.
Есть и другие варианты, а также, Entity Framework, SubSonic, LLBLGen и т.д.
Как Мэтт упоминается ORMs ценны для разделения проблем, они позволяют в дизайне приложения. Конечно, большой компромисс - это сырая производительность. Философия, я полагаю, заключается в том, что вы всегда можете масштабировать свои аппаратные ресурсы, но вы не можете легко масштабировать и расширять тесно связанный код.
Если вы ищете место в .net, обратите внимание на Lightspeed.Это коммерческий ORM, но значительно быстрее, чем NHibernate, и, как правило, более интуитивно понятный для работы.
NHibernate определенно стоит усилий. Как говорили другие, это медленнее, чем напрямую с использованием ADO.Net и т. Д., Но увеличение производительности стоит того, о чем я думаю. Что касается производительности, есть довольно много настроек, которые можно сделать в NHibernate, чтобы ускорить вещи:
«Вы - приложение больше, чем база данных». Хорошая цитата - это то, о чем многие люди типа DBA пропускают ИМО. – bernhardrusch
Возможно ... но это не повод для неправильного использования или игнорирования их ... – gbn
Нет никакого оправдания для того, чтобы не знать хорошего реляционного дизайна, и у вас должно быть некоторое представление о том, как индексировать. После этого мне все равно. База данных - это инструмент. –