kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

.NETリモーティング(IPC版)データ

(続きです)

クライアントとサーバ間でやり取りするデータクラスは、次のように記述しました。MarshalByRefObjectクラスを継承して作成します。Callメソッドは、クライアントから呼ばれます。Callメソッドの内部では、callEventフィールドを経由して、サーバへイベントを発生させます。

    public class MyMessage : MarshalByRefObject
    {
        // イベントで使用するデリゲート
        public delegate MyResponse CallDelegate(MyRequest myRequest);

        // イベント
        public event CallDelegate callEvent;

        /// <summary>
        /// 通信処理
        /// </summary>
        /// <param name="request">リクエスト</param>
        /// <returns>レスポンス</returns>
        public MyResponse Call(MyRequest request)
        {
            return callEvent(request);
        }
    }

次は、クライアントからのリクエストデータを表すクラスです。シリアライズしておく必要がありました。

    [Serializable]
    public class MyRequest
    {
        public string data;
    }

次は、サーバからのレスポンスデータを表すクラスです。シリアライズしておく必要がありました。

    [Serializable]
    public class MyResponse
    {
        public string data;
    }