SyncData クラスを使って同期するデータをシリアライズ・デシリアライズする

Diarkis C# Client では、クライアント同士で同期するためのクライアント・データをシリアライズ・デシリアライズするクラスとして SyncData クラスを用意しています。

Overview

SyncData クラスでは、 Dictionary<string, object> をクライアントのプロパティ・データとして扱い、ネットワークを使って同期するためのシリアライズとデシリアライズの機能を提供しています。

Note

SyncData はあくまで実装の簡易化を目的とした便利コンポーネントです。もし開発するアプリケーションのパフォーマンスや送受信されるデータのサイズなどを細かく調整する必要がある場合は、このクラスを使わないこともお勧めいたします。

データ・プロパティを代入する

以下のコード例では、シリアライズするためのデータを SyncData クラスのインスタンスに代入する方法を示しています:

Dictionary<string, object> props = new Dictionary<string, object>();

props.Add("x", (long)1024);
props.Add("y", (long)344);
props.Add("velocity", 4);
props.Add("dataType", 1);

Diarkis.Lib.SyncData sd = new Diarkis.Lib.SyncData();

// This is how we set data properties
sd.Properties = props;

シリアライズする

以下のコード例では、代入されたデータ・プロパティをシリアライズする方法を示しています:

Dictionary<string, object> props = new Dictionary<string, object>();

props.Add("x", (long)1024);
props.Add("y", (long)344);
props.Add("velocity", 4);
props.Add("dataType", 1);

Diarkis.Lib.SyncData sd = new Diarkis.Lib.SyncData();

// This is how we set data properties
sd.Properties = props;

sd.Serialize();

// This is the serialized byte array to be synchronized
byte[] serialized = sd.Serialized;

デシリアライズする

以下のコード例は、同期されたバイト配列をデシリアライズしてデータ・プロパティに変換する方法を示しています。

Diarkis.Lib.SyncData sd = new Diarkis.Lib.SyncData();

sd.Deserialize(synchronizedBytes);

// This is the deserialized properties
Dictionary<string, object> props = sd.Properties;

long x = props.Get("x");
long y = props.Get("y");
int velocity = props.Get("velocity");
int dataType = props.Get("dataType");