Кэширование / пул клиентских подключений WCF - PullRequest
4 голосов
/ 18 августа 2010

Предположим, вы предоставляете сервис WCF из одного проекта и используете его в другом проекте с помощью «Добавить ссылку на сервис» (в данном случае WPF-приложение Framework 3.5).

Будет ли ClientBase выполнять какой-либо пул соединений базового канала при повторном создании прокси-сервера, полученного из ClientBase, или вы будете нести полную нагрузку при установлении соединения со службой каждый раз? Я особенно обеспокоен этим, так как мы используем security mode = "Message" с wsHttpBinding.

Ответы [ 2 ]

7 голосов
/ 18 августа 2010

Пожалуйста, ознакомьтесь с этой статьей , в которой описаны рекомендации по кешированию прокси ваших клиентов.Если вы создаете свой прокси напрямую (MyProxy p = new MyProxy(...)), то кажется, что вы действительно не можете кэшировать базовую ChannelFactory, которая является дорогой частью.Но если вы используете ChannelFactory для создания прокси, ChannelFactory кэшируется прокси на уровне AppDomain и основывается на параметрах, которые вы передаете прокси (что-то вроде пула соединений, основанного на строке соединения).

В статье подробно рассказывается о том, что происходит под прикрытием, но главное в том, что вы получаете повышение производительности, если вы используете ChannelFactory для создания прокси-сервера, а не для его непосредственного создания..

Надеюсь, это поможет !!

1 голос
/ 07 сентября 2011

В этой статье объясняется, что да, существует пул TCP-соединений для WCF. Однако это не объясняет, в каких случаях оно вступит в силу. Насколько я могу судить, пока вы создаете прокси-объект, предоставляя ему именованную конечную точку (т.е. IE не использует пользовательский объект Binding), пул соединений будет работать. Я проверил это, загрузив нагрузку на свое веб-приложение и проверив открытые соединения TCP с помощью netstat.

Но суть в том, что вам не нужно кэшировать прокси-объекты для повторного использования TCP-соединений.

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