ChannelFactory Повторное использование стратегий - PullRequest
3 голосов
/ 16 мая 2009

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

По вашему опыту, какие стратегии повторного использования ChannelFactory вы считаете наиболее полезными и надежными в контексте приложения ASP.NET?

Ответы [ 2 ]

3 голосов
/ 16 мая 2009

Если вы используете .NET 3.0 с пакетом обновления 1 (SP1) и более поздних версий и не нуждаетесь в специальных материалах, требующих прямой обработки каналов, тогда лучшим вариантом будет просто использовать прокси-классы на стороне клиента, полученные из ClientBase (например, сгенерированные при импорте услуг). Те уже кешируют фабрику внизу. Подробности см. здесь .

Если нет, то да, вам нужно где-то вставить объект IChannelFactory , но вам все равно нужно убедиться, что вы правильно обрабатываете совместное использование (я не думаю, что у стека есть какие-либо гарантии, что доступ к фабрика является поточно-ориентированной), но в остальном она должна быть довольно простой.

1 голос
/ 18 декабря 2012

Дарин Дамитров опубликовал полезный ответ по поводу повторного использования Channelfactories здесь: -

создание WCF ChannelFactory

Я смотрел на использование памяти и производительность в приложении, над которым я недавно работал. Я применил технику, которую он защищал (используя словарь для хранения набора каналов), и у меня был хороший прирост производительности.

То, что я видел, было то, что создание канала может занимать до 70 мс. Если это часто происходит, это быстро складывается.

В настоящее время я проявляю осторожность и не настроил свой контейнер DI для обслуживания тех же экземпляров фабрики каналов в течение всего срока службы приложения. Вместо этого я заставляю их работать в течение одного HTTP-запроса (в течение которого может быть сделано много внутренних вызовов службы).

...