適用於 Windows Communication Foundation (WCF) 開發人員的 gRPC

本文摘要說明為什麼 ASP.NET Core gRPC 適合想要移轉至新式架構和平台的 Windows Communication Foundation (WCF) 開發人員。

與 WCF 的比較

雖然 gRPC 的實作和方法不同,但 WCF 開發人員應可憑直覺使用 gRPC 開發及取用服務。 WCF 和 gRPC 都是 RPC (遠端程序呼叫) 架構,兩者目標相同:

  • 使得用戶端和伺服器儼然位於相同平台上一般進行編碼。
  • 提供簡化的可攜式網路 API。

雖然宣告介面的流程不同,但這兩個平台都有宣告和實作介面的需求。 gRPC 支援的多種類型 RPC 呼叫會妥善對應到 WCF 服務可用的繫結。 如需詳細資訊和範例,請參閱將 WCF 解決方案移轉至 gRPC

gRPC 的優點

gRPC 提供勝過其他方法的架構,原因如下。

效能

gRPC 使用 HTTP/2。 相比於 HTTP/1.1,HTTP/2:

  • 是較小、較快速的二進位通訊協定。
  • 讓電腦的剖析更有效率。
  • 支援透過單一連線的多工處理要求。 多工處理可讓多個要求透過一個連線進行傳送,而不會讓要求相互阻塞。 在 HTTP/1.1 中,此種阻塞稱為「隊頭 (HOL) 阻塞」。

gRPC 使用 Protobuf (一種高效的二進位格式) 來序列化訊息。 Protobuf 訊息特色為:

  • 快速序列化和還原序列化。
  • 比文字型格式使用更少頻寬。

gRPC 對於有頻寬限制的行動裝置和網路來說是一個很好的解決方案。

互通性

各種主要的程式設計語言和平台,包括 .NET、JAVA、Python、Go、C++、Node.js、Swift、Dart、Ruby 和 PHP,均有適用的 gRPC 工具和程式庫。 拜 Protobuf 二進位線路格式和各平台高效產生程式碼所賜,開發人員因此得以建置跨平台的高效能應用程式。

可用性和產能

gRPC 是完整的 RPC 解決方案。 它能在多種語言和平台中保持一致。 gRPC 也提供絕佳的工具,並自動產生許多樣本程式碼。 如同 WCF,gRPC 會自動產生訊息和強型別用戶端。 開發人員可以騰出時間來專注處理商務邏輯。

串流

gRPC 具有完整的雙向串流,提供類似 WCF 全雙工服務的功能。 gRPC 串流可以透過一般網際網路連線、負載平衡器和服務網格運作。

期限、逾時和取消

gRPC 允許用戶端指定完成 RPC 的最長時間。 如果超過指定的期限,伺服器可以取消與用戶端無關的作業。 期限和取消可透過後續 gRPC 呼叫進行傳播,以協助強制執行資源使用量限制。 超過期限時,用戶端可以停止作業,若有必要亦可提前停止。 例如,用戶端可以因為使用者互動而停止作業。

安全性

gRPC 可以透過 TLS 和 HTTP/2 在用戶端與伺服器之間提供端對端的加密連線。 對用戶端憑證驗證的支援更是進一步增強了用戶端與伺服器之間的安全性和信任。

以 gRPC 作為 WCF 到 .NET Core 和 .NET 5 的移轉路徑

.NET Core 和 .NET 5 標誌著 Microsoft 提供遠端通訊解決方案給想在多種平台上提供服務之開發人員的方式有所轉變。 .NET Core 和 .NET 5 支援呼叫 WCF 服務,但不提供伺服器端支援來裝載 WCF。

將 WCF 應用程式現代化的建議路徑有二:

  • gRPC 是以現代化技術為基礎所建置,已成為 RPC 應用程式開發人員社群中的熱門首選。 從 .NET Core 3.0 開始,新式 .NET 平台對 gRPC 提供了絕佳的支援。 移轉 WCF 服務以使用 gRPC 有助於提供新式應用程式所需的 RPC 功能、效能和互通性。

  • CoreWCF 是一項社群工作,可支援將 WCF 服務裝載至 .NET Core 和 .NET 5。 預覽版本現已推出,該專案正在努力做好生產環境準備。 CoreWCF 僅支援 WCF 功能的子集,而移轉方能加以使用的 .NET Framework 應用程式需要變更程式碼並進行測試才能成功。 如果應用程式必須與呼叫 WCF 服務的現有用戶端保持相容,CoreWCF 會是不錯的選擇。

開始使用

如需在適用於 WCF 開發人員的 ASP.NET Core 中建置 gRPC 服務的詳細指引,請參閱適用於 WCF 開發人員的 ASP.NET Core gRPC