ContractDescription Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Opisuje kontrakt programu Windows Communication Foundation (WCF), który określa, co punkt końcowy komunikuje się ze światem zewnętrznym.
public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
- Dziedziczenie
-
ContractDescription
Przykłady
Poniższy przykład przedstawia kilka sposobów tworzenia lub pobierania obiektu ContractDescription. Następnie wyświetla różne informacje przechowywane w obiekcie ContractDescription.
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()
Uwagi
Kontrakt WCF to kolekcja operacji, która określa, co punkt końcowy komunikuje się ze światem zewnętrznym. Każda operacja to wymiana komunikatów. Na przykład wiadomość żądania i skojarzona wiadomość odpowiedzi tworzą wymianę żądania/wiadomości odpowiedzi.
Obiekt ContractDescription służy do opisywania kontraktów programu WCF i ich operacji. W ramach ContractDescriptionkażda operacja kontraktu ma odpowiadający OperationDescription opisujący aspekty każdej operacji, która jest częścią kontraktu, na przykład czy operacja jest jednokierunkowa, czy żądanie/odpowiedź. Każda OperationDescription opisuje również komunikaty tworzące operację przy użyciu MessageDescriptionCollection. ContractDescription zawiera odwołanie do interfejsu definiującego kontrakt przy użyciu modelu programowania. Ten interfejs jest oznaczony ServiceContractAttribute i jego metody, które odpowiadają operacjom punktu końcowego, są oznaczone OperationContractAttribute.
Kontrakt dwukierunkowy
Zestaw, który usługa uwidacznia dla klienta do wywołania.
Zestaw, który klient uwidacznia dla usługi do wywołania.
Model programowania do definiowania kontraktu dwustronnego polega na podzieleniu każdego zestawu w osobnym interfejsie i zastosowaniu atrybutów do każdego interfejsu. W tym przypadku ContractDescription zawiera odwołanie do każdego z interfejsów, które grupują je w jeden kontrakt dwudupleksowy.
Podobnie jak powiązania, każdy kontrakt ma Name i Namespace, które jednoznacznie identyfikują je w metadanych usługi.
Konstruktory
ContractDescription(String, String) |
Inicjuje nowe wystąpienie klasy ContractDescription z określoną nazwą kwalifikowaną przestrzeni nazw. |
ContractDescription(String) |
Inicjuje nowe wystąpienie klasy ContractDescription o określonej nazwie. |
Właściwości
Behaviors |
Pobiera zachowania skojarzone z opisem kontraktu. |
CallbackContractType |
Pobiera lub ustawia typ kontraktu wywołania zwrotnego określonego przez opis kontraktu. |
ConfigurationName |
Pobiera lub ustawia nazwę konfiguracji dla opisu kontraktu. |
ContractBehaviors |
Pobiera kolekcję zachowania dla kontraktu. |
ContractType |
Pobiera lub ustawia typ kontraktu określony przez opis kontraktu. |
HasProtectionLevel |
Pobiera wartość wskazującą, czy kontrakt miał ustawiony poziom ochrony. |
Name |
Pobiera lub ustawia nazwę kontraktu. |
Namespace |
Pobiera lub ustawia przestrzeń nazw dla kontraktu. |
Operations |
Pobiera kolekcję opisów operacji skojarzonych z kontraktem. |
ProtectionLevel |
Pobiera lub ustawia poziom ochrony zabezpieczeń skojarzony z kontraktem. |
SessionMode |
Pobiera lub ustawia wartość wskazującą, czy sesja jest wymagana przez kontrakt. |
Metody
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
GetContract(Type, Object) |
Zwraca opis kontraktu dla określonego typu kontraktu i implementacji usługi. |
GetContract(Type, Type) |
Zwraca opis kontraktu dla określonego typu kontraktu i określony typ usługi. |
GetContract(Type) |
Zwraca opis kontraktu dla określonego typu kontraktu. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetInheritedContracts() |
Zwraca kolekcję opisów kontraktów, które są dziedziczone przez bieżący opis kontraktu. |
GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
ShouldSerializeProtectionLevel() |
Zwraca wartość wskazującą, czy właściwość ProtectionLevel została zmieniona z wartości domyślnej i powinna być serializowana. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |