Преимущества и недостатки использования Enterprise Library

Я только начинаю проект, и, поскольку этот проект личный, мне интересно, каковы преимущества использования Enterprise Library? Мы используем версию 2 для нескольких проектов в офисе, но я не совсем уверен (кроме передовой практики) в ее преимуществах, особенно в компоненте базы данных. Любой совет? Спасибо


person Gustavo Rubio    schedule 27.10.2008    source источник
comment
Очень популярен среди программистов, которые хотели писать приложения на C # так же, как они делали это в VB (и все плохие практики), спустя 10 лет после этого вопроса я все еще думаю, что EL бесполезен.   -  person    schedule 03.08.2018


Ответы (4)


Основное преимущество блока приложения базы данных состоит в том, что он упрощает создание кода, не зависящего от базы данных. Разработчик взаимодействует в основном с общими объектами Database и DbCommand, а не, например, с SqlConnection, SqlCommand и т. д. Таким образом, переключение на другую базу данных (например, Oracle) становится более осуществимым. В зависимости от потребностей вашего бизнеса, это может быть определенным преимуществом. EntLib также осторожно подталкивает разработчика к использованию DbParameter для параметров запроса, что снижает риск атак путем внедрения кода SQL.

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

С моей точки зрения, наиболее полезными являются блоки данных, исключений и протоколирования. Exception и Logging вместе позволяют очень легко регистрировать исключения (дух) в ряде мест и в различных форматах. Например, они могут поместить всю запись журнала исключений, включая трассировку стека, в журнал событий Windows, что упрощает диагностику проблемы.

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

person Paul Lalonde    schedule 27.10.2008
comment
просто из любопытства, сколько времени вам понадобилось, чтобы настроить и запустить блок исключений? Старый документ MS сказал, что кривая обучения «полдня», каков был ваш опыт? - person Steven A. Lowe; 27.10.2008
comment
Претензии M$ небезосновательны, если ваша цель состоит в том, чтобы иметь общее представление о том, как настроить блок исключений (консоль конфигурации здесь бесценна). Однако использование этого блока приложения (на самом деле, всех блоков приложений) требует изменений кода, поэтому YMMV. - person Paul Lalonde; 28.10.2008
comment
Можно ли использовать другой поставщик через блоки данных (например, MySql) или только то, что содержится в структуре (Oracle/SQL Server)? - person Gustavo Rubio; 28.10.2008
comment
Густаво, можно использовать разных провайдеров. Я сам использовал Firebird с EntLib. - person Paul Lalonde; 28.10.2008
comment
Код, не зависящий от базы данных, является аргументом, основанным на FUD, я хотел бы увидеть проект, который изменил поставщика базы данных. - person ; 03.08.2018

Моя команда провела оценку корпоративной библиотеки Microsoft Patterns and Practices около 2 лет назад в рамках модернизации нашей линейки продуктов. Единственной частью, которую мы в итоге использовали, был блок базы данных. Мы даже обернули это в некоторые классы, которые могли создавать экземпляры, чтобы мы могли смоделировать DAL для модульного тестирования; блок кода Microsoft использовал статические вызовы для работы с базой данных. Я не уверен, интегрировала ли Microsoft какой-либо материал LINQtoSQL или Entity Framework в блок db. Я бы не решился использовать блок db сейчас, если бы он не использовал один из них.

Что касается ведения журнала, мы обнаружили, что Log4Net является гораздо более надежным и гибким решением, которое журнал Майкрософт. Мы пошли с этим для наших потребностей в регистрации.

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

person Jason Jackson    schedule 27.10.2008

В дополнение к пунктам, упомянутым Полом о блоке приложения данных, я также хотел бы отметить, что, по моему опыту, блок приложения данных также обеспечивает гораздо БЫСТРЫЙ способ написать необходимый код базы данных с помощью существующих помощников. Я использую его из-за его последовательного внешнего вида и скорости разработки.

person Mitchel Sellers    schedule 27.10.2008
comment
Мне кажется странным, что MS разрабатывает ADO.NET, а затем разрабатывает блоки данных приложения поверх него и говорит, что используйте это, это то, что делают успешные проекты, не говоря о том, что ADO.NET слишком громоздкий. - person Chad; 26.02.2012

Выбор не использовать EF для меня связан с ограничениями, которые есть у меня в моей среде, которые требуют, чтобы приложения обрабатывали миллионы транзакций в час. Это объем обработки в среде Telco.

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

person Monu Sharma    schedule 16.10.2018