Hướng dẫn về dịch vụ web SOAP: Giao thức SOAP là gì?

⚡ Tóm tắt thông minh

SOAP (Simple Object Access Protocol) là một giao thức dựa trên XML để truy cập các dịch vụ web qua HTTP. Tài liệu này giải thích các khối xây dựng của SOAP, cấu trúc thông điệp, các phần tử bao bọc và lỗi, mô hình truyền thông và một ví dụ thực tế về dịch vụ web ASMX.

  • 📦 Giao thức cốt lõi: SOAP là một giao thức nhắn tin dựa trên XML, độc lập với phương thức truyền tải, cho phép các ứng dụng được xây dựng bằng các ngôn ngữ khác nhau trao đổi dữ liệu qua HTTP.
  • 🧱 Khu nhà: Một thông điệp SOAP bao gồm một phần Envelope, một phần Header (tùy chọn), một phần Body và một phần Fault (tùy chọn).
  • ✉️ Thành phần bao bọc: Lớp bao bọc gốc bắt buộc (root Envelope) bao quanh thông điệp và báo hiệu sự bắt đầu và kết thúc của nó cho ứng dụng khách.
  • 🔁 Mô hình giao tiếp: Máy khách chuyển yêu cầu thành thông điệp SOAP; máy chủ giải mã thông điệp đó và trả về phản hồi SOAP, tất cả đều thông qua giao thức HTTP.
  • 🛠️ Ví dụ thực tế: Một dịch vụ web ASMX trong Visual Studio tự động tạo ra các thông điệp yêu cầu và phản hồi SOAP cho máy khách gọi đến.

Giao thức SOAP là gì?

SOAP là gì?

SOAP là một giao thức dựa trên XML để truy cập các dịch vụ web qua HTTP. Nó có một số đặc tả kỹ thuật có thể được sử dụng trong tất cả các ứng dụng.

SOAP được biết đến với tên gọi Giao thức Truy cập Đối tượng Đơn giản, nhưng về sau được rút gọn thành SOAP v1.2. SOAP là một giao thức, hay nói cách khác, là định nghĩa về cách các dịch vụ web giao tiếp với nhau hoặc giao tiếp với các ứng dụng khách gọi chúng.

SOAP được phát triển như một ngôn ngữ trung gian để các ứng dụng được xây dựng trên nhiều ngôn ngữ lập trình khác nhau có thể giao tiếp dễ dàng với nhau và tránh được nỗ lực phát triển quá mức.

Giới thiệu SOAP

Trong thế giới hiện nay, có rất nhiều ứng dụng được xây dựng trên các ngôn ngữ lập trình khác nhau. Ví dụ, có thể có một ứng dụng web được thiết kế bằng... Java, một cái khác bằng .Net, và một cái khác nữa bằng PHP.

Việc trao đổi dữ liệu giữa các ứng dụng là rất quan trọng trong thế giới mạng ngày nay. Nhưng việc trao đổi dữ liệu giữa các ứng dụng không đồng nhất này sẽ phức tạp. Tương tự như vậy, độ phức tạp của mã để thực hiện việc trao đổi dữ liệu này cũng vậy.

Một trong những phương pháp được sử dụng để giải quyết sự phức tạp này là sử dụng XML (Ngôn ngữ đánh dấu mở rộng) làm ngôn ngữ trung gian để trao đổi dữ liệu giữa các ứng dụng.

Mọi ngôn ngữ lập trình đều có thể hiểu được ngôn ngữ đánh dấu XML. Do đó, XML được sử dụng làm phương tiện cơ bản để trao đổi dữ liệu.

Tuy nhiên, hiện chưa có tiêu chuẩn kỹ thuật nào quy định việc sử dụng XML trên tất cả các ngôn ngữ lập trình để trao đổi dữ liệu. Đó là lý do phần mềm SOAP ra đời.

SOAP được thiết kế để hoạt động với XML qua HTTP và có một số loại thông số kỹ thuật có thể được sử dụng trên tất cả các ứng dụng. Chúng ta sẽ tìm hiểu thêm chi tiết về giao thức SOAP trong các chương tiếp theo.

Ưu điểm của SOAP

SOAP là giao thức được sử dụng để trao đổi dữ liệu giữa các ứng dụng. Dưới đây là một số lý do tại sao SOAP được sử dụng.

  • Khi phát triểnping Đối với các dịch vụ web dựa trên SOAP, bạn cần một ngôn ngữ có thể được sử dụng để các dịch vụ web giao tiếp với các ứng dụng khách. SOAP là phương tiện hoàn hảo được phát triển để đạt được mục đích này. Giao thức này cũng được khuyến nghị bởi liên minh W3C, cơ quan quản lý tất cả các tiêu chuẩn web.
  • SOAP là một giao thức nhẹ được sử dụng để trao đổi dữ liệu giữa các ứng dụng. Lưu ý từ khóa 'ánh sángVì lập trình SOAP dựa trên ngôn ngữ XML, bản thân nó là một ngôn ngữ trao đổi dữ liệu nhẹ, nên SOAP với tư cách là một giao thức cũng thuộc cùng loại.
  • SOAP được thiết kế để hoạt động độc lập với nền tảng và hệ điều hành. Do đó, giao thức SOAP có thể hoạt động với bất kỳ ứng dụng dựa trên ngôn ngữ lập trình nào trên cả hai nền tảng. Windows và Linux nền tảng.
  • Nó hoạt động trên giao thức HTTP – SOAP hoạt động trên giao thức HTTP, đây là giao thức mặc định được sử dụng bởi tất cả các ứng dụng web. Do đó, không cần bất kỳ tùy chỉnh nào để chạy các dịch vụ web được xây dựng trên giao thức SOAP trên World Wide Web.

Khối xây dựng SOAP

Đặc tả SOAP định nghĩa một cái gì đó được gọi là “tin nhắn SOAP", đó là những gì được gửi đến dịch vụ web và ứng dụng khách."

Sơ đồ kiến ​​trúc SOAP bên dưới cho thấy các khối xây dựng khác nhau của một tin nhắn SOAP.

Khối xây dựng SOAP

Thông báo SOAP không gì khác ngoài một tài liệu XML đơn thuần có các thành phần bên dưới.

  • An Phong bì Phần tử xác định tài liệu XML là một thông điệp SOAP – Đây là phần chứa đựng thông điệp SOAP và được sử dụng để bao bọc tất cả các chi tiết trong thông điệp SOAP. Đây là phần tử gốc trong thông điệp SOAP.
  • A Tiêu đề Phần tử chứa thông tin tiêu đề – Phần tử tiêu đề có thể chứa thông tin như thông tin xác thực mà ứng dụng gọi có thể sử dụng. Nó cũng có thể chứa định nghĩa của các kiểu dữ liệu phức tạp có thể được sử dụng trong thông điệp SOAP. Theo mặc định, thông điệp SOAP có thể chứa các tham số có thể thuộc các kiểu dữ liệu đơn giản như chuỗi và số, nhưng cũng có thể là một kiểu đối tượng phức tạp.

Một ví dụ đơn giản về dịch vụ SOAP với kiểu dữ liệu phức tạp được hiển thị bên dưới. Giả sử chúng ta muốn gửi một kiểu dữ liệu có cấu trúc bao gồm sự kết hợp giữa "Tên bài hướng dẫn" và "Bài hướng dẫn". Description”, thì chúng ta sẽ định nghĩa kiểu phức như hình bên dưới. Kiểu phức được định nghĩa bởi thẻ phần tử. Tất cả các thành phần cần thiết của cấu trúc cùng với kiểu dữ liệu tương ứng của chúng sau đó được định nghĩa trong tập hợp kiểu phức tạp.

<xsd:complexType>
   <xsd:sequence>
      <xsd:element name="Tutorial Name" type="string"/>
      <xsd:element name="Tutorial Description" type="string"/>
   </xsd:sequence>
</xsd:complexType>

A Cơ thể Phần tử chứa thông tin gọi và phản hồi – Phần tử này chứa dữ liệu thực tế cần được gửi giữa dịch vụ web và ứng dụng gọi. Dưới đây là ví dụ về dịch vụ web SOAP, cụ thể là phần thân SOAP hoạt động trên kiểu dữ liệu phức tạp được định nghĩa trong phần tiêu đề. Sau đây là phản hồi của Tên hướng dẫn và Hướng dẫn Description được gửi đến ứng dụng gọi điện sẽ gọi dịch vụ web này.

<soap:Body>
   <GetTutorialInfo>
      <TutorialName>Web Services</TutorialName>
      <TutorialDescription>All about web services</TutorialDescription>
   </GetTutorialInfo>
</soap:Body>

Cấu trúc thông báo SOAP

Một điều cần lưu ý là các thông báo SOAP thường được dịch vụ web tự động tạo khi nó được gọi.

Bất cứ khi nào ứng dụng khách gọi một phương thức trong dịch vụ web, dịch vụ web sẽ tự động tạo một thông báo SOAP có chứa các chi tiết cần thiết về dữ liệu sẽ được gửi từ dịch vụ web đến ứng dụng khách.

Như đã thảo luận trong phần trước của hướng dẫn SOAP này, một thông điệp SOAP đơn giản có các thành phần sau:

  • Yếu tố phong bì
  • Phần tử tiêu đề và
  • Yếu tố cơ thể
  • Phần tử Lỗi (Tùy chọn)

Chúng ta hãy xem ví dụ dưới đây về một thông điệp SOAP đơn giản và xem từng thành phần thực sự làm gì.

Cấu trúc thông báo SOAP
Cấu trúc thông báo SOAP

  1. Như đã thấy trong thông báo SOAP ở trên, phần đầu tiên của thông báo SOAP là phần tử phong bì được sử dụng để đóng gói toàn bộ thông báo SOAP.
  2. Phần tử tiếp theo là phần thân SOAP chứa thông tin chi tiết của tin nhắn thực tế.
  3. Thông điệp của chúng tôi chứa một dịch vụ web có tên là “Guru99WebService”.
  4. Các "Guru"99Webservice" chấp nhận một tham số có kiểu 'int' và có tên là TutorialID.

Bây giờ, thông báo SOAP ở trên sẽ được chuyển giữa dịch vụ web và ứng dụng khách.

Bạn có thể thấy thông tin trên hữu ích như thế nào đối với ứng dụng khách. Thông điệp SOAP cho ứng dụng khách biết tên của dịch vụ web là gì, cũng như các tham số mà dịch vụ web mong đợi và kiểu dữ liệu của từng tham số đó.

Phần tử phong bì SOAP

Phần đầu tiên của khối xây dựng là Phong bì SOAP.

SOAP Envelope được sử dụng để đóng gói tất cả các chi tiết cần thiết của tin nhắn SOAP được trao đổi giữa dịch vụ web và ứng dụng khách.

Phần tử đường bao SOAP được sử dụng để chỉ ra phần đầu và phần cuối của thông báo SOAP. Điều này cho phép ứng dụng khách gọi dịch vụ web biết khi nào thông báo SOAP kết thúc.

Những điểm sau đây có thể được lưu ý về phần tử phong bì SOAP.

  • Mỗi thông điệp SOAP cần phải có một phần tử Envelope gốc. Việc một thông điệp SOAP phải có phần tử Envelope là hoàn toàn bắt buộc.
  • Mỗi phần tử Envelope cần phải có ít nhất một phần tử xà phòng.
  • Nếu phần tử Phong bì chứa phần tử tiêu đề thì phần tử đó không được chứa nhiều hơn một phần tử và nó phải xuất hiện dưới dạng phần tử con đầu tiên của Phong bì, trước phần tử nội dung.
  • Phong bì thay đổi khi phiên bản SOAP thay đổi.
  • Bộ xử lý SOAP tương thích v1.1 tạo ra lỗi khi nhận được thông báo chứa không gian tên phong bì v1.2.
  • Bộ xử lý SOAP tương thích v1.2 tạo ra lỗi Phiên bản không khớp nếu nó nhận được thông báo không bao gồm không gian tên phong bì v1.2.

Dưới đây là ví dụ về API SOAP của phiên bản 1.2 của phần tử phong bì SOAP.

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
   <soap:Body>
      <Guru99WebService xmlns="http://tempuri.org/">
         <TutorialID>int</TutorialID>
      </Guru99WebService>
   </soap:Body>
</SOAP-ENV:Envelope>

Thông báo lỗi

Khi gửi yêu cầu đến dịch vụ web SOAP, phản hồi trả về có thể thuộc một trong hai dạng: phản hồi thành công hoặc phản hồi lỗi. Khi phản hồi thành công, phản hồi từ máy chủ luôn là một thông điệp SOAP. Nhưng nếu xảy ra lỗi SOAP, chúng sẽ được trả về dưới dạng lỗi “HTTP 500”.

Thông báo lỗi SOAP bao gồm các thành phần sau.

  1. <faultCode> – Đây là mã chỉ định mã lỗi. Mã lỗi có thể là một trong các giá trị dưới đây:
    1. SOAP-ENV:VersionMismatch – Đây là khi gặp phải một không gian tên không hợp lệ cho phần tử Phong bì SOAP.
    2. SOAP-ENV:MustUnderstand – Phần tử con ngay lập tức của phần tử Tiêu đề, với thuộc tính mustUnderstand được đặt thành “1”, không được hiểu.
    3. SOAP-ENV:Client – ​​Tin nhắn được tạo không chính xác hoặc chứa thông tin không chính xác.
    4. SOAP-ENV:Server – Đã xảy ra sự cố với máy chủ nên tin nhắn không thể tiếp tục.
  2. – Đây là tin nhắn văn bản mô tả chi tiết về lỗi.
  3. (Không bắt buộc) – Đây là một chuỗi văn bản cho biết ai đã gây ra lỗi.
  4. (Không bắt buộc) – Đây là thành phần dành cho các thông báo lỗi dành riêng cho ứng dụng. Vì vậy, ứng dụng có thể có thông báo lỗi cụ thể cho các tình huống logic nghiệp vụ khác nhau.

Ví dụ về thông báo lỗi

Dưới đây là một ví dụ về thông báo lỗi. Lỗi này phát sinh trong trường hợp máy khách cố gắng sử dụng một phương thức có tên là TutorialID trong lớp GetTutorial. Thông báo lỗi bên dưới được tạo ra nếu phương thức đó không tồn tại trong lớp đã được định nghĩa.

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
      <faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
      <faultstring xsi:type="xsd:string">
         Failed to locate method (GetTutorialID) in class (GetTutorial)
      </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Đầu ra:

Khi bạn thực thi đoạn mã trên, nó sẽ hiển thị lỗi như sau: “Không tìm thấy phương thức (GetTutorialID) trong lớp (GetTutorial)”.

Mô hình truyền thông SOAP

Mọi giao tiếp bằng SOAP đều được thực hiện thông qua giao thức HTTP. Trước SOAP, rất nhiều các dịch vụ web đã sử dụng kiểu RPC (Cuộc gọi thủ tục từ xa) tiêu chuẩn để liên lạc. Đây là kiểu giao tiếp đơn giản nhất nhưng có rất nhiều hạn chế.

Trong hướng dẫn về API SOAP này, chúng ta hãy xem sơ đồ bên dưới để hiểu cách thức hoạt động của quá trình giao tiếp này. Trong ví dụ này, giả sử máy chủ lưu trữ một dịch vụ web cung cấp 2 phương thức như sau:

  • Nhận nhân viên – Thao tác này sẽ lấy được tất cả thông tin chi tiết của nhân viên.
  • SetEmployee – Điều này sẽ thiết lập giá trị của các chi tiết như phòng ban, lương, v.v. của nhân viên một cách phù hợp.

Trong giao tiếp kiểu RPC thông thường, máy khách sẽ chỉ gọi các phương thức trong yêu cầu của nó và gửi các tham số cần thiết đến máy chủ, sau đó máy chủ sẽ gửi phản hồi mong muốn.

Mô hình giao tiếp SOAP kiểu RPC

Mô hình giao tiếp nêu trên có những hạn chế nghiêm trọng sau:

  1. Không độc lập về ngôn ngữ – Máy chủ lưu trữ các phương thức sẽ được viết bằng một ngôn ngữ lập trình cụ thể, và thông thường các lệnh gọi đến máy chủ cũng chỉ được thực hiện bằng ngôn ngữ lập trình đó.
  2. Không phải giao thức chuẩn – Khi thực hiện cuộc gọi đến quy trình từ xa, cuộc gọi sẽ không được thực hiện thông qua giao thức chuẩn. Đây là một vấn đề vì hầu hết mọi giao tiếp qua web đều phải được thực hiện thông qua giao thức HTTP.
  3. Tường lửa – Vì các cuộc gọi RPC không đi qua giao thức thông thường nên cần mở các cổng riêng biệt trên máy chủ để cho phép máy khách giao tiếp với máy chủ. Thông thường tất cả các tường lửa sẽ chặn loại lưu lượng truy cập này và thường cần rất nhiều cấu hình để đảm bảo rằng loại liên lạc này giữa máy khách và máy chủ sẽ hoạt động.

Để khắc phục tất cả những hạn chế đã nêu ở trên, SOAP sẽ sử dụng mô hình giao tiếp dưới đây.

Mô hình giao tiếp SOAP Phong cách SOAP

  1. Máy khách sẽ định dạng thông tin liên quan đến lệnh gọi thủ tục và bất kỳ đối số nào thành một thông điệp SOAP và gửi nó đến máy chủ như một phần của yêu cầu HTTP. Quá trình đóng gói dữ liệu vào một thông điệp SOAP này được gọi là soái ca.
  2. Máy chủ sẽ giải mã thông điệp do máy khách gửi đến, xem máy khách yêu cầu gì, rồi gửi lại phản hồi thích hợp cho máy khách dưới dạng thông điệp SOAP. Quá trình giải mã này được gọi là unwrap.ping Yêu cầu do máy khách gửi đi được gọi là Giải tán quân đội.

Ví dụ SOAP thực tế

Bây giờ trong này SoapUI Trong bài hướng dẫn này, chúng ta hãy xem một ví dụ thực tế về SOAP. Có lẽ một trong những cách tốt nhất để hiểu cách các thông điệp SOAP được tạo ra là trực tiếp quan sát một dịch vụ web hoạt động.

Chủ đề này sẽ xem xét việc sử dụng Microsoft.Net framework để xây dựng dịch vụ web ASMX. Loại dịch vụ web này hỗ trợ cả phiên bản SOAP 1.1 và phiên bản 1.2.

Các dịch vụ web ASMX tự động tạo ra Ngôn ngữ định nghĩa dịch vụ web (WSDL) tài liệu. Tài liệu WSDL này được yêu cầu bởi ứng dụng khách đang gọi để ứng dụng biết dịch vụ web có khả năng thực hiện những gì.

Trong ví dụ này, chúng ta sẽ tạo một dịch vụ web đơn giản, được sử dụng để trả về một chuỗi cho ứng dụng gọi dịch vụ web đó. Dịch vụ web này sẽ được lưu trữ trong một máy chủ ảo. Asp.Net ứng dụng web. Sau đó chúng ta sẽ gọi dịch vụ web và xem kết quả được dịch vụ web trả về.

Visual Studio cũng sẽ cho chúng ta thấy thông điệp SOAP được truyền giữa dịch vụ web và ứng dụng gọi là gì. Điều kiện tiên quyết đầu tiên để thiết lập ứng dụng dịch vụ web của chúng ta có thể được thực hiện bằng cách làm theo các bước dưới đây. Vui lòng đảm bảo rằng bạn đã cài đặt Visual Studio 2013 trên hệ thống của mình cho ví dụ này.

Bước 1) Bước đầu tiên là tạo một ứng dụng Web ASP.Net trống. Từ Visual Studio 2013, nhấp vào tùy chọn menu File->New project.

Ví dụ về thông điệp SOAP cho dự án mới

Khi bạn nhấp vào tùy chọn New Project, Visual Studio sẽ cung cấp cho bạn một hộp thoại khác để chọn loại dự án và cung cấp các chi tiết cần thiết của dự án. Điều này được giải thích trong bước tiếp theo.

Bước 2) Trong bước này,

  1. Trước tiên hãy đảm bảo chọn C# Mẫu web của ứng dụng web ASP.NET. Dự án phải thuộc loại này để tạo dự án dịch vụ SOAP. Bằng cách chọn tùy chọn này, Visual Studio sẽ thực hiện các bước cần thiết để thêm các tệp cần thiết cho bất kỳ ứng dụng web nào.
  2. Hãy đặt tên cho dự án của bạn, trong trường hợp này là webservice.asmx. Sau đó, đảm bảo chỉ định vị trí lưu trữ các tệp dự án.

Ví dụ về thông điệp SOAP và chi tiết dự án

Sau khi hoàn tất, bạn sẽ thấy tệp dự án được tạo trong trình khám phá giải pháp của Visual Studio 2013.

Giải pháp ví dụ về thông điệp SOAP trong Solution Explorer

Bước 3) Ở bước này, chúng ta sẽ thêm một tệp dịch vụ web vào dự án của mình.

  1. Đầu tiên, nhấp chuột phải vào tệp dự án như hình bên dưới.

Ví dụ về thông điệp SOAP (nhấp chuột phải vào dự án)

  1. Sau khi nhấp chuột phải vào tệp dự án, bạn sẽ có cơ hội chọn tùy chọn “Thêm -> Dịch vụ Web (ASMX)” để thêm tệp dịch vụ web. Chỉ cần cung cấp tên là “Dịch vụ Hướng dẫn” cho tên tệp dịch vụ web.

Ví dụ về thông điệp SOAP: thêm dịch vụ web

Bước 4) Thêm mã sau vào tệp asmx Dịch vụ hướng dẫn của bạn.

Ví dụ mã dịch vụ web về thông điệp SOAP

Code Giải thích:

  1. Dòng mã này cung cấp tên cho tệp dịch vụ web của bạn. Đây là một bước quan trọng vì nó nhường chỗ cho ứng dụng khách gọi dịch vụ web thông qua tên của dịch vụ web.
  2. Thông thường, một tệp lớp được sử dụng để đóng gói chức năng của dịch vụ web. Vì vậy, tệp lớp sẽ có định nghĩa của tất cả các phương thức web sẽ cung cấp một số chức năng cho ứng dụng khách.
  3. Ở đây [WebMethod] được biết đến như một thuộc tính mô tả một hàm. Bước tiếp theo tạo ra một hàm có tên là “Guru99WebService”, nhưng với bước thêm thuộc tính [WebMethod] này, nó đảm bảo rằng phương thức này có thể được gọi bởi ứng dụng khách. Nếu không có thuộc tính này, thì phương thức sẽ không bao giờ được gọi bởi ứng dụng khách.
  4. Ở đây chúng ta đang định nghĩa một hàm có tên là 'Guru'99WebService' sẽ được sử dụng để trả về một chuỗi cho ứng dụng khách gọi nó. Chức năng này là một dịch vụ web có thể được gọi bởi bất kỳ ứng dụng khách nào.
  5. Chúng ta sử dụng câu lệnh return để trả về chuỗi “This is a Guru99 Dịch vụ web” cho ứng dụng khách.

Nếu mã được thực thi thành công, kết quả sau sẽ hiển thị khi bạn chạy mã trên trình duyệt.

Đầu ra:

Ví dụ về đầu ra của thông điệp SOAP

  • Kết quả hiển thị cho thấy rõ ràng tên của dịch vụ web của chúng tôi là “Guru"99 Web Service", đây là tên gọi được đặt cho dịch vụ web của chúng tôi.
  • Chúng ta cũng có thể thấy rằng mình có thể gọi dịch vụ web. Nếu nhấp vào nút "Gọi", chúng ta sẽ nhận được phản hồi bên dưới trong trình duyệt web.

Ví dụ về thông điệp SOAP: gọi phản hồi

Kết quả đầu ra ở trên:

  • Điều này cho thấy rõ ràng rằng bằng cách gọi phương thức web, chuỗi “This is a” được thực thi. Guru"99 Dịch vụ web" được trả về.
  • Visual Studio cũng cho phép bạn xem yêu cầu và phản hồi tin nhắn SOAP được tạo ra khi dịch vụ web trên được gọi.

Yêu cầu SOAP được tạo khi dịch vụ web được gọi được hiển thị bên dưới.

Ví dụ về thông điệp SOAP Yêu cầu SOAP

Code Giải thích:

  1. Phần đầu tiên của thông điệp SOAP là phần tử bao bọc (envelope), đã được thảo luận trong các chương trước. Đây là phần tử bao đóng có mặt trong mọi thông điệp SOAP.
  2. Thân SOAP là phần tử tiếp theo và chứa thông tin chi tiết thực tế của tin nhắn SOAP.
  3. Phần thứ ba là yếu tố chỉ định rằng chúng ta muốn gọi dịch vụ có tên là 'Guru99WebService'.

Ví dụ về thông điệp SOAP và phản hồi SOAP

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <Guru99WebServiceResponse xmlns="http://tempuri.org/">
         <Guru99WebServiceResult>string</Guru99WebServiceResult>
      </Guru99WebServiceResponse>
   </soap:Body>
</soap:Envelope>

Code Giải thích:

  1. Phần đầu tiên của thông điệp SOAP là phần tử bao bọc (envelope), đã được thảo luận trong các chương trước. Đây là phần tử bao đóng có mặt trong mọi thông điệp SOAP.
  2. Thân SOAP là phần tử tiếp theo và chứa thông tin chi tiết thực tế của tin nhắn SOAP.
  3. Phần thú vị mà bạn sẽ thấy bây giờ là thuộc tính 'string'. Thuộc tính này cho ứng dụng khách biết rằng dịch vụ web đang được gọi trả về một đối tượng thuộc loại chuỗi. Điều này rất hữu ích vì nếu không, ứng dụng khách sẽ không biết dịch vụ web trả về cái gì.

Câu Hỏi Thường Gặp

Trí tuệ nhân tạo (AI) có thể tạo ra các yêu cầu SOAP từ ngôn ngữ tự nhiên, xác thực các gói tin so với WSDL và phát hiện các thông điệp bị lỗi hoặc đáng ngờ. Trong các hệ thống doanh nghiệp cũ, trợ lý AI cũng giúp các nhà phát triển hiểu và bảo trì các dịch vụ SOAP cũ nhanh hơn.

Đúng vậy. Các công cụ AI có thể tự động tạo ra các mẫu phong bì SOAP, tạo ra các kịch bản lỗi và xây dựng các bài kiểm tra hồi quy cho các điểm cuối. Các nhà phát triển nên xem lại XML được tạo ra để xác nhận rằng không gian tên, kiểu dữ liệu và tiêu đề bảo mật là chính xác trước khi sử dụng.

SOAP là một giao thức dựa trên XML nghiêm ngặt với các tiêu chuẩn tích hợp sẵn về bảo mật và xử lý lỗi. REST là một kiểu kiến ​​trúc nhẹ hơn, sử dụng các phương thức HTTP và thường là JSON. SOAP phù hợp với các tích hợp doanh nghiệp chính thức, trong khi REST phổ biến hơn cho các API web công cộng.

Đúng vậy. Mặc dù REST chiếm ưu thế trong các API công cộng mới, SOAP vẫn phổ biến trong các hệ thống doanh nghiệp, ngân hàng, thanh toán và viễn thông yêu cầu bảo mật mạnh mẽ và cấu hình chính thức.tracts (WSDL) và khả năng nhắn tin đáng tin cậy. Nhiều hệ thống tích hợp cũ vẫn tiếp tục phụ thuộc vào các dịch vụ web SOAP.

Tóm tắt bài viết này với: