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 Windows Communication Foundation (WCF), 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 ContractDescription objekt. Zobrazí různé informace uložené 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 o žádosti nebo odpovědi.
Objekt ContractDescription se používá k popisu kontraktů WCF a jejich operací. ContractDescriptionKaždá operace kontraktu obsahuje odpovídající OperationDescription aspekty každé operace, která je součástí kontraktu, 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 metody, které odpovídají operacím koncového bodu, jsou označeny značkou OperationContractAttribute.
Duplexní kontrakt definuje následující logické sady operací:
Sada, kterou služba zveřejňuje, aby klient volal.
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 aplikovat atributy na každé rozhraní. V tomto případě ContractDescription obsahuje odkaz na každé rozhraní, které je seskupí do jednoho duplexního kontraktu.
Podobně jako vazby má Name každý kontrakt jedinečnou Namespace identifikaci v metadatech služby.
Konstruktory
ContractDescription(String) |
Inicializuje novou instanci ContractDescription třídy se zadaným názvem. |
ContractDescription(String, String) |
Inicializuje novou instanci ContractDescription třídy se zadaným názvem kvalifikovaným oborem názvů. |
Vlastnosti
Behaviors |
Získá chování přidružené k popisu kontraktu. |
CallbackContractType |
Získá nebo nastaví typ zpětného volání kontrakt, který určuje popis kontraktu. |
ConfigurationName |
Získá nebo nastaví název konfigurace pro popis 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á označuje, zda je relace požadovaná kontraktem. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetContract(Type) |
Vrátí popis kontraktu pro zadaný typ kontraktu. |
GetContract(Type, Object) |
Vrátí popis kontraktu pro zadaný typ implementace kontraktu a služby. |
GetContract(Type, Type) |
Vrátí popis kontraktu pro zadaný typ kontraktu a zadaný typ služby. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetInheritedContracts() |
Vrátí kolekci popisů kontraktů, které jsou děděny aktuálním popisem kontraktu. |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ShouldSerializeProtectionLevel() |
Vrátí hodnotu, která označuje, zda se ProtectionLevel vlastnost 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) |