Sự khác biệt giữa các dịch vụ web OData và REST


196

Trong khi xem xét một số dịch vụ web, tôi đã chạy qua công nghệ "mới" này mà Microsoft đang gọi OData . Đọc qua mô tả của họ trong Câu hỏi thường gặp về OData là gì, tôi gặp khó khăn khi phân biệt OData với các dịch vụ web REST-Ful. Ai đó có thể vui lòng giúp tôi hiểu sự khác biệt?


2
Một là nhà sản xuất, hai là enabler cho người tiêu dùng.
Kangkan

Câu trả lời:


98

CẬP NHẬT Cảnh báo, câu trả lời này đã hết hạn ngay bây giờ khi OData V4 có sẵn.


Tôi đã viết một bài về chủ đề này một thời gian trước đây ở đây .

Như Franci đã nói, OData dựa trên Atom Pub. Tuy nhiên, họ đã xếp một số chức năng lên trên và không may bỏ qua một số ràng buộc REST trong quy trình.

Khả năng truy vấn của dịch vụ OData yêu cầu bạn xây dựng các URI dựa trên thông tin không có sẵn hoặc được liên kết trong phản hồi. Đó là những gì người REST gọi thông tin ngoài băng và giới thiệu khớp nối ẩn giữa máy khách và máy chủ.

Khớp nối khác được giới thiệu là thông qua việc sử dụng siêu dữ liệu EDMX để xác định các thuộc tính có trong nội dung mục nhập. Siêu dữ liệu này có thể được phát hiện tại một điểm cuối cố định được gọi là siêu dữ liệu $. Một lần nữa, khách hàng cần biết điều này trước, nó không thể được phát hiện.

Thật không may, Microsoft không thấy phù hợp để tạo các loại phương tiện để mô tả các phần dữ liệu quan trọng này, do đó, bất kỳ ứng dụng khách OData nào cũng phải đưa ra một loạt các giả định về dịch vụ mà nó đang nói và dữ liệu mà nó đang nhận.


1
@felickz Xin lỗi về điều đó. Tôi đã gặp sự cố DNS. Nó nên được làm việc bây giờ. Hoặc sẽ là khi bộ nhớ cache dns của bạn hết hạn.
Darrel Miller

6
Thực ra đây hết hiệu lực. V3 của OData đã thêm 'Ánh sáng JSON' giải quyết cả hai mối quan tâm này (thực sự chỉ là một), tức là siêu dữ liệu $ là cách bạn biết để tạo các truy vấn, vì vậy tất cả những gì còn thiếu là liên kết đến siêu dữ liệu $ trong các biểu diễn tài nguyên. Điều đó đã được thêm vào, vì vậy cả hai vấn đề biến mất trong một lần.
Alex James

10
@DarrelMiller Bạn đã đề cập rằng câu trả lời của bạn đã hết hạn. Muốn thêm một bản cập nhật với ý kiến ​​của bạn về chủ đề này? Tôi vẫn sẽ quan tâm đến việc biết sự khác biệt giữa OData 4 và REST. Rất cám ơn
Kurren

2
@Kurren Nó nằm trong danh sách việc cần làm của tôi, nhưng thật không may, nó là một danh sách dài.
Darrel Miller

2
@DarrelMiller Hy vọng bạn sẽ sớm tìm thấy một số thời gian để cập nhật bài viết để cập nhật với OData V4.
LCJ

64

Giao thức OData được xây dựng dựa trên giao thức AtomPub. Giao thức AtomPub là một trong những ví dụ tốt nhất về thiết kế API REST. Vì vậy, theo một nghĩa nào đó, bạn đã đúng - OData chỉ là một API REST khác và mỗi lần triển khai OData là một dịch vụ web REST-Ful.

Sự khác biệt là OData là một giao thức cụ thể; REST là phong cách kiến ​​trúc và mẫu thiết kế.


Tôi có thể sai về điều này (mới bắt đầu tìm hiểu về odata), nhưng kể từ phiên bản 3 của [giao thức] [ odata.org/documentation] nó cũng xuất hiện một định dạng JSON được chỉ định, bạn có thể sử dụng thay thế. Bạn có thể làm sáng tỏ về điều này?
Julian Rudolph

1
@JohannesRudolph, thật lòng tôi không có ý kiến ​​gì. Tôi đã không nhìn vào OData trong hai năm qua. Nhưng có khả năng Microsoft đã thêm hỗ trợ JSON. Tuy nhiên, xin lưu ý rằng điều này không thay đổi bất kỳ câu trả lời nào ở đây. JSON vs XML chỉ là vấn đề trình bày các tài nguyên REST.
Franci Penov

1
Bạn có thể chỉ định trong yêu cầu định dạng bạn muốn có. Cả XML và JSON đều phải được hỗ trợ bởi hầu hết các triển khai bằng cách đặt tiêu đề Chấp nhận thành application / json (bắt đầu từ OData phiên bản 2)
i000174

31

REST là một kỹ thuật thiết kế chung được sử dụng để mô tả cách truy cập dịch vụ web. Sử dụng REST bạn có thể thực hiện các yêu cầu http để lấy dữ liệu. Nếu bạn thử nó trong trình duyệt của mình, nó sẽ giống như đi đến một trang web ngoại trừ thay vì trả lại một trang web, bạn sẽ lấy lại XML. Một số dịch vụ cũng sẽ trả về dữ liệu ở định dạng JSON dễ sử dụng hơn với Javascript.

OData là một công nghệ cụ thể hiển thị dữ liệu thông qua REST.

Nếu bạn muốn tổng hợp nó thật nhanh, hãy nghĩ về nó như sau:

  • REST - mẫu thiết kế
  • OData - công nghệ cho phép

20

Vào năm 2012 OData đã trải qua tiêu chuẩn hóa, vì vậy tôi sẽ chỉ thêm một bản cập nhật ở đây ..

Đầu tiên các định nghĩa:

REST - là một kiến ​​trúc về cách gửi tin nhắn qua HTTP.

OData V4 - là một triển khai cụ thể của REST, thực sự xác định nội dung của các thông báo theo các định dạng khác nhau (hiện tại tôi nghĩ là AtomPub và JSON). ODataV4 tuân theo các nguyên tắc nghỉ ngơi.

Ví dụ, mọi người asp.net sẽ chủ yếu sử dụng bộ điều khiển WebApi để tuần tự hóa / giải tuần tự hóa các đối tượng thành JSON và để javascript làm điều gì đó với nó. Điểm của Odata là có thể truy vấn trực tiếp từ URL với các tùy chọn ngoài luồng.


10

Từ tài liệu OData :

Giao thức OData là giao thức cấp ứng dụng để tương tác với dữ liệu thông qua các dịch vụ web RESTful.

...

Giao thức OData khác với các cách tiếp cận dịch vụ web dựa trên REST khác ở chỗ nó cung cấp một cách thống nhất để mô tả cả dữ liệu và mô hình dữ liệu.


4

OData (Giao thức dữ liệu mở) là một tiêu chuẩn OASIS xác định cách thực hành tốt nhất để xây dựng và tiêu thụ API RESTful. OData giúp bạn tập trung vào logic kinh doanh của bạn trong khi xây dựng API RESTful mà không phải lo lắng về các cách tiếp cận để xác định tiêu đề yêu cầu và phản hồi, mã trạng thái, phương thức HTTP, quy ước URL, loại phương tiện, định dạng tải trọng và tùy chọn truy vấn, v.v. OData cũng hướng dẫn bạn về theo dõi các thay đổi, xác định các chức năng / hành động cho các quy trình có thể sử dụng lại và gửi các yêu cầu hàng loạt / không đồng bộ, v.v. Ngoài ra, OData cung cấp tiện ích mở rộng để đáp ứng mọi nhu cầu tùy chỉnh của API RESTful của bạn.

API OData RESTful rất dễ tiêu thụ. Siêu dữ liệu OData, một mô tả có thể đọc được bằng máy về mô hình dữ liệu của các API, cho phép tạo ra các proxy và công cụ máy khách chung mạnh mẽ. Một số trong số họ có thể giúp bạn tương tác với OData ngay cả khi không biết gì về giao thức. 6 bước sau đây thể hiện 6 kịch bản thú vị về mức tiêu thụ OData trên các nền tảng lập trình khác nhau. Nhưng nếu bạn không phải là nhà phát triển và chỉ muốn chơi với OData, XOData là khởi đầu tốt nhất cho bạn.

để biết thêm chi tiết tại http://www.odata.org/


4

ODATA là một loại REST đặc biệt nơi chúng ta có thể truy vấn dữ liệu thống nhất từ URL.


2

REST là viết tắt của RE trình bày S tate T ransfer là một kiểu kiến ​​trúc dựa trên tài nguyên. Tài nguyên dựa trên có nghĩa là dữ liệu và chức năng được coi là tài nguyên.

OData là một giao thức dựa trên web xác định một tập hợp các thực tiễn tốt nhất để xây dựng và tiêu thụ các dịch vụ web RESTful. OData là một cách để tạo các dịch vụ web RESTful do đó triển khai REST.

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.