WebApi.透過Protobuf-net加速傳輸速度
最近專案遇到下面Request,
1. 需降低WebAPI傳輸量
2. 傳跟收兩端都是C#
幸運的發現「黑暗大大-WCF探勘8-使用Protobuf-net序列化」這篇文章,查了後發現也有WebAPI版本,
就是這篇「USING PROTOBUF-NET MEDIA FORMATTER WITH WEB API 2」有詳細說明,並且有「範例程式」,
測試後,可以正常使用,並且有支援中文,不過有趣的是Response時間結果是反過來><!!,
下面說明「使用重點及測試注意事項」。
使用重點是:
1. Client端 :
- Reuest-Header要改為「application/x-protobuf」,如不這樣做,會沒有加速的效果,但一樣會回傳資料
- 反序列化資料時,要定義格式化的規則為「ProtoBufFormatter」
Server端:
- Model則要定義「ProtoContract」在Class,「ProtoMember」在property,如下圖
2. 測試注意事項:
使用SOAP UI測試最為方便,因為POSTMAN跟Fiddler測試時,一直無法改變Request-header為「application/x-protobuf」,
記得如下圖做修改,就會看到正確的封包
測試結果,會發現前面有框框,那部分是中文,放心程式會正常顯示中文