
分散オブジェクト環境を学ぶ
連載:HORBと遊ぼう(4)
HORBでサーバアプリケーションを作ろう
萩本順三
HORB Openマネージャ
株式会社豆蔵
2001/2/18
はじめに |
1月末に、HORB BOFセミナー「SOAPって?」が開催され、マイクロソフト(株)の萩原さん、野村さん、熊谷さんにSOAPおよび.NETについて講演をしていただきました。私もUMLを使ったHORBアーキテクチャというタイトルで話しました。2月16日には、平野博士とデジタルハリウッドの安田さんによるHORB勉強会が開催されます。そして、3月2日はHORBの年に1度の大イベント「HORBシンポジウム2001」が開催されます。皆さん、このページでしっかりと楽しんだ後は、シンポジウムに参加してHORBの凄さを実感してください。申込みはこちらです。
今回は、接続モデルについて説明していきます。いままでおもちゃ感覚でHORBを使ってきましたが、本号から徐々にHORBのプロ向けの機能について説明していきたいと思います。おっと、でもタイトルどおり遊び感覚は忘れてはいませんよ、できるだけ図を入れた解説で進めますので、じっくりとお付き合いください。
今回のソースはここ(examples4.zip)からダウンロードしてください。
(1)生成モデルって何だ? |
第2回の「HORBによるリモートオブジェクトのインスタンス管理」で紹介したソースリスト1とリスト2、およびその実行イメージ図1を思い出してください。いままで解説してきたHORBのサンプルソースは、horbcコンパイラによって生成された代理オブジェクト(Proxyクラス)のインスタンスを生成(new)すると、サーバ側に自動的にリモートクラスのインスタンスが生成(new)されるものでしたね。HORBのユーザーは、代理オブジェクトをサーバ側の本物のオブジェクト(リモートオブジェクト)のつもりで使えばいいのです。この手順は第2回の「連続写真(メッセージをやりとりするまで)」で解説しましたので、もうお分かりですよね。
![]() |
図1 生成モデル |
001:public class Test2{ |
リスト1 Test2.java
|
001:public class RemoteInstanceTest{ |
リスト2 RemoteInstanceTest.java
|
このプログラミングインターフェイスの特徴的な点は、ネットワークを隔てたところにあるオブジェクトをリモート操作によって生成できることです。この機能は、通常のJavaのクラスをnew演算子によりメモリ中に生成するという手続きにできるだけ似せているのです。これによってJava言語とのシームレス性が高まり、「HORBはなんて簡単なんだ!」と利用者が驚くことを期待しているわけです。このようにリモートクラスをダイナミックに生成することをHORBでは、「生成モデル」と呼びます。
これはオリジナル開発者の平野さんの斬新的な発明といえるものです。まさにコロンブスの卵ですね。シンプルな形で利用者が望むものを提供しているのです。私もこの斬新さに思いっきりHORBのファンになってしまいました。
(2)接続モデルって何だ?![]() |
Index | |
![]() |
(1) 生成モデルって何だ? |
(2) 接続モデルって何だ? HORBサーバの起動 Clientの起動 実行結果 代理オブジェクトの引数 |
|
(3)サーバアプリケーションを作る コンパイル Serverの起動 Clientの起動 実行結果 |
|
![]() |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
|
|
|
![]() |