JSON, REST, SOAP, WSDL và SOA: Làm thế nào để tất cả chúng liên kết với nhau


155

Hiện đang làm một số bài kiểm tra và tôi đang vật lộn thông qua một số khái niệm. Chúng thực sự đã được 'đề cập' trong ghi chú của tôi nhưng tôi thực sự không hiểu làm thế nào tất cả chúng liên kết với nhau. Theo như sự hiểu biết của tôi là:

SOA - một giải pháp để làm cho người tiêu dùng / nhà cung cấp dịch vụ giao tiếp với nhau. (theo như tôi hiểu thì đây là thuật ngữ ô cho mọi thứ khác)

WSDL - Một ngôn ngữ mô tả dịch vụ của nhà cung cấp.

SOAP - Giao thức XML 'trình bao bọc' được các dịch vụ sử dụng để gửi tin nhắn. Hoạt động cùng với WSDL như để cung cấp các tham số?

REST - Một mẫu thiết kế tương tự như SOAP trong chức năng nhưng tránh được XML? (thực sự không chắc chắn về điều này)

JSON - Một thay thế cho XML sử dụng javascript? (cũng không chắc về điều này)

Nhìn xung quanh trên internet dường như không có một định nghĩa rõ ràng về tất cả những thứ này là gì và chúng liên kết với nhau như thế nào.

Câu trả lời:


252

Hãy tưởng tượng bạn đang phát triển một ứng dụng web và bạn quyết định tách rời chức năng khỏi phần trình bày của ứng dụng, bởi vì nó mang lại sự tự do hơn.

Bạn tạo một API và cũng để người khác thực hiện giao diện của riêng họ đối với nó. Những gì bạn vừa làm ở đây là triển khai một phương pháp SOA , tức là sử dụng các dịch vụ web.

Các dịch vụ web làm cho các khối xây dựng chức năng có thể truy cập được qua các giao thức Internet tiêu chuẩn độc lập với các nền tảng và ngôn ngữ lập trình.

Vì vậy, bạn thiết kế một cơ chế trao đổi giữa back-end (dịch vụ web) để xử lý và tạo ra thứ gì đó hữu ích và front-end (tiêu thụ dữ liệu), có thể là bất cứ thứ gì. (Một ứng dụng web, thiết bị di động hoặc máy tính để bàn hoặc dịch vụ web khác). Hạn chế duy nhất ở đây là front-end và back-end phải "nói" cùng một "ngôn ngữ".


Đó là nơi SOAP và REST đến. Chúng là những cách tiêu chuẩn bạn chọn để giao tiếp với dịch vụ web.

XÀ BÔNG TẮM:

SOAP sử dụng XML để gửi dữ liệu qua lại. Các thông báo SOAP có cấu trúc cứng nhắc và XML phản hồi sau đó cần được phân tích cú pháp. WSDL là một đặc điểm kỹ thuật về những yêu cầu có thể được thực hiện, với tham số nào và những gì chúng sẽ trả về. Đây là một đặc điểm kỹ thuật đầy đủ của API của bạn.

NGHỈ NGƠI:

REST là một khái niệm thiết kế.

World Wide Web đại diện cho việc triển khai lớn nhất của một hệ thống phù hợp với phong cách kiến ​​trúc REST.

Nó không cứng nhắc như SOAP. Các dịch vụ web RESTful sử dụng các URI và phương thức chuẩn để thực hiện các cuộc gọi đến dịch vụ web . Khi bạn yêu cầu một URI, nó sẽ trả về đại diện của một đối tượng, sau đó bạn có thể thực hiện các thao tác trên (ví dụ: GET, PUT, POST, DELETE). Bạn không bị giới hạn trong việc chọn XML để thể hiện dữ liệu, bạn có thể chọn bất cứ thứ gì thực sự (bao gồm JSON)

API REST của Flickr đi xa hơn và cho phép bạn trả lại hình ảnh.


JSONXML , tương đương về chức năng và các lựa chọn phổ biến. Ngoài ra còn có các khung dựa trên RPC như GRPC dựa trên Protobuf và Apache Thrift có thể được sử dụng để liên lạc giữa người sản xuất API và người tiêu dùng. Định dạng phổ biến nhất được sử dụng bởi các API web là JSON vì nó dễ sử dụng và phân tích cú pháp trong mọi ngôn ngữ.


36
Câu trả lời tuyệt vời cho đến việc đồng thanh toán trên JSON vs XML. Một phiên bản cân bằng hơn sẽ là: XML và JSON là những cách sắp xếp dữ liệu. XML linh hoạt hơn và có rất nhiều tiêu chuẩn được thiết kế xung quanh nó, nhưng một số người cảm thấy nó quá phức tạp và dài dòng. JSON là một định dạng đơn giản hơn, định nghĩa một vài cấu trúc cơ bản theo những cách ngắn gọn, dễ sử dụng cho các cấu trúc dữ liệu không chính thức; một số người đang nghiên cứu các tiêu chuẩn trên nó để sao chép các tiêu chuẩn tồn tại trên đỉnh XML.
IMSoP

30

WSDL : Viết tắt của Ngôn ngữ mô tả dịch vụ web

Trong SOAP (giao thức truy cập đối tượng đơn giản), khi bạn sử dụng dịch vụ web và thêm dịch vụ web vào dự án của mình, (các) ứng dụng khách của bạn không biết về Chức năng dịch vụ web. Ngày nay, bằng cách nào đó đã lỗi thời và đối với từng loại khách hàng khác nhau, bạn phải triển khai các WSDLtệp khác nhau . Ví dụ, bạn không thể sử dụng cùng một tệp cho .Netphpmáy khách. Các WSDLtập tin có một số mô tả về các chức năng dịch vụ web. Loại của tập tin này là XML. SOAPlà một thay thế cho REST.

REST : Viết tắt của Chuyển giao Nhà nước Đại diện

Nó là một loại dịch vụ API khác, nó thực sự dễ sử dụng cho khách hàng. Họ không cần phải có phần mở rộng tập tin đặc biệt như WSDLtập tin. Hoạt động CRUD có thể được thực hiện bằng các cách khác nhau HTTP Verbs(GET để đọc, POST để tạo, PUT hoặc PATCH để cập nhật và XÓA để xóa tài liệu mong muốn), Chúng dựa trên HTTPgiao thức và hầu hết các lần phản hồi ở dạng JSONhoặc XMLđịnh dạng. Mặt khác, ứng dụng khách phải gọi chính xác các liên quan HTTP Verbthông qua tên và loại tham số chính xác. Do không có tệp đặc biệt để định nghĩa, như WSDL, nó là một công việc thủ công bằng cách sử dụng điểm cuối. Nhưng nó không phải là một vấn đề lớn bởi vì bây giờ chúng tôi có rất nhiều plugin cho các IDE khác nhau để tạo ra việc thực hiện phía máy khách.

SOA : Viết tắt của Kiến trúc hướng dịch vụ

Bao gồm tất cả các chương trình với các khái niệm và kiến ​​trúc dịch vụ web. Hãy tưởng tượng rằng bạn muốn thực hiện một ứng dụng quy mô lớn. Một thực tế có thể có một số dịch vụ khác nhau, được gọi là dịch vụ vi mô và toàn bộ cơ chế ứng dụng sẽ gọi dịch vụ web cần thiết vào đúng thời điểm. Cả hai RESTSOAPdịch vụ web là loại SOA.

JSON : Viết tắt củajavascript Object Notation

khi bạn tuần tự hóa một đối tượng cho javascript, loại định dạng đối tượng là JSON. hãy tưởng tượng rằng bạn có lớp người:

class Human{
 string Name;
 string Family;
 int Age;
}

và bạn có một số trường hợp từ lớp này:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

Khi bạn tuần tự hóa đối tượng h1 thành JSON, kết quả là:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptcó thể đánh giá định dạng này theo eval()chức năng và tạo một mảng kết hợp từ JSONchuỗi này . Đây là một khái niệm khác so với các khái niệm khác mà tôi đã mô tả trước đây.


Câu trả lời này có một vài lỗi (ví dụ: HTML <> HTTP)
Yassin Hajaj

1
@YassinHajaj đã sửa
Saman Gholami
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.