- - PR -
C#でクラスメソッドもシリアルライズできないの?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-10-27 11:52
【やりたい事】
クラスのインスタンスをシリアライズしてソケット通信でリモートに送りつけ、 リモート側でデシリアライズしてそのクラスのメソッドを実行する 具体的なイメージを示すと以下のようになります ・インターフェースクラス(IF_Class)を定義します インタフェースにはパブリックなメソッド(run)を定義します ・拠点AでのPC上でIF_Classを継承するクラス(IMP_Class)のインスタンスを生成します IMP_Classにはメソッド(run)としてHelloWorldを表示する機能を実装します ・拠点Aから拠点BへIMP_Classのインスタンスをシリアライズしたデータをソケット通信で送ります ・拠点Bではソケット通信で受信されたシリアライズされたデータをIF_Classを継承 したクラスオブジェクトとしてデシリアライズしてインスタンスに復元します ・復元したインスタンスのメソッド(run)を呼び出してHelloWorldを表示させる Javaではこのようなことが出来たと記憶してますが.NETの世界では無理なのでしょうか? ネットで探してみても、XmlSerializer等、クラスのプロパティをシリアライス/デシリアライズする方法は あってもメソッドを含めたシリアライズする方法を説明したような情報がありません。 どなたかご存知の方がおられましたらご教授ください。また、参考になるようはサイトがあればご照会ください | ||||
|
投稿日時: 2007-10-27 12:29
???
Javaには詳しくないのですが、モバイルエージェントのことでしょうか? .NETの標準的なランタイムにはそのような仕組みは用意されていません。行いたければフレームワークを自作することになると思います。 | ||||
|
投稿日時: 2007-10-27 18:26
こんばんは。
スーパーマンさんのやりたいことは、 「ネットワーク上のPCへ実行可能なプログラムコードを送りつけて実行させたい」ってことですか? (Javaアプレットのような)サンドボックスセキュリティモデルみたいのがないと怖いですね。 Javaでは出来るんですか?なんて技術でしょう? リモートオブジェクトのメソッドを呼び出しすることくらいなら、 古くから分散アプリケーション技術(CORBAやDCOMなど)がありますし Java(RMIやApache SOAP)でも.NET(.NET RemotingやWCF )でもできるでしょうけれども!? | ||||
|
投稿日時: 2007-10-27 21:26
受け取り側がクラスの設計図を持っていたら、クラスのメソッドはインスタンスに依存しませんから、………って書いて、もしや、デリゲート先を知りた(実行したい)いってこと?
| ||||
|
投稿日時: 2007-10-27 23:05
甕星さん、Tdnr_Symさん、Jittaさん、レスありがとうございます。
私がやりたいことは甕星さんが言われた通り「モバイルエージェント」そのものです。 甕星さん曰く「フレームワークを自作」するとすると稚拙ですがこんな感じで実現する しかないのでしょうか....? 【インタフェース】 abstract public class Agent { abstract public void run(); } このクラスはローカル、リモート共に必要 【ローカル側の処理】 public class Class1 : Agent { public override void run() { MessageBox.Show("Hello World!!", "私はエージェント"); } } モバイルエージェントとなるこのクラスをクラスライブラリ(ClassLibrary.dll)にした上で dllのファイル自体をリモートに送る 【リモート側の処理】 ソケット通信等でClassLibrary.dllの実態を受け取り、一旦dllのファイルにしておく 以下のステップでDLLからモバイルエージェントとなるこのクラスを生成して実行する Agent obj = (Agent)GetInstance("ClassLibrary.dll", "Class1"); obj.run(); しかし、これだとリモートでメソッド実行は出来たとしても ローカルでインスタンス化したオブジェクトが持つメンバ変数がリモートでのオブジェクトには 復元できないですね.... | ||||
|
投稿日時: 2007-10-28 18:16
Microsoft .NET Framework SDK チュートリアル
http://ja.gotdotnet.com/quickstart/howto/ のシリアル化 にサンプルがあります インストールドキュメント(Visual Studio .NET 2003) だと下記操作で表示されます 検索 Serialize サンプル フィルタ条件 VisualC# ドキュメント Javaでは下記クラスを使用します java.io.ObjectInputStream java.io.ObjectOutputStream |
1