Mercurial > hg > Papers > 2021 > riono-sigos
changeset 13:8336f55a92e7
update chapter MessagePack
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 May 2021 18:35:43 +0900 (2021-05-04) |
parents | ca30f2e91c45 |
children | 73a3c53c7568 |
files | Paper/riono-sigos.pdf Paper/riono-sigos.tex Paper/src/MessagePackEx.cs |
diffstat | 3 files changed, 36 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/riono-sigos.tex Tue May 04 18:07:38 2021 +0900 +++ b/Paper/riono-sigos.tex Tue May 04 18:35:43 2021 +0900 @@ -152,12 +152,23 @@ 解凍にはmsgpack.read を使用し、圧縮されたbyte[] 型と圧縮対象のクラスを渡すことで解凍できる。 -C\# のMessagePack は複数存在しており、java と同様な書き方をするneuecc のMessagePack-CSharp を選択した。 +C\# のMessagePack は複数存在しており、java と同様な書き方をするMessagePack-CSharp を選択した。 \lstinputlisting[caption=C\# 版におけるMessagePack の使用方法, label=code:csmspackEx]{src/MessagePackEx.cs} +MessagePack-CSharp ではjava 版と同様にクラスに対して圧縮を行うためCode \ref{code:csmspackEx} の1行目で MessagePackObject attribute を追加している。また、圧縮する変数に対してkey を設定することができ、int やstring を指定することができる。 + + +データの圧縮にはMessagePackSerializer.Serialize (data) を使用し、byte[] 型に圧縮される。解凍にはMessagePackSerializer.Deserialize$<T>$(data) を使用する。Deserializeはジェネリスク関数であるため、$<>$内に解凍するデータのクラスを指定する。 +Code \ref{code:csmspackEx} の21行目では、変数それぞれにkey を設定していることでjson に展開することが可能である。 + + + + + + \section{CodeGear 実行時のThreadPool からTask への変更}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/src/MessagePackEx.cs Tue May 04 18:35:43 2021 +0900 @@ -0,0 +1,24 @@ +[MessagePackObject] +public class MyClass { + [Key(0)] + public int Age { get; set; } + [Key(1)] + public string FirstName { get; set; } + [Key(2)] + public string LastName { get; set; } + + static void Main(string[] args) { + var mc = new MyClass { + Age = 99, + FirstName = "hoge", + LastName = "huga", + }; + + byte[] bytes = MessagePackSerializer.Serialize(mc); + MyClass mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes); + + // [99,"hoge","huga"] + var json = MessagePackSerializer.ConvertToJson(bytes); + Console.WriteLine(json); + } +} \ No newline at end of file