Использование WCF для обертывания существующего подключенного потока

У меня есть оба конца двунаправленного подключенного потока , который я хочу общение закончено. Базовая реализация потока не важна, я хочу работать на уровне Stream ...

Вместо того, чтобы реализовывать свой собственный протокол связи для потока, я хочу использовать все существующие Готовность WCF обернуть существующий поток двунаправленным (запрос / ответ + обратный вызов) каналом связи WCF.

У меня вопрос, как я могу это сделать ...?

ОБНОВЛЕНИЕ:

Я пошел по пути реализации настраиваемого транспорта.У меня это работает, но я все еще не совсем доволен ...

Я реализовал IDuplexSessionChannel , чтобы обернуть поток, вместе с соответствующим IChannelFactory и IChannelListener и элемент привязки для создания фабрик каналов. Теперь я просто прохожу через подключенный поток и в конечном итоге передаю его в транспортный канал, когда он создается.

Итак, я могу создать клиентский прокси для доступа к службе через поток следующим образом:

var callback = new MyCallback();
var instanceContext = new InstanceContext( callback );
var pipeFactory = new DuplexChannelFactory<IMyService>( instanceContext, new StreamBinding(clientStream),
                                                        new EndpointAddress("stream://localhost/MyService"));
var serviceProxy = pipeFactory.CreateChannel();

У меня возникла проблема, похоже, что WCF настроен на использование ServiceHost для создания серверной части. канала через IChannelListener . В моем случае у меня уже есть подключенный поток, и я не смогу больше слушать входящие подключения. Я могу обойти это, но я бы предпочел не использовать ServiceHost для создания серверной части канала, потому что я получаю много непонятных шаблонов и хаков, чтобы заставить его работать.

Вопросы

Поэтому я ищу лучший способ взять IDuplexSessionChannels и обернуть их в прокси-сервер канала как на сервере, так и на стороне клиента.

Или, может быть, другая реализация ServiceHost, для которой не требуется IChannelListener .

На самом деле проблема здесь в том, что мне не нужен один сервер, несколько клиентов, у меня связь 1-1 между моей службой WCF и клиентом. Есть ли правильный способ создать один из них?

Другими словами, я хочу создать экземпляр службы на стороне сервера без использования ServiceHost.

Любые предложения будут оценены на данном этапе.

17
задан Mark 9 March 2012 в 08:52
поделиться