2012-05-24 53 views
9

Có ai chia sẻ sự khác biệt thực sự giữa Dịch vụ WCF và ASP.NET Web Api không? Trong trường hợp đó chúng tôi phải sử dụng dịch vụ WCF và ASP.NET Web Api.WCF Service vs ASP.NET Web Api

+2

có thể trùng lặp: http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api –

Trả lời

11

WCF Web API là thế hệ tiếp theo của khung dịch vụ của Microsoft.

Dịch vụ WCF ban đầu được thiết kế với kiến ​​trúc kênh cho phép tùy chỉnh các giao thức và phương tiện được sử dụng để giao tiếp giữa các hệ thống. Trong khi điều này mang lại cho kiến ​​trúc sư/nhà phát triển sự linh hoạt tuyệt vời trong việc xây dựng các ứng dụng có thể hoạt động liên tục, thì nó có chi phí phức tạp. Cấu hình WCF chưa bao giờ đơn giản (IMO).

Trường hợp sử dụng phổ biến nhất (IMO), đang sử dụng các dịch vụ WCF để cung cấp hỗ trợ cho các ứng dụng web thông qua yêu cầu ajax từ trình duyệt để có thêm dữ liệu. Ngoài ra, kể từ thời điểm WCF ban đầu được giới thiệu, nó đã trở thành phổ biến cho các ứng dụng để cung cấp một API bằng cách sử dụng http.

Bởi vì điều này, WCF Web API mới là một nỗ lực để đơn giản hóa cơ sở hạ tầng dịch vụ và giả định giao thức truyền tải http.

Nếu bạn đang xây dựng một ứng dụng web mới, tôi sẽ sử dụng API Web mới. Tôi sẽ chỉ xem xét việc sử dụng các dịch vụ WCF nếu tôi cần giao tiếp với một hệ thống khác bằng cách sử dụng một cái gì đó khác http.


WCF Kênh Kiến trúc

http://msdn.microsoft.com/en-us/library/ms729840.aspx

WCF Web API

http://www.asp.net/web-api

+1

Khá nhiều của Craig đánh vào đầu ở đây. WebAPI = mọi thứ liên quan đến dịch vụ POX/JSON. WCF làm mọi thứ khác bao gồm IPC/NetTCP/SOAP/RPC. – leon

0

Web Service

Nó dựa trên SOAP và trả lại dữ liệu ở dạng XML. Nó chỉ hỗ trợ giao thức HTTP. Nó không phải là nguồn mở nhưng có thể được tiêu thụ bởi bất kỳ khách hàng nào hiểu được xml. Nó chỉ có thể được lưu trữ trên IIS.

WCF

Nó cũng dựa trên SOAP và trả lại dữ liệu ở dạng XML. Đó là sự phát triển của dịch vụ web (ASMX) và hỗ trợ các giao thức khác nhau như TCP, HTTP, HTTPS, Đặt tên đường ống, MSMQ. Vấn đề chính với WCF là cấu hình tẻ nhạt và sâu rộng của nó. Nó không phải là nguồn mở nhưng có thể được tiêu thụ bởi bất kỳ khách hàng nào hiểu được xml. Nó có thể được lưu trữ trong ứng dụng hoặc trên IIS hoặc sử dụng dịch vụ cửa sổ.

WCF Rest

Để sử dụng WCF như dịch vụ WCF Rest bạn phải kích hoạt webHttpBindings. Nó hỗ trợ các động từ HTTP GET và POST bằng các thuộc tính [WebGet] và [WebInvoke] tương ứng. Để kích hoạt các động từ HTTP khác, bạn phải thực hiện một số cấu hình trong IIS để chấp nhận yêu cầu của động từ cụ thể đó.Các tệp svc Truyền dữ liệu qua các tham số bằng cách sử dụng cấu hình WebGet cần. UriTemplate phải được chỉ định Nó hỗ trợ định dạng dữ liệu XML, JSON và ATOM.

Web API

Đây là khuôn khổ mới cho việc xây dựng các dịch vụ HTTP với cách dễ dàng và đơn giản. Web API là một nền tảng lý tưởng để xây dựng các dịch vụ REST-ful trên .NET Framework. Không giống như dịch vụ WCF Rest, nó sử dụng đầy đủ các tính năng của HTTP (như URI, request/response headers, caching, versioning, các định dạng nội dung khác nhau) Nó cũng hỗ trợ các tính năng MVC như định tuyến, bộ điều khiển, kết quả hành động, bộ lọc, mô hình chất kết dính , IOC container hoặc tiêm phụ thuộc, kiểm tra đơn vị làm cho nó đơn giản và mạnh mẽ hơn. Nó có thể được lưu trữ trong ứng dụng hoặc trên IIS. Đây là kiến ​​trúc có trọng lượng nhẹ và tốt cho các thiết bị có băng thông hạn chế như điện thoại thông minh. Câu trả lời được định dạng bởi MediaTypeFormatter của API Web thành JSON, XML hoặc bất kỳ định dạng nào bạn muốn thêm dưới dạng MediaTypeFormatter.

Để mà lựa chọn giữa WCF hoặc WEB API

Chọn WCF khi bạn muốn tạo ra một dịch vụ mà nên hỗ trợ các tình huống đặc biệt như một thông điệp bằng cách nào, hàng đợi tin nhắn, thông tin liên lạc, vv duplex Chọn WCF khi bạn muốn tạo một dịch vụ có thể sử dụng các kênh truyền tải nhanh khi có sẵn, chẳng hạn như TCP, Named Pipes hoặc thậm chí là UDP (trong WCF 4.5) và bạn cũng muốn hỗ trợ HTTP khi tất cả các kênh truyền tải khác không khả dụng. Chọn Web API khi bạn muốn tạo một dịch vụ hướng tài nguyên qua HTTP có thể sử dụng đầy đủ các tính năng của HTTP (như URI, yêu cầu/phản hồi tiêu đề, bộ nhớ đệm, phiên bản, các định dạng nội dung khác nhau). Chọn API Web khi bạn muốn hiển thị dịch vụ của mình cho nhiều khách hàng bao gồm trình duyệt, điện thoại di động, iphone và máy tính bảng.