2011-07-07 8 views
2

2つの.asmx Webサービスへの参照を含むレガシーアプリケーションを作成しています。エンタープライズサービスバスのパターンに従って、サービスレイヤを再構成して、クライアントがすべての呼び出しを1つのサービスに指示し、適切なサービスへの要求のルーティングを処理します。WCFルーティングサービスを介して従来のASMX Webサービスに呼び出しをルーティングする

私はWCFルーティングサービスを使用していて、WCFサービスへの呼び出しをRoutingService経由で適切なサービスに正常にルーティングできました。

は例えば、クライアントがに電話をかけることができます。

http://routingservice/RoutingService.svc/WcfService 

およびルーティングサービスは、私は設定で指定した規則を通じて

http://wcfservice/WcfService 

に沿って、それを転送します

何らかの理由で.asmxサービスで同じ結果を達成したいのですが、レガシーアプリケーションのWeb参照URLをルーティングサービスを指すように更新するだけですその後、クライアントが現在

変更使用しているURLへのリクエスト転送します:

http://webservices/LegacyService.asmx 

http://routingservice/RoutingService.svc/LegacyWebService 

は私が考えていた方法で行うことが、このことが可能です?

+0

しようとするとどうなりますか? –

答えて

6

私はそれを試みたことはありませんが、理論的には問題なく動作するはずです。 WCFはASMXと下位互換性があります.WCFクライアントを使用してASMXと対話することができ、ASP.NETパイプラインにアクセスする必要がある場合は、ASMXの代わりにWCFを使用できます。 basicHttpBinding(これは下位互換性のために使用されています)のルーティングエンドポイントを使用してみてください。ルーティングサービスの場合は、IRequestReplyRouter契約を使用してください。

1つの問題があります.ASMXサービスがASP.NETセッションを使用している場合、セッションキーがCookieで転送されます。ルーティングサービスがCookieをどのように扱うかはわかりません。

+1

それは期待通りに動作しますが、.asmxサービスでメタデータを公開するのは難解です。私は正常にルータを介してWCFサービスのためのmexエンドポイントをルーティングすることができましたし、svcutilは同様に簡単にルーティングされたエンドポイントを使用することができますが、実際のWSDLを使用してクラスが既に生成されていることが必要です。事実の後にURLを変更する。 – mclark1129

関連する問題