C# 肥皂

WBOY
WBOY原创
2024-09-03 15:18:261193浏览

SOAP(简单访问对象协议)是一种基于 XML 的协议,为用不同语言编写并在不同平台上运行的应用程序提供相互交互的工具。它通过 HTTP 运行。 SOAP 是一种轻量级协议,因为它基于 XML,而 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 在 C# 中如何工作?

SOAP 适用于编组和解组机制。它使用 HTTP 协议将基于 XML 的消息(称为 SOAP 消息)发送到服务器进行处理。这些 SOAP 消息包含要处理的信息。我们可以将其称为 HTTP 请求,这种将信息包装到 SOAP 消息中的方法称为编组。

现在,服务器接收来自客户端的请求并解开客户端发送的 SOAP 消息。然后,服务器处理该请求并以 SOAP 消息的形式向客户端发送适当的响应。这种解包信息的方法称为解组。

C# 肥皂

SOAP 消息的元素

Soap 消息由以下元素组成:

1。 SOAP Envelope 元素:该元素是 SOAP 消息的根元素。它告诉我们特定的 XML 文档是一个 SOAP 消息。它包含 SOAP 消息的详细信息。标头元素:SOAP 标头元素是 SOAP 消息的可选元素。但如果 SOAP 消息包含此元素,那么它应该是根 Envelope 元素的第一个子元素,并且 Header 的子元素应该被限定为命名空间。该元素包含付款信息、身份验证凭据等信息。 SOAP Body 元素:该元素包含要在两个端点之间交换的实际信息。它包含请求和响应信息。

请在下面找到包含员工详细信息的 SOAP 响应消息中的 SOAP Body 元素示例:

代码:

<soap : Body>
<GetEmployeeDetails>
<EmployeeName>John Duffel</EmployeeName>
<EmployeeCode>EI66</EmployeeCode>
</GetEmployeeDetails>
</soap: Body>

2。 SOAP 错误元素: 当 SOAP 消息发送到服务器时,服务器返回的响应可以包含请求中成功处理请求所需的信息,也可以包含错误消息。因此,该元素包含与错误相关的信息。如果 SOAP 消息包含此元素,那么它应该是 Body 元素的子元素。

Fault元素的子元素如下:

  • :该元素包含底层故障的代码,有助于我们识别故障。
  • :此元素包含一条文本消息,提供故障的详细说明。
  • :这是一个可选元素,告诉我们谁对错误负责。
  • :这也是一个可选元素,包含特定于应用程序的错误消息。

请在下面找到显示 SOAP 消息结构的图表:

C# 肥皂

带有彩色背景的元素是 SOAP 消息的可选元素。

让我们看看用 C# 创建 SOAP Web 服务所需的步骤。步骤如下:

  • 在 Visual Studio 中,转到文件 ->新->项目为 Web 服务创建一个新项目。
  • 选择C#和Web模板;在其下,选择 ASP.NET Web 应用程序。
  • 给出解决方案的名称和位置。
  • 现在,该项目将出现在解决方案资源管理器中。
  • 在解决方案资源管理器中右键单击该项目,然后选择添加 ->网络服务 (ASMX)

在此服务文件中,您可以添加服务代码并执行它,如示例部分下的示例所示。

实现 C# SOAP 的示例

以下是提到的示例:

示例#1

代码:

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";
}
}
}

输出:

C# 肥皂

点击“消息”(Web 方法)后,我们将得到以下输出:

C# 肥皂

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# 肥皂

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.

以上是C# 肥皂的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:C# Base下一篇:Lock in C#