ContractDescription Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Popisuje kontrakt WCF (Windows Communication Foundation), který určuje, co koncový bod komunikuje s vnějším světem.
public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
- Dědičnost
-
ContractDescription
Příklady
Následující příklad ukazuje řadu způsobů, jak vytvořit nebo načíst objekt ContractDescription. Pak zobrazí různé informace, které jsou uloženy v objektu 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()
Poznámky
Kontrakt WCF je kolekce operací, které určují, co koncový bod komunikuje s vnějším světem. Každá operace je výměna zpráv. Například zpráva požadavku a přidružená zpráva odpovědi tvoří výměnu zpráv žádosti nebo odpovědi.
Objekt ContractDescription slouží k popisu kontraktů WCF a jejich operací. V rámci ContractDescriptionmá každá operace kontraktu odpovídající OperationDescription, která popisuje aspekty každé operace, která je součástí smlouvy, například jestli je operace jednosměrná, nebo žádost/odpověď. Každý OperationDescription také popisuje zprávy, které tvoří operaci pomocí MessageDescriptionCollection. ContractDescription obsahuje odkaz na rozhraní, které definuje kontrakt pomocí programovacího modelu. Toto rozhraní je označeno ServiceContractAttribute a jeho metodami, které odpovídají operacím koncových bodů, jsou označeny OperationContractAttribute.
duplexní kontrakt definuje následující logické sady operací:
Sada, kterou služba zveřejňuje pro volání klienta.
Sada, kterou klient zveřejňuje pro volání služby.
Programovací model pro definování duplexního kontraktu je rozdělit každou sadu v samostatném rozhraní a použít atributy na každé rozhraní. V tomto případě ContractDescription obsahuje odkaz na všechna rozhraní, která je seskupují do jednoho duplexního kontraktu.
Podobně jako vazby má každý kontrakt Name a Namespace, které ho jednoznačně identifikují v metadatech služby.
Konstruktory
ContractDescription(String, String) |
Inicializuje novou instanci třídy ContractDescription se zadaným názvem kvalifikovaným oborem názvů. |
ContractDescription(String) |
Inicializuje novou instanci třídy ContractDescription se zadaným názvem. |
Vlastnosti
Behaviors |
Získá chování přidružené k popisu kontraktu. |
CallbackContractType |
Získá nebo nastaví typ zpětného volání kontraktu, který určuje popis kontraktu. |
ConfigurationName |
Získá nebo nastaví název konfigurace popisu kontraktu. |
ContractBehaviors |
Získá kolekci chování kontraktu. |
ContractType |
Získá nebo nastaví typ kontraktu, který určuje popis kontraktu. |
HasProtectionLevel |
Získá hodnotu, která označuje, zda kontrakt má nastavenou úroveň ochrany. |
Name |
Získá nebo nastaví název kontraktu. |
Namespace |
Získá nebo nastaví obor názvů pro kontrakt. |
Operations |
Získá kolekci popisů operací přidružených ke smlouvě. |
ProtectionLevel |
Získá nebo nastaví úroveň ochrany zabezpečení přidružené ke smlouvě. |
SessionMode |
Získá nebo nastaví hodnotu, která určuje, zda je relace požadována kontraktem. |
Metody
Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
GetContract(Type, Object) |
Vrátí popis kontraktu pro zadaný typ kontraktu a implementace služeb. |
GetContract(Type, Type) |
Vrátí popis smlouvy pro zadaný typ smlouvy a zadaný typ služby. |
GetContract(Type) |
Vrátí popis kontraktu pro zadaný typ kontraktu. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetInheritedContracts() |
Vrátí kolekci popisů kontraktů, které jsou zděděny aktuálním popisem kontraktu. |
GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
ShouldSerializeProtectionLevel() |
Vrátí hodnotu, která určuje, zda se vlastnost ProtectionLevel změnila z výchozí hodnoty a měla by být serializována. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |