2010-03-16 101 views
166

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 đang gặp khó khăn trong việc phân biệt OData với các dịch vụ web REST-ful. Ai đó có thể giúp tôi hiểu sự khác biệt không?Sự khác biệt giữa dịch vụ web OData và REST

+2

Một là nhà sản xuất, thiết bị còn lại là thiết bị cho người tiêu dùng. – Kangkan

Trả lời

92

CẬP NHẬT Cảnh báo, câu trả lời này cực kỳ lỗi thời khi OData V4 khả dụng.


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

Như Franci đã nói, OData dựa trên Atom Pub. Tuy nhiên, chúng đã phân lớ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 tiến trình.

Khả năng truy vấn của dịch vụ OData yêu cầu bạn xây dựng 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 out-of-band thông tin 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 điểm cuối cố định được gọi là $ metadata. Một lần nữa, khách hàng cần phải 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 ra các loại phương tiện để mô tả những phần dữ liệu quan trọng này, vì vậy bất kỳ khách hàng 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 đến và dữ liệu mà nó đang nhận.

+0

liên kết của bạn bị hỏng: (www.bizcoder.com/index.php/2009/11/30/oh-data/ – felickz

+1

@felickz Xin lỗi về điều đó. đã có vấn đề về DNS. Nó sẽ hoạt động ngay bây giờ hoặc khi bộ nhớ cache của bạn hết hạn –

+0

câu trả lời này có thể đã lỗi thời ngay bây giờ .. vì ứng dụng khách không chỉ là microsoft và chỉ đề cập đến edmx nếu bạn sử dụng môi trường .net – sksallaj

60

Giao thức OData được xây dựng 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ế REST API. Vì vậy, theo nghĩa nào đó bạn nói đúng - OData chỉ là một API REST khác và mỗi 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à kiểu kiến ​​trúc và kiểu thiết kế.

+0

Tôi có thể sai về điều này (chỉ 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] [http://www.odata.org/documentation], nó cũng xuất hiện định dạng JSON, bạn có thể sử dụng cách khác. Bạn có thể làm sáng tỏ về điều này? –

+1

@ JohannesRudolph, thành thật mà nói tôi không biết. Tôi đã không xem xét OData trong hai năm qua. Nhưng có khả năng Microsoft sẽ thêm hỗ trợ JSON. Tuy nhiên, lưu ý rằng điều này không có bất kỳ cách nào thay đổi bất kỳ câu trả lời nào ở đây. JSON và XML chỉ là vấn đề trình bày các tài nguyên REST. –

+1

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

29

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 bạn nó sẽ giống như đi đến một trang web ngoại trừ thay vì trở về 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ó lên thật nhanh, nghĩ về nó như:

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

Từ OData documentation:

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 phương pháp 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.

13

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

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

REST của - là một kiến ​​trúc như thế nào để 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 thư ở các định dạng khác nhau (hiện tại tôi nghĩ là AtomPub và JSON). ODataV4 tuân theo nguyên tắc nghỉ ngơi.

Ví dụ: người asp.net chủ yếu sẽ sử dụng bộ điều khiển WebApi để tuần tự hóa/deserialize đối tượng thành JSON và có 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 out-of-the-box.

3

OData (Giao thức dữ liệu mở) là tiêu chuẩn OASIS xác định tốt nhất thực hành để xây dựng và sử dụng 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 các API RESTful mà không cần phải lo lắng về các phương pháp xác định yêu cầu và phản hồi tiêu đề, 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 vv. cũng hướng dẫn bạn về các thay đổi theo dõi , xác định chức năng/hành động cho các thủ tục tái sử dụng và gửi yêu cầu không đồng bộ/hàng loạt v.v. Ngoài ra, OData cung cấp tiện ích mở rộng để đáp ứng bất kỳ nhu cầu tùy chỉnh nào của các API RESTful .

API RESTata OData dễ tiêu thụ. Siêu dữ liệu OData, một mô tả về mô hình dữ liệu của các API, , cho phép tạo ra các proxy và các công cụ máy khách chung mạnh mẽ. Một số của chúng có thể giúp bạn tương tác với OData ngay cả khi không biết bất cứ điều gì về giao thức. 6 bước sau đây minh họa 6 trường hợp 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à sự khởi đầu tốt nhất cho bạn.

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

0

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

Các vấn đề liên quan