我的內部網絡上有許多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