内部ネットワーク上に、basicHttpBindingを使用してIIS6によってホストされている多数のWCFサービスがあります。動的プロキシ「CreateChannel()」メソッドを使用してこれらのサービスを使用する既存のアプリケーションがいくつかあります。
データ使用量を最小限に抑えることが重要なセルラー接続を使用して、ネットワークの外部で実行されるモバイルアプリケーションを構築しているため、httpバインディングの代わりにnetTcpBindingを使用しようとしています。
私のアイデアは、「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(ここではwcfによって生成されたプロキシ)でGetType()を呼び出すと、プロキシのクラスではなくIFooServiceが返されることです。WCFは、新しいサービスホストを作成するときにそれを嫌い、「「この」タイプはインターフェイス自体にすることはできません」というエラーが表示されます。最後の行に。
これはただの恐ろしい考えですか?そうでない場合、それを実行するための最良の方法は何ですか?svcutilで生成されたプロキシの使用を強制されますか?