WCF コントラクトは、エンドポイントが外部と通信する内容を指定する操作のコレクションです。それぞれの操作は、メッセージ交換です。たとえば、要求メッセージとそれに関連する応答メッセージは要求/応答メッセージ交換を行います。
ContractDescription オブジェクトは、WCF のコントラクトとその操作を記述するために使用されます。ContractDescription では、各コントラクト操作に、対応する OperationDescription があります。ここでは、操作が一方向か要求/応答かなど、コントラクトの一部である各操作の側面を説明します。また、それぞれの OperationDescription では、MessageDescriptionCollection を使用して、操作を構成するメッセージも記述します。ContractDescription には、プログラミング モデルを使用してコントラクトを定義するインターフェイスへの参照が含まれます。このインターフェイスは ServiceContractAttribute でマークされ、エンドポイントの操作に対応するメソッドは OperationContractAttribute でマークされます。
双方向コントラクトは、次に示す操作の論理セットを定義します。
双方向コントラクトを定義するためのプログラミング モデルでは、各セットを個別のインターフェイスに分割し、各インターフェイスに属性を適用します。この場合、ContractDescription には各インターフェイスへの参照が含まれます。この参照によって、各インターフェイスは 1 つの双方向コントラクトにグループ化されます。
バインディングと同様に、各コントラクトはサービスのメタデータ内でコントラクトを一意に識別する Name と Namespace を持ちます。