アーキテクチャー演習の課題
課題内容
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を委譲してクライアントの機能を追加しています
上の図はJUDE/Communityを用いて描かれています。