У меня есть несколько служб WCF в моей внутренней сети, которые размещаются в IIS 6 с использованием basicHttpBinding. Существует несколько существующих приложений, которые используют эти службы с помощью метода динамического прокси-сервера CreateChannel ().
Я создаю мобильное приложение, которое работает за пределами нашей сети с использованием сотовой связи, где важно минимизировать использование данных, поэтому я пытаюсь использовать 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 прокси?