ContractDescription Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Beskriver ett Windows Communication Foundation-kontrakt (WCF) som anger vad en slutpunkt kommunicerar med omvärlden.
public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
- Arv
-
ContractDescription
Exempel
I följande exempel visas ett antal sätt att skapa eller hämta ett ContractDescription objekt. Sedan visas de olika informationsdelarna som lagras i ContractDescription objektet.
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()
Kommentarer
Ett WCF-kontrakt är en samling åtgärder som anger vad slutpunkten kommunicerar med omvärlden. Varje åtgärd är ett meddelandeutbyte. Ett begärandemeddelande och ett associerat svarsmeddelande utgör till exempel ett utbyte av begäran/svarsmeddelanden.
Ett ContractDescription objekt används för att beskriva WCF-kontrakt och deras åtgärder. I en ContractDescriptionhar varje kontraktåtgärd en motsvarande OperationDescription som beskriver aspekter av varje åtgärd som ingår i kontraktet, till exempel om åtgärden är enkelriktad eller begäran/svar. Var och OperationDescription en beskriver också de meddelanden som utgör åtgärden med hjälp av en MessageDescriptionCollection. ContractDescription innehåller en referens till ett gränssnitt som definierar kontraktet med hjälp av programmeringsmodellen. Det här gränssnittet är markerat med ServiceContractAttribute och dess metoder som motsvarar slutpunktsåtgärder markeras med OperationContractAttribute.
Ett duplexkontrakt definierar följande logiska uppsättningar med åtgärder:
En uppsättning som tjänsten exponerar för klienten att anropa.
En uppsättning som klienten exponerar för tjänsten att anropa.
Programmeringsmodellen för att definiera ett duplex-kontrakt är att dela upp varje uppsättning i ett separat gränssnitt och tillämpa attribut för varje gränssnitt. I det här fallet ContractDescription innehåller en referens till vart och ett av de gränssnitt som grupperar dem i ett duplex-kontrakt.
På samma sätt som bindningar har varje kontrakt ett Name och Namespace som unikt identifierar det i tjänstens metadata.
Konstruktorer
| Name | Description |
|---|---|
| ContractDescription(String, String) |
Initierar en ny instans av ContractDescription klassen med ett namnområdeskvalificerat namn angivet. |
| ContractDescription(String) |
Initierar en ny instans av ContractDescription klassen med ett angivet namn. |
Egenskaper
| Name | Description |
|---|---|
| Behaviors |
Hämtar de beteenden som är associerade med kontraktsbeskrivningen. |
| CallbackContractType |
Hämtar eller anger den typ av återanropskontrakt som kontraktsbeskrivningen anger. |
| ConfigurationName |
Hämtar eller anger konfigurationsnamnet för kontraktsbeskrivningen. |
| ContractBehaviors |
Hämtar insamling av beteende för kontraktet. |
| ContractType |
Hämtar eller anger den kontraktstyp som kontraktsbeskrivningen anger. |
| HasProtectionLevel |
Hämtar ett värde som anger om kontraktet har en skyddsnivåuppsättning. |
| Name |
Hämtar eller anger namnet på kontraktet. |
| Namespace |
Hämtar eller anger namnområdet för kontraktet. |
| Operations |
Hämtar samlingen med åtgärdsbeskrivningar som är associerade med kontraktet. |
| ProtectionLevel |
Hämtar eller anger den säkerhetsskyddsnivå som är associerad med kontraktet. |
| SessionMode |
Hämtar eller anger ett värde som anger om en session krävs av kontraktet. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetContract(Type, Object) |
Returnerar kontraktsbeskrivningen för en angiven typ av kontrakt- och tjänstimplementering. |
| GetContract(Type, Type) |
Returnerar kontraktsbeskrivningen för en angiven typ av kontrakt och en angiven typ av tjänst. |
| GetContract(Type) |
Returnerar kontraktsbeskrivningen för en angiven typ av kontrakt. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetInheritedContracts() |
Returnerar en samling kontraktbeskrivningar som ärvs av den aktuella kontraktsbeskrivningen. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ShouldSerializeProtectionLevel() |
Returnerar ett värde som anger om egenskapen ProtectionLevel har ändrats från standardvärdet och ska serialiseras. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |