WSDL, SOAP và REST là gì?


153

WSDL là gì? Nó liên quan đến SOAP như thế nào? Trường hợp nào REST phù hợp với tất cả điều đó?


2
Bạn đang tìm kiếm loại "ví dụ" nào? Như tôi đã nói, đó không phải là điều đơn giản mà bạn có thể lấy một ví dụ "đơn giản".
John Saunders

Câu trả lời:


180

WSDL là một tài liệu XML mô tả một dịch vụ web. Nó thực sự là viết tắt của Ngôn ngữ mô tả dịch vụ web.

SOAP là một giao thức dựa trên XML cho phép bạn trao đổi thông tin qua một giao thức cụ thể (ví dụ có thể là HTTP hoặc SMTP) giữa các ứng dụng. Nó là viết tắt của Giao thức truy cập đối tượng đơn giản và sử dụng XML cho định dạng nhắn tin của nó để chuyển tiếp thông tin.

REST là một kiểu kiến ​​trúc của các hệ thống nối mạng và là viết tắt của Chuyển giao trạng thái đại diện. Bản thân nó không phải là một tiêu chuẩn, nhưng sử dụng các tiêu chuẩn như HTTP, URL, XML, v.v.


4
Tôi có nghĩa là đặt SMTP hoặc HTTP làm ví dụ về các giao thức mà SOAP có thể được sử dụng. Tôi không có ý nói nó có nghĩa là HTTP là giao thức duy nhất có thể được sử dụng (chỉ sử dụng nó làm ví dụ).
keith_c

7
Chuyển giao trạng thái đại diện (REST) ​​là kiểu kiến ​​trúc chỉ định các ràng buộc, như giao diện thống nhất, nếu được áp dụng cho dịch vụ web sẽ tạo ra các thuộc tính mong muốn, chẳng hạn như hiệu suất, khả năng mở rộng và sửa đổi, cho phép các dịch vụ hoạt động tốt nhất trên Web. Trong kiểu REST, dữ liệu và chức năng được coi là tài nguyên và được truy cập bằng Mã định danh tài nguyên đồng nhất (URI). Các tài nguyên được hành động bằng cách sử dụng một tập hợp các hoạt động đơn giản, được xác định rõ. nó tuân theo kiến ​​trúc máy khách / máy chủ và được thiết kế để sử dụng giao thức giao tiếp phi trạng thái, điển hình là HTTP.
kingAm

4
Không phải là 'D' trong WSDL là viết tắt của "Mô tả" thay vì "Định nghĩa"?
Sparkzz

11
"A WSDL is an XML document that describes a web service. It actually stands for Web Services Definition Language." Điều này thực sự không giải thích nó là gì ...
Ojonugwa Jude Ochalifu

2
@Sparkzz theo wikipedia:The current version of WSDL is WSDL 2.0. The meaning of the acronym has changed from version 1.1 where the "D" stood for "Definition".
Bochu

106

Ví dụ: Trong một thuật ngữ đơn giản nếu bạn có một dịch vụ web của máy tính.

WSDL: WSDL cho biết về các chức năng mà bạn có thể triển khai hoặc tiếp xúc với máy khách. Ví dụ: thêm, xóa, trừ và như vậy.

SOAP: Khi sử dụng SOAP, bạn thực sự thực hiện các hành động như doDelete (), doSubtract (), doAdd (). Vì vậy, SOAP và WSDL là táo và cam. Chúng ta không nên so sánh chúng. Cả hai đều có chức năng khác nhau của họ.

Tại sao chúng tôi sử dụng SOAP và WSDL: Để trao đổi dữ liệu độc lập với nền tảng.

EDIT: Trong một ví dụ cuộc sống hàng ngày bình thường:

WSDL: Khi chúng tôi đến một nhà hàng, chúng tôi thấy các Mục menu, đó là các WSDL.

Các lớp Proxy: Bây giờ sau khi nhìn thấy các Mục menu, chúng tôi tạo nên Tâm trí của chúng tôi (Xử lý tâm trí của chúng tôi để đặt hàng): Vì vậy, về cơ bản, chúng tôi tạo các lớp Proxy dựa trên Tài liệu WSDL.

SOAP: Sau đó, khi chúng tôi thực sự đặt món ăn dựa trên Menu: Có nghĩa là chúng tôi sử dụng các lớp proxy để gọi các phương thức dịch vụ được thực hiện bằng SOAP. :)


38

Mỗi khi ai đó nhắc đến SOAP / WSDL, tôi nghĩ về các đối tượng và các lớp được định nghĩa trong xml ...

"Bạn sử dụng SOAP giống như cách bạn sử dụng bất kỳ lớp PHP nào. Tuy nhiên, trong trường hợp này, lớp này không tồn tại trong hệ thống tệp ứng dụng cục bộ, mà tại một trang web từ xa được truy cập qua http." ... "Nếu chúng tôi nghĩ rằng sử dụng dịch vụ SOAP như một lớp PHP khác thì tài liệu WSDL là một danh sách tất cả các phương thức và thuộc tính lớp có sẵn."

http://www.doublehops.com/2009/07/07/quick-tutorial-on-getting-started-with-soap-in-php/comment-page-1/

.. và bất cứ khi nào ai đó nói về REST, tôi nghĩ về các lệnh của HTTP (phương thức yêu cầu) như POST, GET và DELETE


19

SOAP -> SOAP (Protocal truy cập đối tượng đơn giản) là tiêu đề cấp ứng dụng được tạo cho tương tác giữa máy với máy. Giao thức xác định các quy tắc tiêu chuẩn. Tất cả các bên đang sử dụng giao thức cụ thể phải tuân thủ các quy tắc giao thức. Giống như TCP, Nó thư giãn ở lớp vận chuyển, Giao thức SOAP sẽ được hiểu bởi lớp Ứng dụng (bất kỳ ứng dụng nào hỗ trợ SOAP - Axis2, .Net).

Thông báo WSDL -> SOAP bao gồm SoapEnevelope-> SoapHeader và SoapBody. Nó không định nghĩa định dạng tin nhắn là gì? tất cả các phương tiện vận chuyển (HTTP, JMS) mà nó hỗ trợ là gì? không có thông tin này, khó có khách hàng nào muốn sử dụng dịch vụ web cụ thể để xây dựng thông báo SOAP. Ngay cả nếu họ làm, họ sẽ không chắc chắn, nó sẽ hoạt động mọi lúc. WSDL là giải cứu. WSDL (Ngôn ngữ mô tả dịch vụ web) xác định các hoạt động, định dạng thông báo và chi tiết truyền tải cho thông báo SOAP.

REST -> REST (Chuyển trạng thái đại diện) dựa trên Giao thông vận tải. Không giống như SOAP nhắm vào các hành động, REST quan tâm nhiều hơn đến các tài nguyên. REST định vị tài nguyên bằng cách sử dụng URL (ví dụ -http: // {serverAddress} / staff / workerNumber / 12345) và nó phụ thuộc vào giao thức truyền tải (với HTTP - GET, POST, PUT, DELETE, ...) cho các hành động được thực hiện trên các tài nguyên. Dịch vụ REST định vị tài nguyên dựa trên URL và thực hiện hành động dựa trên động từ hành động vận chuyển. Đó là nhiều hơn về phong cách kiến ​​trúc và quy ước dựa.


16

Bạn sẽ không "đơn giản" hiểu điều gì đó phức tạp.

WSDL là một ngôn ngữ dựa trên XML để mô tả một dịch vụ web. Nó mô tả các thông điệp, hoạt động và thông tin vận chuyển mạng được sử dụng bởi dịch vụ. Các dịch vụ web này thường sử dụng SOAP, nhưng có thể sử dụng các giao thức khác.

Một chương trình WSDL có thể đọc được và do đó có thể được sử dụng để tạo tất cả hoặc một phần mã khách hàng cần thiết để gọi dịch vụ web. Đây là ý nghĩa của việc gọi các dịch vụ web dựa trên SOAP là "tự mô tả".

REST hoàn toàn không liên quan đến WSDL.


11

SOAP là viết tắt của Giao thức truy cập đối tượng đơn giản (sic). Nó được dự định là một cách để thực hiện các cuộc gọi thủ tục từ xa đến các đối tượng từ xa bằng cách gửi XML qua HTTP.

WSDL là ngôn ngữ mô tả dịch vụ web. Một yêu cầu kết thúc bằng '.wsdl' đến một điểm cuối sẽ dẫn đến một thông báo XML mô tả yêu cầu và phản hồi mà việc sử dụng có thể mong đợi. Nó hủy bỏ hợp đồng giữa dịch vụ và khách hàng.

REST sử dụng HTTP để gửi tin nhắn đến các dịch vụ.

SOAP là một thông số kỹ thuật, REST là một phong cách.


2
-1: xin lỗi, nhưng tôi không đồng ý với việc liên kết SOAP với RPC. Còn dịch vụ kiểu tin nhắn thì sao? Ngoài ra, không có tiêu chuẩn nào cho biết một yêu cầu kết thúc bằng .wsdl hoặc? Wsdl sẽ tạo WSDL.
John Saunders

4
Bạn đang nói rằng bạn không thể làm RPC với SOAP? Tôi biết rằng có thể không bao gồm toàn bộ tiêu chuẩn, nhưng đó chắc chắn là động lực ban đầu. Cho dù URL WSDL có phải là một phần của tiêu chuẩn hay không, tôi sẽ thừa nhận rằng bạn có tôi ở đó. Đó thường là cách tôi nhìn thấy nó được thực hiện, nhưng tôi không thể trích dẫn bất cứ điều gì trong tiêu chuẩn bắt buộc nó.
duffymo

1
Bạn có thể đã nhầm lẫn giữa thực tế là SOAP được lấy từ XML-RPC với ý tưởng rằng SOAP ban đầu được dự định là một RPC. Tuy nhiên, lưu ý rằng WSDL, ngay từ đầu, đã có thể mô tả các dịch vụ kiểu tài liệu, ngoài các dịch vụ kiểu RPC. Nếu RPC là động lực ban đầu đằng sau SOAP và WSDL, thì người ta sẽ mong đợi rằng các dịch vụ kiểu tài liệu sẽ không có trong tiêu chuẩn ban đầu.
John Saunders

6

Wikipedia cho biết "Ngôn ngữ mô tả dịch vụ web là ngôn ngữ dựa trên XML cung cấp mô hình để mô tả các dịch vụ web". Nói cách khác, WSDL là một dịch vụ web, vì javadoc là một thư viện java.

Tuy nhiên, điều thực sự thú vị về WSDL là phần mềm có thể tạo ra máy khách và máy chủ bằng WSDL.


4

REST có trọng lượng nhẹ về mặt mã hóa, hữu ích hơn nhiều đối với các thiết bị có trọng lượng nhẹ, tức là các API không nghiêm ngặt.

REST là định dạng độc lập. XML, HTML, JSON tất cả các tùy chọn có sẵn.

REST cung cấp các khả năng cho chuyển tin nhắn 2 điểm (không đáng ngạc nhiên vì REST là viết tắt của Chuyển trạng thái REpresentational) trong đó tương tác WSDL / SOAP là tương tác tin nhắn nhiều điểm.

REST không yêu cầu một phần mở rộng mới cho các thông báo XML, trong đó trong WSDL / SOAP, đây là trường hợp.

WSDL / SOAP sử dụng nhiều giao thức truyền tải, REST chỉ dựa trên HTTP. Do đó, WSDL / SOAP có thể được sử dụng như một cách RESTful, tuy nhiên các yêu cầu đơn giản có thể quá phức tạp / nặng nề.

Một sự tương tự đơn giản: REST giống như một motoboy cung cấp thức ăn của bạn dễ dàng và nhanh chóng. XML mở rộng WSDL / SOAP giống như phân phối UPS, các công cụ có cấu trúc và nghiêm túc hơn nhưng đi kèm với chi phí.



0

Tài liệu WSDL mô tả dịch vụ web. Nó chỉ định vị trí của dịch vụ và các phương thức của dịch vụ bằng các yếu tố chính này: các kiểu dữ liệu sử dụng trong các yếu tố dữ liệu dịch vụ web cho mỗi hoạt động mô tả các hoạt động có thể được thực hiện và các thông điệp được hình thành

SOAP (Giao thức truy cập đối tượng đơn giản) là giao thức nhắn tin cho phép các chương trình chạy trên các hệ điều hành khác nhau có thể giao tiếp bằng http và xml.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.