Protocol Buffers 是在一個很理想的結構化資料的語言中立的序列化格式。你可以考慮一下XML或JSON,但更輕,更小的協定緩沖區。 這種格式的廣應用于谷歌不同的系統之間交換資料。
下面我們來介紹如何使用Google Protocol Buffers,隻定義一個超媒體類型 ProtoBufferFormatter:
自定義超媒體類型是通過建立自定義的MediaTypeFormatter,實作OnWritetoStream() 和 OnReadFromStream() 方法進行序列化和反序列化處理。人們經常認為媒體類型隻是在服務端使用,但是它用來在用戶端控制序列化和反序列化的要求,下圖顯示了一個HTTP 請求/響應和媒體類型格式化扮演的角色:

下面的代碼是自定義的ProtoBufferFormatter,構造函數裡指明了支援的媒體類型 application/x-protobuf。
如上所示,我們在OnWriteToStream方法中将.NET對象序列化為ProtoBuf格式,在OnReadFromStream方法中将ProtoBuf格式飯序列化為.NET對象。
現在需要給我們的.NET對象加入ProtoBuf 序列化的标簽:
在用戶端調用的代碼如下:
即使目前來說Google Protocol Buffers沒有XML/JSON那樣普及,RESTful服務使用中ProtoBuf無疑是一個非常有效的超媒體類型。祝大家龍年新春愉快,吉祥如意!
本文來自雲栖社群合作夥伴“doNET跨平台”,了解相關資訊可以關注“opendotnet”微信公衆号