尾﨑研究室:C#

C#

C#は.NET環境のプログラム言語です。アイこさんやKinectのソフト開発などで使っています。

C# Remoting

2015-04-02 C#での分散コンピューティング環境C# Remoting(今はあまり使われないとか書かれていますが(^^;)を使ってみました。参考にしたのはここです。Remotingの開発では下記の3つのプロジェクト(Visual Studioでのプロジェクト)を作成します。

 

・受け渡しするオブジェクトを記述するクラスライブラリプロジェクト

・サーバのプログラムを記述するコンソールアプリケーションプロジェクト

・クライアントのプログラムを記述するコンソールアプリケーションプロジェクト

 

です。これらを1つのソリューションとして開発します。

 参考の例では受け渡しするオブジェクトであるCustomerを受け取るためのインタフェースとしてICustManagerを定義し,getCustメソッドでCustomerオブジェクトを取得するようにしています。

 サーバではこのインタフェースICustManagerをCustomerManagerとして実装しています。またMain関数内でCustomerManagerをRemotingServerというURLとして公開しています。

 クライアントではリモートのCustomerManagerにアクセスするプロキシとしてICustManager mgrを定義し,このプロキシmgrを通してサーバにアクセスできるようActivator.GetObjectでサーバのURLを指定します。

 

このやり方ではmgrを通してはリモートPCにアクセスできるが,getCustで取得したCustomerオブジェクトはリモートPCにはアクセスできず,ローカルPCにアクセスしてしまう。mgrはプロキシとなっているが,取得したCustomerオブジェクトがプロキシとなっていないためではないだろうか?

 これを解決するため,mgrを通してCustomerオブジェクトのメソッドやフィールドにアクセスできるようなインタフェースをICustManagerにつける必要があると思われる。