WCF, как создать два канала, подключенных к одному экземпляру службы - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть некоторые проблемы с экземплярами службы WCF.

ChannelFactory<IMyInterface> factory = new ChannelFactory<IMyInterface>(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8000"));

IMyInterface iFirst = firstFactory.CreateChannel();
iFirst.firstMethod();

IMyInterface iSecond = firstFactory.CreateChannel();
iSecond.secondMethod();

Работает нормально, но создает два экземпляра класса обслуживания на стороне сервера.InstanceContextMode установлен на InstanceContextMode.PerSession, и я бы хотел оставить его таким.Я нашел эту статью:

http://msdn.microsoft.com/en-us/magazine/cc163590.aspx#S4

В разделе Duplicating a Proxy есть Рисунок 5 Дублирование прокси.Мне кажется, это идеальное решение, но IClientChannel больше не содержит ResolveInstance() метод.Есть ли другой способ создать два канала, подключенных к одному экземпляру службы, без установки InstanceContextMode в InstanceContextMode.Single?

1 Ответ

1 голос
/ 22 декабря 2011

Метод IClientChannel.ResolveInstance был заменен новой точкой расширения - интерфейсом System.ServiceModel.Dispatcher.IInstanceContextProvider.

Изменение описано здесь: http://blogs.msdn.com/b/mahjayar/archive/2006/07/08/660176.aspx - возможно, вы сможете реализовать этот интерфейс, чтобы получить то, что вы хотите достичь.

...