[英]ASP.Net Web API vs WCF, which one should I choose in my project
到目前為止,我已經閱讀了很多關於WCF和ASP.Net web API之間差異的文章。 不幸的是,我無法清楚地知道什么能滿足我的目的。 我讀過的大多數文章都強調了兩個Web服務的設計觀點。 但我很困惑什么最適合我的項目,為什么? 這是我對該項目的簡要描述。
我需要在兩個服務器之間創建一個通信通道(兩者都是用C#編寫的)。 服務器將使用消息(某種類型的命令)進行通信。 消息有時只能是確認,有時消息可能包含進行某些計算的指令。 例如,一條消息可以繪制某些內容,或發送短信等。消息不一定涉及任何數據庫事務。 但是這些消息有時可以將大文本文件作為有效載荷發送(最大約1-5 MB)。 我相信WCF肯定會這樣做,但我可以用ASP.net web API做同樣的事情。 因為到目前為止我已經看到了ASP.Net web api的所有示例:它們適用於操縱某種DB存儲(GET,PUT,DELETE)的RESTful服務。 但在我的情況下,我將需要公開服務點
進行某種處理,例如返回計算值,發送和確認消息等。
不只是操縱數據庫存儲。
那么,最好和最簡單的方法應該是什么? 需要提到的是,我沒有找到使用ASP.Net web API實現此目的的任何直接示例。
您提出的問題是過於寬泛或主要以意見為基礎,很難為您所提出的問題舉例說明。
重點:
- 首先,如果您要創建將在不同平台上使用的服務,那么請使用WCF。
- 其次,如果您要創建將使用外部資源的 Internet服務,那么請使用Web API。
- 如果要為低帶寬設備或移動設備創建服務以訪問客戶端,Web API是最佳選擇。與SOAP相比,HTTP請求/響應也更具可讀性,因為它包含標題,正文等,這使得它變得復雜。
只需幾分鍾時間閱讀以下文章,直到您完全了解一些原則。
在WCF或WEB API之間選擇誰:
為什么選擇Web API
我的意見:
我希望這能讓你明白選擇什么......
首先,RESTful是一種無狀態和統一的接口規范,可以應用於Web服務。 它不必是自動的,只有DB支持的普通舊CRUD服務。
在現實世界中,我們很難說所有Web REST API都完全遵循規范,事實上它們並不是大部分時間,尤其是無狀態部分。
對於基於消息的API,特別是如果它是雙向的和基於事件的,您可以使用websockets並考慮使用REST API來公開統一的無狀態Web界面來創建它們。 是的,你可以使用帶有ASP.NET WebApi的websockets,那里有很多教程,即使對於較新的ASP.NET Core也是如此。
“服務之間”交互部分與通常的Web瀏覽器<=> Web服務沒有什么不同,您只是為客戶端使用C#代碼而不是JS。
我很難推薦使用SOAP的WCF,因為考慮到現在的Web標准,它幾乎不可移植。 例如,如果想要使用瀏覽器客戶端而不是其他ASP.NET服務,那么您將不得不做額外的代碼客戶端來處理支持。
您可以使用WCF websockets ,提供WCF SOAP的幾乎所有優點。
tl;博士:
WebAPI不僅適用於RESTful Web服務。 您可以輕松地將請求發送到WebAPI控制器並以您希望的方式處理它:計算,發送消息,與CRM交互,與數據庫或其他任何內容交互。
創建WCF是為了管理基於SOAP的Web服務並帶來額外的復雜性。 它處理TCP,Mime ......
如果您只需要處理HTTP請求,最簡單的方法是使用WebAPI。
我建議使用Web API,如果它是用於RESTful服務的,因為WCF從未被用作Restful服務,盡管你可以作為Web API特別為此服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.