1. 程式人生 > >開發進階:Dotnet Core多路徑非同步終止

開發進階:Dotnet Core多路徑非同步終止

> 今天用一個簡單例子說說非同步的多路徑終止。我儘可能寫得容易理解吧,但今天的內容需要有一定的程式設計能力。   今天這個話題,來自於最近對gRPC的一些技術研究。 話題本身跟gRPC沒有太大關係。應用中,我用到了全雙工資料管道這樣一個相對複雜的概念。 我們知道,全雙工連線是兩個節點之間的連線,但不是簡單的“請求-響應”連線。任何一個節點都可以在任何時間傳送訊息。概念上,還是有客戶端和服務端的區分,但這僅僅是概念上,只是為了區分誰在監聽連線嘗試,誰在建立連線。實際上,做一個雙工的API比做一個“請求-響應”式的API要複雜得多。 由此,延伸出了另一個想法:做個類庫,在庫內部構建雙工管道,供給消費者時,只暴露簡單的內容和熟悉的方式。 *    為了防止不提供原網址的轉載,特在這裡加上原文連結:*   # 一、開始 假設我們有這樣一個API: * 客戶端建立連線 * 有一個`SendAsync`訊息從客戶端傳送到伺服器 * 有一個`TryReceiveAsync`訊息,試圖等待來自伺服器的訊息(伺服器有訊息傳送為True,返之為False) * 伺服器控制資料流終止,如果伺服器傳送完最後一條訊息,則客戶端不再發送任何訊息。   介面程式碼可以寫成這樣: ```c# interface IT