2013-03-16 3 views

Trả lời

12

WebAPI dựa trên MVC, nhưng có một số khác biệt tinh tế. Bạn cần phải hiểu rằng WebAPI là một điều riêng biệt từ MVC, và không yêu cầu MVC. Bạn có thể cài đặt riêng WebAPI và bạn có thể gỡ cài đặt nó khỏi các mẫu MVC mặc định. Đó là sự thật, MS có thể đã xây dựng WebAPI trực tiếp vào Bộ điều khiển MVC, nhưng họ đã chọn để giữ bộ điều khiển API tách biệt với Bộ điều khiển MVC vì chúng thực sự là những cách khác nhau để xử lý yêu cầu và phản hồi.

Ví dụ về những điều bạn có thể làm trong WebAPI mà bạn có thể không (hoặc ít nhất không phải là dễ dàng) trong MVC bao gồm:

  • Nội dung đàm phán
    • này cho phép khách hàng gọi để chọn định dạng dữ liệu đó sẽ được trả về, chẳng hạn như XML hoặc JSON.
  • hỗ trợ OData
    • Điều này cho phép người gọi để "lọc" Kết quả trên máy chủ mà không có phương pháp dịch vụ phải hỗ trợ đặc biệt nó. Ví dụ, nếu bạn muốn sắp xếp kết quả theo tên đầu tiên, sau đó điều này có thể được thực hiện đơn giản bằng cách xác định OData truy vấn tham số

WebAPI cung cấp rất nhiều năng lượng để đối phó với dữ liệu kết quả bộ. MVC không cung cấp loại chức năng đó.

Bạn có xu hướng sử dụng WebAPI cho những thứ như yêu cầu Ajax hoặc yêu cầu dựa trên dịch vụ web không yêu cầu sự phức tạp của WCF.

API RESTful không dành riêng cho MVC hoặc WebAPI. Chúng đơn giản là một triết lý về cách bạn thiết kế các yêu cầu HTTP của bạn trong một dịch vụ. Có rất nhiều thứ, nhưng tôi sẽ không tham gia.

1

Nhóm WCF đã hợp nhất tại Microsoft với nhóm MVC. WCF sẽ không biến mất, nhưng đối với các cuộc gọi dịch vụ RESTFUL đơn giản, Bộ điều khiển MVC là một trận đấu được thực hiện ở trên trời, và sửa đổi nó cho phép một API Web rất dễ dàng.

Trong khi nhiều người trong chúng ta cảm thấy WCF là tương đối dễ dàng, có rất nhiều người lo sợ và/hoặc không có/mất thời gian để tìm hiểu nó, do đó họ a. vẫn sử dụng ASMX, b. các dịch vụ chưa bao giờ được chấp nhận, hoặc NGAY BÂY GIỜ với API Web, là c. Rất vui mừng vì họ có thể dễ dàng bắt đầu và chạy với các dịch vụ web an toàn.

Vì vậy, thực sự nó là vấn đề về mức độ thoải mái, thích ứng, khả năng thay đổi và API Web có vị trí của nó. Nó không thể thay thế WCF vì WCF có cấu hình nâng cao với tất cả các ràng buộc và khả năng làm SOAP và không chỉ là REST, mà nhiều ứng dụng vẫn còn CẦN phải có giao thức SOAP.

+2

Tôi không đồng ý rằng WCF là "dễ dàng". Chắc chắn, nó khá dễ dàng để tạo ra một dịch vụ đơn giản, nhưng WCF có cách quá nhiều "gotchas" và có một đường cong học tập dốc vượt ra ngoài những điều cơ bản. Ví dụ, một cái gì đó đơn giản bỏ qua một chứng chỉ tự ký yêu cầu phải nhảy qua rất nhiều vòng lặp. Các vấn đề về xác thực cũng tạo ra rất nhiều vấn đề. Đối với một SOA đầy đủ thổi sau đó WCF có ý nghĩa, vì nó cung cấp tấn chức năng cho điều đó, nhưng đối với AJAX hỗ trợ đơn giản đó là cách overkill. Chưa kể, không phải tất cả đều dễ dàng để được RESTful. –

+1

Tôi đang sử dụng @MystereMan trên trang này. WCF là rất mạnh mẽ, nhưng tôi sẽ không xem xét các ràng buộc được dễ dàng hoặc luôn luôn trực quan, đặc biệt là cho các kịch bản như thông tin người dùng với an ninh giao thông. Có một không khí ngọt ngào về các hợp đồng tại thời điểm/kết quả đánh máy mạnh mẽ + hợp đồng, nhưng nhiều lần overkill của nó, và gỡ lỗi thường là cách khó khăn hơn so với các cuộc gọi đơn giản yên tĩnh. –

+1

"tương đối dễ" là chìa khóa không "dễ" nhưng toàn bộ vấn đề không tập trung vào WCF, vì đó chỉ đơn thuần là điểm so sánh, tôi rõ ràng nói rằng Web API có vị trí của nó và "c. Rất vui mừng (mọi người) có thể dễ dàng bắt đầu và chạy với các dịch vụ web an toàn "Vì vậy tôi đã chọn từ ngữ cẩn thận vì nhiều người vẫn sử dụng ASMX, một số WCF không được sử dụng vì họ có lý do để không chấp nhận nó, và sau đó là đám đông nhảy trên API Web để đơn giản vì lợi ích an toàn. –

1

MVC được tối ưu hóa để cung cấp thông tin cho ứng dụng trình duyệt web. Nếu khách hàng của bạn là cái gì khác, Web API sẽ làm cho cuộc sống của bạn dễ dàng hơn trong dài hạn.

API Web là từ viết lại nền tảng của ngăn xếp web. Tại cốt lõi nó sạch hơn và linh hoạt hơn so với cơ sở hạ tầng 12 năm tuổi mà MVC được xây dựng trên đầu trang của. Web API chưa có cùng mức độ công cụ, tiện ích bổ sung, plugin như MVC, nhưng điều đó sẽ đến.