Для будущих усилий я буду смотреть на частичное переписывание существующей системы. Одним из его компонентов является DAL, который реализован в виде сборки .NET, на которую ссылаются несколько приложений, и предоставляет методы для передачи данных в базовую БД и извлечения данных из этой БД. По сути, я предоставляю пользователям DLL средства для подключения к некоторой БД и выполнения ограниченного набора обращений к ней. Вместо того, чтобы сами писать SQL, они используют мой определенный интерфейс.
В настоящее время ведутся дискуссии об использовании некоторого уровня службы доступа к данным вместо существующей библиотеки DLL, и сторонники этого подхода указывают на то, что он является «обслуживаемым», «тестируемым», «масштабируемым» - все стандартные модные слова , Также было заявлено, что этот подход каким-то образом минимизирует влияние на приложения, использующие слой, потому что он изолирует изменения, хотя я не уверен, что это так. Мне кажется, что любой слой между базовой БД и приложением будет иметь четко определенный интерфейс, и поэтому изменения, внесенные с любой стороны, которые не затрагивают другую сторону интерфейса, будут невидимы и не окажут реального влияния. , Кроме того, любые изменения, которые делают влияют на другую сторону, могут также потребовать изменений в этом среднем слое. Я не понимаю, как это было бы.
Ожидается, что в начале DAL потребуются изменения, потому что, ну, в общем, все меняется. Параметры метода меняются, и это заставляет меня сейчас перекомпилировать сборку DAL и распространить ее среди пользователей DAL. Это случается не слишком часто, но происходит. Возможно, я немного наивен в этой области, но я не знаю лучшего способа вывести приложения из бизнеса, связанного с БД, чем тот, который у меня сейчас есть. Кто-нибудь имеет конкретные знания о решениях DAL, которые обеспечивают лучшую модульность? Я прочитал несколько постов здесь и в других местах в сети, но никто не говорил об этом. Если существует уже существующий вопрос, в котором он уже решен, мне было бы интересно увидеть ссылку на него, и он был бы рад закрыть этот вопрос.
Дополнительная информация:
Укороченная версия моего длинного вопроса выше: «В чем преимущество , а не при использовании подхода DLL, который я сейчас использую?» Текущая модель, которую я использую, имеет следующие характеристики:
- Количество классов POCO, которые абстрагируют базовую модель БД (эти классы в настоящее время не генерируются автоматически, но были созданы вручную, хотя я предполагаю, что они могут быть автоматически созданы с помощью EF или чего-то подобного, хотя я не уверен это действительно важно)
- Ряд открытых методов, которые можно вызывать, например,
GetOrderDetails(int orderID)
или SubmitOrder(Order newOrder)
- Обрабатывает строку подключения к БД через входы, которые предоставляются приложением с помощью DLL