Subsonic 3 VS Entity Framework - PullRequest
       23

Subsonic 3 VS Entity Framework

6 голосов
/ 20 июля 2009

Кто-нибудь работал здесь с Subsonic3 и Entity Framework, кто может рассказать мне о плюсах и минусах? Это моя первая попытка попробовать это. Subsonic прост в настройке, как Entity Framework. Я не уверен, что Entity Framework работает с другими базами данных, как SubSonic, как MySql PGsql и т. Д ...? Я прочитал этот пост (http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic), что достаточно убедительно, чтобы выбрать Entity Framework вместо SubSonic. Но я хотел второе открытие.

Ответы [ 2 ]

17 голосов
/ 20 июля 2009

Ну, эти два совершенно разных зверя!

Subsonic 3 является отличным инструментом для простого и удобного отображения структуры базы данных в значительной степени 1: 1 на классы объектов, где каждый класс будет точным представлением таблицы в базовой базе данных (как в случае с Linq-to -SQL также).

Entity Framework, с другой стороны, нацелен на гораздо более сложные сценарии, когда ваш домен или объектная модель (ваши классы) не обязательно будут отображать 1: 1 в таблицы базы данных. Вот почему в EF есть трилогия XML-файлов - одна описывает концептуальный уровень (объекты вашего домена), другая - уровень хранения (структура базы данных) и отображение между этими двумя.

IMHO, Subsonic 3 и Linq-to-SQL идеально подходят для быстрых проектов малого и среднего размера, где ваша база данных достаточно гибкая, чтобы ее можно было изменить, если необходимо, и где у вас есть довольно простое сопоставление ваших объектов с таблицами. EF действительно великолепен в крупномасштабных корпоративных приложениях, где уровень вашей базы данных может быть задуман как камень, и вы не можете его изменить - или вашему приложению необходимо «выжить», даже если база данных подстилающего уровня изменится.

Совершенно разные звери - на мой взгляд, совершенно разные аудитории.

Марк

PS: Интересно, действительно ли Тим использовал Subsonic 3 в этом сравнении, и что именно он делал. У меня было ощущение, что EF будет «больше» накладных расходов и, следовательно, может быть немного менее производительным (но более гибким, и в сценариях Enterprise, это на вес золота, даже если жертвуете некоторой производительностью для него)

3 голосов
/ 26 ноября 2009

В случае, если это помогает, в моих тестах я использовал Subsonic 2.1 (как указано) и сравнивал уровни доступа к данным в сценарии умеренной нагрузки (методология как указана). Я предоставил код, поэтому мой тест можно легко повторить.

Если вы подвергаете систему загрузке, воспроизводя условия в веб-приложении во время использования, EF обеспечивает гораздо лучшую производительность . Загрузочные тесты полного веб-приложения подтверждают это. В более сложных тестах возможности оптимизации EF, такие как отложенная загрузка, могут предложить еще большие преимущества по сравнению с Subsonic.

Если вы сравниваете отдельные операции доступа к данным, например, в простом модульном тесте Subsonic оказывается быстрее. В частности, Subsonic инициализируется быстрее.

Я бы порекомендовал Fluent NHibernate или Entity Framework, если производительность является ключевым фактором.

...