changeset 13:8336f55a92e7

update chapter MessagePack
author riono <e165729@ie.u-ryukyu.ac.jp>
date Tue, 04 May 2021 18:35:43 +0900
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
Binary file Paper/riono-sigos.pdf has changed
--- 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