2016-12-16 67 views
6

我已經閱讀了很多關於WCF和ASP.Net web API之間差異的文章。不幸的是,我無法想出一個清晰的概念來說明我的目的。我讀過的大部分文章都強調了這兩種Web服務的設計觀點。但是我很困惑什麼對我的項目最有效,爲什麼?這是我對該項目的簡要描述。ASP.Net Web API vs WCF,哪一個應該在我的項目中選擇

我需要在兩臺服務器之間創建通信通道(都是用C#編寫的)。服務器將使用消息(特定類型的命令)進行通信。消息有時可能只是確認,有時消息可能包含執行一些計算的指令。例如,一條消息可以繪製某些東西,或發送一條短信等。而不一定這些消息將涉及任何數據庫事務。但是這些消息有時可以發送大型文本文件作爲有效載荷(大約1-5 MB最大值)。我相信WCF非常肯定會這樣做,但是我可以用ASP.net web API做同樣的事情嗎?因爲到目前爲止我所看到的所有例子都是針對ASP.Net web api的:它們適用於操縱某種數據庫存儲(GET,PUT,DELETE)的RESTful服務。但對我來說,我將需要公開服務點,將

做某種處理,如返回計算的值,發送和確認消息等

不只是操縱DB-店。

那麼,最好和最簡單的方法是什麼?需要提及的是,我沒有找到任何使用ASP.Net web API實現這一點的直接例子。

+0

你能詳細解釋一下 - **一條消息可以得出什麼**意思嗎? –

+0

服務器可以將消息發送到另一臺服務器以在表面上繪製某些東西,即該服務器連接到設備。 –

+0

可能是https://stackoverflow.com/a/36442005/3123338的副本,我發現答案比Rajesh的更完整(但仍然很好:)) –

回答

0

WebAPI不僅適用於RESTful Web服務。您可以輕鬆將請求發送到WebAPI控制器並按照您的需要進行處理:計算,發送消息,與CRM交互,與數據庫或其他任何事務交互。

創建WCF是爲了管理基於SOAP的Web服務並帶來額外的複雜性。它處理TCP,MIME ...

如果你只需要處理HTTP請求,最簡單的方法是使用WebAPI。

+0

嗨,我明白這一點。但到目前爲止我還沒有遇到過一個例子。另一方面,我看到基於WCF的示例涵蓋了這種類型的操作。你能否給我舉個例子或者讓我舉個例子。 –

+0

一旦你得到請求,你是在WCF還是在WebAPI的情況下,邏輯將完全相同。以下是處理大型文件的示例:http://www.strathweb.com/2012/09/dealing-with-large-files-in-asp-net-web-api/ – PMerlet

+0

傳輸大文件我理解。所以如果沒有數據模型,我的服務只會做某種計算或者執行一些服務應該是什麼情況? –

0

如果是RESTful服務,我會建議使用Web API,因爲WCF從未作爲Restful服務提供服務,儘管您可以作爲Web API特別爲此服務的服務。

+0

我沒有提到它會使用RESTful服務。我剛剛描述了我的項目,並詢問了哪些Web服務最適合我的目的。 –

0

首先,RESTful是一種可應用於Web服務的無狀態和統一接口規範。它不一定是自動的,只有普通的舊CRUD服務由數據庫支持。

在現實世界中,我們很難說所有的Web REST API都完全尊重規範,事實上它們大部分時間都沒有,特別是無狀態部分。

對於基於消息的API,尤其是基於雙向和基於事件的API,您可以使用websockets並考慮使用REST API來暴露統一的無狀態web界面來創建這些API。是的,你可以使用帶有ASP.NET WebApi的websocket,那裏有很多教程,甚至對於新的ASP.NET Core也是如此。

「服務之間」的交互部分與通常的Web瀏覽器< => Web服務沒有什麼不同,您只是使用C#代碼而不是JS代替客戶端。

我幾乎不推薦使用SOAP的WCF,因爲考慮到現在的Web標準,它幾乎不可移植。例如,如果想要使用瀏覽器客戶端而不是另一個ASP。NET服務,那麼你將不得不做額外的代碼客戶端來處理支持。

您可以使用WCF websockets,它提供了WCF SOAP的幾乎所有優點。

TL;博士:

  • 你可以混合支持REST和WebSockets的,它實際上是比去充分休息或完整的WebSockets更好
  • 這是個人喜好,使用SOAP過的WebSockets但確實配有潛力技術債務考慮您想以後做什麼
  • 服務之間
  • 消息API只不過是一個服務和瀏覽器
6

的Q之間的消息API不同你所問的問題是過於寬泛的或主要是基於意見的,並且很難爲你提出的問題給出一個例子。

要點:

  • 首先,如果你要創造條件,在不同平臺上使用的服務,然後與WCF去。
  • 其次,如果您正在創建要使用外部資源的Internet服務,請使用Web API。
  • 如果您打算爲低帶寬設備或移動設備創建訪問客戶端的服務,Web API是最佳選擇.HTTP 與SOAP相比,請求/響應也更具可讀性,因爲它的 包含標頭,主體等這使得它變得複雜。

只要採取幾分鐘時間閱讀下面的文章,直到你得到的幾個原則全面的瞭解。

原始來源可以發現Here,HereHere

要WCF或WEB API之間誰選擇:

  1. 選擇WCF,當你想創建一個應該支持特殊場景如單向消息,消息隊列,全雙工通信等服務
  2. 當您想要創建可以使用快速傳輸通道(如TCP,命名管道或甚至UDP(在WCF 4.5中))的服務時選擇WCF,並且還希望在所有其他傳輸通道不可用時都支持HTTP 。
  3. 當您想要通過HTTP創建面向資源的服務時,可以使用HTTP的全部功能(如URI,請求/響應頭,緩存,版本控制,各種內容格式)來選擇Web API。
  4. 當您想要將服務展示給廣泛的客戶端(包括瀏覽器,手機,iphone和平板電腦)時,請選擇Web API。

爲什麼要選擇網絡API

  • 的Web API沒有像WCF REST服務繁瑣和大量的配置。
  • 這很簡單,用Web API創建服務。與WCF REST一樣,服務創建有點困難(需要清楚地瞭解配置)。
  • Web API僅基於HTTP和HTTPS,易於定義,公開和使用REST完全方式。
  • Web API是輕量級架構,適用於智能手機等帶寬有限的設備。

我認爲:

  • 這樣做最簡單的方法 - 網絡API(既然你不要有任何的例子)(配置)
  • 最難的方式是 - WCF(更好去WCF,因爲你有例子)

我希望這給你一個清晰的想法,以選擇什麼...

相關問題