Дозвуковые 3 платформы объекта VS

def dump(obj):
  for attr in dir(obj):
    print("obj.%s = %r" % (attr, getattr(obj, attr)))

существует много сторонних функций там, которые добавляют вещи как обработка исключений, национальная печать / печать специального символа, рекурсивно вызывающая во вложенные объекты и т.д. согласно предпочтениям их авторов. Но они все в основном сводятся к этому.

7
задан Adam Cooper 20 July 2009 в 15:52
поделиться

2 ответа

Что ж, эти двое - совершенно разные звери!

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 это на вес золота, даже если ради этого жертвовать некоторой производительностью)

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

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

Marc

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

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

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

Marc

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

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

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

17
ответ дан 6 December 2019 в 09:21
поделиться

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

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

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

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

3
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: