ContractDescription クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
エンドポイントが外部と通信する内容を指定する Windows Communication Foundation (WCF) コントラクトを記述します。
public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
- 継承
-
ContractDescription
例
次の例は、ContractDescription オブジェクトを作成または取得するさまざまな方法を示しています。 この例では、さらに ContractDescription オブジェクトに格納されているさまざまな情報を表示します。
Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
serviceHost.AddServiceEndpoint(
typeof(ICalculator),
new WSHttpBinding(),
"CalculatorServiceObject");
// Enable Mex
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);
serviceHost.Open();
ContractDescription cd0 = new ContractDescription("ICalculator");
ContractDescription cd1 = new ContractDescription("ICalculator", "http://www.tempuri.org");
ContractDescription cd2 = ContractDescription.GetContract(typeof(ICalculator));
CalculatorService calcSvc = new CalculatorService();
ContractDescription cd3 = ContractDescription.GetContract(typeof(ICalculator), calcSvc);
ContractDescription cd4 = ContractDescription.GetContract(typeof(ICalculator), typeof(CalculatorService));
ContractDescription cd = serviceHost.Description.Endpoints[0].Contract;
Console.WriteLine("Displaying information for contract: {0}", cd.Name.ToString());
KeyedByTypeCollection<IContractBehavior> behaviors = cd.Behaviors;
Console.WriteLine("\tDisplay all behaviors:");
foreach (IContractBehavior behavior in behaviors)
{
Console.WriteLine("\t\t" + behavior.ToString());
}
Type type = cd.CallbackContractType;
string configName = cd.ConfigurationName;
Console.WriteLine("\tConfiguration name: {0}", configName);
Type contractType = cd.ContractType;
Console.WriteLine("\tContract type: {0}", contractType.ToString());
bool hasProtectionLevel = cd.HasProtectionLevel;
if (hasProtectionLevel)
{
ProtectionLevel protectionLevel = cd.ProtectionLevel;
Console.WriteLine("\tProtection Level: {0}", protectionLevel.ToString());
}
string name = cd.Name;
Console.WriteLine("\tName: {0}", name);
string namespc = cd.Namespace;
Console.WriteLine("\tNamespace: {0}", namespc);
OperationDescriptionCollection odc = cd.Operations;
Console.WriteLine("\tDisplay Operations:");
foreach (OperationDescription od in odc)
{
Console.WriteLine("\t\t" + od.Name);
}
SessionMode sm = cd.SessionMode;
Console.WriteLine("\tSessionMode: {0}", sm.ToString());
Collection<ContractDescription> inheretedContracts = cd.GetInheritedContracts();
Console.WriteLine("\tInherited Contracts:");
foreach (ContractDescription contractdescription in inheretedContracts)
{
Console.WriteLine("\t\t" + contractdescription.Name);
}
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
Dim baseAddress As New Uri("http://localhost:8001/Simple")
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
serviceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), "CalculatorServiceObject")
' Enable Mex
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
serviceHost.Description.Behaviors.Add(smb)
serviceHost.Open()
Dim cd0 As New ContractDescription("ICalculator")
Dim cd1 As New ContractDescription("ICalculator", "http://www.tempuri.org")
Dim cd2 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator))
Dim calcSvc As New CalculatorService()
Dim cd3 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator), calcSvc)
Dim cd4 As ContractDescription = ContractDescription.GetContract(GetType(ICalculator), GetType(CalculatorService))
Dim cd As ContractDescription = serviceHost.Description.Endpoints(0).Contract
Console.WriteLine("Displaying information for contract: {0}", cd.Name.ToString())
Dim behaviors As KeyedByTypeCollection(Of IContractBehavior) = cd.Behaviors
Console.WriteLine(Constants.vbTab & "Display all behaviors:")
For Each behavior As IContractBehavior In behaviors
Console.WriteLine(Constants.vbTab + Constants.vbTab + CType(behavior, Object).ToString())
Next behavior
Dim type As Type = cd.CallbackContractType
Dim configName As String = cd.ConfigurationName
Console.WriteLine(Constants.vbTab & "Configuration name: {0}", configName)
Dim contractType As Type = cd.ContractType
Console.WriteLine(Constants.vbTab & "Contract type: {0}", contractType.ToString())
Dim hasProtectionLevel As Boolean = cd.HasProtectionLevel
If hasProtectionLevel Then
Dim protectionLevel As ProtectionLevel = cd.ProtectionLevel
Console.WriteLine(Constants.vbTab & "Protection Level: {0}", protectionLevel.ToString())
End If
Dim name As String = cd.Name
Console.WriteLine(Constants.vbTab & "Name: {0}", name)
Dim namespc As String = cd.Namespace
Console.WriteLine(Constants.vbTab & "Namespace: {0}", namespc)
Dim odc As OperationDescriptionCollection = cd.Operations
Console.WriteLine(Constants.vbTab & "Display Operations:")
For Each od As OperationDescription In odc
Console.WriteLine(Constants.vbTab + Constants.vbTab + od.Name)
Next od
Dim sm As SessionMode = cd.SessionMode
Console.WriteLine(Constants.vbTab & "SessionMode: {0}", sm.ToString())
Dim inheretedContracts As Collection(Of ContractDescription) = cd.GetInheritedContracts()
Console.WriteLine(Constants.vbTab & "Inherited Contracts:")
For Each contractdescription As ContractDescription In inheretedContracts
Console.WriteLine(Constants.vbTab + Constants.vbTab + contractdescription.Name)
Next contractdescription
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()
注釈
WCF コントラクトは、エンドポイントが外部と通信する内容を指定する操作のコレクションです。 それぞれの操作は、メッセージ交換です。 たとえば、要求メッセージとそれに関連する応答メッセージは要求/応答メッセージ交換を行います。
ContractDescriptionオブジェクトは、WCF コントラクトとその操作を記述するために使用されます。 ContractDescription では、各コントラクト操作に、対応する OperationDescription があります。ここでは、操作が一方向か要求/応答かなど、コントラクトの一部である各操作の側面を説明します。 また、それぞれの OperationDescription では、MessageDescriptionCollection を使用して、操作を構成するメッセージを記述します。 ContractDescription には、プログラミング モデルを使用してコントラクトを定義するインターフェイスへの参照が含まれます。 このインターフェイスは ServiceContractAttribute でマークされ、エンドポイントの操作に対応するメソッドは OperationContractAttribute でマークされます。
二重コントラクトは、次の操作の論理セットを定義します。
サービスが呼び出すクライアント用に公開するセット。
クライアントが呼び出すサービス用に公開するセット。
双方向コントラクトを定義するためのプログラミング モデルでは、各セットを個別のインターフェイスに分割し、各インターフェイスに属性を適用します。 この場合、ContractDescription には各インターフェイスへの参照が含まれます。この参照によって、各インターフェイスは 1 つの双方向コントラクトにグループ化されます。
バインディングと同様に、各コントラクトはサービスのメタデータ内でコントラクトを一意に識別する Name と Namespace を持ちます。
コンストラクター
ContractDescription(String) |
指定した名前を使用して、ContractDescription クラスの新しいインスタンスを初期化します。 |
ContractDescription(String, String) |
指定した名前空間の限定名を使用して、ContractDescription クラスの新しいインスタンスを初期化します。 |
プロパティ
Behaviors |
コントラクトの説明に関連付けられている動作を取得します。 |
CallbackContractType |
コントラクトの説明で指定されたコールバック コントラクトの型を取得または設定します。 |
ConfigurationName |
コントラクトの説明の構成名を取得または設定します。 |
ContractBehaviors |
コントラクトの動作のコレクションを取得します。 |
ContractType |
コントラクトの説明で指定されたコントラクトの型を取得または設定します。 |
HasProtectionLevel |
コントラクトに保護レベルが設定されているかどうかを示す値を取得します。 |
Name |
コントラクトの名前を取得または設定します。 |
Namespace |
コントラクトの名前空間を取得または設定します。 |
Operations |
コントラクトに関連付けられている操作の説明のコレクションを取得します。 |
ProtectionLevel |
コントラクトに関連付けられているセキュリティ保護レベルを取得または設定します。 |
SessionMode |
コントラクトにセッションが必要かどうかを示す値を取得または設定します。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetContract(Type) |
指定した型のコントラクトの、コントラクトの説明を返します。 |
GetContract(Type, Object) |
指定した型のコントラクトおよびサービス実装の、コントラクトの説明を返します。 |
GetContract(Type, Type) |
指定した型のコントラクトおよび指定した型のサービスの、コントラクトの説明を返します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetInheritedContracts() |
現在のコントラクトの説明によって継承されているコントラクトの説明のコレクションを返します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ShouldSerializeProtectionLevel() |
ProtectionLevel プロパティが既定値から変更されたためにシリアル化する必要があるかどうかを示す値を返します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
.NET