簡體   English   中英

.NET Core中IPC應該如何處理?

[英]How should IPC be handled in .NET Core?

In a past .NET Framework project, our main application ran as a Windows Service and we used WCF NetNamedPipeBinding to communicate with a WPF front end application. 由於 WCF 不會成為 .NET Core 的一部分,我應該如何處理進程間通信? 新應用程序(工作服務)需要處理典型的 RPC 並將數據推送到另一個進程。

我正在考慮以下幾點:

  1. 命名管道。 這會起作用,但這些實際上是 API 中的流。 處理流和建立協議似乎很痛苦。

  2. gRPC,但這將涉及將許多數據模型轉換為不可取的 protobuf。

  3. SignalR,但這將涉及在我的服務中托管 ASP.NET 核心應用程序。 似乎是矯枉過正。

任何見解或替代方案將不勝感激!

我會考慮三個最近的省力選擇:

選項1

看看MagicOnion 使用超快的序列化程序,是跨平台的,具有內置的 LZ4 消息壓縮、SSL/TLS 支持和流式傳輸。 根據我的經驗,從自托管 WCF 服務器更改為這是輕而易舉的事——您可以按原樣使用數據合約,無需為 gRPC 創建 proto 文件。

我經歷過的唯一缺點是:

  • 如果您錯誤配置 SSL 和
  • 僅支持 .NET 客戶端。

它還使用/需要 HTTP/2 進行通信,因此不支持命名管道,這可能會限制它的上訴/客戶端支持......

在過去的 7 個月中,我使用 .NET Core 作為跨平台升級到 25 台自托管 WCF 服務器,並且沒有回頭——它非常快速和穩定。

注意:版本 4 不再支持 .NET 4.x 服務器框架

選項 2:

使用Visual ReCode自動將您的項目從 WCF 轉換為 gRPC。 我對這個項目的經驗有限,但看起來很有希望,gRPC 絕對是未來......

選項 3:

ServiceWire是一個輕量級的 IPC/RPC 庫。 跨平台,支持 TCP/IP 和命名 pipe 通道。 非常快速且易於使用 - 只需將 [Serializable] 添加到需要通過網絡發送的所有類。 我真的很喜歡這個框架。

唯一的缺點是:

  • 不支持 SSL,但有自己的加密和自動壓縮
  • 沒有 .NET 核心標准 DI 支持,但它的服務器實現使這不是問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM