2009-11-12 2 views
0

У меня есть несколько служб WCF в моей внутренней сети, которые размещены IIS 6, используя basicHttpBinding. Существует несколько существующих приложений, которые используют эти службы, используя динамический прокси-метод «CreateChannel()».WCF Http to Tcp Proxy

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

Моей идеей является создание «прокси-сервера WCF», в основном службы, работающей на сервере, который подвергается внешней стороне, прослушивается с использованием привязки net.tcp и преобразует/пересылает запросы на внутренние службы http.

Сейчас код очень прост, он выглядит примерно так, как это ...

ChannelFactory factory=new System.ServiceModel.ChannelFactory<IFooService>("FooService",new System.ServiceModel.EndpointAddress("http://internalserver/FooService.svc"); 
IFooService fooService=factory.CreateChannel(); 

ServiceHost host = new ServiceHost(fooService, new Uri[] { new Uri("net.tcp://externalserver:50001/FooService")}); 

Я понимаю, что это очень наивный код в данный момент, он не учитывает каналов ошибочно работающих и т.д., но потерпите меня.

Проблема, с которой я сталкиваюсь, заключается в том, что вызов GetType() на fooService (который здесь является прокси, сгенерированный wcf) возвращает IFooService, а не класс прокси. WCF не нравится это при создании нового хоста службы, и я получаю ошибку «этот» тип не может быть самим интерфейсом ». на последней строке.

Это просто ужасная идея? Если нет, то лучший способ заставить его работать? Должен ли я быть вынужден использовать svcutil сгенерированные прокси?

ответ

2

В текущем WCF 3.5, вы должны сделать это сами - видеть отличную две части статьи

Мишель Леру Бустаманте.

С WCF 4 - выпущенный с .NET 4, предположительно в марте 2010 года - все будет намного легче, так как WCF 4 уже будет включать базовый класс «RoutingService» - см. Endpoint.TV video interview от Ron Jacobs по этой теме.

Marc

+0

+1, отличное сообщение. –

+1

Это похоже на то, что я ищу. Это все о том, какие правильные ключевые слова для поиска! Благодаря! – Brook