ContractDescription Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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) |