Различия между NHibernate, Castle, Linq - на кого они нацелены?
-
01-07-2019 - |
Вопрос
В этом ответе говорится этот Linq ориентирован на несколько иную группу разработчиков, чем NHibernate, Castle и т.д.
Будучи довольно новичком в C #, не обращайте внимания на всю эту БД, окружающую его:
- Существуют ли другие основные, за неимением лучшего термина, SQL-оболочки, чем NHibernate, Castle, Linq?
- В чем разница между ними?
- На каких разработчиков или разработ они нацелены?
-Адам
Решение
Когда вы говорите "Замок", я полагаю, вы имеете в виду Активную запись замка?
Разница в том, что NHibernate - это OR / M и предназначен для разработчиков, которые хотят сосредоточиться на домене, а не на базе данных.С linq to sql ваша база данных уже существует, и ваши отношения и часть программирования будут зависеть от того, как определена ваша база данных.
Теперь между NHibernate и Castle ActiveRecord - они похожи в том, что вы управляете дизайном своего приложения из домена, но с NHibernate вы предоставляете сопоставление XML-файлов (или сопоставление классов с fluent NHibernate), где в Active Record вы используете соглашение о конфигурации (используя атрибуты для определения любых столбцов и настроек, которые не подходят естественным образом).Активная запись Castle по-прежнему использует NHibernate в фоновом режиме.
Один Или /М - это не обязательно "единственный верный путь".Это зависит от вашей среды, приложения, которое вы разрабатываете, и вашей команды.
Возможно, вы также захотите ознакомиться Дозвуковой.Это отлично подходит для active record, но это не для проекта, где вы хотите сосредоточиться в основном на своем Домене.В зависимости от проекта я обычно использую либо NHibernate (с активной записью Castle), либо Subsonic
Другие советы
LINQ - это всего лишь набор новых функций C #:методы расширения, лямбда-выражения, инициализаторы объектов, анонимные типы и т.д.
С другой стороны, "LINQ to SQL" - это то, что вы можете сравнить с другими оболочками SQL.
На самом деле мы используем и Linq, и NHibernate вместе (с Fluent).Если у вас будет немного терпения к процессу обучения, то вы быстро влюбитесь.
NHibernate и Linq To Sql - это объектно-реляционные картографы, предназначенные для облегчения работы с несоответствием импедансов, обнаруженным между объектами и СУБД.Если вы где-то хотите создать тестируемое, устойчивое приложение, работающее в неведении, NHibernate - это правильный путь.Я бы всегда рекомендовал использовать NHibernate вместо Linq Для Sql.Оба инструмента направлены на устранение проблем с доступом к данным.Сколько раз вам действительно нужно написать код доступа к данным?
Castle является платформой приложения и инверсией контейнера управления и не обеспечивает доступ к данным.Он предоставляет средства для использования NHibernate, что снижает трение, а также обеспечивает реализацию шаблона Actuve Record с использованием NHibernate.