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 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
W poniższym przykładzie pokazano wiele sposobów tworzenia lub pobierania ContractDescription obiektu. Następnie wyświetla różne informacje przechowywane w ContractDescription obiekcie.
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 jest wymianą komunikatów. Na przykład wiadomość żądania i skojarzona wiadomość odpowiedzi tworzą wymianę wiadomości żądania/odpowiedzi.
Obiekt ContractDescription służy do opisywania kontraktów programu WCF i ich operacji. ContractDescriptionW ramach elementu każda operacja kontraktu ma odpowiadający OperationDescription element opisujący aspekty każdej operacji będącej częścią kontraktu, takie jak to, czy operacja jest jednokierunkowa, czy żądanie/odpowiedź. Każdy z nich OperationDescription opisuje również komunikaty tworzące operację przy użyciu elementu MessageDescriptionCollection. ContractDescription Zawiera odwołanie do interfejsu definiującego kontrakt przy użyciu modelu programowania. Ten interfejs jest oznaczony za pomocą ServiceContractAttribute polecenia i jego metody, które odpowiadają operacjom punktu końcowego, są oznaczone znakiem OperationContractAttribute.
Kontrakt dwukierunkowy definiuje następujące logiczne zestawy operacji:
Zestaw uwidaczniany przez usługę do wywołania przez klienta.
Zestaw uwidaczniany przez klienta do wywołania usługi.
Model programowania do definiowania kontraktu dwukierunkowego polega na podzieleniu każdego zestawu w osobnym interfejsie i zastosowaniu atrybutów do każdego interfejsu. W tym przypadku zawiera odwołanie do każdego interfejsu, ContractDescription który grupuje je w jeden kontrakt dwukierunkowy.
Podobnie jak w przypadku powiązań, każdy kontrakt ma Name element i Namespace , który jednoznacznie identyfikuje go w metadanych usługi.
Konstruktory
ContractDescription(String) |
Inicjuje ContractDescription nowe wystąpienie klasy o określonej nazwie. |
ContractDescription(String, String) |
Inicjuje ContractDescription nowe wystąpienie klasy z określoną nazwą kwalifikowaną przestrzeni nazw. |
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ę zachowań 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 dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetContract(Type) |
Zwraca opis kontraktu dla określonego typu kontraktu. |
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. |
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() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ShouldSerializeProtectionLevel() |
Zwraca wartość wskazującą, czy ProtectionLevel właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |