Доступ к базе данных из архитектуры веб-сервиса - PullRequest
3 голосов
/ 23 января 2012

У меня есть веб-сервис (ASMX), который подключается к базе данных Oracle, и я думаю, что моя архитектура не подходит.

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

Сейчас у меня есть:

ASMX:

  1. содержит веб-методы
  2. проверяет параметры запроса
  3. вызываетМетод DLL

DLL:

  1. создает соединение с базой данных (жестко закодированные константы для сервера базы данных / пользователь / пароль)
  2. выбирает данные из базы данных
  3. создает некоторые объекты с этими данными
  4. закрывает соединение.
  5. возвращает эти объекты

AMSX:

  1. обрабатывает возвращенные объекты из DLL и возвращает их.

Должен ли я создать соединение в веб-методах и сохранить эти параметры в приложении или в переменной сеанса, а не создавать их в методах dll?

Спасибо за помощь

1 Ответ

0 голосов
/ 23 января 2012

Как указано в комментарии от Davide, если вы не используете что-то вроде NHibernate или MS Entity Framework, то, пожалуй, лучше всего отделить Уровень бизнес-логики от Уровень доступа к данным .Преимущества хорошо задокументированы, включая разделение задач, тестирование и возможность DAL быть межплатформенным / независимым от системы.

1.создание соединения с базой данных (жестко закодированные константы для сервера базы данных / пользователя / пароля)

Это очень плохая практика и может привести к широкому кругу проблем безопасности и развертывания.

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

Лучшее и наиболее удобное место для хранения строки подключения к базе данных в разделе ConnectionString файла App.config или Web.Config, если вы создаете статическое свойство для предоставленияСтрока подключения из файла конфигурации, поэтому вам не нужно каждый раз читать настройки конфигурации.

private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

Должен ли я создать соединение в веб-методах и сохранить эти параметры в приложении или сеансепеременная, вместо того, чтобы создавать их в методах dll?

Короткий ответ: нет, API, который вы предоставляете для своей веб-службы, должен делать только то, для чего он предназначен, подвергая основной бизнес-объектУровень доступа к данным.

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