ContractDescription Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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) |