2012-03-19 40 views
89

Ưu và nhược điểm của việc sử dụng từng công nghệ là gì?WCF vs ASP .Net Web API

Trang web WCF Api hiện được hợp nhất thành Asp.net Trang web Asp.net bây giờ hỗ trợ tự lưu trữ.

Tôi vẫn tưởng tượng nếu tôi muốn hiển thị nhiều lược đồ giao thức cho cùng một thao tác, tôi vẫn sẽ nghiêng về phía WCF hoặc có thể kết thúc Mvc làm điều này?

Ngoài ra, trang web Asp.Net mới cũng hiển thị Wsdl? Nếu không làm thế nào khách hàng sẽ tìm ra những hoạt động có sẵn cho họ?

Có thể cho rằng tính năng tốt nhất của Mvc là modelbinder. Làm thế nào mạnh mẽ là WCF tương đương?

Vì vậy, ai đó có thể cho tôi biết lợi thế nào mà trang web Asp.net api mang đến cho bảng? WCF dường như áp đảo sự lựa chọn mạnh mẽ hơn/khả năng mở rộng, imo. Về điều duy nhất, Web Api Mvc có mô hình WCF có lẽ dễ dàng phát triển, nhưng điều đó có nghĩa là ngồi xổm nếu nó kết thúc là một hạn chế thiết kế nghiêm trọng trên đường.

+15

Tôi tìm thấy tiêu đề của câu hỏi này một chút gây hiểu lầm. Tiêu đề là "MVC 4 vs Wcf Web Api", nhưng câu hỏi dường như đối phó nhiều hơn với WCF vs ASP .Net Web API. Từ tiêu đề tôi nghĩ rằng những gì đã được so sánh là tiêu chuẩn MVC 4 khuôn khổ (bộ điều khiển, mô hình, xem) vs ASP. Net Web API khuôn khổ. Bất cứ ai khác tìm thấy tiêu đề này gây hiểu nhầm? – BruceHill

Trả lời

72

Trước tiên, tôi đề nghị bạn đọc bài viết của tôi về đề tài này: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

Về câu hỏi của bạn WSDL - kể từ khi WebAPI không sử dụng SOAP, nó không đòi hỏi một WSDL, và không xuất khẩu một. Bạn có thể sử dụng Hypermedia để trả về tài nguyên với danh sách các URL hoạt động có thể (coi đó là tài nguyên tự mô tả)

+6

Đó là cách viết rất hay. Điều tốt nhất tôi từng thấy. Nhưng bây giờ tôi còn bối rối hơn bao giờ hết. WebApi thêm rất nhiều, nhưng không có khả năng để lộ điểm cuối khác có vẻ rất hạn chế. Nếu bạn có một khách hàng có thể sử dụng xà phòng, bây giờ họ sẽ bị buộc phải xây dựng hành động và phân tích cú pháp kết quả bằng tay khi xà phòng có thể tạo ra toàn bộ ngữ cảnh cho họ. Bạn cũng sẽ khóa chúng ra khỏi các tính năng xà phòng tiên tiến hơn như phiên đáng tin cậy và giao dịch Acid ... thở dài. – Alwyn

+2

@Alwyn - Tôi nghĩ rằng tất cả các sự kiện bạn đã đề cập là đúng và do đó không nên gây nhầm lẫn cho bạn mà là giúp bạn đưa ra quyết định - Web API có những lợi thế riêng của nó, nhưng nếu dịch vụ của bạn cần được tiếp xúc từ nhiều điểm cuối bao gồm các giao thức khác hoặc bạn có nhu cầu mạnh mẽ về tính năng tạo tự động của khách hàng hoặc các tính năng nâng cao của xà phòng - đây có thể là lý do tại sao lại thích WCF hơn Web API – BornToCode

8

WCF Web API chủ yếu tập trung vào triển khai REST. Nếu bạn đang thiết lập một triển khai REST, các bit WCF tiêu chuẩn là một chút đau ở phía sau. Nếu bạn đang thiết lập các dịch vụ RESTful, bạn sẽ thấy WCF Web API là một trải nghiệm đẹp hơn nhiều. Nếu bạn đang thiết lập các dịch vụ SOAP, thì WCF Web API không phải là người bạn tốt nhất của bạn, và bạn nên sử dụng WCF cho các dịch vụ của mình.

+2

Có cấu hình là một nỗi đau, nhưng đó là một thời gian thiết lập chi phí. Một khi bạn đã thực hiện nó, bạn có thể sao chép khá nhiều và dán hành vi/điểm cuối đến một dịch vụ khác. Hầu hết thời gian bạn nhận được chỉ bằng cách gắn thẻ các hoạt động mới với WebGet. Mặt khác, nếu bạn đã từng có một ứng dụng khách muốn sử dụng Soap + Wsdl, thì tất cả chỉ là một thay đổi cấu hình thay vì mã + triển khai + QA + phần còn lại. Vậy làm thế nào là Mvc Web Api tốt hơn? – Alwyn

+1

Nếu bạn đã thoải mái với WCF, bạn có thể tiếp tục xuống con đường đó. Ngoài ra, ngoài những gì tôi đã đề cập, một số cải tiến nội bộ trên REST trong WCF Web API (tôi không có danh sách trước mặt), nhưng có thể hoạt động và tôi sẽ không bỏ ra hàng tuần nếu bạn có tấn dịch vụ làm việc, đặc biệt. vì có một chút thay đổi mô hình trong suy nghĩ. Đối với công việc trong tương lai, tôi sẽ xem xét WCF Web API, tuy nhiên. Nhưng tôi đã được với WCF Web API cho một thời gian khá, vì vậy tôi có thể thiên vị. –

15

Lựa chọn phụ thuộc vào những gì chúng tôi muốn làm.

  1. ASP.NET Web API là một khuôn khổ để xây dựng các dịch vụ dựa trên SOAP không chỉ trên HTTP - vì vậy không có nhiều giao thức truyền tải có sẵn sử dụng khung này.
  2. WCF/Windows Communication Foundation là một khuôn khổ cho việc trao đổi thông điệp dựa trên SOAP - ở đây chúng tôi sử dụng rất nhiều các giao thức vận chuyển: HTTP, TCP, ống tên, MSMQ, vv ...

Tôi không chắc chắn về cái nào có hiệu suất tốt hơn về lượng dữ liệu, có thể WCF vì chúng ta có thể sử dụng các giao thức thấp. Mọi bình luận đều được đánh giá cao.

+2

Không vi phạm nhưng HTTP chỉ là giao thức ** lớp ứng dụng **. Nó không có hạn chế vốn có về những gì ** giao thức ** lớp vận chuyển có thể được sử dụng. – smwikipedia

0

Sử dụng WCF cho các trang web mạng nội bộ/B2B n API Web cho các trang web B2C/C2C/internet ... SOAP/XML vẫn là tiêu chuẩn cho truyền thông nội bộ doanh nghiệp, nó sẽ không biến mất !!!