Является ли Linq to SQL жизнеспособным выбором для разработки приложений? - PullRequest
3 голосов
/ 03 октября 2009

Я снова читаю вещи .NET после непродолжительного (и иногда продолжающегося) пребывания в Ruby on Rails. Мне интересно, если LINQ по-прежнему остается выбором при выборе ORM для новых приложений, или мне следует изучить что-то вроде NHibernate, что, кажется, все еще идет хорошо. Я знаю, что Linq был в основном включен в Entity Framework, но когда я попробовал EF (это было некоторое время назад), я обнаружил, что он слишком тяжелый и слишком «управляемый мышью» (то есть много разыгрывается с дизайнером). Я смотрел несколько коротких скринкастов на NHibernate, и мне нравится разделение проблем, которое он навязывает, а также идея, что ваша Модель может быть чистой.

Синтаксис Linq довольно приятный, но это не настоящий ORM, и я не хочу смотреть на изучение чего-то, что в основном устарело, когда я могу узнать что-то, что используется или будет использоваться (EF и / или NHibernate, для пример).

Итак, является ли Linq все еще тем, что следует рассмотреть в приложении (предположим, что-то умеренно сложное; не тривиальное приложение, а не огромное дело; примерно такое же сложное, как веб-приложение, такое как Highrise 37Signal) или есть ли что-то лучшее, на что стоит обратить внимание?

Ответы [ 5 ]

5 голосов
/ 04 октября 2009

Linq не ORM, и Linq великолепен. Скорее всего, вы хотите использовать Linq, если это вообще возможно.

LinqToSql - это ORM, хотя это очень легкая функция. Он дает базовую (и в основном однократную) генерацию кода классов слоев данных с активными типами записей на основе определения базы данных SQL Server. Несмотря на то, что он поддерживает некоторые базовые функции ORM, большинство всего, что вы хотите, вам придется создавать самостоятельно.

EntityFramework также является ORM. Хотя он разделяет некоторые ограничения LinqToSql, он также делает некоторые вещи лучше, а некоторые хуже. Текущая версия V1 имеет много ограничений, некоторые из которых будут рассмотрены в следующей версии (V4), которая выйдет в Visual Studio 2010.

Ни LinqToSql, ни EntityFramework не являются зрелыми, проверенными ORM. Оба имеют существенные недостатки, с которыми вы можете столкнуться при выполнении большинства «обычных» проектов разработки программного обеспечения.

NHibernate предлагает значительно больше функций, чем любой из ORM от Microsoft, и вы обнаружите, что он работает практически в любой ситуации "реального мира". Если вам нравится шаблон ActiveRecord, за которым следуют ORM от Microsoft, NHibernate также поддерживает это с Castle ActiveRecord .

Все три из этих ORM поддерживают Linq.

Одно слово предостережения. Переключение между средними проектами ORM может быть трудным и дорогим, в зависимости от того, насколько хорошо вы отделяете свой уровень данных от других уровней. Вы не можете легко начать, например, с LinqToSql, а затем переключиться, например, на NHibernate, когда столкнетесь с одним из многих ограничений LinqToSql, если вы не очень умны в том, как отделить ORM от остальной части вашей реализации, может быть очень сложным в зависимости от ORM.

4 голосов
/ 03 октября 2009

Необходимо различать LINQ как концепцию языка программирования (Language Integrated Query) и Linq-to-SQL как инструмент сопоставления базы данных (ORM), ориентированный на SQL Server.

LINQ как таковая - как технология - определенно здесь, чтобы остаться - без вопросов об этом.

Linq-to-SQL немного отличается тем, что Microsoft больше не будет вкладывать много ресурсов в свое дальнейшее развитие. Для .NET 4.0, они выпускают некоторые улучшения и исправления ошибок, но ничего особенного.

Таким образом, если ваше приложение небольшого размера и вы не предполагаете, что оно будет работать в течение 10 или более лет, вы все равно можете выбрать Linq-to-SQL как очень жизнеспособную и полезную технологию, чтобы быстро и легко приступить к работе - до тех пор, пока вам нужен только SQL Server в качестве бэкэнда базы данных.

Если вы находитесь в более корпоративной среде, если ваше приложение, вероятно, будет работать 10 или более лет, или если вам нужны гетерогенные базы данных, или если вам нужно отобразить разнородную физическую схему в вашей базе данных и ваш объект модель предметной области - затем выберите ADO.NET Entity Framework и Linq-to-Entities. Он предлагает гораздо больше возможностей, чем Linq-to-SQL - за счет более высокой кривой обучения.

Ваш выбор - обе технологии, безусловно, являются отличным способом создания приложений сегодня и в течение следующих 2, 3, 5 лет - после этого все ставки отменены: -)

Марк

3 голосов
/ 03 октября 2009

Я считаю, что StackOverflow (все еще) работает на LINQ to SQL, поэтому было бы странно сказать, что это нереальный выбор. Я сделал несколько демонстраций с ним в WPF и ASP.NET, и он прост, прост в использовании. То, что вы не можете с этим сделать, вы делаете с прямым SQL.

1 голос
/ 06 ноября 2009

Я бы добавил, что L2S - это один из самых быстрых вариантов , который вы имеете в .NET. Принимая во внимание качество поддерживаемых функций LINQ, он может быть лучшим выбором в широком диапазоне случаев.

0 голосов
/ 05 октября 2009

LINQ to SQL - это удобный вариант для разработчиков, которым необходимо реализовать не очень сложный уровень доступа к базе данных (и это довольно распространенная ситуация).
Наша компания постоянно совершенствует реализацию технологии LINQ to SQL для баз данных Oracle, MySQL, PostgreSQL и SQLite .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...