Heim  >  Artikel  >  Backend-Entwicklung  >  C#-SOAP

C#-SOAP

WBOY
WBOYOriginal
2024-09-03 15:18:261139Durchsuche

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.

Wie funktioniert SOAP in C#?

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.

C#-SOAP

Elemente der SOAP-Nachricht

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:

  • : Dieses Element enthält den Code des zugrunde liegenden Fehlers, der uns hilft, den Fehler zu identifizieren.
  • : Dieses Element enthält eine Textnachricht mit einer detaillierten Erläuterung des Fehlers.
  • : Dies ist ein optionales Element und sagt uns, wer für den Fehler verantwortlich ist.
  • : Dies ist ebenfalls ein optionales Element und enthält anwendungsspezifische Fehlermeldungen.

Nachstehend finden Sie ein Diagramm, das die SOAP-Nachrichtenstruktur zeigt:

C#-SOAP

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:

  • Gehen Sie in Visual Studio zu Datei -> Neu -> Projekt, um ein neues Projekt für den Webdienst zu erstellen.
  • Wählen Sie C# und Web-Vorlage aus; Wählen Sie darunter ASP.NET-Webanwendung aus.
  • Geben Sie den Namen und den Standort der Lösung an.
  • Jetzt wird dieses Projekt im Projektmappen-Explorer angezeigt.
  • Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt und wählen Sie dann Hinzufügen -> Webdienst (ASMX)

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.

Beispiele zur Implementierung von C# SOAP

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

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:

C#-SOAP

Nachdem wir auf „Nachricht“ (Webmethode) geklickt haben, erhalten wir die folgende Ausgabe:

C#-SOAP

Example #2

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:

C#-SOAP

Conclusion

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C#-BasisNächster Artikel:C#-Basis