.Net 8.0 下的新RPC,IceRPC之介面定義語言 [Slice] VS [Protobuf]

xlgwr發表於2024-03-23

作者引言

  • 很高興啊,我們來到了介面定義語言(IDL)篇,RPC之基石,有了它,可以在各種各種語言中實現RPC通訊。

Slice 和 Protobuf 是什麼?

IceRPC的核心是一個面向位元組bytes的RPC框架 : 它可以輕鬆地傳送攜帶位元組的請求requests,並接收攜帶更多位元組的響應responses.

IceRPC以位元組為中心的體系結構和API,正是我們移動位元組時所需要的框架。然而,如果想為RPC服務定義一個型別化的網路API,並不特別方便.

在RPCs的上下文中,使用介面定義語言(IDL)來指定RPCs,是目前非常常見的. 這些
定義也稱為客戶端和伺服器之間的契約[contract]

程式碼生成器,根據這些定義[contract]生成程式碼,有如下功能:

  • 透過選擇的程式語言,提供型別化的API
  • 透過將型別化資料(整數、字串、structs等)編碼/解碼encoding/decoding到位元組流中,或從位元組流中解碼,來實現此API,以方便定義友好的結構格式

使用IDL,完全不必擔心如上細節。將資料結構,編碼為可移植二進位制格式和將其解碼為可移植的二進位制格式:
所有這些都由程式碼生成器,及其支援庫來處理.

IceRPC 支援兩個IDL,並完全實現對應序列化格式: Slice 與 Protobuf. 來看看,應該選哪個!

Slice

Slice是與IceRPC協同開發的現代IDL和序列化格式. 它充分利用了所有
IceRPC的特性,並且在程式碼大小和頻寬使用方面都非常緊湊.

例如,IceRPC支援單向RPCs(One-Wey,傳送後不理會),Slice提供單向操作
對映到這些單向RPCs. 而Protobuf RPC方法總是返回一個響應,不支援使用Protobuf傳送單向RPCs.

可以將Slice視為IceRPC的預設IDL:除非有充分的理由使用Protobuf,否則請使用Slice.

Protobuf

Protobuf(Protocol Buffers)是Google建立的一種流行的IDL和序列化格式。這是一個常見的二進位制JSON的替代方案,在谷歌內部廣泛使用,目前國內也非常流行.

如果已經熟悉Protobuf,或者您的應用程式與使用或傳送的其他應用程式互動
Protobuf訊息,應該將IceRPC與Protobuf一起使用.

作者結語

  • 從第一行翻譯開始,檢視各種翻譯,比如 百度翻譯,有道翻譯,加上自已的理解,有點小累啊
  • 翻譯的不好,請手下留情,人也要成長的,謝謝
  • 如果對我有點小興趣,如可加我個人微信哦,大家交個朋友,一起探討人生。
  • 覺得還不錯的話,點個
    image

相關文章