我的内部网络上有许多WCF服务,它们由IIS 6使用basicHttpBinding承载。有几个现有的应用程序通过使用动态代理“CreateChannel()”方法来使用这些服务。WCF Http到Tcp代理
我正在构建一个移动应用程序,它运行在我们的网络之外,使用蜂窝连接,重要的是尽量减少数据使用,所以我试图使用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")});
我知道这是很幼稚的代码在这一点上,它不占故障渠道等,但忍受着我。
我遇到的问题是调用fooService上的GetType()(这是由wcf生成的代理)返回IFooService,而不是代理的类。当创建一个新的服务主机时,WCF不喜欢这种情况,并且我得到错误“'这个'类型不能是一个接口本身。”在最后一行。
这只是一个可怕的想法?如果不是最好的方式让它运行?我是否会被迫使用svcutil生成的代理?
+1,优秀的帖子。 – 2009-11-12 12:41:38
这看起来像我正在寻找。这是关于什么是正确的搜索关键字!谢谢! – Brook 2009-11-12 13:03:14