作者引言
很高興啊,我們來到了IceRPC之多路複用傳輸>快樂的RPC,基礎引導,打好基礎,才能讓自已不在迷茫,快樂的暢遊世界。
icerpc 和多路複用傳輸
瞭解 icerpc 協議和多路複用傳輸
icerpc 協議
當建立到伺服器地址 icerpc://hello.zeroc.com
的客戶端連線時,指示 IceRPC 建立使用 icerpc 協議的連線。
icerpc 是一種應用層協議,透過多路複用連線傳輸 RPC(請求和響應)。
在討論 icerpc 協議時,我們總是用小寫拼寫 icerpc。這避免了與 IceRPC 框架的混淆
多路複用傳輸
路複用傳輸頁面,描述了在連線內提供獨立流的現代傳輸的抽象。比如,典型的多路複用傳輸是QUIC 。
icerpc 連線在由多路複用傳輸,建立的多路複用連線,上執行。
icerpc 協議透過為每個請求 + 響應對建立專用雙向流,透過多路複用連線傳送請求和響應。它為每個單向請求建立單向流,因為單向請求沒有響應。
由於每個流都是獨立的,因此不存在隊頭阻塞。 可以透過同一連線傳送大小請求和響應的組合:大請求和響應不會阻止,或延遲小請求和響應。
IceRPC 的首選協議
icerpc 自然是 IceRPC 的首選協議。
icerpc 提供了 IceRPC API 和功能的最直接實現。 特別是,IceRPC 的請求欄位、響應欄位和狀態碼按原樣由 icerpc 傳輸。它還支援有效負載連續性。
icerpc 透過雙工連線
目前只有一種標準複用傳輸: QUIC。 由於 QUIC 是新的且不普遍可用,因此可能需要將 icerpc 與傳統的雙工傳輸(例如 TCP)一起使用。
解決方案是 IceRPC 的 Slic 傳輸層。Slic 在雙工傳輸抽象上實現複用傳輸抽象。
C# 中,預設的多路複用傳輸是 TCP 上的 Slic,稱為 tcp
。以下語句都建立等效的 icerpc 連線。
// Create a client connection with the default multiplexed client transport, Slic over TCP.
using await var clientConnection = new ClientConnection("icerpc://hello.zeroc.com");
// Make sure we use Slic over TCP (correct but redundant).
using await var clientConnection = new ClientConnection("icerpc://hello.zeroc.com?transport=tcp");
// Create a new multiplexed client transport with default options.
var clientTransport = new SlicClientTransport(new TcpClientTransport());
using await var clientConnection = new ClientConnection(
"icerpc://hello.zeroc.com",
multiplexedClientTransport: clientTransport);
收尾
最近寫的都是基礎相關的概念,大家看看就行,以官方為主更為妙哉。
作者結語
- 一直做,不停做,才能提升速度
- 翻譯的不好,請手下留情,謝謝
- 如果對我有點小興趣,如可加我哦,一起探討人生,探討道的世界。
- 覺得還不錯的話,點個贊哦