Tại sao tôi trả lời:
Tôi đã mất rất nhiều thời gian để hiểu sự khác biệt giữa hai công nghệ này. Tôi sẽ đặt tất cả những điểm đó ở đây mà tôi nghĩ rằng "Nếu tôi có những điểm này vào thời điểm mà tôi đang tự hỏi xung quanh để tìm kiếm câu trả lời này, thì tôi đã quyết định rất sớm trong việc lựa chọn công nghệ cần thiết của mình."
Nguồn thông tin:
Giải phóng Microsoft® Visual Studio® 2015
ISBN-13: 980-0-672-33736-9 ISBN-10: 0-672-33736-3
Tại sao ASP.NET Web API và WCF:
Trước khi so sánh các công nghệ của ASP.NET Web API và WCF, điều quan trọng là phải hiểu thực sự có hai kiểu / tiêu chuẩn để tạo dịch vụ web: REST (Chuyển giao trạng thái đại diện) và SOAP / WSDL. SOAP / WSDL là tiêu chuẩn ban đầu mà các dịch vụ web được xây dựng. Tuy nhiên, nó rất khó sử dụng và có các định dạng thông báo cồng kềnh (như XML) làm giảm hiệu suất. Các dịch vụ dựa trên REST nhanh chóng trở thành lựa chọn thay thế. Chúng dễ viết hơn vì chúng tận dụng các cấu trúc cơ bản của HTTP (GET, POST, PUT, DELETE) và thường sử dụng các định dạng thông báo nhỏ hơn (như JSON). Do đó, các dịch vụ HTTP dựa trên REST hiện là tiêu chuẩn để viết các dịch vụ nhắm mục tiêu nghiêm ngặt vào Web.
Hãy xác định mục đích của API Web ASP.NET
ASP.NET Web API là công nghệ của Microsoft để phát triển các dịch vụ web HTTP dựa trên REST. (Từ lâu, nó đã thay thế ASMX của Microsoft, vốn dựa trên SOAP / WSDL.) API Web giúp dễ dàng viết các dịch vụ mạnh mẽ dựa trên các giao thức HTTP mà tất cả các trình duyệt và thiết bị gốc đều hiểu. Điều này cho phép bạn tạo các dịch vụ để hỗ trợ ứng dụng của mình và gọi chúng từ các ứng dụng web, máy tính bảng, điện thoại di động, PC và máy chơi game khác. Phần lớn các ứng dụng được viết ngày hôm nay để thúc đẩy kết nối Web hiện tại sử dụng các dịch vụ HTTP theo một cách nào đó.
Bây giờ chúng ta hãy xác định mục đích của WCF:
Giao tiếp trên Internet không phải lúc nào cũng là phương tiện hiệu quả nhất. Ví dụ: nếu cả máy khách và dịch vụ tồn tại trên cùng một công nghệ (hoặc thậm chí là cùng một máy), chúng thường có thể đàm phán một phương tiện hiệu quả hơn để giao tiếp (như TCP / IP). Các nhà phát triển dịch vụ thấy mình đưa ra những lựa chọn giống như họ đang cố gắng tránh. Bây giờ họ sẽ phải lựa chọn giữa việc tạo các dịch vụ nội bộ hiệu quả và có thể có quyền truy cập rộng rãi được tìm thấy qua Internet. Và, nếu họ phải hỗ trợ cả hai, họ có thể phải tạo nhiều phiên bản dịch vụ của họ hoặc ít nhất là các proxy riêng biệt để truy cập dịch vụ của họ. Đây là vấn đề Microsoft đã giải quyết với WCF .
Với WCF, bạn có thể tạo dịch vụ của mình mà không cần quan tâm đến ranh giới. Sau đó, bạn có thể để WCF lo lắng về việc chạy dịch vụ của mình theo cách hiệu quả nhất, tùy thuộc vào ứng dụng khách gọi. Để quản lý tác vụ này, WCF sử dụng khái niệm điểm cuối. Dịch vụ của bạn có thể có nhiều điểm cuối (được định cấu hình tại thời điểm thiết kế hoặc sau khi triển khai). Mỗi điểm cuối cho biết cách dịch vụ có thể hỗ trợ ứng dụng khách gọi: qua Web, thông qua điều khiển từ xa, thông qua Hàng đợi Tin nhắn của Microsoft (MSMQ), v.v. WCF cho phép bạn tập trung vào việc tạo chức năng dịch vụ của bạn. Nó lo lắng về cách nói chuyện hiệu quả nhất với việc gọi điện cho khách hàng. Theo cách này, một dịch vụ WCF duy nhất có thể hỗ trợ hiệu quả nhiều loại khách hàng khác nhau.
Ví dụ về WCF:
Xem xét ví dụ:
Dữ liệu khách hàng được chia sẻ giữa các ứng dụng. Mỗi ứng dụng có thể được viết trên một nền tảng khác nhau và nó có thể tồn tại ở một vị trí khác nhau. Bạn có thể trích xuất giao diện khách hàng vào dịch vụ WCF cung cấp quyền truy cập chung vào dữ liệu khách hàng được chia sẻ. Điều này tập trung dữ liệu, giảm trùng lặp, loại bỏ đồng bộ hóa và đơn giản hóa việc quản lý. Ngoài ra, bằng cách sử dụng WCF, bạn có thể định cấu hình các điểm cuối dịch vụ để hoạt động theo cách có ý nghĩa với máy khách đang gọi. Hình hiển thị ví dụ từ trước với quyền truy cập tập trung dữ liệu khách hàng trong dịch vụ WCF.
Phần kết luận:
i) Khi nào nên chọn API Web:
Không thể phủ nhận rằng các dịch vụ HTTP dựa trên REST như các dịch vụ được tạo bằng API Web ASP.NET đã trở thành tiêu chuẩn để xây dựng các dịch vụ web. Các dịch vụ này cung cấp một cách tiếp cận dễ dàng, đơn giản cho các nhà phát triển dịch vụ xây dựng web. Các nhà phát triển web hiểu HTTP GET và POST và do đó thích ứng tốt với các loại dịch vụ này. Do đó, nếu bạn đang viết các dịch vụ được nhắm mục tiêu nghiêm ngặt vào HTTP , ASP.NET Web API là lựa chọn hợp lý.
ii) Khi nào nên chọn WCF:
Công nghệ WCF rất hữu ích khi bạn cần hỗ trợ nhiều điểm cuối dịch vụ dựa trên các giao thức và định dạng thông báo khác nhau. Các sản phẩm như Microsoft BizTalk tận dụng WCF để tạo các dịch vụ mạnh mẽ có thể được sử dụng trên Web thông qua các cấu hình máy-máy khác nhau. Tuy nhiên, nếu bạn cần phải viết một ứng dụng giao tiếp qua TCP / IP khi được kết nối với cục bộ mạng và hoạt động qua HTTP khi ở ngoài mạng, WCF là câu trả lời của bạn .
Được cảnh báo:
Các nhà phát triển web thường xem WCF là khó khăn và phức tạp hơn để phát triển. Do đó, nếu bạn không thấy trước nhu cầu về dịch vụ đa phương tiện, bạn có thể sẽ gắn bó với API Web ASP.NET.