доступ к базе данных из нескольких приложений - PullRequest
3 голосов
/ 24 мая 2011


У меня есть приложение windows form (c #) и веб-приложение asp.NET, которые оба обращаются к базе данных Sql Server.Я хочу централизовать доступ к базе данных.Каким методам я должен следовать?Каков общий подход к этой проблеме:

  • Написание библиотек DAL и моделей и использование их в обоих приложениях?
  • Написание службы WCF, включая модель DAL, и использование этой службы с обоими приложениями?
  • Ничего из вышеперечисленного?

Можете ли вы дать мне какую-нибудь идею?
Спасибо.

Ответы [ 5 ]

2 голосов
/ 24 мая 2011

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

1 голос
/ 24 мая 2011

Самый простой способ - обернуть БД службами WCF.

Если вы не пишете большие объемы данных за один раз, вы можете использовать Службу данных WCF;это напрямую оборачивает модель Entity Framework, и вы можете настраивать доступ к таблицам и методам различными способами.

Вам нужно иметь одно место, к которому осуществляется доступ к БД, так что если есть проблема, вы можетенапример, зафиксируйте его в одном месте.

Кроме того, если вы хотите, например, регистрировать все вызовы в определенной таблице, единственный способ убедиться, что это будет сделано, - это централизовать все вызовы в БД.таким образом, и не позволяйте никому прямой доступ к БД.

Заверните службу, затем сохраните строку соединения в секрете.

0 голосов
/ 24 мая 2011

Я думаю, что использование подхода SOA действительно лучше ( WCF или WebServices со слоем DAL), потому что таким образом вам не нужно опубликуйте свой DAL dll с помощью Windows Forms exe. Затем все изменения в вашей модели данных автоматически произойдут с вашими клиентами UI.

Помните, что это может вызвать собственные проблемы:

  • Обеспокоенность безопасностью, так что ваши Сервисы не могут быть доступны напрямую через URL, что позволяет кому-то запускать ваши методы.

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

  • Снижение производительности, поскольку HTTP-доступ всегда обходится дороже, чем прямая связь с DLL.

  • Риск отсутствия связи с сервером, что ожидается от ASP.NET, но требует дополнительных проблем в клиенте Windows Forms для правильного поведения в этих случаях.

0 голосов
/ 24 мая 2011

Корпоративным программистам нравится второй вариант (сервис WCF, включая DAL).

0 голосов
/ 24 мая 2011

Вариант 1 кажется более простым, и я бы сделал то же самое.
Вариант 2 с WCF добавит дополнительный код к вашему продукту и, следовательно, к обслуживанию.Также это будет означать дополнительный слой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...