You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
Multimedia
>
Graphics
>
Capture
>
WhiteTable
>
討論區
>
公開討論
>
アーキテクチャの変更/通信プロトコルについて
WhiteTable
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
檔案下載
發布列表
Stats
原始碼
儲存庫列表
CVS
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
溝通
討論區列表
general (8)
幫助論壇 (1)
公開討論 (3)
新聞
討論區:
公開討論
(Thread #3661)
Return to Thread list
RSS
アーキテクチャの変更/通信プロトコルについて (2003-11-01 13:45 by
yqt00402
#6444)
Create ticket
ずっと触っていませんでしたが、心を入れ替えて開発を再開します。で、心を入れ替えたついでにアーキテクチャも大幅に変更します。
今まではサーブレットのプロセス中ですべての処理を行っていましたが、これからは機能ごとにプロセスを分割します。各プロセス間はTCPで通信し、複数のノードに分散配置することができるようにします。
モジュールは3種類に分けます。
・サーブレットモジュール
・番組DBモジュール
・予約管理モジュール
サーブレットモジュールは、番組表の表示や全体の予約管理などを行います。
番組DBモジュールは、サーブレットモジュールからの要求に応じて番組情報を返します。インターネットから情報を取得し、内部DBにキャッシュしておきます。
予約管理モジュールは、実際に録画するアプリケーション/ハードウェアの種類ごとに開発し、運用時には1ノードごとに実行されます。
基本的には既存のコードを流用して書くモジュールを作成しますが、各モジュール間の通信プロトコルを決定する必要があります。逆にこのプロトコルさえ確定してしまえば、java / servletにとらわれないで開発することが可能になります。DBを使わない簡易版の番組DBモジュールなどを作っておくと、ユーザーにとっても敷居が低くなるでしょうし・・・
そこで、まずはこの通信プロトコルについて考えていきたいと思います。
通信プロトコルについての素案 (2003-11-01 14:54 by
yqt00402
#6445)
Create ticket
モジュール間通信には主に4種類のメッセージがありえます。
1 コマンド
2 番組情報
3 予約情報
4 その他(コマンドの戻り値としての文字列)
このうち、2と3については複数のデータが一つのセットとして通信されます。
技術的には、2つの視点から以下の4つが妥当と考えられます。
1 オブジェクト通信
1 CORBA
2 RMI
2 XML通信
1 非同期(SOAP)
2 同期(TCPソケット通信)
オブジェクト通信だと、野球延長などへの対応がやり易くなりますが、ネットワーク内での相互依存性が高くなります。リスクと敷居がかなり高いでしょう。
使い方を考えると同期通信で十分だと思いますが、知見のある方が参加していただけるなら、SOAPもアリだと思います。
個人的にはTCPソケット通信でXMLを送るのが無難だと考えています。
最後に、メッセージXML(あるいはオブジェクト)の構造については、
番組情報についてはIEPGを拡張してXML化したものを考えています。
- 例 -
<PROGRAM>
<id>1244124</id> <!-- DB用 -->
<version>1</version>
<station>フジテレビ</station>
<program-title>ギルガメ</program-title>
<program-subtitle>・・・</program-subtitle>
<year>2003</year>
<month>11</month>
<date>02</date>
<start>04:23</start>
<end>04:53</end>
</PROGRAM>
予約情報についてはWhiteTableを使わずに予約した場合も考えて2通りを許します。
WhiteTableを使わなかった場合は、開始時間、終了時間を明示します。
- 例 -
<RESERVE>
<reserve-module>localhost</reserve-module> <!-- 予約管理モジュール識別用 -->
<station>フジテレビ</station>
<reserve-name>ギルガメ</reserve-name>
<start>
<year>2003</year>
<month>11</month>
<date>02</date>
<hour>04</hour>
<min>23</min>
</start>
<end>
<year>2003</year>
<month>11</month>
<date>02</date>
<hour>04</hour>
<min>53</min>
</end>
<profile>標準画質</profile>
<note>毎週火曜</note> <!-- 参考情報です -->
</RESERVE>
WhiteTableを使った場合は、予約する番組情報を明示します。
- 例 -
<RESERVE>
<reserve-module>localhost</reserve-module> <!-- 予約管理モジュール識別用 -->
<station>フジテレビ</station>
<reserve-name>ギルガメ</reserve-name>
<programs>
<program>1244124</program> <!-- 番組情報のID -->
</programs>
<profile>標準画質</profile>
</RESERVE>
コマンドについては、こんな感じ
- 例 -
<COMMAND>
<NAME>SELECT PROGRAMS</NAME>
<PARAMS>
<PARAM name="station">NHK総合</PARAM>
<PARAM name="start">2003/12/31 20:00</PARAM>
<PARAM name="end">2004/01/01 06:00</PARAM>
</PARAMS>
</COMMAND>
戻り値については、コマンドに応じて構成を変えます。
SOAPの場合はコマンドとの対応関係が必要になってきます。
- 例 -
<RETURN>
<COMMAND>SELECT PROGRAMS</COMMAND>
<PROGRAMS>
<!-- 上記のPROGRAM要素が複数入る -->
<PROGRAM>
・
・
・
</PROGRAM>
</RETURN>
ネットから取得した番組情報を元に予約を行うという性格上、"繰り返し"録画は考えていません。このあたりを含めて異議や要望があればレスをつけていただければと思います。
回覆:
#6444