У меня довольно простой веб-сервис, который предоставляет данные с сервера SQL. Он будет использоваться для синхронизации данных между 2 различными базами данных (SQL Server и Lotus Notes). Мы находимся в стадии тестирования веб-сервиса и опрашиваем его с 20 требов. / Мин., Первые 2 минуты все идет нормально, но через секунду мы получаем исключение, очевидно, соединение (с базой данных) ) не может быть открыт (тайм-аут).
Есть ли у вас какие-либо советы / рекомендации о том, что делать или на что посмотреть? Веб-сервис был запрограммирован с использованием C # / .NET, соединение с БД открывается при создании объекта (веб-сервис) и закрывается при удалении объекта.
Я подумал об использовании global.asax, чтобы «поделиться» соединением, но после некоторого поиска в Google я обнаружил, что большинство людей считают эту идею плохой, и я ищу другое решение.
пс. служба объединена в пул синхронно, не существует 2 запросов одновременно
-edit-
(после первых 2 ответов о пуле)
Это текущий код:
public class DataService : System.Web.Services.WebService
{
private SqlConnection conn = new SqlConnection("Data Source=ip;database=database;uid=user;pwd=secret;");
public DataService ()
{
try
{
conn.Open();
}
catch (Exception dbconn)
{
throw new SoapException("Couldn't open connection to database:" + dbconn.Message + " More info at: " + dbconn.HelpLink, errorCode);
}
//Uncomment the following line if using designed components
//InitializeComponent();
}
~DataService()
{
conn.Close();
}
[WebMethod(Description="Gets all Person changes(from last week)")]
public Person[] GetPerson()
{
Person[] Personen = null;
SqlCommand sqlcmd = conn.CreateCommand();
sqlcmd.CommandText = "SELECT * FROM Person";
SqlDataReader Rows = sqlcmd.ExecuteReader();
while (Rows.Read())
{
//doSomething
}
Rows.Close();
return Personen;
}
}