ContractDescription 클래스

정의

엔드포인트가 외부 대상과 통신하는 내용을 지정하는 WCF(Windows Communication Foundation) 계약에 대해 설명합니다.Describes a Windows Communication Foundation (WCF) contract that specifies what an endpoint communicates to the outside world.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
상속
ContractDescription

예제

다음 예제에서는 개체를 만들거나 검색 하는 여러 가지 방법을 보여 줍니다 ContractDescription .The following example shows a number of ways to create or retrieve a ContractDescription object. 그런 다음 개체에 저장 된 다양 한 정보를 표시 합니다 ContractDescription .It then displays the various pieces of information that are stored in the ContractDescription object.

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 계약은 끝점이 외부 대상과 통신 하는 내용을 지정 하는 작업의 컬렉션입니다.A WCF contract is a collection of operations that specifies what the endpoint communicates to the outside world. 각 작업은 메시지 교환입니다.Each operation is a message exchange. 예를 들어 요청/응답 메시지 교환은 요청 메시지 및 그와 관련된 응답 메시지로 구성됩니다.For example, a request message and an associated reply message form a request/reply message exchange.

ContractDescription개체는 WCF 계약과 해당 작업을 설명 하는 데 사용 됩니다.A ContractDescription object is used to describe WCF contracts and their operations. 내에서 ContractDescription 각 계약 작업에는 OperationDescription 계약의 일부인 각 작업의 요소 (예: 단방향 또는 요청/응답)를 설명 하는 해당이 있습니다.Within a ContractDescription, each contract operation has a corresponding OperationDescription that describes aspects of the each operation that is part of the contract, such as whether the operation is one-way or request/reply. OperationDescription또한 각는를 사용 하 여 작업을 구성 하는 메시지에 대해 설명 합니다 MessageDescriptionCollection .Each OperationDescription also describes the messages that make up the operation using a MessageDescriptionCollection. ContractDescription 프로그래밍 모델을 사용 하 여 계약을 정의 하는 인터페이스에 대 한 참조를 포함 합니다.ContractDescription contains a reference to an interface that defines the contract using the programming model. 이 인터페이스는로 표시 되며 ServiceContractAttribute 끝점 작업에 해당 하는 메서드는로 표시 됩니다 OperationContractAttribute .This interface is marked with ServiceContractAttribute and its methods that correspond to endpoint operations are marked with the OperationContractAttribute.

이중 계약은 다음과 같은 논리적 작업 집합을 정의 합니다.A duplex contract defines the following logical sets of operations:

  • 클라이언트에서 호출할 수 있도록 서비스에서 노출 하는 집합입니다.A set that the service exposes for the client to call.

  • 서비스에서 호출 하도록 클라이언트에서 노출 하는 집합입니다.A set that the client exposes for the service to call.

이중 계약을 정의 하는 프로그래밍 모델은 각 집합을 별도의 인터페이스에 분할 하 고 각 인터페이스에 특성을 적용 하는 것입니다.The programming model for defining a duplex contract is to split each set in a separate interface and apply attributes to each interface. 이 경우에는 ContractDescription 하나의 이중 계약으로 그룹화 하는 각 인터페이스에 대 한 참조가 포함 됩니다.In this case, ContractDescription contains a reference to each of the interfaces that groups them into one duplex contract.

바인딩과 마찬가지로 각 계약에는 Name Namespace 서비스의 메타 데이터에서 고유 하 게 식별 하는 및가 있습니다.Similar to bindings, each contract has a Name and Namespace that uniquely identify it in the metadata of the service.

생성자

ContractDescription(String)

지정된 이름을 사용하여 ContractDescription 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ContractDescription class with a specified name.

ContractDescription(String, String)

네임스페이스로 한정된 이름을 지정하여 ContractDescription 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ContractDescription class with a namespace-qualified name specified.

속성

Behaviors

계약 설명과 관련된 동작을 가져옵니다.Gets the behaviors associated with the contract description.

CallbackContractType

계약 설명이 지정하는 콜백 계약의 형식을 가져오거나 설정합니다.Gets or sets the type of callback contract that the contract description specifies.

ConfigurationName

계약 설명의 구성 이름을 가져오거나 설정합니다.Gets or sets the configuration name for the contract description.

ContractBehaviors

계약에 대한 동작의 컬렉션을 가져옵니다.Gets the collection of behavior for the contract.

ContractType

계약 설명이 지정하는 계약 형식을 가져오거나 설정합니다.Gets or sets the contract type that the contract description specifies.

HasProtectionLevel

계약에 보호 수준이 설정되어 있는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether the contract has had a protection level set.

Name

계약 이름을 가져오거나 설정합니다.Gets or sets the name of the contract.

Namespace

계약의 네임스페이스를 가져오거나 설정합니다.Gets or sets the namespace for the contract.

Operations

계약과 연결된 작업 설명 컬렉션을 가져옵니다.Gets the collection of operation descriptions associated with the contract.

ProtectionLevel

계약과 연결된 보안 보호 수준을 가져오거나 설정합니다.Gets or sets the level of security protection associated with the contract.

SessionMode

세션이 계약에 필요한지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether a session is required by the contract.

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetContract(Type)

지정한 계약 형식에 대한 계약 설명을 반환합니다.Returns the contract description for a specified type of contract.

GetContract(Type, Object)

지정한 계약 형식과 서비스 구현에 대한 계약 설명을 반환합니다.Returns the contract description for a specified type of contract and service implementation.

GetContract(Type, Type)

지정한 계약 형식과 서비스 유형에 대한 계약 설명을 반환합니다.Returns the contract description for a specified type of contract and a specified type of service.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetInheritedContracts()

현재 계약 설명이 상속하는 계약 설명 컬렉션을 반환합니다.Returns a collection of contract descriptions that are inherited by the current contract description.

GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ShouldSerializeProtectionLevel()

ProtectionLevel 속성이 기본값에서 변경되었으며 이를 serialize해야 하는지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether the ProtectionLevel property has changed from its default value and should be serialized.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상