У меня есть несколько служб 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 сгенерированные прокси?
+1, отличное сообщение. –
Это похоже на то, что я ищу. Это все о том, какие правильные ключевые слова для поиска! Благодаря! – Brook