MessagePack是一種高效二進位制序列化格式。可以在多種語言中進行快速資料交換,比如JSON格式等。它比Json更加小巧,更加高效,可以用於一些結構化資料儲存 ,非常適合適用於訊息匯流排,MemoryCache等對序列化要求比較高的場合。

MessagePack基本上被大多數主流語言支援,因此用它來作為教程間交換的訊息序列化也是一種不錯的方式,本文這裡簡單的介紹一下如何在.Net 中使用MessagePack。

首先安裝MessagePack和MessagePackAnalyzer的Nuget包:

  • Install-Package MessagePack
  • Install-Package MessagePackAnalyzer

其中MessagePackAnalyzer是可選的,但它可以幫助檢查序列化標記的正確性,還是非常有用的。

如下就是一個簡單的示例,非常簡單,我就不多介紹了。

// mark MessagePackObjectAttribute
[MessagePackObject]
public class MyClass
{
// Key is serialization index, it is important for versioning.
[Key()]
public int Age { get; set; } [Key()]
public string FirstName { get; set; } [Key()]
public string LastName { get; set; } // public members and does not serialize target, mark IgnoreMemberttribute
[IgnoreMember]
public string FullName { get { return FirstName + LastName; } }
} class Program
{
static void Main(string[] args)
{
var mc = new MyClass
{
Age = ,
FirstName = "hoge",
LastName = "huga",
}; // call Serialize/Deserialize, that's all.
var bytes = MessagePackSerializer.Serialize(mc);
var mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes); // you can dump msgpack binary to human readable json.
// In default, MeesagePack for C# reduce property name information.
// [99,"hoge","huga"]
var json = MessagePackSerializer.ToJson(bytes);
Console.WriteLine(json);
}
}

另外,網上也有不少介紹MessagePack的文章,如果感興趣可以參考下如下文章: