SOAP (Simple Access Object Protocol) ialah protokol berasaskan XML dan menyediakan kemudahan untuk aplikasi yang ditulis dalam bahasa berbeza dan berjalan pada platform berbeza untuk berinteraksi antara satu sama lain. Ia berfungsi melalui HTTP. SOAP ialah protokol ringan kerana ia berdasarkan XML, yang merupakan bahasa ringan. C# SOAP adalah bebas daripada platform dan sistem pengendalian di mana ia berfungsi, yang memudahkannya untuk bertukar-tukar data antara aplikasi yang berbeza yang bekerja pada platform yang berbeza. Ia adalah protokol yang digandingkan secara longgar kerana ia tidak memerlukan aplikasi berkomunikasi dalam bahasa yang sama.
Sintaks
Sintaks untuk mentakrifkan mesej SOAP adalah seperti berikut:
<SOAP : Envelope xmlns : SOAP = "https://www.educba.com/"> <SOAP : Header> </SOAP : Header> <SOAP : Body> <SOAP : Fault> </SOAP : Fault> </SOAP : Body> </SOAP : Envelope>
Peraturan sintaks untuk mentakrifkan mesej SOAP adalah seperti berikut:
Pengekodan mesej SOAP hendaklah dilakukan menggunakan bahasa XML. Ia harus menggunakan ruang nama Sampul SOAP. Ia tidak sepatutnya mengandungi rujukan DTD dan arahan pemprosesan XML.
SOAP berfungsi pada mekanisme Marshalling dan Demarshalling. Ia menggunakan protokol HTTP untuk menghantar mesej berasaskan XML yang dipanggil mesej SOAP kepada pelayan untuk diproses. Mesej SOAP ini mengandungi maklumat untuk diproses. Kami boleh memanggil ini permintaan HTTP, dan kaedah membungkus maklumat ini ke dalam mesej SOAP dipanggil Marshalling.
Kini, pelayan mengambil permintaan daripada pelanggan dan membuka bungkus mesej SOAP yang dihantar oleh pelanggan. Pelayan kemudian memproses permintaan dan menghantar respons yang sesuai kepada klien dalam bentuk mesej SOAP. Kaedah membuka bungkus maklumat ini dipanggil Demarshalling.
Mesej Sabun terdiri daripada elemen berikut:
1. Elemen Sampul SOAP: Elemen ini ialah elemen akar mesej SOAP. Ia memberitahu bahawa dokumen XML khusus ialah mesej SOAP. Ia mengandungi butiran mesej SOAP. Elemen pengepala: Elemen pengepala SOAP ialah elemen pilihan bagi mesej SOAP. Tetapi jika mesej SOAP mengandungi elemen ini, maka ia mestilah elemen anak pertama bagi elemen Sampul akar, dan elemen anak Pengepala harus layak sebagai ruang nama. Elemen ini mengandungi maklumat seperti maklumat pembayaran, bukti kelayakan pengesahan, dsb. Elemen SOAP Body: Elemen ini mengandungi maklumat sebenar yang akan ditukar antara dua titik akhir. Ia mengandungi maklumat permintaan dan respons.
Sila cari di bawah contoh elemen SOAP Body daripada mesej respons SOAP yang mengandungi butiran pekerja:
Kod:
<soap : Body> <GetEmployeeDetails> <EmployeeName>John Duffel</EmployeeName> <EmployeeCode>EI66</EmployeeCode> </GetEmployeeDetails> </soap: Body>
2. Elemen Kerosakan SOAP: Apabila mesej SOAP dihantar ke pelayan, maka respons yang dikembalikan oleh pelayan boleh mengandungi sama ada maklumat yang diperlukan dalam permintaan mengenai pemprosesan permintaan yang berjaya atau ia boleh mengandungi mesej ralat. Oleh itu, elemen ini mengandungi maklumat berkaitan ralat. Jika mesej SOAP mengandungi elemen ini, maka ia mestilah elemen kanak-kanak bagi elemen Badan.
Subelemen elemen Fault adalah seperti berikut:
Sila cari di bawah rajah yang menunjukkan struktur mesej SOAP:
Unsur dengan latar belakang berwarna ialah elemen pilihan mesej SOAP.
Mari kita lihat langkah-langkah yang diperlukan untuk mencipta perkhidmatan web SOAP dalam C#. Langkah-langkahnya adalah seperti berikut:
Dalam fail perkhidmatan ini, anda boleh menambah kod anda untuk perkhidmatan dan boleh melaksanakannya seperti yang ditunjukkan dalam contoh di bawah bahagian Contoh.
Di bawah adalah contoh yang dinyatakan :
Kod:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace WebApplication4 { [WebService(Name ="Sample Web Service")] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string Message() { return "Learning SOAP web service"; } } }
Output:
Selepas mengklik pada 'Mesej' (kaedah Web), kita akan mendapat output berikut:
The SOAP request and response in the above snapshot are as follows:
Code:
POST /WebService1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/Message" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Message xmlns="http://tempuri.org/" /> </soap:Body> </soap:Envelope>
In the above message, the first element is the Envelope element. Then this message contains the Body element, which provides details of the SOAP message.
Code:
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <MessageResponse xmlns="http://tempuri.org/"> <MessageResult>string</MessageResult> </MessageResponse> </soap:Body> </soap:Envelope>
The first line of this message contains code ‘200’, which indicates a successful response from the server. This message contains an Envelope element and then a Body element containing details of the response from the server. We can see a tag ‘MessageResult’ with a value string, indicating that our Web Method (Message) result will be of a type string.
After clicking on the ‘Invoke’ button in the second snapshot, we will get the final result as shown below:
Output:
SOAP i.e. Simple Object Access Protocol, is a lightweight and loosely coupled protocol that can exchange data between applications written in different programming languages and working on different platforms. It exchanges data in the form of SOAP messages in XML language and works over HTTP protocol.
Atas ialah kandungan terperinci C# SOAP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!