Bagikan melalui


Referensi ServiceDescription dan WSDL

Topik ini menjelaskan cara Windows Communication Foundation (WCF) memetakan dokumen Web Services Description Language (WSDL) ke dan dari instans ServiceDescription.

Cara ServiceDescription Memetakan ke WSDL 1.1

Anda dapat menggunakan WCF untuk mengekspor dokumen WSDL dari ServiceDescription instans untuk layanan Anda. Dokumen WSDL dibuat secara otomatis untuk layanan Anda saat Anda menerbitkan titik akhir metadata.

Anda juga dapat mengimpor ServiceEndpoint instans, ContractDescription instans, dan Binding instans dari dokumen WSDL menggunakan jenis WsdlImporter.

Dokumen WSDL, yang diekspor oleh WCF, mengimpor definisi Skema XML apa pun yang digunakan dari dokumen Skema XML eksternal. Dokumen Skema XML terpisah diekspor untuk setiap namespace target yang digunakan oleh jenis data dalam layanan. Demikian pula, dokumen WSDL terpisah diekspor untuk setiap namespace target yang digunakan dalam kontrak layanan.

Deskripsi Layanan

Instans ServiceDescription dipetakan ke elemen wsdl:service. Instans ServiceDescription berisi kumpulan instans ServiceEndpoint yang masing-masing memetakan elemen individual wsdl:port.

Karakteristik Pemetaan WSDL
Name Nilai wsdl:service/@name dari layanan.
Namespace TargetNamespace untuk definisi dari wsdl:service layanan.
Endpoints Definisi wsdl:port untuk layanan.

Titik Akhir Layanan

Instans ServiceEndpoint dipetakan ke elemen wsdl:port. Instans ServiceEndpoint berisi alamat, binding, dan kontrak.

Perilaku titik akhir yang mengimplementasikan antarmuka IWsdlExportExtension dapat memodifikasi elemen wsdl:port untuk titik akhir yang menjadi lampiran.

Karakteristik Pemetaan WSDL
Name Nilai wsdl:port/@name untuk titik akhir dan wsdl:bindingnilai /@name untuk pengikatan titik akhir.
Address Alamat definisi wsdl:port untuk titik akhir.

Transportasi untuk titik akhir menentukan format alamat. Misalnya, untuk transportasi yang didukung WCF, itu bisa menjadi alamat SOAP atau referensi titik akhir.
Binding Definisi wsdl:binding untuk titik akhir.

Tidak seperti wsdl:binding definisi, pengikatan dalam WCF tidak terkait dengan satu kontrak pun.
Contract Definisi wsdl:portType untuk titik akhir.
Behaviors Perilaku titik akhir IWsdlExportExtension yang mengimplementasikan antarmuka dapat memodifikasi wsdl:port untuk titik akhir.

Pengikat

Pengikatan instans untuk ServiceEndpoint dipetakan ke definisi wsdl:binding. Tidak seperti definisi wsdl:binding, yang harus dikaitkan dengan definisi wsdl:portType tertentu, pengikatan WCF bersifat independen dari kontrak apa pun.

Pengikatan terdiri dari kumpulan elemen pengikatan. Setiap elemen menjelaskan beberapa aspek bagaimana titik akhir berkomunikasi dengan klien. Selain itu, pengikatan memiliki MessageVersion yang menunjukkan EnvelopeVersion dan AddressingVersion untuk titik akhir.

Karakteristik Pemetaan WSDL
Name Digunakan dalam nama default titik akhir, yang merupakan nama pengikatan dengan nama kontrak yang ditambahkan dan dipisahkan oleh garis bawah.
Namespace targetNamespace untuk definisi wsdl:binding.

Saat pengimporan, jika kebijakan dilampirkan ke port WSDL, namespace binding yang diimpor dipetakan ke definisi targetNamespace untuk wsdl:port.
BindingElementCollection, seperti yang dikembalikan oleh metode CreateBindingElements() Definisi wsdl:binding dengan berbagai ekstensi spesifik domain, biasanya berupa kebijakan.
MessageVersion EnvelopeVersion dan AddressingVersion untuk titik akhir.

Ketika MessageVersion.None ditentukan, pengikatan WSDL tidak berisi pengikatan SOAP dan port WSDL tidak berisi konten WS-Addressing. Pengaturan ini umumnya digunakan untuk titik akhir XML lawas (POX) biasa.

ElemenPengikat

Elemen pengikatan untuk peta pengikatan titik akhir ke berbagai ekstensi WSDL di wsdl:binding, seperti pernyataan kebijakan.

TransportBindingElement untuk pengikatan menentukan URI (Uniform Resource Identifier) transportasi untuk pengikatan SOAP.

Versi Pengalamatan

AddressingVersion pada peta pengikatan ke versi alamat yang digunakan dalam wsd:port. WCF mendukung alamat SOAP 1.1 dan SOAP 1.2, dan referensi titik akhir WS-Addressing 08/2004 dan WS-Addressing 1.0.

EnvelopeVersion

EnvelopeVersion pada peta pengikatan ke versi SOAP yang digunakan dalam wsdl:binding. WCF mendukung pengikatan SOAP 1.1 dan SOAP 1.2.

Kontrak

Instans ContractDescription dari instans ServiceEndpoint dipetakan ke wsdl:portType. Sebuah instance ContractDescription menggambarkan semua operasi untuk kontrak tertentu.

Karakteristik Pemetaan WSDL
Name Nilai wsdl:portType/@name untuk kontrak.
Namespace TargetNamespace untuk wsdl:portType definisi.
SessionMode Nilai wsdl:portType/@msc:usingSession untuk kontrak. Atribut ini adalah ekstensi WCF untuk WSDL 1.1.
Operations Definisi wsdl:operation untuk kontrak.

Operasi

Instans OperationDescription dikaitkan dengan wsdl:portType/wsdl:operation. Sebuah OperationDescription berisi kumpulan instans MessageDescription yang menjelaskan pesan untuk operasi.

Dua perilaku operasi sangat berpartisipasi dalam bagaimana sebuah OperationDescription dipetakan ke dokumen WSDL: DataContractSerializerOperationBehavior dan XmlSerializerOperationBehavior.

Karakteristik Pemetaan WSDL
Name Nilai wsdl:portType/wsdl:operation/@name untuk operasi.
ProtectionLevel Pernyataan perlindungan dalam kebijakan keamanan yang dilampirkan pada pesan wsdl:binding/wsdl:operation untuk operasi ini.
IsInitiating Nilai wsdl:portType/wsdl:operation/@msc:isInitiating untuk operasi. Atribut ini adalah ekstensi WCF untuk WSDL 1.1.
IsTerminating Nilai wsdl:portType/wsdl:operation/@msc:isTerminating untuk sebuah operasi. Atribut ini adalah ekstensi WCF untuk WSDL 1.1.
Messages Pesan wsdl:portType/wsdl:operation/wsdl:input dan wsdl:portType/wsdl:operation/wsdl:output untuk operasi.
Faults Definisi wsdl:portType/wsdl:operation/wsdl:fault untuk operasi.
Behaviors DataContractSerializerOperationBehavior dan XmlSerializerOperationBehavior menangani pengikatan operasi dan pesan operasi.

The DataContractSerializerOperationBehavior

DataContractSerializerOperationBehavior untuk suatu operasi adalah implementasi IWsdlExportExtension yang mengekspor pesan WSDL dan pengikatan untuk operasi tersebut. Jenis Skema XML diekspor menggunakan XsdDataContractExporter. DataContractSerializerOperationBehavior juga menentukan penggunaan, gaya, serta pengekspor dan pengimpor skema yang akan digunakan dalam operasi tersebut.

Karakteristik Pemetaan WSDL
DataContractFormatAttribute Properti Style untuk atribut ini dipetakan ke nilai wsdl:binding/wsdl:operation/soap:operation/@style untuk operasi.

Hanya DataContractSerializerOperationBehavior mendukung penggunaan harfiah dari jenis skema di WSDL.

The XmlSerializerOperationBehavior

XmlSerializerOperationBehavior untuk suatu operasi adalah implementasi IWsdlExportExtension yang mengekspor pesan WSDL dan pengikatan untuk operasi tersebut. Jenis Skema XML diekspor menggunakan XmlSchemaExporter. XmlSerializerOperationBehavior juga menentukan penggunaan, gaya, serta pengekspor dan pengimpor skema yang akan digunakan dalam operasi tersebut.

Karakteristik Pemetaan WSDL
XmlSerializerFormatAttribute Properti Style untuk atribut ini dipetakan ke nilai wsdl:binding/wsdl:operation/soap:operation/@style untuk operasi.

Properti Use untuk atribut ini memetakan ke wsdl:binding/wsdl:operation/soap:operation/*/@use nilai untuk semua pesan dalam operasi.

Pesan

MessageDescription instans memetakan ke wsdl:message yang dirujuk oleh wsdl:portType/wsdl:operation/wsdl:input atau wsdl:portType/wsdl:operation/wsdl:output pesan dalam operasi. A MessageDescription memiliki badan dan tajuk.

Karakteristik Pemetaan WSDL
Action Tindakan SOAP atau WS-Addressing untuk pesan.

Perhatikan bahwa operasi yang menggunakan string Tindakan "*" tidak diwakili dalam WSDL.
Direction MessageDirection.Input mematakan ke wsdl:input.

MessageDirection.Output mematakan ke wsdl:output.
ProtectionLevel Pernyataan perlindungan dalam kebijakan keamanan yang dilampirkan ke definisi wsdl:message pesan ini.
Body Isi dari pesan.
Headers Tajuk-tajuk untuk pesan.
ContractDescription.Name, OperationContract.Name Pada ekspor, digunakan untuk mendapatkan nilai wsdl:message/@name.

Isi Pesan

MessageBodyDescription instance dipetakan pada wsdl:message/wsdl:part definisi untuk isi pesan. Isi pesan mungkin dibungkus atau kosong.

Karakteristik Pemetaan WSDL
WrapperName Jika gaya bukan RPC, maka WrapperName dipetakan ke nama elemen yang dirujuk oleh wsdl:message/wsdl:part dengan @name disetel ke "parameter".
WrapperNamespace Jika gaya bukan RPC, maka WrapperNamespace memetakan ke namespace elemen untuk wsdl:message/wsdl:part dengan @name diatur ke "parameters".
Parts Elemen-elemen untuk badan pesan ini.
ReturnValue Elemen turunan dari elemen pembungkus jika ada elemen pembungkus (gaya yang dibungkus dokumen, atau gaya RPC), jika tidak, yang pertama wsdl:message/wsdl:part dalam pesan.

Bagian Pesan

Instance MessagePartDescription memetakan ke wsdl:message/wsdl:part dan jenis atau elemen skema XML yang ditunjukkan oleh bagian pesan.

Karakteristik Pemetaan WSDL
Name Nilai wsd:message/wsdl:part/@name untuk bagian pesan dan nama elemen yang ditunjuk oleh bagian pesan.
Namespace Namespace dari elemen yang ditunjuk oleh bagian pesan.
Index Indeks dari wsdl:message/wsdl:part untuk pesan.
ProtectionLevel Pernyataan perlindungan dalam kebijakan keamanan yang terlampir pada definisi wsdl:message terkait bagian pesan ini. Kebijakan diparameterkan untuk menunjuk ke bagian pesan tertentu.
MessageType Jenis Skema XML dari elemen yang dituju oleh bagian pesan.

Header Pesan

MessageHeaderDescription Instans adalah bagian dari pesan yang juga dipetakan ke soap:header pengikatan untuk bagian dari pesan tersebut.

Kesalahan

Instans FaultDescription dipetakan ke definisi wsdl:portType/wsdl:operation/wsdl:fault dan definisi terkait wsdl:message. wsdl:message ditambahkan ke namespace target yang sama dengan jenis port WSDL terkait. wsdl:message memiliki satu bagian pesan bernama "detail" yang menunjuk ke elemen Skema XML yang sesuai dengan nilai properti DefaultType untuk instans FaultDescription.

Karakteristik Pemetaan WSDL
Name Nilai wsdl:portType/wsdl:operation/wsdl:fault/@name untuk kesalahan.
Namespace Namespace elemen Skema XML yang ditujukan oleh bagian pesan detail kesalahan.
Action Tindakan SOAP atau WS-Addressing untuk kesalahan tersebut.
ProtectionLevel Klaim perlindungan dalam kebijakan keamanan yang terlampir pada wsdl:message definisi kesalahan ini.
DetailType Jenis Skema XML dari elemen yang dituju oleh bagian pesan detail.
Name, ContractDescription.Name, OperationDescription.Name, Digunakan untuk memperoleh nilai /@namewsdl:message pada pesan kesalahan.

Lihat juga