Лучшие решения для уровня доступа к базе данных, чем мое решение для сборки .NET? - PullRequest
0 голосов
/ 14 сентября 2011

Для будущих усилий я буду смотреть на частичное переписывание существующей системы. Одним из его компонентов является DAL, который реализован в виде сборки .NET, на которую ссылаются несколько приложений, и предоставляет методы для передачи данных в базовую БД и извлечения данных из этой БД. По сути, я предоставляю пользователям DLL средства для подключения к некоторой БД и выполнения ограниченного набора обращений к ней. Вместо того, чтобы сами писать SQL, они используют мой определенный интерфейс.

В настоящее время ведутся дискуссии об использовании некоторого уровня службы доступа к данным вместо существующей библиотеки DLL, и сторонники этого подхода указывают на то, что он является «обслуживаемым», «тестируемым», «масштабируемым» - все стандартные модные слова , Также было заявлено, что этот подход каким-то образом минимизирует влияние на приложения, использующие слой, потому что он изолирует изменения, хотя я не уверен, что это так. Мне кажется, что любой слой между базовой БД и приложением будет иметь четко определенный интерфейс, и поэтому изменения, внесенные с любой стороны, которые не затрагивают другую сторону интерфейса, будут невидимы и не окажут реального влияния. , Кроме того, любые изменения, которые делают влияют на другую сторону, могут также потребовать изменений в этом среднем слое. Я не понимаю, как это было бы.

Ожидается, что в начале DAL потребуются изменения, потому что, ну, в общем, все меняется. Параметры метода меняются, и это заставляет меня сейчас перекомпилировать сборку DAL и распространить ее среди пользователей DAL. Это случается не слишком часто, но происходит. Возможно, я немного наивен в этой области, но я не знаю лучшего способа вывести приложения из бизнеса, связанного с БД, чем тот, который у меня сейчас есть. Кто-нибудь имеет конкретные знания о решениях DAL, которые обеспечивают лучшую модульность? Я прочитал несколько постов здесь и в других местах в сети, но никто не говорил об этом. Если существует уже существующий вопрос, в котором он уже решен, мне было бы интересно увидеть ссылку на него, и он был бы рад закрыть этот вопрос.


Дополнительная информация:

Укороченная версия моего длинного вопроса выше: «В чем преимущество , а не при использовании подхода DLL, который я сейчас использую?» Текущая модель, которую я использую, имеет следующие характеристики:

  • Количество классов POCO, которые абстрагируют базовую модель БД (эти классы в настоящее время не генерируются автоматически, но были созданы вручную, хотя я предполагаю, что они могут быть автоматически созданы с помощью EF или чего-то подобного, хотя я не уверен это действительно важно)
  • Ряд открытых методов, которые можно вызывать, например, GetOrderDetails(int orderID) или SubmitOrder(Order newOrder)
  • Обрабатывает строку подключения к БД через входы, которые предоставляются приложением с помощью DLL

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

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

Ах, точно не был уверен, что вы имели в виду под уровнем обслуживания доступа к данным.
Я думаю, что для получения хороших отзывов об этом нам нужно знать, сколькоклиенты, типы клиентов, какие методы будут в нем (я думаю, что огромные запросы на выборку сложных объектов плохо подходят для WCF или подобных).Кроме того, поскольку WCF настолько универсален, будет ли это на той же машине, через локальную сеть, через Интернет?

Я немного использовал WCF, но на самом деле не в этом контексте.

Этоможет быть немного более модульным, чем ваша DLL, если все внесенные вами изменения не нарушают контракт (только добавляя новые методы), но я бы сказал, что большая выгода будет получена, если вам понадобится доступ к ним с разных платформ или достаточно клиентов, которыесоединения с базой данных будут напряженными.Некоторые ошибки в WCF могут быть сложными для отладки.И если вам нужно разорвать контракт, вы должны отправить им новый файл servicecontract.cs для этого

0 голосов
/ 08 февраля 2013

В моем понимании вашего вопроса и желания клиента, я полагаю, что они говорят о чем-то вроде SOA или Сервис-ориентированной архитектуры.Согласно принципу SOA он допускает модульный и слабосвязанный подход.Это может привести к упрощению обслуживания, так как логика процедуры доступа к данным может быть изменена, обновлена ​​и / или сохранена без воздействия на клиентов.Кроме того, скажем, у вас есть двадцать клиентов, которые используют «службу» - не будет необходимости обновлять и развертывать новую dll для всех клиентов, которые используют «службу» или DAL.

С точки зрения платформы или технологии, используемой для реализации систем SOA, это может быть все, что вы выберете.Или точнее, какой бы инструмент не подходил для работы.Вы можете свернуть свои собственные, вы можете использовать WCF или использовать WebAPI ... и т.д ...

Вот несколько ссылок на эту тему:

Введение вSOA - JavaWorld

Сервис-ориентированная архитектура с .NET

Сервис-ориентированная архитектура и Microsoft .NET

MS Architecture Journal # 21 - SOA сегодня и в прошлом

Понимание сервис-ориентированной архитектуры

...