Как указано в комментарии от Davide, если вы не используете что-то вроде NHibernate или MS Entity Framework, то, пожалуй, лучше всего отделить Уровень бизнес-логики от Уровень доступа к данным .Преимущества хорошо задокументированы, включая разделение задач, тестирование и возможность DAL быть межплатформенным / независимым от системы.
1.создание соединения с базой данных (жестко закодированные константы для сервера базы данных / пользователя / пароля)
Это очень плохая практика и может привести к широкому кругу проблем безопасности и развертывания.
Мой вопрос о том, где создать соединение с базой данных,и как настроить параметры сервер / пользователь / пароль во внешнем файле конфигурации, чтобы не читать его каждый раз, когда мне нужно подключиться к базе данных.
Лучшее и наиболее удобное место для хранения строки подключения к базе данных в разделе ConnectionString файла App.config или Web.Config, если вы создаете статическое свойство для предоставленияСтрока подключения из файла конфигурации, поэтому вам не нужно каждый раз читать настройки конфигурации.
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
Должен ли я создать соединение в веб-методах и сохранить эти параметры в приложении или сеансепеременная, вместо того, чтобы создавать их в методах dll?
Короткий ответ: нет, API, который вы предоставляете для своей веб-службы, должен делать только то, для чего он предназначен, подвергая основной бизнес-объектУровень доступа к данным.