1

私のシステムは次のようになります。

ここに画像の説明を入力してください

Management portalWebアプリケーションを制御するためにからにメッセージを送信する必要がありWCF Service 1ます(キャッシュのクリアなど)。

ここで重要なのは、メッセージはを通過する必要があるということですWCF Service 2WCF Service 2他の2つのコンポーネント(Management portalおよび)ほど頻繁に更新することはできないので、メッセージを気にせずにメッセージを再送信するだけのWCF Service、ある種の普遍的な方法を作成する必要があります。WCF Service 2WCF Service 1

WCF Service 2の間のプロキシとして機能させる方法は?Management portalWCF Service 1

(注:サービス2は暗号化やロギングなどを処理するため、サービス1に直接呼び出すことはできません)

4

1 に答える 1

1

その他の要件に応じたいくつかのアイデア

  1. これは単にメッセージを渡すだけなので、WCFルーター サービスを使用します。その主な用途は、コンテンツ ベースのルーティング (ヘッダーまたはメッセージ コンテンツでさえも) です。動作/拡張機能に任意のカスタム コードを実装できます。ルーターは、構成を通じてほとんどのことを実行できるため、優れています。

  2. Messageを受け入れるように WCF Service 2 のコントラクトを変更します。これにより、.Net オブジェクトへのシリアル化および逆シリアル化が防止され、基本的にすべての要求が取得されて転送されます。

    
    [ServiceContract]
    public interface IService2
    {
    //pass message to Service1
    [OperationContract]
    void MyMethod(Message m);
    }
    

  3. ClientMessageFormatter と DispatchMessageFormatter を拡張して、デフォルトのシリアライゼーション実装をオーバーライドします。これは、シリアライズ/デシリアライズの方法を変更したい場合、またはシリアライズ/デシリアライズするかどうかを変更したい場合のみです。これはおそらくあなたが探しているものではありませんが、あなたの質問で、WCF でこの動作を変更できる場所へのフックが必要であると述べたので、とにかく言及したいと思いました。詳細については、この MSDN の記事を参照してください。

于 2012-10-30T22:27:08.387 に答える