API Web tận dụng giao thức http nguyên bản hơn. Odata là một tiêu chuẩn mở được chấp nhận bởi rất nhiều người chơi lớn. Tôi chỉ có thể nói từ kinh nghiệm của mình khi chơi đùa với Odata và gần đây đã khám phá API Web và thực hiện một số nghiên cứu.
OData rất tuyệt vì đó là một tiêu chuẩn thực tế. Bạn có thể dễ dàng tạo cơ sở dữ liệu và hiển thị nó qua HTTP. Điều này có nghĩa là bạn có thể duyệt qua cấu trúc bảng của mình mà không cần bất kỳ cấu hình nào (tôi nói điều đó một cách lỏng lẻo). Bạn cũng có thể chạy các truy vấn thông qua URL có thể bao gồm một số LINQ nhẹ:
/products/orders/[put some linq-ish query here]
Điều này được cho là tốt hay xấu. Xác thực là tiêu chuẩn và xây dựng nó.
API Web, thú vị hơn từ quan điểm của tôi. Nó sử dụng chức năng HTTP (thông báo lỗi và cộng sự) và "bản địa" hơn một chút so với các yêu cầu RESTful thực sự. Tôi thực sự đã không chơi với nó quá nhiều .. Nhưng tôi đã đọc xung quanh và có loại "nghe nói" rằng MVC và Web API có thể "kết hôn" một ngày nào đó, một lần nữa, có thể tốt có thể xấu ...
Khi tôi đang chơi với OData, tôi đã tạo một Stored Proc, đã gắn nó vào bề mặt thực thể, định cấu hình loại trả về mạnh và sau đó nối nó với một yêu cầu URL và BANG, có yêu cầu RESTful của tôi được ánh xạ tới kết quả được lưu trữ của tôi. Nó khá đơn giản và tôi có thể nhận được chính xác những gì tôi cần.
Kết luận
Tôi chưa có cơ hội chơi với API WCF quá nhiều chi tiết, nhưng tôi sẽ nói rằng đó là cách để phát triển ứng dụng khách vì đây là cách tiếp cận thuần túy hơn với REST. Nếu bạn sẽ thực hiện nhiều hơn hoặc ít hơn các cuộc gọi qua lại "thẳng" và truy xuất "Xem mô hình", nó sẽ cung cấp một tương tác nguyên gốc hơn.
Mặt khác. Nếu bạn sẽ thực hiện các truy vấn (ish) phức tạp trên dữ liệu dựa trên tương tác máy khách và bạn muốn "xây dựng" logic truy vấn và chuyển nó dưới dạng tham số, thì Odata có thể hoạt động.
Cách tôi nhìn nhận là nếu tôi cần phơi bày dữ liệu của mình ở định dạng cấu trúc (nghĩa là cấu trúc bảng / mối quan hệ) và sau đó truy vấn nó trực tiếp từ máy khách, thì Odata sẽ hoạt động tốt nhất. Cũng tốt khi cho phép "Người khác" truy cập dữ liệu (với quyền xác thực, v.v.), đó là lý do tại sao nó tuân thủ giao thức OData
Nếu bạn muốn các yêu cầu RESTful khi bạn ra lệnh URL (/ sản phẩm / đơn hàng / 22 và tạo "tập kết quả" phức tạp từ cấu trúc dữ liệu và mã được quản lý "ẩn" của bạn VÀ bạn cũng có thể được hưởng lợi từ các thông báo phản hồi HTTP, sau đó API Web có lẽ sẽ là lựa chọn tốt nhất ..
một lần nữa, đây là tất cả từ nghiên cứu và đồ chơi. Tôi đã không thực hiện hoặc trong một kịch bản ứng dụng sản xuất / đầy đủ. Tôi nghĩ rằng cả hai sẽ có điểm mạnh và điểm yếu, và chắc chắn có một số chồng chéo