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, 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin