首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 服務端主動請求客戶端資料:WCF 雙工通訊或 SignalR 實現雙向呼叫

     編輯:程式設計綜合問答

傳統 Socket 模式下,客戶端連接後處於被動接收狀態,服務端難以主動發起請求。若需「服務端主動向客戶端要資料、客戶端回應」,應採用 **支援雙工通訊的高層框架**。

方案一:WCF 雙工通訊 (NetTcpBinding / WSDualHttpBinding)

  • 定義回調介面 IClientCallback,服務端透過 OperationContext.Current.GetCallbackChannel<IClientCallback>() 主動呼叫客戶端方法。
  • 客戶端實作回調介面並提供 InstanceContext 建立雙向通道。
  • 適合內網、.NET 對 .NET、需可靠傳輸、事務流場景。

方案二:SignalR (ASP.NET Core SignalR)

  • 基於 WebSocket / Server-Sent Events / Long Polling 自動降級,支援伺服器主動推送 (Hub.Invoke)。
  • 客戶端 (JS / C# / Java) 定義 on("RequestData", ...) 處理伺服器呼叫並回傳。
  • 適合跨平台、穿透防火牆/Proxy、Web/行動端混合、高併發即時通訊。

方案三:gRPC 雙工串流

  • 定義 rpc StreamData(stream Request) returns (stream Response),雙向串流任意端主動發送。
  • 高效能、強型別、多語言支援,適合微服務內部通訊。

選擇建議

場景推薦
.NET 內網、需事務/可靠會話WCF Dual
跨平台、Web/行動、即時推送SignalR
微服務、高效能、強契約gRPC

拋棄裸 Socket 手寫協議,擁抱現代雙工通訊框架,大幅降低複雜度並提升可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved