アーキテクチャー演習の課題
課題内容
 JAVAを用いてチャットを行うプログラム書け!
(keyword : HORB JAVA チャット)  
目次
 またもや時間が無い!
 今度は就職活動とかぶっている。
 取りあえず、あと2日しかない。 どうする私!
 まだまだ1週間以上あるようです。 そしてiMAPを使う課題なようです。
 HORBはいらなくなりました。
 ○HORBとは!
 ○ためしに動かしてみる
 ○2人でチャットするアプリを作成する
 ○複数人でメッセージを交換できるようにする
 ○
 ○実際に動かしてみる 
 ○提出案件
 ○感想        
 ○
 リファレンスは私の頭の中とJAVAドク
 (今の所)
HORBとは!
 
 ○HORBとは!
  (この説明は今回私が使用する機能について書かれて
   いるのであってHORB全般について書いているの
   ではありません)
  HORBは自律分散環境のためのライブラリーです。
  自律分散環境のライブラリーであるHORBを持ちいると
  何が出来るのでしょうか?
  
  ネットワークを”あまり”意識することなく複数のコンピュータ間で
  の通信を行うプログラムを書くことが出来ます。
  
  
  HORBサーバーが、通信部分のややこしいところを解決してくれるのです。
  よりHORBについて詳しく知りたい方は
  HORB日本語のページ
  を読むとよいでしょう。
  
  
サーバーを起動する
 
 
  
(HORBのAPIリファレンスに目を通しておくこと)
 
 HORBサーバー立ち上げるには、コマンドライン上から行う方法と
 プログラム上で行う方法があります。 
 
 今回はプログラムかHORBサーバーを起動する方法を説明します
 
 
 HORBServerクラスを持ちいることで実現できます
例
import horn.orb.*;
class  ExeHORBServer
 {
 public static void main(String args[])
 {
  HORBServer hs = new HORBServer(9111);
 }
 }
 9111は開きたいポート番号です
サーバーにオブジェクトを登録する
@ITの中のHORBと遊ぼう(4)参考になります
生成モデルと接続モデルについて
 今私はチャットを行うプログラム書いているわけで
 すが、まずチャットをする人とチャットソフトの
 流れを大まかに説明します(これは今私が考えている
 システムであって一般的なチャットではないです。)
 チャットをするプレイヤー ミラージは
 ソフトを起動する。
 ↓
 HORBサーバーが立ち上がる
 ↓
 友人のアドレスを指定する
 ↓
 友人のHORBサーバーとつながる
 ↓
 友人のHORBサーバーとつながっている人とつながる
 ↓
 友人どうしでメッセージが送ることが出来るようなる。
 
 
上のようなシステムにすると
 繋ぐ(クライアント)部分と繋がれる(サーバー)部分の
 部分両をもつことが分ります。
 
  よしP2Pでチャットができるぞっと!
  ..
  と
    ..
  この瞬間読者の方々は生成モデルと接続モデルについて
 知る必要があります。
 
  詳しくは
@ITの中のHORBと遊ぼう(4)
を読んでいただくとして、
 
 
 生成モデルも接続モデルも相手サーバーと繋いだときの
 サーバーの対応のしかたについてのモデルです。
 
 クライアントが生成モデルでProxyオブジェクトを作成すると 
 相手のサーバーにSkeltonオブジェクトが生成しクライアントに対応します。
 生成モデルは新たに相手サーバーにオブジェクトを作成するのです。
 
 クライアントが接続モデルで名前を指定してProxyオブジェクトを
 生成すると相手サーバーの特定の名前のSkeltonと対応します。
 スケルトンはすでに生成されている必要があります。
 接続モデルは相手サーバーの特定のオブジェクトにつながります。
 
 以上を踏まえて 読者が考えて欲しいのは
 サーバーAがサーバーBのオブジェクトとやり取りしたデーターを
 サーバーCがサーバーBから読み取りたいときは
 生成モデルを持ついるのか それとも 接続モデルを持ついるのか
 ということです。
 
 答えは簡単ですね! 接続モデルを用いると簡単にてできそうだ!です.
 
 
 接続モデルで接続されるオブジェクトの設定方法
 
 import horn.orb.*;
   class  ExeHORBServer
    {
    public static void main(String args[])
    {
     HORBServer hs = new HORBServer(9111);
     HORBServer.registerObject("オブジェクトのクラスの名前",オフジェク,特定の名前);
    }
    }
 
  HORBServer.registerObjectをもちいれば、接続モデル用にオブジェクト
  を生成しておくことが出来ます。
 
  ProxyとSkeltonについて
  順番からいくと、本当はProxyとSkeltonについて始めに説明しなくては
  ならないのですが、 今まで割合してきました。
  説明します。
  
  HORBサーバーではコンピュータ同士がデータを送信し合うときどのように
  行われているのでしょうか?
  
  
  クライアントはProxyを生成します。  
  ↓
  サーバーは対応するSkeltonを用意します。
  ↓
  クライアントがProxyを操作すると
  ↓
  サーバーが対応するSkeltonを操作します
  
  
  と言った順序で行われています。
  
  
  つまりHORBサーバーは上のようにProxyとSkeltonを持ちいて
  データの受け渡しをしているのです。
  
  
  
  
  ProxyとSkeltonの作り方
  
  http://horb.a02.aist.go.jp/horb-j/doc/guide2.0/guide.htm
  を読むとよいでしょう。
  
  データーのやり取りを行う
  http://horb.a02.aist.go.jp/horb-j/doc/guide2.0/guide.htm
  を読むとよいでしょう。
2人りでチャットを行う
2人りでチャットまで完成(中継経過)ソース
繋がる部分は↓な感じ UML等 まだ書き方が解かっていません。
 OwnerSがサーバーの機能を有しています
OwnerはOwnerSを委譲してクライアントの機能を追加しています
OwnerSがサーバーの機能を有しています
OwnerはOwnerSを委譲してクライアントの機能を追加しています
上の図はJUDE/Communityを用いて描かれています。