Я понимаю, что типичное приложение .NET, которое обращается к базе данных (n SQL Server), не должно делать ничего особенного, чтобы извлечь выгоду из пула соединений. Даже если приложение неоднократно открывает и закрывает соединения с базой данных, они объединяются фреймворком (при условии, что такие вещи, как учетные данные, не меняются от вызова к вызову).
Мой сценарий использования, кажется, немного отличается. Когда моя служба создается, она один раз открывает соединение с базой данных, выполняет некоторую работу, закрывает соединение и возвращает результат. Затем он разрывается WCF, и следующий входящий вызов создает новый экземпляр службы.
Другими словами, моя служба создается для каждого клиентского вызова, как в [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]. Служба обращается к базе данных SQL Server 2008. Я использую .NET Framework 3.5 SP1.
Пул соединений все еще работает в этом сценарии, или мне нужно свернуть свой собственный пул соединений в виде синглтона или каким-либо другим способом (IInstanceContextProvider?). Я бы предпочел не изобретать велосипед, если это возможно.