SOAP (Simple Access Object Protocol) は XML ベースのプロトコルであり、異なる言語で記述され、異なるプラットフォーム上で実行されるアプリケーションが相互に対話するための機能を提供します。 HTTP 経由で動作します。 SOAP は、軽量言語である XML に基づいているため、軽量のプロトコルです。 C# SOAP は、動作するプラットフォームやオペレーティング システムから独立しているため、異なるプラットフォームで動作する異なるアプリケーション間でのデータ交換が容易になります。これは、通信アプリケーションが同じ言語である必要がないため、疎結合プロトコルです。
構文
SOAP メッセージを定義するための構文は次のとおりです。
<SOAP : Envelope xmlns : SOAP = "https://www.educba.com/"> <SOAP : Header> </SOAP : Header> <SOAP : Body> <SOAP : Fault> </SOAP : Fault> </SOAP : Body> </SOAP : Envelope>
SOAP メッセージを定義するための構文規則は次のとおりです。
SOAP メッセージのエンコードは XML 言語を使用して行う必要があります。 SOAP Envelope 名前空間を使用する必要があります。 DTD 参照と XML 処理命令で構成することはできません。
SOAP はマーシャリングおよびデマーシャリングのメカニズムで動作します。 HTTP プロトコルを使用して、SOAP メッセージと呼ばれる XML ベースのメッセージを処理のためにサーバーに送信します。これらの SOAP メッセージには、処理するための情報が含まれています。これを HTTP リクエストと呼ぶことができ、情報を SOAP メッセージにラップするこの方法はマーシャリングと呼ばれます。
ここで、サーバーはクライアントからリクエストを受け取り、クライアントから送信された SOAP メッセージをアンラップします。次に、サーバーはリクエストを処理し、適切な応答を SOAP メッセージの形式でクライアントに送信します。情報をアンラップするこの方法は、デマーシャリングと呼ばれます。
SOAP メッセージは次の要素で構成されます:
1. SOAP エンベロープ要素: この要素は SOAP メッセージのルート要素です。これは、特定の XML ドキュメントが SOAP メッセージであることを示します。 SOAP メッセージの詳細が含まれます。ヘッダー要素: SOAP ヘッダー要素は、SOAP メッセージのオプションの要素です。ただし、SOAP メッセージにこの要素が含まれる場合は、それがルート Envelope 要素の最初の子要素である必要があり、Header の子要素は名前空間として修飾される必要があります。この要素には、支払い情報、認証資格情報などの情報が含まれます。 SOAP Body 要素: この要素には、2 つのエンドポイント間で交換される実際の情報が含まれます。これには、リクエストとレスポンスの情報が含まれます。
従業員の詳細を含む SOAP 応答メッセージの SOAP Body 要素の例を以下に示します。
コード:
<soap : Body> <GetEmployeeDetails> <EmployeeName>John Duffel</EmployeeName> <EmployeeCode>EI66</EmployeeCode> </GetEmployeeDetails> </soap: Body>
2. SOAP Fault 要素: SOAP メッセージがサーバーに送信されると、サーバーから返される応答には、リクエストの処理が成功したときにリクエストに必要な情報が含まれるか、エラー メッセージが含まれる可能性があります。したがって、この要素にはエラー関連の情報が含まれます。 SOAP メッセージにこの要素が含まれる場合、それは Body 要素の子要素である必要があります。
Fault 要素のサブ要素は次のとおりです:
SOAP メッセージの構造を示す図を以下に示します。
背景に色が付いた要素は、SOAP メッセージのオプションの要素です。
C# で SOAP Web サービスを作成するために必要な手順を見てみましょう。手順は次のとおりです。
このサービス ファイルでは、サービスのコードを追加し、「例」セクションの例に示すように実行できます。
以下に挙げる例を示します:
コード:
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"; } } }
出力:
「メッセージ」(Web メソッド) をクリックすると、次の出力が表示されます:
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.
以上がC# ソープの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。