ContractDescription Sınıf

Tanım

Bir uç noktanın dış dünyayla ne iletişim kurduğunu belirten bir Windows Communication Foundation (WCF) sözleşmesini açıklar.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
Devralma
ContractDescription

Örnekler

Aşağıdaki örnekte, nesne oluşturmanın veya almanın ContractDescription birkaç yolu gösterilmektedir. Ardından nesnesinde ContractDescription depolanan çeşitli bilgi parçalarını görüntüler.

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()

Açıklamalar

WCF sözleşmesi, uç noktanın dış dünyayla ne iletişim kurduğunu belirten bir işlem koleksiyonudur. Her işlem bir ileti değişimidir. Örneğin, bir istek iletisi ve ilişkili bir yanıt iletisi, istek/yanıt iletisi değişimi oluşturur.

ContractDescription WCF sözleşmelerini ve bunların işlemlerini açıklamak için bir nesne kullanılır. içinde ContractDescription, her sözleşme işleminin, işlemin tek yönlü mü yoksa istek/yanıt mı olduğu gibi, sözleşmenin parçası olan her işlemin yönlerini açıklayan bir karşılık geleni OperationDescription vardır. Her OperationDescription biri, kullanarak MessageDescriptionCollectionişlemi oluşturan iletileri de açıklar. ContractDescription , programlama modelini kullanarak sözleşmeyi tanımlayan bir arabirime başvuru içerir. Bu arabirim ile ServiceContractAttribute işaretlenir ve uç nokta işlemlerine karşılık gelen yöntemleri ile OperationContractAttributeişaretlenir.

Çift yönlü anlaşma aşağıdaki mantıksal işlem kümelerini tanımlar:

  • Hizmetin istemcinin çağırması için kullanıma sunan bir küme.

  • İstemcinin çağıracak hizmetin kullanıma açık olduğu bir küme.

Çift yönlü anlaşma tanımlamaya yönelik programlama modeli, her kümeyi ayrı bir arabirime bölmek ve her arabirime öznitelik uygulamaktır. Bu durumda, ContractDescription bunları tek bir çift yönlü sözleşmede gruplandıran arabirimlerin her birine bir başvuru içerir.

Bağlamalara benzer şekilde, her sözleşmenin hizmeti meta verilerinde benzersiz olarak tanımlayan bir Name ve'i Namespace vardır.

Oluşturucular

ContractDescription(String)

Belirtilen adla sınıfının yeni bir örneğini ContractDescription başlatır.

ContractDescription(String, String)

Sınıfın ContractDescription yeni bir örneğini ad alanı nitelenmiş bir ad alanı adıyla başlatır.

Özellikler

Behaviors

Sözleşme açıklamasıyla ilişkili davranışları alır.

CallbackContractType

Sözleşme açıklamasının belirttiği geri çağırma sözleşmesinin türünü alır veya ayarlar.

ConfigurationName

Sözleşme açıklamasının yapılandırma adını alır veya ayarlar.

ContractBehaviors

Sözleşme için davranış koleksiyonunu alır.

ContractType

Sözleşme açıklamasının belirttiği sözleşme türünü alır veya ayarlar.

HasProtectionLevel

Sözleşmenin koruma düzeyi ayarlanmış olup olmadığını gösteren bir değer alır.

Name

Sözleşmenin adını alır veya ayarlar.

Namespace

Sözleşmenin ad alanını alır veya ayarlar.

Operations

Sözleşmeyle ilişkili işlem açıklamalarının koleksiyonunu alır.

ProtectionLevel

Sözleşmeyle ilişkili güvenlik koruması düzeyini alır veya ayarlar.

SessionMode

Bir oturumun sözleşme için gerekli olup olmadığını belirten bir değer alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetContract(Type)

Belirtilen sözleşme türü için sözleşme açıklamasını döndürür.

GetContract(Type, Object)

Belirtilen sözleşme ve hizmet uygulaması türü için sözleşme açıklamasını döndürür.

GetContract(Type, Type)

Belirtilen sözleşme türü ve belirtilen hizmet türü için sözleşme açıklamasını döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetInheritedContracts()

Geçerli sözleşme açıklaması tarafından devralınan sözleşme açıklamalarından oluşan bir koleksiyon döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ShouldSerializeProtectionLevel()

Özelliğin varsayılan değerinden ProtectionLevel değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır