WCF và ASP .Net Web API


93

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

WCF Web Api hiện được hợp nhất vào Asp.net Web api Asp.net hiện 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 hoạt động, tôi vẫn sẽ nghiêng về WCF hoặc điểm cuối Mvc cũng có thể làm điều này?

Ngoài ra api web Asp.Net mới có tiết lộ Wsdl không? Nếu không, khách hàng sẽ tìm ra hoạt động nào khả dụng cho họ?

Có thể cho rằng tính năng tốt nhất của Mvc là mô hình hóa. Mức độ mạnh mẽ của WCF tương đương?

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


15
Tôi thấy tiêu đề của câu hỏi này hơi sai lệch. Tiêu đề là "MVC 4 vs Wcf Web Api", nhưng câu hỏi dường như liên quan nhiều hơn đến WCF và ASP .Net Web API. Từ tiêu đề, tôi nghĩ rằng những gì đang được so sánh là khung MVC 4 tiêu chuẩn (Bộ điều khiển, Mô hình, Chế độ xem) và khung ASP .Net Web API. Có ai khác thấy tiêu đề này gây hiểu lầm không?
BruceHill

Câu trả lời:


72

Trước tiên, tôi khuyên bạn nên đọc bài đăng của tôi về chủ đề này: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- hai xu-on-the-subject.aspx

Về câu hỏi WSDL của bạn - vì WebApi không sử dụng SOAP, nó không yêu cầu WSDL và không xuất một WSDL. Bạn có thể sử dụng Hypermedia để trả về các tài nguyên với danh sách các URL hoạt động có thể có (hãy nghĩ về nó như một tài nguyên tự mô tả)


6
Đó là một bài viết rất tốt. Cái hay nhất mà tôi từng thấy. Nhưng bây giờ tôi đang bối rối hơn bao giờ hết. WebApi bổ sung rất nhiều, nhưng khả năng hiển thị đ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 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 khỏi tính năng Soap tiên tiến hơn như phiên đáng tin cậy và giao dịch Axit ... thở dài.
Alwyn

2
@Alwyn - Tôi nghĩ rằng tất cả các sự kiện bạn đề cập đều đúng và do đó không nên làm bạn bối rối mà còn giúp bạn đưa ra quyết định - Web API có những ưu điểm 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ác giao thức khác, hoặc bạn có một nhu cầu mạnh mẽ đối với các tính năng khách hàng tự tạo hoặc xà bông tính năng tiên tiến - những có thể được xem xét tại sao để thích WCF trên Web API
BornToCode

@BornToCode: Mã máy khách có thể được tạo tự động bằng WebAPI. Bạn có thể tạo một tệp json lung tung bằng mã WebAPI. Sau đó, tệp json đó có thể được sử dụng bởi một trình tạo mã như swagger-codegen để tạo ra mã máy khách trong một số lượng lớn các ngôn ngữ đích.
vô tình để trống

@unintentionalleftblank - IMHO Việc tự động tạo mã ứng dụng khách qua WCF vẫn "thân thiện với người dùng" hơn so với API Web.
BornToCode

15

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

  1. ASP.NET Web API là một khuôn khổ để xây dựng các dịch vụ không dựa trên SOAP chỉ qua HTTP - vì vậy, không có nhiều giao thức truyền tải hơn sử dụng khuôn khổ này.
  2. WCF / Windows Communication Foundation là một khuôn khổ để trao đổi tin nhắn dựa trên SOAP - ở đây chúng tôi sử dụng rất nhiều giao thức truyền tải: HTTP, TCP, Named pipe, MSMQ, v.v.

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


2
Không vi phạm nhưng HTTP chỉ là một giao thức tầng ứng dụng . Nó không có hạn chế cố hữu về những giao thức tầng vận chuyển nào có thể được sử dụng.
smwikipedia

8

WCF Web API chủ yếu tập trung vào việc triển khai REST. Nếu bạn đang thiết lập triển khai REST, các bit WCF tiêu chuẩn sẽ hơi khó khăn ở 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 trải nghiệm tốt 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 vấn đề, nhưng đó là một chi phí thiết lập một lần. Sau khi thực hiện xong, bạn có thể sao chép và dán khá nhiều hành vi / điểm cuối vào 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 thao tác mới với WebGet. Mặt khác, nếu bạn nhận được một khách hàng muốn sử dụng Soap + Wsdl, tất cả chỉ là thay đổi cấu hình trái ngược với mã + triển khai + QA + phần còn lại. Vậy Mvc Web Api tốt hơn như thế nào?
Alwyn

1
Nếu bạn đã thấy thoải mái với WCF, bạn có thể tiếp tục theo con đường đó. Ngoài những gì tôi đã đề cập, có một số cải tiến nội bộ về 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 mất hàng tuần để cấu trúc lại nếu bạn có rất nhiều dịch vụ làm việc, đặc biệt. vì có một chút thay đổi mô hình trong suy nghĩ. Tuy nhiên, đối với công việc trong tương lai, tôi sẽ xem xét API Web WCF. Nhưng tôi đã sử dụng WCF Web API khá lâu, vì vậy tôi có thể bị thiên vị.
Gregory A Beamer

0

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.