サーバプッシュ技術サーベイ及びHTMLブラウザでの双方向

富士通株式会社
ソフトウェア事業本部
ソフトウェア 事業本部
組込み
組込 み ソフトウェアテクノロジ事業部
ソフトウェアテクノロジ 事業部
技術情報
サーバプッシュ技術
サーバプッシュ 技術サーベイ
技術 サーベイ及
サーベイ 及 び HTMLブラウザ
HTML ブラウザでの
ブラウザ での双方向通信
での 双方向通信について
双方向通信 について
HTMLブラウザを組込み機器のインタラクティブなUIとして活用する基盤技術
2008/1/9
HTMLブラウザを組 込 み 機 器 の フロントエンドとして使 用 するために 必 要 な技 術 として 、
「HTMLブラウザにおける双 方 向 通 信 」について述 べる。
まず、その 導 入 としてサーバプッシュ技 術 についてまとめる。なぜなら、双 方 向 通 信 を導
入 する要 件 は、情 報 の サーバプッシュであり、その技 術 そのものが双 方 向 通 信 を実 現
す る に あ た っ て の キ ーと見 な せ る か ら で あ る 。
サ ー バ プ ッ シ ュ に つ い て 説 明 し た 後 、 HTML ブ ラ ウ ザ に お け る 双 方 向 通 信 に つ い て 述
べる。
サーバプッシュ技術
サーバプッシュ 技術サーベイ
技術 サーベイ
あらためて現 状 のウェブ技 術 関 連 におけるサーバプッシュ技 術 について概 観 する。
ウェブにおけるサーバプッシュ技 術 がいわれて久 しい。しかし、ウェブのサーバプッシュ
技 術 は普 及 している状 態 とはいえない。メッセンジャやIPフォンなどの アプリケーションで
は サ ー バ プ ッ シ ュ 型 の 技 術 が 使 わ れ て い る が HTTP ベ ー ス の ア プ リ ケ ー シ ョ ン で は 広 く
使 われていない。
色 々な理 由 が 考 えられるが、プロトコルの問 題 、セキュリティの問 題 のふたつが大 きな理
由 と考 えられる。
HTTP プロトコルは、リクエスト・レスポンスプロトコルである。「情 報 の 取 得 には必 ずクライ
アント側 からのリクエストが必 要 」である。GET/P OSTなどクライアント側 の HTMLブラウザ
か ら の HTTP 要 求 を HTTP サ ー バ が 受 け 取 り 、 そ れ に 対 し て HTTP サ ー バ が HTTP 応 答
を返 すという繰 り返 しからなっている。
つまり、サーバ側 から一 方 的 にブラウザ側 に情 報 を通 知 できない。サーバ側 からイベン
ト的 になんのクライアント側 からのリクエストもなく一 方 的 にコネクションを確 立 したり、デ
ータを送 りつけてくることはできない。
H T T P を 使 っ た サ ー バ プ ッ シ ュ の 難 し さ は こ の プ ロ ト コ ル の 特 性 か ら 生 じ て い る 。 H T TP で
取 り扱 うには、サーバプッシュ技 術 はそもそも向 かない問 題 といえる。また、ソフトウェア
基 盤 の 観 点 からしても、 HTTP をベースに したウェブシステムを支 える様 々 なソフトウェア
(サーバ、プロキシ、ブラウザなど)が当 プロトコルの特 性 に最 適 化 されて作 られてきてい
るため、サーバプッシュをその中 で実 現 しようとしても難 しい。
また、この特 性 とNATのような技 術 の 組 み合 わせによって、ブラウザ側 はグローバルIP を
持 たないクライアントに 徹 する形 のシステムが 大 多 数 となっている。様 々なセキュリティ要
件 によって、多 くの市 販 ルータではサーバとするには別 の設 定 が必 要 な状 態 となってい
る。
しかしながら、現 状 、膨 大 なインストールベースが存 在 している。その既 存 のシステムの
中 でいかに効 率 よくサーバプッシュを実 現 するかが課 題 である。
1
Copyright 2008- Fujitsu Limited All Rights Reserved
H T T P ブ ラ ウ ザ と H T TP サ ー バ し か な く 双 方 間 で HT T P に よ る 一 方 的 な 通 信 の み が 可 能
なその既 存 のシステムの 中 での実 現 を検 討 する。
課 題 を解 決 する手 段 として以 下 の5つの方 法 が挙 げられる。よく知 られている方 法 もあ
れば、あまり知 られていない方 法 もある。
1.Polling:
ポーリング方 式
2.Long poll:
長 時 間 ポーリング方 式
3.Chunked data:
チャンク方 式
4.Embedded Plugin:
埋 め込 みプラグイン方 式
5 . S e r v e r- s e n t D O M e v e n t s :
イベントソース方 式
以 下 ではこれらの5方 式 について説 明 し、得 失 を概 観 する。
説 明 では、HTMLブラウザ・ウェブサーバ・サービスサーバの 3つの オブジェクト間 の シー
ケ ン スで 説 明 を 加 え て いる 。 HTML ブ ラ ウザ ・ ウェブ サ ーバに つい て は 説 明 を し な い 。 サ
ー ビ スサ ーバ と は こ こでは な ん ら かの ネッ トワ ークア プ リケ ー ショ ンサ ービ スを 実 現 し て い
るサーバとしている。特 に、サービスサーバは、要 求 -応 答 の 組 に よるサービス提 供 だ け
で は な く 、 H T M L ブ ラ ウ ザ ・ ウ ェ ブ サ ー バ か ら の ト リガ な し に 、 サ ー ビ ス サ ー バ か ら イ ニ シ エ
ートされるようなイベント的 なデータ送 信 を行 うものとする。
1 . Polling: ポ ー リ ン グ 方 式
インターバルごとに情 報 をブラウザからサーバに
1.a
Meta
tag:
要 求 する。
メ タ タ グ に r e fr e s h イ ン タ ー バ ル を 記 述 し て お き 、 イ ン タ ー バ ル ご と に ペ ー
ジ更 新 。
1.b
Loop and timeout:
ペ ー ジ 内 の J a v a scr i p t で 無 限 ル ー プ 。
タ イ ム ア ウ ト 時 に j a v a sc r i p t タ グ の 評 価 を 行 い 、 評 価 結 果 に 応 じ て H T T P リ ク エ ス ト を 発
行 する。
2
Copyright 2008- Fujitsu Limited All Rights Reserved
イ ン タ ー バ ル ご と に ブ ラ ウ ザ か ら サ ー バ に H T TP 要 求 を 発 行 し そ の 度 に 応 答 す る 仕 組 み
のため、以 下 のような強 み・弱 みがある。
―
―
―
実 装 が単 純 であり、またサーバ側 のアプリの変 更 の必 要 性 が低 い
要 求 の 間 隔 が 長 いとタイ ムラグが 長 くなりリアルタ イム性 が損 なわれる
インターバルがユーザにとってはレイテンシに感 じられる。(上 記 、シーケンス
図 中 、白 い四 角 の部 分 がレイテンシである。
間 隔 を 短 くするとサーバやネットワークの 負 荷 が大 きくなる
クライアントの数 が増 えるとコネクション回 数 が急 激 に増 え、サーバ側 での対 応 が不 可
能 に なるなどスケーラビリティに 問 題 がある。サーバの限 界 が近 くなった場 合 に はクライ
アントからの要 求 のインターバルを長 くすることによって対 応 可 能 数 を増 やすことができ
る。しかしその 場 合 はイベントへの反 応 のレイテンシが増 すの はいうまでもない。したがっ
て、イン ターバルを充 分 に 確 保 できるコンテンツに 向 く。
2 . Long poll: 長 時 間 ポ ー リ ン グ 方 式
通 知 用 のコネクションを確 立 しておき、情 報 通 知 のイベントが発 生 したとき、その通 知
用 の コネクションを用 いて返 却 する。通 知 時 に リクエストが いったん終 息 、再 度 リクエスト
を発 行 する。
3
Copyright 2008- Fujitsu Limited All Rights Reserved
サーバ側 での イベントごとあるいは接 続 のタイムアウトごとに 新 しいコネクションを張 りな
おすことになる。
―
―
サーバ側 でのアーキテクチャの変 更 が大 きい。特 にウェブサーバでの対 応
が必 要 。
イベントが 輻 輳 してきた場 合 、新 しいコネクションを張 ってもすぐに イベント通
知 に 使 用 さ れ 、 実 質 的 に Long
poll に な ら ず、 ネ ッ トワ ーク リ ソ ー ス を消 費 す
る。
—
したが って、単 位 時 間 あたりの イベント数 に 対 しての スケーラビリティが
弱 い。一 般 にクライアントの 数 が増 えるとイベント数 も増 える傾 向 にある。
特 に、クライアントの数 が増 えるほどイベントの数 が急 速 に増 加 するも
のの場 合 、急 激 にレスポンス性 が低 下 することが懸 念 される。したがっ
て 当 方 式 の 場 合 、 Polling 方 式 の よ う に イ ン ター バル を調 整 で き な い た
め、クライアント数 の上 限 が低 いと考 えられる。
3 . Chunked data: チ ャ ン ク 方 式
HTTP/1.0のHTTP接 続 ではHTMLブラウザがリクエストをサーバに送 ると、サーバはレス
ポ ン ス を1 つ 返 す 。ひ とつの コ ネク シ ョン でひ とつの 要 求 と ひ とつの 応 答 を 得 る こ とが で き
る 。 一 方 、 HTTP/1.1 で は 、 様 々 な 方 式 で ひ と つ の コ ネ ク シ ョ ン で 複 数 の 要 求 ・ 複 数 の
応 答 が 可 能 に な っ て い る 。 こ こ で は 特 に chunked デ ー タ に 着 目 す る が 、
T r a n sf e r- E n c o d i n g : c h u n k e d ヘ ッ ダ が つ け ら れ た レ ス ポ ン ス に お い て は 、 レ ス ポ ン ス を 複
数 個 返 すことができる。Chunked
dataチャンク方 式 とは、このchunked形 式 によって、複
数 個 レスポン スを 返 す方 式 を 使 い、 長 時 間 接 続 を 維 持 しなが ら、 レスポ ンス をイベン トご
とに返 すという形 にしたもの。
T r a n sf e r- E n c o d i n g :
c h u n k e d お よ び C o n t e n t - t y p e : m u l t i p a r t / x - m i x e d -r e p l a c e を ヘ ッ
ダに つけ、データをchu nk ed形 式 の かたま りごとに 返 すことに なる。
4
Copyright 2008- Fujitsu Limited All Rights Reserved
ウェブサーバは、サービスサーバから受 け取 ったデータをひとつのコネクションで複 数 の
塊 としてチャンクあるいはマルチパートに 含 めて応 答 する。テキストでもxml エンベロープ
でもよい。
ひとつの応 答 後 も後 続 の応 答 のためにコネクションはそのまま維 持 される。通 知 用 のコ
ネクションを確 立 しておき、情 報 通 知 のイベントが発 生 したとき、その通 知 用 のコネクショ
ンを用 いて返 却 する。
ここまではLong Poll式 と同 様 。ただし、HTTP応 答 としてはそのまま継 続 する。
リクエストは再 発 行 しない。
コ ネ ク シ ョ ン 確 立 の た め に XmlHTTPRequest を 使 用 す る が 、 XmlHTTPRequest は ド メ イ
ンを越 えて(同 一 ホスト・異 なるポートへの接 続 もできない)もは接 続 できないため、通 知
用 のコネクションの維 持 にあたっては、ウェブサーバでの処 理 が必 要 となる。
具 体 的 な応 答 内 容 は以 下 のとおりである。
サーバ側
サーバ 側 からの応答
からの 応答の
応答 の 例
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: multipart/x-mixed-replace;boundary="rn9012"
7e
--rn9012
Content-type: application/xml
<?xml version='1.0'?>
<content>Multipart: First Part of Request 10</content>
--rn9012
5
Copyright 2008- Fujitsu Limited All Rights Reserved
78
Content-type: application/xml
<?xml version='1.0'?>
<content>Multipart: Second Part of Request 10</content>
--rn9012--
0
サ ー バ 側 は 、 HTTP 応 答 時 に 、 Content-Type と し て 、 chunked 、 も し く は 、
application/xml を 用 い る 。 デ ー タ の ひ と か た ま り を chunked 形 式 ま た は
multipart/x-mixed-replaceの形 式 で返 却 する。
H T T P ブ ラ ウ ザ 側 で は , X M L H t t p R e q u e s t #r e s p o n s e T e x t と し て 受 け 取 る 。
HTTPブラウザ側 のXMLHttpRequestの実 装 に 依 存 しており、現 時 点 で、PC用 のブラウ
ザでは、IEは対 応 不 可 、Mozilla,Operaのみが対 応 可 となっている。
responseTextは、一 要 求 に対 するすべての応 答 内 容 を保 持 しているので、新 しい応 答
部 分 は、直 前 の応 答 との差 分 部 分 として認 識 することがアプリ側 で可 能 である。また、
responseTextは読 み込 みのみの プロパティであるので、responseTextが 必 要 以 上 に大
きくなってしま った場 合 に は、いったん接 続 を切 っ て再 接 続 を 行 いresponseTextをアプ
リ側 でリセットする必 要 がある。
4 . Embedded Plugin: 埋 め 込 み プ ラ グ イ ン 方 式
objectタグもしくはembedタグを使 用 しネットワークプロキシ機 能 をもった埋 め込 みプラグ
インを用 いる方 式
ネットワーク通 信 のバックエンドとして埋 め込 みプラグインを用 いる。
プラグインをソケッ
ト通 信 の プロキ シとし て 用 いブラ ウザを直 接 イン タラクティブ なサービスを 実 施 するサー
バ(サービスサーバ)に 接 続 させる。ページに 不 可 視 の プラグインオブジェクトを埋 め込
み、プラグイン はソケットでサービスサーバの サービスの ポートへ接 続 し 、HTMLブラ ウザ
ではない直 接 接 続 のクライアント同 様 に振 る舞 う。
ブ ラ ウ ザ 側 か ら は J a v a s cr i p t を 通 し
て 当 該 プ ラ グ イ ン を 制 御 す る 。 特 に 、 HTTP の 背 万 テ ィ ク ス に 応 じ た処 理 が 必 要 で は な
いの で、シーケンスは省 略 する。
埋 め込 みプ ラグインとし てPC の場 合 Flashを 前 提 としてよいほ どイン ストー ルベースが 広
が っ て お りFlash と ブ ラ ウ ザ の 親 和 性 が 高 く な っ て い る 。Flash を 使 用 す る 場 合 、 AP I と し
て は XMLSocket も し く は socket が 利 用 でき る 。 Flash は 出 来 る 限 り ネッ トワ ーク コネ ク シ ョ
ン を 確 立 す る 役 割 に 留 め 、 プ レ ゼ ン テ ー シ ョ ン 層 ・ ロ ジ ッ ク 層 に つ い て D H TM L に て 対 応
することにより、Flashの利 用 をユーザに悟 られないようにすることが可 能 。
- FlashP layerの セキュリティポリシに よってはユー ザに ダイアログが 提 示 さ れる。(ネットワ
ークに接 続 してよいか?など)
- FlashPlayerがないブラウザもありえる。
6
Copyright 2008- Fujitsu Limited All Rights Reserved
5. ServerServer - sent DOM events: イ ベ ン ト ソ ー ス 方 式
当 方 式 は 、HTML 5と し て提 案 されている規 格 で あり、Opera 9.xでの み利 用 できると言
われている。以 下 の動 作 はOpera 9.25 build8827で確 認 した。
S e rv e r s e n t D O M e v e n t は 、 l o n g p o l l 型 の ア ク セ ス を 可 能 に す る 仕 組 み で あ る 。 ブ ラ ウ
ザ は e v e n t -s o u rc e タ グ の src 属 性 に 書 か れ た リ ソ ー ス に ア ク セ ス す る 。 リ ソ ー ス へ の コ ネ ク
ションが失 われた場 合 、ブラウザは短 時 間 (5秒 以 下 を目 安 )に再 接 続 を実 施 する。
・ C o n t e n t - T y p e と し て 、 a p p l i c a t i o n / x- d o m - e v e n t -s t r e a m
を指 定 する。
・コンテンツは、連 続 したイベントを含 むことができ、以 下 の 形 式 をしている。(厳 密 に は
仕 様 書 を参 照 されたい)
行の繰り返し
行 は、名 前 : 値 \n
の形 式 、または
\nである。
イ ベ ン ト は 連 続 す る 複 数 の 行 か ら な り 、 改 行 (\ n ) の み の 行 ま で で 一 区 切 り で あ る 。 一 区
切 りのイベント中 、名 前 が一 致 する場 合 は、改 行 を含 めて値 が結 合 される。
・サーバ側 からDOM Eventの送 付 が可 能 。
名 前 の 部 分 が 、 E v e n t 、 C l a ss 、 N a m e s p a c e , B u b b l e s 、 C a n c e l a b l e , T a r g e t の 場 合 、 特
定 の振 る舞 いを行 う。
・たとえば、Targetが 指 定 された場 合 、HTMLファイル内 の 特 定 のタグをIDによって示 す
ことができる。
サーバから
サーバ から送
から 送 られてくるイベント
られてくる イベントの
イベント の 例
Event: stock change
data: FUJITSU
data: -2
data: 10
スクリプティングの
スクリプティング の 例
<event-source src="http://127.0.0.1/es.cgi" id="stock">
<script type="text/javascript">
document.getElementById('stock').addEventListener('stock
change',
function () {
var data = event.data.split('\n');
alert(data.join(' '));
}, false);
</script>
サーバ側
サーバ 側 プログラミングの
プログラミング の 例
Webrickによるサンプルサーバ
es.cgiに アクセスするとes. rbが起 動 される。
7
Copyright 2008- Fujitsu Limited All Rights Reserved
srv = WEBrick::HTTPServer.new({:DocumentRoot => '/tmp/',
:BindAddress => '127.0.0.1',
:Port => 8181});
srv.mount('/es.cgi', WEBrick::HTTPServlet::CGIHandler, 'es.rb');
srv.start;
CGIの例 (es.rb)
#!/usr/bin/ruby
sleep 3
print "Content-Type: application/x-dom-event-stream\r\n\r\n"
print "Event: stock change\ndata: FUJITSU\ndata: -2\ndata: 10\n\n"
exit 0
HTML5の
HTML5 の Connectionタグ
Connectionタグ
HTML 5に おいては, C o nnectio nタグに よるネットワーク接 続 が サポートされる見 込 みで
ある。セキュリティ上 の課 題 が存 在 しているので、ローカルエリアネットワークに閉 じるな
ど限 定 的 なサポートにとどまると考 えられるが、特 殊 なプロキシサーバを用 意 することに
よって、 常 時 接 続 型 の D HTMLアプリケーション・サービスを多 数 登 場 させ るだ ろう。
各方式の
各方式 の 得失のまとめ
得失 のまとめ
Embedded Plugin方 式 を除 く方 式 は、DHTML技 術 をコアにしたサーバ側 アプリケーショ
ン と HTML ブ ラ ウ ザ に よ る 対 応 と か ら な っ て い る 。 従 っ て 、 ク ラ イ ア ン ト と し て は 、 ブ ラ ウ ザ
無 依 存 に は なっ て い ないもの の 、 プ ラグ イ ン を 使 用 せ ず HTMLブ ラ ウザ の みに 閉 じた 形
で実 現 できる。
この場 合 、利 点 としては以 下 が挙 げられる。
―
―
―
ブラウザの 中 で完 結 するため,
他 の DHTMLを使 用 したもの と統 合 を実 施 し
やすいJavaアプレットよりも動 作 が軽 い.
C O RB A / R M I と 違 い H T T P 向 け に 設 定 さ れ て い る フ ァ イ ア ウ ォ ー ル を 越 え る こ
と が で き る 。 C O RB A / R M I サ ー バ が 不 要 。
プロトコル上 のオーバヘッドが小 さい
欠 点 としては以 下 が挙 げられる。
―
複 数 のブラウザ互 換 をとるのは難 しい.
ブ ラ ウ ザ 毎 に 非 互 換 性 が あ り そ れ ら を 吸 収 し た J a v a scr i p t ラ イ ブ ラ リ が 多 数 開
発 されているものの 、ブラウザコア部 分 での 非 互 換 があると
そういったライブ
ラ リ で は 吸 収 で き ず コ ア の 修 整 が 必 要 と な る 。 特 に Chunked
data 方 式 に つ
い て は 大 き な ユ ー ザ ベ ー ス を 持 っ て い る ブ ラ ウ ザ(IE: シ ェ ア 90% 以 上 ) で の 非
対 応 ( r e a d ys t a t e == 3 の と き の r e s p o n s e T e x t の 値 が n u l l ) で あ る た め に こ れ を 前
提 と す る こ と は P C の 世 界 で は 難 し い 。 e v e n t -s o u r c e に つ い て は サ ー バ と の ネ
ゴシエーション・コネクション継 続 の仕 様 が不 明 であり安 定 して利 用 できると
は 現 状 考 え に く い 。 H T M L 5 に お け る e v e n t -s o u rc e タ グ の サ ポ ー ト は 現 状
―
Operaの みとなっ ており 、 これもブラウザ依 存 の 現 状 である。
スケーラビリティを確 保 できない。
8
Copyright 2008- Fujitsu Limited All Rights Reserved
プッシュ技 術 の 実 装 に よってはたかだ か100個 程 度 の
―
クライアントの 対 応 で
サーバがサービスレベルを維 持 できなくなる。
プログラミングが煩 雑 となる。
2本 のコネクションを使 って処 理 を行 うことになるため、クライアント側 ・サーバ
側 と も プ ロ グ ラ ミ ン グ に あた っ て は コ ネ ク シ ョ ン 維 持 の ハ ン ド リ ン グ 、 デ ー タ の 送
―
受 信 時 において注 意 が必 要 となる。
―
されていない。
ウェブサーバの設 計 の問 題 :
ウェブサーバは一 般 に長 い寿 命 を持 つコネクションに対 応 できるように設 計
プロキシバッファリング:
ある種 のプロキシは通 信 をバッファリングしてしまうため
イベント発 生 ごとの
プッシュにならない。
プラグイン不 要
ブラウザ依 存 性
スケーラビリティ
プログラミング
の容 易 さ
ポ ー リ ン
○
○依 存 性 無
×
○
○
○依 存 性 無
△イベントごとに
×
グ方 式
長 時 間
再 接 続 が発 生
ポ ー リ ン
グ方 式
チ ャ ン ク
○
×( M o z i l l a の み )
△
×
×(プラグイン
○依 存 性 無
○ (HTTP サ ー バ
×
方式
埋
め 込
みプラグ
を使 用 せず独 自
要)
サーバを利 用 )
イン方 式
イ ベ ン ト
○
×( O p e r a の み )
△
○
ソース方
式
現状の
現状 の HTMLブラウザ
HTML ブラウザにおける
ブラウザ における双方向通信
における 双方向通信について
双方向通信 について
先 の 節 に お い て 、 サ ーバプ ッ シ ュの 方 法 を 概 観 し た が 、 これ ら の HTML4 を サ ポ ート し た
現 状 のHTMLブラウザにおける双 方 向 通 信 の観 点 で整 理 すると以 下 の2方 式 となる。
A.
上 り 下 り の 2接 続 を 使 っ て プ ロ キ シ サ ー バ に 接 続 し 擬 似 的 に 双 方 向 通 信 を 構
成 する当 該 プロキ シサー バを擬 似 コネクションプロ キシサーバと呼 ぶとする
―
P o l l i n g , L o n g P o l l , C h u n k e d d a t a , s e v e r- s e n t D O M e v e n t s
各 方 式 がこ
れ に あ たる
これらの各 方 式 をすべて考 慮 し議 論 するのは煩 雑 であるので、ここでは、Chunked data
お よ びs e v e r- s e n t D O M e v e n t s に よ っ て 実 現 可 能 な 方 法 で あ る 、 継 続 的 に 接 続 し た 上
り 下 り の 2接 続 を 使 う 方 式 を A と す る 。
よ り詳 細 化 すると 、 A 方 式 と は 、POSTに よ り 情 報 を 送 信 する 上 りと 、 あら か じめ 設 定 して
あるコネクションを通 じてひとつのエンベロープに て一 塊 の値 を返 却 する下 りの2つのコ
ネクションに よってひとつの転 送 路 をエミュレートす る方 式 をいうとする 。
長 所 を述 べると繰 り返 しになるが、HTTPブラウザのみで実 現 可 能 であることに尽 きる。
一 方 、 ネット ワークリ ソー スを それな りに 使 用 する の で、そ もそも プロ キシが どれぐ らいスケ
9
Copyright 2008- Fujitsu Limited All Rights Reserved
ールするかは実 装 とその サービスの 特 性 に 依 存 する。ま た、コネクションがプロキシ
経
由
となる ためネ ットワ ークの 本 来 の エン ドポ イ ントが サ ービス サーバ 側 か ら見 え ないため 、 大
規
模
なネットワークでは、セキュリティ上
られるサービスもありえるだろう。
好
ま しくない状 態 として、クライアントの接 続 が切
B. 埋 め込 みプラグ インを ネットワークプロキシとして 使 用 する。
―
Embedded Plugin方 式 が これにあたる
(およびHTML5 Connection方 式 がこれにあたる)
現 状 、双 方 向 通 信 実 現 にあたっての問 題 のポイントは以 下 の2つである。
―
ポータビリティ
—
A方 式 の場 合
ポイント:ブラウザの違 い:
・ chunked
data 方 式 の 場 合 、 チ ャ ン ク 受 信 ご と に onreadystatechange
が 呼 び 出 さ れ 、 XMLHttpRequest の readystate==3 も し く は 4 の 時 の
responseTextの値 が設 定 されるかどうか
・ イ ベ ン ト ソ ー ス 方 式 の 場 合 、 ブ ラ ウ ザ が e v e n t -s o u rc e が 使 用 で き る か
どうか
・ XMLHttpRequest の コ ネ ク シ ョ ン を ア プ リ の コ ン テ キ ス ト に 合 わ せ て維
持 し続 ける必 要 がある。
—
・イベントソース方 式 のコネクション維 持 ロジックが不 明 である。
B方 式 の場 合 :
Flashを使 う場 合 と使 わない場 合 があると考 えられる。
ポ イ ン ト : FlashPlayer の
搭載有
無 ・ FlashP layer の バ ー ジ ョ ン が 目 的 と
合 うかどうかなどが問 題 となろう。
ポイント:ブラウザごとに異 なるAPI
・独 自 に埋 め込 みプラグインを開 発 する場 合 ,
プラグインへのサイン・
ブ ラ ウ ザ ご と 埋 め 込 み プ ラ グ イ ン の 開 発 ( 様 々 な ブ ラ ウ ザ の J a v a scr i p t と
の インタラクションを開 発 しなければな らない)
―
スケーラビリティ
—
—
A方 式 の 場 合 、擬 似 コネクションプロキシサーバの 性 能 ・
荷分
散
品
質 お よ び負
が課 題 となる。
B方 式 の 場 合 は、サービスサーバのスケーラビリティがそのまま制
件 に なるの でここでは議 論 しない 。
約条
HTMLブラウザ
HTMLブラウザと
ブラウザ と サービスサーバ間
サービスサーバ 間 の 双方向通信を
双方向通信 を サポートした
サポート したアプリケーショ
した アプリケーショ
ンモデル
以 下 の 図 は 、 HTML ブ ラウ ザ と サービ スサ ーバ 間 の 双 方 向 通 信 を ベ ー スと し た ア プ リケ
ーション
モ
デ ル を 記 述 し た も の で ある 。
アプリケーションのビジネスロジックはサービスサーバ側 で実 装 されている 。
一 方 、プレゼンテーション層 についてはHTMLブラウザにまかされている。
このふたつの大 きな
このふたつを
繋
箱 両
が
方 とも組 み込 み機 器 に 内
蔵
されていることに注 意 されたい。
ぐプロトコルは当 該 アプリケーションが直 接 サポートすることも可 能 である
し、擬 似 コネクションプロ キシサーバで変 換 するこ とも可 能 である。
10
Copyright 2008- Fujitsu Limited All Rights Reserved
模
式図
たとえば、 IRC の よ うに 既 存 の 充 分 に
品
質 の と られ たサーバ (サービスサ ー バ)が 存 在 し
て い る 場 合 、 擬 似 コ ネ ク シ ョ ン プ ロ キ シ サ ー バ で デ ー タ 変 換 (POST デ ー タ か ら IRC の 命
令
への変 換 およびその
逆
)を行 うのが適 切 だろう。
レスポン スの スケー ラビリ ティが 必 要 で、サービス サーバの クラスタリングが 効 くよ うな場 合
でかつサービスサーバが自 前 の場 合 は変 換 処 理 はサービスサーバ側 で実 施 という
択
選
もありえる。
様 々なパターンが 考 えられるが 、効 率 的 に 開 発 を
進
進
めようとするならば、HTMLブラウザ
とサービスサーバ間 で互 いにRPCをしながら処 理 を
める基 盤 を用 意 する必 要 がある。
HTMLブラウザ
HTMLブラウザの
ブラウザ の 双方向通信の
双方向通信 の 具体的な
具体的 な 方式提案
以 下 、HTMLブラウザの双 方 向 通 信 についてより具 体 的 な3方 式 を挙 げる。
組 込 み機 器 内 に内
蔵
の ウ ェ ブ サ ー バ ( H T TP サ ー バ ) お よ び サ ー ビ ス サ ー バ を 用 意 す る
と す る 。 ブ ラ ウ ザ と ウ ェ ブ サ ー バ 、 ブ ラ ウ ザ と サ ービ ス サ ー バ 間 はs o c k e t を 用 い る 。
A 方式:
方式 : 擬似コネクションプロキシサーバ
擬似 コネクションプロキシサーバ
双 方 向 コネクションを実 現 する通 信 ミドルウェアとして、擬 似 コネクションプロキシサーバ
機 能 を持 つ双 方 向 コネクション
当
モ
モ
ジュールをウェブ サーバ内 に
置
く。
ジ ュ ー ル に つ い て は 、 ブ ラ ウ ザ と ま っ た く独 立 し て 開 発 で き る の が 強 み 。 ただ し 、 ネ ッ
トワークのエ
ンドポイントが サービスサーバ側 から見 えないというの は組 込 みでも変 わら
ない。双 方 向 コネクション
モ
ジュールが複 数 のコネクションを保 持 することになるが 、その
ネ ッ ト ワ ー ク ハ ン ド リ ン グ方 式 が 性 能 と ス ケ ー ラ ビ リ テ ィ に 大 き く
影響
する。
・当 方 式 の場 合 、上 りをHTTP Request Pipingによって継 続 的 に送 り出 す方 法 が考 えら
れ る が 、 現 状 J a v a scr i p t か ら そ れ を 制 御 で き る 方 法 が 用 意 さ れ て い な い 。
・擬 似 コネクションを実 現 するウェブサーバまたはウェブサーバ側
ゆ
重
こでは詳 細 については説 明 しないが、いわ
るC10
K
モ
ジュールについてこ
問 題 への対 処 が必 要 なものとなる。
従 来 の ウェブサーバは、長 時 間 の コネクションを保 持 する仕 組 みに なっていないため、
長 時 間 のコネクションを保 持 が 一 般 に は
ション
モ
ジュールが
主
い処 理 となっている。従 って、双 方 向 コネク
たる機 能 となる場 合 は、 ウ ェブサーバ基 盤 その ものの改 変 が 必 要
11
Copyright 2008- Fujitsu Limited All Rights Reserved
である。
B 方式:
方式 : 埋 め 込 み プラグイン
ブラウザに密 着 しているのが強 み。
ネットワーク上 のエンドポイントがサーバ側 からそのまま接 続
元
に見 える。
複 数 の ネットワーク接 続 を保 持 するための 埋 め込 みプラグイン開 発 が 必 要 。
C 方式:
方式 : HTML5の
HTML5 の Connectionを
Connection を 先取り
先取 り
HTMLブラウザの コアをカ スタマイ
セキュリティ
モ
ズ
し、HTML5の C onnecti onを先 取 り して 実 装 。
デルが不 明 なのでこれ以 上 の議 論 はここではしない。
想定される
想定 される利用
される 利用シーン
利用 シーン
以 下 で は 、 HTML ブ ラ ウ ザ に よ る 双 方 向 通 信 に つ い て 、
想
定 される利 用 シーンを挙 げ
る。
MFPにおける
MFP における利用
における 利用
複合機・
ネットワーク
対 応 プリンタ
昨今
、 オフィ スに は ネットワーク対 応 の プリ ンタ(MFP)が
は 、 Windo
w
s の ネ ッ ト ワ ー ク フ ァ イ ル ア ク セ ス やWindo
w
置
かれるようになってきた。現 状
sのネットワークプリンタとしてプリ
ントの 指 示 が 可 能 とい う 状 態 である 。ま た 、MFP が ファ イルサ ーバの 役 割 を果 た す ことも
多 く な り つ つ あ る 。 MFP は ス キ ャ
格
納
ナ
機 能 を持 つため、スキャンした
しておくことが 可 能 である。こういったデータをい
すことなくMFP上 で
印刷
できるというのは使 い
勝
ち ち
い
電子
データをそのまま
ローカルパソコン側 に取 り出
手 がよい。
ブラウザによる双 方 向 アクセスが可 能 となると以 下 のようなことが可 能 となる。
PC に イ ン ス ト ー ル さ れ たブ ラ ウ ザ で 、 ( LAN
ファイル一
覧
外
の ) MFP に ア ク セ ス 、 MFP 内 に 格
を取 得 、リクエスト発 行 を実 施 する。その後 、
印刷 了
完
納
された
やエラー通 知 はイ
ベントとしてプリンタ側 から送 信 される。
12
Copyright 2008- Fujitsu Limited All Rights Reserved
U
従来
ロ ー カ ル
ファイル
提案
ロ ー カ ル
ファイル
リ
モ
ートフ
ァイル
ファイル
I
w
標準
w
標準
Windo
Windo
s
s
Windo
Windo
管
w
w
V
印刷
理
s SMB
Windo
IPP
s SMB
DHTML( ブ
WebDA
ラウザ)
ブアプリ
プロトコル
Windo
w 印刷
w 印刷
s
プロトコル
s
プロトコル
IPP
や 独 自 ウ ェ
独 自 ウェブアプリからの指
示
メッセージング
リアルタイムメッセージングサーバ(IRC サーバなど)が ファイアウォール内 に
置
かれている
場 合 、ファイアウォールの設 定 によって当 メッセージングプロトコルを通 さない設 定 をさ
れている場 合 がある。
双 方 向 コ ネ ク シ ョ ン を H TT P を 通 し て 使 用 し 、 H T T P を 通 す フ ァ イ ア ウ ォ ー ル を 越 え て 、 フ
ァイアウォール内 に
置
か れているメッセージングサーバへアクセス可 能 とす る。
この場 合 、ファイアウォールが長 時 間 コネクションを保 持 するかどうかはその実 装 や設 定
に 依 存 していると考 えら得 る。様 々なファイアウォ ール
運
用 での設 定 状
況
について不 明 である。
製品
における実 装 状
況 際
・実
の
双 方 向 通 信 をサポートするブラウザ側 基 盤 およびサーバ側 で双 方 向 コネクションを実
現 するウェブサーバと双 方 向 コネクション
込 み機 器
U
モ
ジュール-これらの 基 盤 技 術 を使 用 して、 組
I に お い て 、 HT M L ブ ラ ウ ザ を 利 用 し た イ ン タ ラ ク テ ィ ブ な ア プ リ ケ ー シ ョ ン を
実 現 可 能 である。
まとめ
HTMLブラウザに おける双 方 向 通 信 の サポートは 、クライアント-サーバ間 の インタラクシ
ョンをより
緊
密 に した、よりサービスに
基 盤 となるだろう。
寄
ったよりユーザビリティの高 いアプリケーションの
13
Copyright 2008- Fujitsu Limited All Rights Reserved
参照サイト
参照 サイト
_
_
_
_
h t t p : / / z zz . z g g g . c o m / j / s e rv e r p u s h t o d a y m a r g i n a l a j a x . h t m l
http://
http://
http://
http://
www
www
www w w
www
.pushlets.com/
. h i x i e . c h / s p e cs / h t m l / s e rv e r- s e n t - e v e n t s / s e rv e r- s e n t - e v e n t s
.
hat
g.org/specs/
w
eb-apps/current-
.kegel.com/c10k.html
w
ork/
当資料は、HTMLブラウザをアプリケーションのUIとして使用するために必要な技術についての概要説明です。
当資料の内容について正確性については相当の配慮を行っていますが保証はいたしません。
当資料に含まれる商標・登録商標は各社の商標・登録商標です。
14
Copyright 2008- Fujitsu Limited All Rights Reserved