Bagikan melalui


ContractDescription Kelas

Definisi

Menjelaskan kontrak Windows Communication Foundation (WCF) yang menentukan apa yang dikomunikasikan titik akhir ke dunia luar.

public ref class ContractDescription
public class ContractDescription
type ContractDescription = class
Public Class ContractDescription
Warisan
ContractDescription

Contoh

Contoh berikut menunjukkan sejumlah cara untuk membuat atau mengambil objek ContractDescription. Kemudian menampilkan berbagai informasi yang disimpan di objek 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()

Keterangan

Kontrak WCF adalah kumpulan operasi yang menentukan apa yang dikomunikasikan titik akhir ke dunia luar. Setiap operasi adalah pertukaran pesan. Misalnya, pesan permintaan dan pesan balasan terkait membentuk pertukaran pesan permintaan/balasan.

Objek ContractDescription digunakan untuk menjelaskan kontrak WCF dan operasinya. Dalam ContractDescription, setiap operasi kontrak memiliki OperationDescription yang sesuai yang menjelaskan aspek dari setiap operasi yang merupakan bagian dari kontrak, seperti apakah operasi satu arah atau permintaan/balasan. Setiap OperationDescription juga menjelaskan pesan yang membentuk operasi menggunakan MessageDescriptionCollection. ContractDescription berisi referensi ke antarmuka yang menentukan kontrak menggunakan model pemrograman. Antarmuka ini ditandai dengan ServiceContractAttribute dan metodenya yang sesuai dengan operasi titik akhir ditandai dengan OperationContractAttribute.

Kontrak dupleks mendefinisikan serangkaian operasi logis berikut:

  • Set yang diekspos layanan untuk dihubungi klien.

  • Set yang diekspos klien agar layanan dapat dihubungi.

Model pemrograman untuk menentukan kontrak dupleks adalah membagi setiap set dalam antarmuka terpisah dan menerapkan atribut ke setiap antarmuka. Dalam hal ini, ContractDescription berisi referensi ke setiap antarmuka yang mengelompokkannya ke dalam satu kontrak dupleks.

Mirip dengan pengikatan, setiap kontrak memiliki Name dan Namespace yang secara unik mengidentifikasinya dalam metadata layanan.

Konstruktor

ContractDescription(String, String)

Menginisialisasi instans baru kelas ContractDescription dengan nama yang memenuhi syarat namespace yang ditentukan.

ContractDescription(String)

Menginisialisasi instans baru kelas ContractDescription dengan nama tertentu.

Properti

Behaviors

Mendapatkan perilaku yang terkait dengan deskripsi kontrak.

CallbackContractType

Mendapatkan atau mengatur jenis kontrak panggilan balik yang ditentukan deskripsi kontrak.

ConfigurationName

Mendapatkan atau mengatur nama konfigurasi untuk deskripsi kontrak.

ContractBehaviors

Mendapatkan kumpulan perilaku untuk kontrak.

ContractType

Mendapatkan atau mengatur jenis kontrak yang ditentukan deskripsi kontrak.

HasProtectionLevel

Mendapatkan nilai yang menunjukkan apakah kontrak telah memiliki tingkat perlindungan yang ditetapkan.

Name

Mendapatkan atau menetapkan nama kontrak.

Namespace

Mendapatkan atau mengatur namespace untuk kontrak.

Operations

Mendapatkan kumpulan deskripsi operasi yang terkait dengan kontrak.

ProtectionLevel

Mendapatkan atau menetapkan tingkat perlindungan keamanan yang terkait dengan kontrak.

SessionMode

Mendapatkan atau menetapkan nilai yang menunjukkan apakah sesi diperlukan oleh kontrak.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetContract(Type, Object)

Mengembalikan deskripsi kontrak untuk jenis kontrak dan implementasi layanan tertentu.

GetContract(Type, Type)

Mengembalikan deskripsi kontrak untuk jenis kontrak tertentu dan jenis layanan tertentu.

GetContract(Type)

Mengembalikan deskripsi kontrak untuk jenis kontrak tertentu.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetInheritedContracts()

Mengembalikan kumpulan deskripsi kontrak yang diwarisi oleh deskripsi kontrak saat ini.

GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ShouldSerializeProtectionLevel()

Mengembalikan nilai yang menunjukkan apakah properti ProtectionLevel telah berubah dari nilai defaultnya dan harus diserialisasikan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk