WCF第二章契約一方向操作

1460 ワード

クライアントがサービス側にメッセージを送信する必要があるが、返信メッセージを受信しない場合、メッセージ交換モードを使用しないことは便利です.このモードを使用すると、クライアントはメッセージの正常な伝達の確認だけを必要とします.サービス側が正確なメッセージを返す必要はありません.ワンステップモードを誤って「発後不理」と呼ぶことがある.実際の応用では、呼び出し元が通信チャネルに正常にコミットされたメッセージの確認を受信したため、「送信および理解」である.WCFは、サービスオペレーション階層における一方向メッセージ交換モードをサポートする.サービス・オペレーションは、一方向としてマークされ、インフラストラクチャがその状況をより改善します.1つのクライアントがサービス側の単一のメソッドを呼び出す場合、またはより正確には、1つのクライアントが1つのオペレーションが一方向としてマークされたサービス終了点にメッセージを送信すると、制御側は、サービスオペレーションが完了する前に呼び出し側に戻る.一方向操作は,属性[OperationContract]にIsOneWay=true修飾語を用いて決定される.リスト2.5は、2つのサービス操作を有するサービス契約を暴露する.両方の実装は同じですが、1つのテーブルは一方向操作としてマークされています.クライアント・アプリケーションがDoBigAnalysisFastを呼び出すと、サービスが実行中である場合でも、クライアント・エージェントの呼び出しはすぐに返され、10秒も待たない.Sleep文.クライアントがDoBigAnalysisSlowを呼び出すと、クライアントエージェントが10秒間ブロックを呼び出す.Sleep文の場合.コードは、他のメッセージ形式と比較して、伝送メッセージのバインディングまたは通信プロトコルを知らないことに注意されたい.netTcpBindingは双方向通信をサポートし、basicHttpBindingは要求応答モードをサポートするため、両方とも一方向モードをサポートするために使用することができる.
リスト2.5一方向操作契約
    [ServiceContract]

    public interface IStockService

    {

        [OperationContract(IsOneWay = true)]

        void DoBigAnalysisFast(string ticker);



        [OperationContract]

        void DoBigAnalysisSlow(string ticker);

    }



    public class StockService : IStockService

    {

        public void DoBigAnalysisFast(string ticker)

        {

            Thread.Sleep(10000);

        }

        public void DoBigAnalysisSlow(string ticker)

        {

            Thread.Sleep(10000);

        }

    }