Подтвердить что ты не робот

Является ли избыточная структура платформы Entity для веб-приложений?

Скажем, мы разрабатываем веб-приложение для электронной коммерции для малого и среднего бизнеса. Пусть далее предположим, что бизнес, вероятно, будет масштабироваться с течением времени. Другими словами, линейка продуктов обычно будет расти.

До сих пор я разработал n-уровневые решения, используя ADO.NET и хранимые процедуры с помощью класса SqlHelper. Для больших приложений я использовал Enterprise Library (2.0).

Я хотел бы перейти к подходу, основанному на ORM, и начинаю изучать LINQ, а также переключаться с ASP.NET Web Forms на ASP.NET MVC. Я не хочу идти с LINQ-to-SQL. Вопрос заключается не в том, требуется ли ORM, но если ORM Framework Entity Framework слишком много для такого проекта. Я не против кривой обучения, если это оправдано для задачи.

Что касается "overkill", я хотел бы знать, если:

  • EF быстрее, чем кто-то с правильными запросами кодирования навыков вручную
  • EF приводит к ненужному раздуванию кода
  • EF неоправданно защищает разработчиков от информации о своих запросах на уровне кода
  • LINQ-to-Entities подходит для проектов такого размера

На самом деле, если кто-то думает, что ORM слишком много для такого проекта, я бы хотел узнать причины.

4b9b3361

Ответ 1

EF не переполняет веб-приложения.

Я не согласен с тем, что указано в вашей статье, на которую ссылается. Я согласен, что разработчики должны обладать хорошими навыками с SQL, но ORMS отлично справляются с тем, чтобы сделать работу разработчиков более быстрой.

  • Скорость ORMS - они получают лучше все время, и они позволяют вам для вызова SP или изменения запросов при необходимости получите максимальную скорость. Существуют также большие профилировщики для мониторинга производительности ORM, например EFProf.

  • Замедляет процесс кодирования - В самом деле!!! Узнав, что это ускоряет вверх.

  • Разработчики должны знать SQL - я согласен. Однако ORMS особенно с LINQ синтаксис часто позволяет разработчикам писать больше сложный SQL, чем на их.

  • Devs пишет эффективные запросы уже - REALLLYYYY!!!! Просто спросите у DBA свои мысли! Мне кажется, что я это делаю, но так же все остальные. См. Проблему.: -)

  • Code Bloat - Не соглашайтесь, особенно с теми, у которых есть LINQ.... Это часто делает код более читаемым и часто сокращает количество строк.

  • Забудьте о LINQ - этот корабль имеет плавал. LINQ Rocks!!!! Пойдите с ним или Быть оставленным позади. Он не просто используется в ORMS. Он может использоваться против, массивы, объекты, XML, файлы, твиттер, и список можно продолжать и далее... Узнайте LINQ.

В статье рассказывается о том, как вдохновляют последние разработки MS, которые идут от Ruby on Rails. ROR имеет ORM, основанный на Active Record в нем.

ORMS хороши. Их не нужно использовать везде и каждый раз, но они хороши и их следует учитывать.

Ответ 2

Хотя это общий ответ, будьте осторожны с любым мнением, которое имеет эти комментарии:

"Инструмент X воняет, я пишу в инструменте Y, и я могу сделать это быстрее, чем в инструменте X".

Или курс латинского говорящего лучше говорит на латыни.

Ответ 3

EF имеет кривую обучения, но что-то новое делает. EF не является излишним, но согласно любой написанной системе используйте правильную технологию для правильного проекта.

Ответ 4

Глядя на статью, первое, что я увижу и не соглашусь, таково:

Я твердо верю, что современная сеть разработчикам следует:

• Любые базы данных.

• Напишите высокоэффективные запросы.

• Свернуть код.

• Создавайте самоочевидные пользовательские интерфейсы.

• Быстро работайте.

Я не уверен, сколько людей просматривают веб-разработки, но, на мой взгляд, разработчик веб-сайтов должен сосредоточиться на функциональности и бизнес-правилах. Чистая база данных и код SQL никогда не должны выполняться кем-то из моей команды, который будет более продуктивным, написание функционального кода для бизнеса.

Здесь используется платформа Entity Framework. Он считается инструментом быстрой разработки приложений (как и большинство других ORM). Эти инструменты создаются специально, чтобы вы могли больше сосредоточиться на том, как выполнять пользовательские требования и меньше на правильном пути написания запроса.

С учетом сказанного я бы также сказал, что использование инструмента наивно может быть опасным. Когда вы используете Entity Framework, вы все равно должны понимать последствия использования графа объектов, который вы запрашиваете.

Это далеко не перебор, инструмент очень прост в использовании и прост в освоении. Я бы сказал, что проще "исправить" платформу Entity Framework, а не фиксировать необработанные SQL-запросы и набор транзакций ADO.

В небольших проектах моя базовая рекомендация почти всегда идет с каким-то ORM. На корпоративных приложениях вы должны быть немного более осторожными и полностью зависят от бюджета: -).

Ответ 5

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

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

Я лично чувствую, что пресса за EF поощряет новых кодеров игнорировать некоторые необходимые основы. Я работал с некоторыми из них и думаю, что они были плохими.

Конечно, есть те, которые очень сильно не согласятся. Нет проблем!

Я знаю разработчиков, которые начали любить его, а теперь нет. Но я также знаю разработчиков, которые любят EF и клянутся им.

Я использовал EF, LINQ to SQL и NHibernate и другие на протяжении многих лет.

Лучший совет: попробуйте. Приходите к собственному выводу.

(Раскрытие: я автор статьи, которую вы цитировали).

Ответ 6

Определенно не перебор. Идем дальше и используем EF.

Ответ 7

На самом деле это зависит от сложности вашей модели данных, а не от типа приложения.

Если у вас относительно простая модель данных, тогда EF может быть переполнен (если вы еще этого не знаете). Linq-to-SQL может быть лучшим выбором (меньше кривой обучения, хотя у него также есть ограничения, такие как сопоставления "много-ко-многим" ).

Если ваша модель данных более нормализована, а не просто основанная на таблице, то EF определенно окупится в конечном счете, или nHibernate, или любой другой более продвинутый ORM.

В статье, на которой вы ссылаетесь, похоже, указывает, что ORM в целом плохие, а не только EF. Столкнувшись с его очками, он, кажется, отчасти отказывается от них. Похоже, он пытается оправдать концепцию одеяла (что новые разработчики должны изучить низкоуровневое кодирование, особенно SQL, прежде чем перейти к высокоуровневым фреймворкам), изобретая сомнительные моменты.