2013-05-18 36 views
148

Hiện đang thực hiện một số bài kiểm tra và tôi đang gặp khó khăn trong một số khái niệm. Tất cả những điều này đều được đề cập đến trong các ghi chú của tôi nhưng tôi thực sự không hiểu tất cả chúng liên kết với nhau như thế nào. Theo hiểu biết của tôi là:JSON, REST, SOAP, WSDL và SOA: Tất cả chúng liên kết với nhau như thế nào

SOA - giải pháp để làm cho người tiêu dùng/nhà cung cấp dịch vụ liên lạc. (theo như tôi hiểu đây là cụm từ dành cho mọi thứ khác)

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

SOAP - Một 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 để cung cấp các tham số?

REST - Mẫu thiết kế tương tự như SOAP có chức năng nhưng tránh 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? (không chắc chắn về điều này hoặc là)

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

Trả lời

238

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 chức năng khỏi bản trình bày của ứng dụng, vì nó mang lại sự tự do lớn hơn.

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

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

Vì vậy, bạn thiết kế cơ chế trao đổi giữa back-end (dịch vụ web) để xử lý và tạo ra thứ gì đó hữu ích và giao diện người dùng (tiêu thụ dữ liệu), có thể là bất kỳ thứ gì. (Ứng dụng web, thiết bị di động hoặc máy tính để bàn hoặc một dịch vụ web khác). Giới hạn 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 tham gia. Đó là những cách tiêu chuẩn bạn muốn giao tiếp với dịch vụ web.

SOAP:

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

REST:

Văn là một khái niệm thiết kế.

World Wide Web thể hiện triển khai lớn nhất của hệ thống phù hợp với kiểu kiến ​​trúc REST.

Nó không cứng nhắc như SOAP.RESTful web-services sử dụng các URI tiêu chuẩn và các phương thức để thực hiện cuộc gọi đến webservice. Khi bạn yêu cầu một URI, nó trả về biểu thị của một đối tượng, sau đó bạn có thể thực hiện các hoạt động (ví dụ: GET, PUT, POST, DELETE). Bạn không bị giới hạn khi chọn XML để biểu diễn dữ liệu, bạn có thể chọn bất kỳ 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.


JSON và XML, có chức năng tương đương, và một trong hai có thể được lựa chọn. XML được cho là quá dài dòng và khó phân tích hơn, vì vậy nhiều lần, dữ liệu được biểu diễn đầy đủ hơn bằng cách sử dụng JSON. (Ví dụ: tuần tự hóa)

It is a choice nonetheless.

+34

Câu trả lời hay nhất phải trả lời đồng ý trên JSON và XML. Một phiên bản cân bằng hơn sẽ là: XML và JSON là các cách để nối tiế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ố cảm thấy nó quá phức tạp và tiết tú. 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 các 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 làm việc trên các tiêu chuẩn trên đầu trang của nó để nhân rộng những người tồn tại trên đầu trang của XML. – IMSoP

22

WSDL: Viết tắt của Web Service Description Language

Trong SOAP (Simple Object giao thức truy cập), khi bạn sử dụng dịch vụ web và thêm một dịch vụ web để dự án của bạn, ứng dụng khách của bạn (s) không biết về các chức năng dịch vụ web. Ngày nay nó bằng cách nào đó thời trang cũ và cho mỗi loại khách hàng khác nhau, bạn phải thực hiện các tập tin WSDL khác nhau. Ví dụ: bạn không thể sử dụng cùng một tệp cho các khách hàng .Netphp. Tệp WSDL có một số mô tả về chức năng dịch vụ web. Loại tệp này là XML. SOAP là phương án thay thế cho REST.

REST của: Bàn cho Representational State Transfer

Nó là một loại dịch vụ API, nó là rất dễ dàng để 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ư WSDL tệp. Hoạt động CRUD có thể được thực hiện bằng cách khác nhau HTTP Verbs (GET để đọc, POST để tạo, PUT hoặc PATCH để cập nhật và DELETE để xóa tài liệu mong muốn), Chúng dựa trên giao thức HTML và hầu hết các lần trả lời ở định dạng JSON hoặc XML . Mặt khác, ứng dụng khách phải gọi chính xác số HTTP Verb liên quan thông qua tên và loại thông 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 triển khai phía máy khách.

SOA: Viết tắt của Oriented Architecture Dịch vụ

Bao gồm tất cả các lập trình với khái niệm dịch vụ web và kiến ​​trúc. 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 hành 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 RESTSOAP dịch vụ web là loại SOA.

JSON: Bàn cho javascript Object Notation

khi bạn serialize một đối tượng cho javascript loại định dạng đối tượng là JSON. tưởng tượng rằng bạn có lớp của con 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 serialize đối tượng h1 để JSON kết quả là:

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

javascript có thể đánh giá định dạng này theo hàm eval() và tạo một mảng liên kết từ chuỗi JSON 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.