Старый добрый ADO.NET

При проектировании корпоративного приложения возникает вопрос:

«Как правильно организовать систему работы с БД?»

В современных учебниках программирования рассматривается зачастую один вариант – ORM (EF, NHibernate и т.д.). И практически совсем не упоминается ADO.NET.

Но так ли однозначен выбор? Посмотрим...

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

Кроме этого, удобно, когда каждая отчётная форма, график, диаграмма являются отдельными модулями и инкапсулируют в себе все свои метаописания. Формат XML (с определённой схемой XSD) хорошо подходит для этой цели. В нём для каждой отчётной формы определяются все SQL-запросы, выполняемые для заполнения формы, пользовательские параметры, формат данных, заголовки таблиц и прочее.

Для оперирования всей этой постоянно пополняющейся и изменяющейся системой метаописаний как раз и функционирует движок получения данных, основанный на нескольких классах ADO.NET: SqlConnection, SqlCommand, SqlDataReader.

Задача добавления новой отчётной формы сводится к формированию на основе XSD-схемы XML-файла и размещения его в определённой папке веб-сервера. С задачей справится любой технический специалист. При этом не нужно задействовать программистов, тестировщиков, что было бы необходимо при создании отчётной формы, используя напрямую концепцию ORM.

Есть ещё один не менее популярный путь – вынесение логики получения и обработки данных на уровень сервера БД (хранимые процедуры). У этих двух подходов есть свои плюсы и минусы.

Плюсы первого: удобство работы с файловой системой, работы с версионностью. Второго – скорость выполнения и разгрузка сервера приложений. Однозначно есть плюсы работы и с ORM: функциональность, скорость разработки, интуитивно понятный разработчику синтаксис, более оптимизированная работа с БД.

Что же лучше? Поделитесь своим мнением в комментариях!