Aracılığıyla paylaş


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, ContractDescription nesnesi oluşturmanın veya almanın çeşitli yolları gösterilmektedir. Daha sonra ContractDescription nesnesinde 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.

WCF sözleşmelerini ve bunların işlemlerini açıklamak için bir ContractDescription nesnesi kullanılır. bir ContractDescriptioniçinde, her sözleşme işlemi, 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 ilgili bir OperationDescription sahiptir. Her OperationDescription, MessageDescriptionCollectionkullanarak işlemi oluşturan iletileri de açıklar. ContractDescription, programlama modelini kullanarak sözleşmeyi tanımlayan bir arabirime başvuru içerir. Bu arabirim ServiceContractAttribute ile işaretlenir ve uç nokta işlemlerine karşılık gelen yöntemleri OperationContractAttributeile işaretlenir.

çift yönlü sözleşmesi 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 hizmeti kullanıma sunan bir küme.

Çift yönlü sözleşme 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 hizmetin meta verilerinde benzersiz olarak tanımlayan bir Name ve Namespace vardır.

Oluşturucular

ContractDescription(String, String)

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

ContractDescription(String)

Belirtilen adla ContractDescription sınıfının yeni bir örneğini 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şmesi türünü alır veya ayarlar.

ConfigurationName

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

ContractBehaviors

Sözleşmenin 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 bir koruma düzeyi ayarlanıp ayarlanmadığı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, Object)

Belirtilen türde bir sözleşme ve hizmet uygulaması 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.

GetContract(Type)

Belirtilen sözleşme 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()

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

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

Geçerli Objectbasit bir kopyasını oluşturur.

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

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

ToString()

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

(Devralındığı yer: Object)

Şunlara uygulanır