Heim >Backend-Entwicklung >C#.Net-Tutorial >C#-SOAP
SOAP (Simple Access Object Protocol) ist ein XML-basiertes Protokoll und bietet die Möglichkeit für Anwendungen, die in verschiedenen Sprachen geschrieben sind und auf verschiedenen Plattformen laufen, miteinander zu interagieren. Es funktioniert über HTTP. SOAP ist ein leichtgewichtiges Protokoll, da es auf XML basiert, einer leichtgewichtigen Sprache. C# SOAP ist unabhängig von der Plattform und dem Betriebssystem, auf dem es arbeitet, was den Datenaustausch zwischen verschiedenen Anwendungen, die auf unterschiedlichen Plattformen arbeiten, erleichtert. Es handelt sich um ein lose gekoppeltes Protokoll, da es nicht erfordert, dass kommunizierende Anwendungen in derselben Sprache vorliegen.
Syntax
Die Syntax zum Definieren einer SOAP-Nachricht lautet wie folgt:
<SOAP : Envelope xmlns : SOAP = "https://www.educba.com/"> <SOAP : Header> </SOAP : Header> <SOAP : Body> <SOAP : Fault> </SOAP : Fault> </SOAP : Body> </SOAP : Envelope>
Die Syntaxregeln zum Definieren einer SOAP-Nachricht lauten wie folgt:
Die Kodierung einer SOAP-Nachricht sollte in der XML-Sprache erfolgen. Es sollte den SOAP-Envelope-Namespace verwenden. Es sollte nicht aus DTD-Referenzen und XML-Verarbeitungsanweisungen bestehen.
SOAP funktioniert mit Marshalling- und Demarshalling-Mechanismen. Es verwendet das HTTP-Protokoll, um XML-basierte Nachrichten, sogenannte SOAP-Nachrichten, zur Verarbeitung an den Server zu senden. Diese SOAP-Nachrichten enthalten Informationen zur Verarbeitung. Wir können dies eine HTTP-Anfrage nennen, und diese Methode, die Informationen in eine SOAP-Nachricht zu verpacken, wird Marshalling genannt.
Jetzt nimmt der Server die Anfrage vom Client entgegen und entpackt die vom Client gesendete SOAP-Nachricht. Anschließend verarbeitet der Server die Anfrage und sendet die entsprechende Antwort in Form einer SOAP-Nachricht an den Client. Diese Methode zum Entpacken der Informationen wird Demarshalling genannt.
Eine Soap-Nachricht besteht aus den folgenden Elementen:
1. SOAP-Envelope-Element: Dieses Element ist das Stammelement der SOAP-Nachricht. Es gibt an, dass es sich bei dem spezifischen XML-Dokument um eine SOAP-Nachricht handelt. Es enthält Details der SOAP-Nachricht. Header-Element: Das SOAP-Header-Element ist ein optionales Element der SOAP-Nachricht. Wenn die SOAP-Nachricht jedoch dieses Element enthält, sollte es das erste untergeordnete Element des Stammelements „Envelope“ sein und die untergeordneten Elemente des Headers sollten als Namespace qualifiziert sein. Dieses Element enthält Informationen wie Zahlungsinformationen, Authentifizierungsdaten usw. SOAP-Body-Element: Dieses Element enthält die tatsächlichen Informationen, die zwischen den beiden Endpunkten ausgetauscht werden sollen. Es enthält Anforderungs- und Antwortinformationen.
Nachstehend finden Sie ein Beispiel für ein SOAP-Body-Element aus einer SOAP-Antwortnachricht mit den Mitarbeiterdetails:
Code:
<soap : Body> <GetEmployeeDetails> <EmployeeName>John Duffel</EmployeeName> <EmployeeCode>EI66</EmployeeCode> </GetEmployeeDetails> </soap: Body>
2. SOAP-Fehlerelement: Wenn eine SOAP-Nachricht an den Server gesendet wird, kann die vom Server zurückgegebene Antwort entweder die in der Anfrage erforderlichen Informationen über die erfolgreiche Verarbeitung der Anfrage oder eine Fehlermeldung enthalten. Somit enthält dieses Element fehlerbezogene Informationen. Wenn eine SOAP-Nachricht dieses Element enthält, sollte es ein untergeordnetes Element des Body-Elements sein.
Die Unterelemente des Fault-Elements sind wie folgt:
Nachstehend finden Sie ein Diagramm, das die SOAP-Nachrichtenstruktur zeigt:
Die Elemente mit dem farbigen Hintergrund sind optionale Elemente einer SOAP-Nachricht.
Sehen wir uns die Schritte an, die zum Erstellen eines SOAP-Webdienstes in C# erforderlich sind. Die Schritte sind wie folgt:
In dieser Dienstdatei können Sie Ihren Code für den Dienst hinzufügen und ihn wie im Beispiel im Abschnitt „Beispiel“ gezeigt ausführen.
Im Folgenden finden Sie die genannten Beispiele:
Code:
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"; } } }
Ausgabe:
Nachdem wir auf „Nachricht“ (Webmethode) geklickt haben, erhalten wir die folgende Ausgabe:
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.
Das obige ist der detaillierte Inhalt vonC#-SOAP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!