第二章では、WCFの契約をまとめたもの

この章では、相互運用性の基礎となる背景の契約の多くをカバーしています。契約は正確にメッセージサービスが理解できる説明します。

契約の定義でWCFのSOAP高い利用率。特に、データを記述するためにXSDを使用して、サービスのエンドポイントを記述するためにWSDLを使用しています。WSDLで定義されたサービスの操作が正しい.NETクラスに受信した要求を転送するために実行時に使用されています。同様に、XSD契約によって定義されたXMLファイルは、実行時に.NET型にデシリアライズされ、サービスの操作に送られます。合わせて、WSDLおよびXSD定義は、標準ベースの.NETタイプの実装を実現するためのサービスを提供しています。

契約の3種類の詳細な定義:

サービス契約。サービス契約は、サービスによって実現される機能の操作について説明します。

データコントラクト。データ通信サービス契約は、データ構造が依存について説明します。XMLデータとそのメンバーの厳密な選択へのデータコントラクトのCLR型配列を。

メッセージ契約。メッセージタイプおよび非型付けされたデータと契約し、SOAPメッセージヘッダとメッセージボディの正確な制御を提供します。

サービス契約

メソッドのクラスのサービス・インターフェースを公開 - サービス契約は、サービス操作を定義します。彼らは、サービスへの正式なWSDLインターフェースを提供します。サービス契約と[OperationContract]プロパティが[のServiceContract]で定義されています。操作名は、クラスから継承し、メソッド名はときに、これらの属性の定義では、オーバーロードすることができます。応答、一方向および二重 - 要求:サービス契約は、3つのメッセージ交換パターンをサポートしています。

要求 - 応答操作コントラクト操作を完了するためにサーバーを待つことになる実行制御クライアントを取得する前に、クライアントのコールをブロックします。そのため、彼らはユーザーのみに使用すべき比較的迅速なフィードバックのサービスコールを待つことをいとわないです。クライアントは、長い待ち時間のサービスコールをブロックされないようにする応答メッセージ交換パターン - クライアントでは、.NET非同期呼び出しパターンは、要求に適用することができます。

一方向の操作契約は、名前が示すように、一方通行;彼らは最終顧客に結果を返しません。サービスオペレータは、ヌル戻り値の型を持っている必要がありますし、[OperationContract]内で[IsOneWay =真]としてマークされています。契約一方向伝送プロトコルは、更に、MSMQを含む任意で実施することができます。

彼らは、クライアントとサーバー上のペアと応答操作で要求されているので、双方向動作契約は最高のスケーラビリティとパフォーマンスを提供しています。クライアントとサーバーはメッセージを初期化することができます良い双方向チャネル、クライアントとサーバの後に拾いました。この時間は、合計モードでは、クライアントの通知のための理想的です。

データコントラクト

データコントラクトは、アプリケーション・データ・インターフェース・サービスを定義します。[のDataContract]クラスおよびXMLメタデータの定義に含まれる[DataMemberを]属性標識、彼らが表現WSDLサービス契約の一部として使用されています。他のタイプのデータは、基本型のものと、WSDL内に露出し、[直列化]が入力タグ付けすることができます。相互運用性の規則のために設計された[のDataContract]シーケンスので、WCF構造で最高のシーケンスです。

[DataMemberプロパティ]で、クラスのメンバーは、契約に含まれるデータを属性。会員のみが契約に含まれる、この属性を使用するので、これは厳しい選択モデルです。これはまた、後者は、内部構造は、外部サービスにさらされる原因となるように、[直列化]に対する[のDataContract]はより適切な配列構造と呼ぶことができます。

階層サポートクラスともこの階層を介して自分の名前空間が含まれています。マルチステートをサポートするために、および既知のタイプのリストを公開するために使用するオブジェクトの収集、WCFサービスが含まれています。また、データは、契約のバージョンを設計しました。データコントラクトに新しいメンバーを追加する場合、既存のクライアントが許可されている特別なルールを提供するために取り組んでいきます。

メッセージ契約

操作契約SOAPヘッダとボディを可能に契約メッセージ。メッセージを使用することができるのDataContract]または[直列化]を入力する、またはそれらがメッセージの単純型であってもよいです。メッセージのタイプは、[MessageHeader]と[するmessagebody]プロパティによって定義されます。メッセージデータの設計段階で最大の拡張性を提供する、不定することができます。SOAPメッセージヘッダとメッセージ本体にアクセスすることができる型なし。

===============

より転載

 

ます。https://www.cnblogs.com/llbofchina/archive/2011/06/27/2091405.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33895016/article/details/94206783