以下、図面を参照して本発明の実施形態を説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係るサーバベース・コンピューティング・システムの構成を示すブロック図である。
このサーバベース・コンピューティング・システムは、サーバ装置11と複数のクライアント装置12(12a,12b,12c…)を備え、これらがLAN(Local Area Network)やWAN(Wide Area Network)等のネットワーク13を介して互いに通信可能に接続されている。
サーバ装置11は、例えばネットワーク13に有線接続されたパーソナルコンピュータである。クライアント装置12として、例えばネットワーク13に有線接続されたパーソナルコンピュータ12aや、ネットワーク13にアクセスポイントAPを介して無線接続された携帯電話12b、同アクセスポイントAPを介して無線接続された携帯端末12cなどがある。
サーバ装置11は、例えば文書作成処理プログラム,表計算処理プログラム,住所録プログラム,メモ帳プログラム,プレゼン資料作成プログラム,メール処理プログラム,インターネット接続処理プログラム、Web表示プログラムなどを含む各種アプリケーションプログラムを有し、当該サーバ装置11にネットワーク13を介して接続されたクライアント装置12(12a,12b,12c…)からの操作入力(入力イベント)に応じたアプリケーションプログラムを起動し、その処理を実行する。
このサーバ装置11において、アプリケーションプログラムの実行に伴い生成された表示出力用の描画データは、所定の方式で圧縮されて、アクセス元のクライアント装置12に送られる。クライアント装置12では、サーバ装置11から送られた描画データを解凍して画面上に表示する。
図2はサーバベース・コンピューティング・システムに用いられるサーバ装置11の回路構成を示すブロック図である。
サーバ装置11は、コンピュータとしてのCPU21を備える。このCPU21には、システムバス20を介してメモリ22、フレームバッファRAM23、記憶部24、入力部25、表示部26、通信制御部27、媒体読取り部28が接続される。
CPU21は、記憶部22に予め記憶されたプログラム、あるいは、外部記録媒体28aから媒体読取り部28を介して読み取られたプログラム、あるいは、ネットワーク13を介して外部のサーバから提供されたプログラムを読み込み、そのプログラムに記述された手順に従って各種処理を実行する。このCPU21によって実行されるプログラムには、OS(Operating System)の他、クライアント装置12が利用する各種アプリケーションプログラム、これらのアプリケーションプログラムの起動に伴って生成される描画データの画面表示制御を行うための表示制御プログラムなどが含まれる。
メモリ22には、各クライアント装置12(12a,12b,12c…)毎に例えばユーザID等によって関連付けられた複数の領域管理バッファS0,S1、あるいは、複数の仮想フレームバッファFB0,FB1が設けられている。
領域管理バッファS0,S1は、「マージ転送方式」によって描画データを転送する場合に用いられる記憶手段であり、S0は前回の領域情報、S1は現在の領域情報を記憶する。
仮想フレームバッファFB0,FB1は、後述する「差分転送方式」によって描画データを転送する場合に用いられる記憶手段であり、FB0は前回の描画データ、FB1は現在の描画データを記憶する。
「マージ転送方式」とは、表示画面の描画データをクライアント装置12に転送する際に、画面上で描画データが書き換えられた領域(これを更新領域と呼ぶ)を監視しており、描画データが書き換えられた際に前回送信済みの描画データに対応した更新領域と現在の描画データに対応した更新領域とをマージし、そのマージ後の更新領域に対応した描画データを表示システムから取得して転送する方式である。
これに対し、「差分転送方式」とは、表示画面の描画データをクライアント装置12に転送する際に、前回送信済みの描画データと現在の描画データとの差分を検出し、その差分データを転送する方式である。
フレームバッファRAM23は、サーバ装置11に備えられた表示部26の画面に表示する描画データをフレーム単位で保持するためのバッファメモリである。
記憶部24には、サーバ装置11の動作を制御するためのサーバ制御プログラムを含む各種プログラムを記憶するためのプログラム記憶領域24a、描画データの送信モード(詳しくは、送信モードのON/OFFを示すフラグ情報)を記憶するためのモード記憶領域24bが設けられている。
入力部25は、例えばキーボード、マウスなどの入力デバイスからなり、オペレータが各種データの入力や指示を行う場合に用いられる。
表示部26は、各種データを表示するものであり、例えばCRT(Cathode-ray tube)やLCD(Liquid Crystal Display)などからなる。
通信制御部27は、ネットワーク13を介して外部の端末との間で通信処理を行うためのものであり、ここではサーバ装置11側で生成した描画データの送信処理や、クライアント装置12から送信される特定の識別子(不要求識別子ID1,要求識別子ID2)の受信処理を行う。
媒体読取り部28は、外部記録媒体28aに記録されたデータを読み取る。外部記録媒体28aとしては、例えば磁気ディスク、光ディスク、フレシキブルディスク、メモリカードなどがある。
図3はサーバ装置11に備えられたCPU21の機能構成を示すブロック図である。
本実施形態において、CPU21によって実行される処理を機能的に示すと、CPU21は送信可否判断部21a、送信中断部21b、送信制御部21c、マージ処理部21d、差分算出部21e、通信状況検出部21fからなる。
送信可否判断部21aは、クライアント装置12に対する描画データの送信可否を判断する。送信中断部21bは、送信可否判断部21aによって送信不可と判断された場合に、クライアント装置12に対する描画データの送信を中断する。送信制御部21cは、描画データの送信中断後、送信可否判断部21aによって送信可と判断された場合に送信中断時点から送信可と判断された時点までの間に変化にした描画データをクライアント装置12に送信する。
また、マージ処理部21dは、「マージ転送方式」で描画データを転送するための処理を行うものであり、不要求識別子ID1(第1の識別子)の受信時にクライアント装置12に送信する描画データに対応した画面上の更新領域に、要求識別子ID2(第2の識別子)を受信するまでの間に変化した描画データに対応した画面上の更新領域をマージする。
差分算出部21eは、「差分転送方式」で描画データを転送するための処理を行うものであり、不要求識別子ID1(第1の識別子)の受信時にクライアント装置12に送信する描画データと要求識別子ID2(第2の識別子)を受信するまでの間に変化した描画データとの差分データを算出する。
通信状況検出部21fは、クライアント装置12との間の通信状況を検出する。なお、この通信状況検出部21fは、後述する第2の実施形態で用いられる。
図4はサーバベース・コンピューティング・システムに用いられるクライアント装置12(12a,12b,12c…)の回路構成を示すブロック図である。
クライアント装置12(12a,12b,12c…)は、コンピュータとしてのCPU31を備える。このCPU31には、システムバス30を介してメモリ32、フレームバッファRAM33、記憶部34、入力部35、表示部36、表示部開閉センサ36a、通信制御部37、媒体読取り部38が接続される。
CPU31は、記憶部32に予め記憶されたプログラム、あるいは、外部記録媒体38aから媒体読取り部38を介して読み取られたプログラム、あるいは、ネットワーク13を介して外部のサーバから提供されたプログラムを読み込み、そのプログラムに記述された手順に従って各種処理を実行する。このCPU31によって実行されるプログラムとしては、OS(Operating System)が主であり、その他の各種アプリケーションプログラムについては、基本的にサーバ装置11が保有している。
メモリ32は、CPU31の処理動作に必要な各種データを記憶する。フレームバッファRAM33は、クライアント装置12に備えられた表示部36の画面に表示する描画データをフレーム単位で保持するためのバッファメモリである。
記憶部34には、クライアント装置12の動作を制御するためのクライアント制御プログラムを含む各種プログラムを記憶するためのプログラム記憶領域34a、テキスト入力モードの設定情報を記憶するためのモード記憶領域34b、テキスト入力モードがON設定されているときに入力されるテキストデータを記憶するための入力データ記憶領域34cが設けられている。
入力部35は、例えばキーボード、マウス、タッチパネルなどの入力デバイスからなり、オペレータが各種データの入力や指示を行う場合に用いられる。また、この入力部35には、表示部36の画面の表示機能をON/OFFするための表示スイッチ35aを有する。
表示部36は、各種データを表示するものであり、例えばCRT(Cathode-ray tube)やLCD(Liquid Crystal Display)などからなる。また、この表示部36が開閉自在な構造を有する場合に、その開閉状態を検出するための表示部開閉センサ36aが設けられる。
通信制御部37は、ネットワーク13を介して外部の端末との間で通信処理を行うためのものであり、ここではサーバ装置11に対して描画データの送信制御用の識別子(不要求識別子ID1,要求識別子ID2)を送信するための処理を行う。
媒体読取り部38は、外部記録媒体38aに記録されたデータを読み取る。外部記録媒体38aとしては、例えば磁気ディスク、光ディスク、フレシキブルディスク、メモリカードなどがある。
図5はクライアント装置12に備えられたCPU31の機能構成を示すブロック図である。
本実施形態において、CPU31によって実行される処理を機能的に示すと、CPU31は、第1の条件判断部31a、第1の識別子送信部31b、第2の条件判断部31c、第2の識別子送信部31d、モード設定部31eからなる。
第1の条件判断部31aは、サーバ装置11と通信中に、サーバ装置11から描画データを受信できない状況を示す第1の条件を満たすか否かを判断する。第1の識別子送信部31bは、この第1の条件判断部31aによって前記第1の条件を満たすものと判断された場合にサーバ装置11に対して描画データの送信を禁止させるための不要求識別子ID1(第1の識別子)をサーバ装置11に送信する。
第2の条件判断部31cは、第1の識別子送信部31bによる不要求識別子ID1(第1の識別子)の送信後、サーバ装置11から描画データを受信できる状況を示す第2の条件を満たすか否かを判断する。第2の識別子送信部31dは、この第2の条件判断部31cによって第2の条件を満たすものと判断された場合にサーバ装置11に対して描画データの送信を要求するための要求識別子ID2(第2の識別子)をサーバ装置11に送信する。
なお、前記第1および第2の条件とは、クライアント装置12の表示部36が開閉されたとき、クライアント装置12の表示部36の画面がON/OFFされたとき、後述するタッチパネル40を通じて送信禁止マーク41/送信要求マーク42が入力されたとき、クライアント装置12内だけで実行される特定のモード(テキスト入力モードが設定/解除されたときのいずれか少なくとも1つを含む。
また、モード設定部31eは、サーバ装置11が関与しないで、クライアント装置12内だけで実行される特定のモード(ここではテキスト入力モード)を設定する。
このような構成のサーバベース・コンピューティング・システムでは、サーバ装置11側でアプリケーションプログラムを持ち、そのアプリケーションプログラムに対応した描画データを生成してクライアント装置12に送信する。その際、例えばクライアント装置12の表示部36を一時的に閉じている場合や通信状況が悪い場合には、サーバ装置11から描画データを送信してもクライアント装置12側で受信できないため、その間のデータ通信が無駄になってしまう。
そこで、本実施形態では、クライアント装置12にサーバ装置11による描画データの送信を制御するための特定の識別子(不要求識別子ID1,要求識別子ID2)を持たせ、データ受信状況に応じて、その識別子をサーバ装置11に送信することで、サーバ装置11による描画データの送信を制御するものである。
次に、このような描画データの送信制御を実現するための具体的な処理理動作について、(a)サーバ装置11側の処理と、(b)クライアント装置12側の処理に分けて説明する。
(a)サーバ装置11側の処理
まず、サーバ装置11側の処理について、図6および図9のフローチャートを参照して説明する。なお、以下のフローチャートで示される処理は、サーバ装置11に備えられたCPU21によって読み取り可能なプログラムの形態で記憶部24のプログラム記憶領域24aに予め記憶されている。
サーバ装置11側では、アプリケーションプログラムの起動に伴う描画データを生成し、これをクライアント装置12に転送する。その際に、サーバ装置11からクライアント装置12に対して描画データを転送する方式として、上述した「マージ転送方式」と「差分転送方式」がある。
以下では、「マージ転送方式を用いる場合」と「差分転送方式を用いる場合」に分けて説明する。
「マージ転送方式を用いる場合」
図6はサーバベース・コンピューティング・システムのサーバ装置11によるマージ転送方式を用いた処理動作を示すフローチャートである。
クライアント装置12からネットワーク13を介して接続要求があると、サーバ装置11に備えられたCPU21は、まず、その接続要求元のクライアント装置12に予め設定されたパスワードやIDなどを用いて認証処理を行う(ステップA11)。
認証後、CPU21は、そのクライアント装置12に対して接続許可を通知し、通信制御部27を通じて所定の接続処理を行うことにより、当該クライアント装置12との間で互いにデータ通信可能な状態を確立する(ステップA12)。
接続要求元のクライアント装置12との接続が確立されると、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONにすると共に(ステップA13)、メモリ22内の当該クライアント装置12に対応した領域管理バッファS0,S1をクリアしておく(ステップA14)。S0は前回の領域情報、S1は現在の領域情報を記憶するためのバッファである。
ここで、接続要求元のクライアント装置12からの入力イベントの受付けなどを含む通信処理が実行され、サーバ装置11で生成される描画データが当該クライアント装置12に送信されて、その画面上に表示される(ステップA15)。
クライアント装置12との通信中において、サーバ装置11側では、クライアント装置12に提供しているアプリケーションプログラムの表示画面を監視しており、当該表示画面上で描画データが書き換えられた領域(更新領域)があると、その領域情報を取得して領域管理バッファS0に記憶する(ステップA16)。
具体的には、図7に示すように、画面上の更新領域をER1とすると、その更新領域ER1の矩形を構成する4点のうちの対角点のP1の座標(x1,y1)とP2の座標(x2,y2)、あるいは、任意の1点のP1の座標情報(x1,y1)と横サイズDW1と縦サイズDH1からなる。
その際、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードがONされているか否かを判断する(ステップA17)。描画データの送信モードがONであれば(ステップA17のYES)、続いて、CPU21は、現在通信中のクライアント装置12から不要求識別子ID1を受信したか否かを判断する(ステップA18)。
その結果、描画データの送信モードがONであり、かつ、不要求識別子ID1を未受信であれば(ステップA18のNO)、CPU21は、領域管理バッファS0に記憶されている領域情報を領域管理バッファS1に移すと共に(ステップA19)、その領域管理バッファS1に移した領域情報に対応した描画データを取得する(ステップA20)。そして、CPU21は、その取得した描画データにS1の領域情報を付して通信中のクライアント装置12に送信する(ステップA21)。
以上が正常な状態における描画データの送信処理であり、クライアント装置12との間の通信回線が接続されている間、同様に繰り返される(ステップA22のNO)。
一方、現在通信中のクライアント装置12が描画データを受信できない状況になると、不要求識別子ID1が送られてくる。サーバ装置11では、この不要求識別子ID1を受信した場合に(ステップA18のYES)、以下のような処理を実行する。
すなわち、不要求識別子ID1の受信に伴い、サーバ装置11のCPU21は、クライアント装置12に対する描画データの送信が不可であると判断し、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONからOFFに切り替えて(ステップA23)、クライアント装置12に対する描画データの送信を中断する(ステップA24)。その際、CPU21は、現在、領域管理バッファS0に記憶されている領域情報を領域管理バッファS1に移し、送信中断時点おける画面状態として保持しておく(ステップA25)。
ここで、クライアント装置12に対する描画データの送信を中断しても、例えば、動画の送信途中であったり、中断直前にクライアント装置12から受信した入力イベントの処理中であったり、クライアント装置12の表示画面がOFFされている間でも表示が継続される特定のアプリデータ(スクリーンセーバなど)を実行中の場合には、送信中断の間も表示画面は逐次更新されている。
送信中断の間に表示画面が更新されると、CPU21は、その更新領域の情報を取得して領域管理バッファS0に記憶する(ステップA16)。そして、クライアント装置12から要求識別子ID2を受信するまでの間、CPU21は、領域管理バッファS1に記憶された送信中断時点での領域情報と領域管理バッファS0に記憶された領域情報とをマージし(S1+S0)、そのマージ後の領域情報に基づいて領域管理バッファS1に逐次書き換えていく(ステップA17→A26→A27)。
具体的に説明すると、今、図8に示すように、画面更新された領域がER2であるとすると、送信中断時点における更新領域ER1と現在の更新領域ER2とをマージした領域を送信中断時点から変化した領域ER3として取得する。そして、その領域情報(変化領域ER3のP1,P4の座標情報あるいはP1の座標情報と縦横サイズDH2,DW2)を新たに領域管理バッファS1に記憶する。
このようなマージ処理をクライアント装置12から要求識別子ID2を受信するまでの値、繰り返し行う。これにより、領域管理バッファS1には、常に画面更新にて変化した領域の情報が保持されることになる。
その後、クライアント装置12がデータ受信可能な状況になると、クライアント装置12から要求識別子ID2が送信される。CPU21は、その要求識別子ID2の受信に伴い(ステップA26のYES)、クライアント装置12に対する描画データの送信が可であると判断し、描画データの送信モードをOFFからONに戻して(ステップA28)、描画データの送信を開始する(ステップA29)。
この場合、CPU21は、要求識別子ID2の受信直前に領域管理バッファS0に記憶された領域情報と領域管理バッファS1に記憶されている領域情報とをマージし、そのマージによって生成された新たな領域情報を領域管理バッファS1に記憶する(ステップA30)。そして、CPU21は、その領域管理バッファS1に記憶された領域情報に対応した描画データを取得し、その取得した描画データにS1の領域情報を付して通信中のクライアント装置12に送信する(ステップA21)。
また、クライアント装置12から接続終了要求を受けると(ステップA22のYES)、CPU21は、所定の接続断処理を行ってクライアント装置12との接続を遮断して(ステップA31)、ここでの処理を終える。
「差分転送方式を用いる場合」
図9はサーバベース・コンピューティング・システムのサーバ装置11による差分転送方式を用いた処理動作を示すフローチャートである。
クライアント装置12からネットワーク13を介して接続要求があると、サーバ装置11に備えられたCPU21は、まず、その接続要求元のクライアント装置12に予め設定されたパスワードやIDなどを用いて認証処理を行う(ステップB11)。
認証後、CPU21は、そのクライアント装置12に対して接続許可を通知し、通信制御部27を通じて所定の接続処理を行いことにより、当該クライアント装置12との間で互いにデータ通信可能な状態を確立する(ステップB12)。
接続要求元のクライアント装置12との接続が確立されると、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONにすると共に(ステップB13)、メモリ22内の当該クライアント装置12に対応した仮想フレームバッファFB0,FB1をクリアしておく(ステップB14)。FB0は前回の描画データ、S1は現在の描画データを記憶するためのバッファである。
ここで、接続要求元のクライアント装置12からの入力イベントの受付けなどを含む通信処理が実行され、サーバ装置11で生成される描画データが当該クライアント装置12に送信されて、その画面上に表示される(ステップB15)。
クライアント装置12との通信中において、サーバ装置11側では、クライアント装置12に提供しているアプリケーションプログラムの表示画面を監視しており、当該表示画面上で更新された部分があると、その更新部分の描画データを取得し、これを所定の方式で圧縮して仮想フレームバッファFB0に記憶する(ステップB16)。
その際、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードがONされているか否かを判断する(ステップB17)。描画データの送信モードがONであれば(ステップB17のYES)、続いて、CPU21は、現在通信中のクライアント装置12から不要求識別子ID1を受信したか否かを判断する(ステップB18)。
その結果、描画データの送信モードがONであり、かつ、不要求識別子ID1を未受信であれば(ステップB18のNO)、CPU21は、仮想フレームバッファFB0に記憶されている描画データと仮想フレームバッファFB1に記憶されている描画データとの差分データDDを生成する(ステップB19)。そして、CPU21は、その取得した差分データDDに領域情報を付して通信中のクライアント装置12に送信する(ステップB20)。
なお、初期状態では、仮想フレームバッファFB1は空であり、仮想フレームバッファFB0に記憶されている全画面の描画データがそのまま差分データDDとして、クライアント装置12に送信されることになる。また、描画データの送信後、CPU21は、現在、仮想フレームバッファFB0に記憶されている描画データを仮想フレームバッファFB1に移しておく(ステップB21)。
以上が正常な状態における描画データの送信処理であり、クライアント装置12との間の通信回線が接続されている間、同様に繰り返される(ステップB22のNO)。
一方、現在通信中のクライアント装置12が描画データを受信できない状況になると、不要求識別子ID1が送られてくる。サーバ装置11では、この不要求識別子ID1を受信した場合に(ステップB18のYES)、以下のような処理を実行する。
すなわち、不要求識別子ID1の受信に伴い、サーバ装置11のCPU21は、クライアント装置12に対する描画データの送信が不可であると判断し、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONからOFFに切り替えて(ステップB23)、クライアント装置12に対する描画データの送信を中断する(ステップB24)。その際、CPU21は、現在、仮想フレームバッファFB0に記憶されている描画データを仮想フレームバッファFB1に移し、送信中断時点おける画面状態として保持しておく(ステップB21)。
ここで、クライアント装置12に対する描画データの送信を中断しても、例えば、動画の送信途中であったり、中断直前にクライアント装置12から受信した入力イベントの処理中であったり、クライアント装置12の表示画面がOFFされている間でも表示が継続される特定のアプリデータ(スクリーンセーバなど)を実行中の場合には、送信中断の間も表示画面は逐次更新されている。
送信中断の間に表示画面が更新されると、CPU21は、その更新部分の描画データを取得して仮想フレームバッファFB0に記憶する(ステップB16)。そして、クライアント装置12から要求識別子ID2を受信するまでの間、CPU21は、表示画面が更新される度に仮想フレームバッファFB0を書き換えていく(ステップB17→B25→B15→B16)。
その後、クライアント装置12がデータ受信可能な状況になると、クライアント装置12から要求識別子ID2が送信される。CPU21は、その要求識別子ID2の受信に伴い(ステップB25のYES)、クライアント装置12に対する描画データの送信が可であると判断し、描画データの送信モードをOFFからONに戻して(ステップB26)、描画データの送信を開始する(ステップB27)。
この場合、CPU21は、仮想フレームバッファFB0に記憶されている現在の描画データと仮想フレームバッファFB1に記憶されている前回の描画データとの差分データDDを生成し(ステップB19)、その差分データDDに領域情報を付して通信中のクライアント装置12に送信する(ステップB20)。また、描画データの送信後、CPU21は、現在、仮想フレームバッファFB0に記憶されている描画データを仮想フレームバッファFB1に移しておく(ステップB21)。
クライアント装置12から接続終了要求を受けると(ステップB22のYES)、CPU21は、所定の接続断処理を行ってクライアント装置12との接続を遮断して(ステップB28)、ここでの処理を終える。
(b)クライアント装置12側の処理
次に、クライアント装置12側の処理について、図10および図13のフローチャートを参照して説明する。なお、以下のフローチャートで示される処理は、クライアント装置12に備えられたCPU31によって読み取り可能なプログラムの形態で記憶部34のプログラム記憶領域34aに予め記憶されている。
クライアント装置12側では、サーバ装置11からアプリケーションプログラムの起動に伴って送信される描画データを受信し、これを画面上に表示する。その際に、クライアント装置12からデータ受信状況に応じて、特定の識別子(要求識別子ID1,要求識別子ID2)を送信することで、クライアント装置12側でサーバ装置11による描画データの送信を制御する。
以下では、前記特定の識別子の送る条件として、「データ受信状況に関わる所定の状態を検出する場合」と「テキスト入力モードを検出する場合」に分けて説明する。
「データ受信状況に関わる所定の状態を検出する場合」
図10はサーバベース・コンピューティング・システムのクライアント装置12による所定の状態を検出する場合の処理動作を示すフローチャートである。
ネットワーク13上のサーバ装置11に接続するため、まず、クライアント装置12に備えられたCPU31は、通信制御部27を通じて予め設定されたパスワードやIDなどを送信して接続認証要求を行う(ステップC11)。この接続認証要求に対し、サーバ装置11から接続許可の応答があると、続いて、CPU31は、通信制御部27を通じて所定の接続処理を行い、サーバ装置11との間で互いにデータ通信可能な状態を確立する(ステップC12)。
ここで、サーバ装置11との間で入力イベントの送信を含む通信処理が行われると(ステップC13)、CPU31は、以下のようなデータ受信状況に関わる状態1〜3のいずれかを検出した場合に(ステップC14のYES)、サーバ装置11から描画データを受信できない状況を示す第1の条件を満たすものと判断して、第1の識別子である不要求識別子ID1をサーバ装置11に送信する(ステップC15)。
・状態1:クライアント装置12の表示部36が開閉可能な構造を有する場合において、その表示部36が閉じられた状態を検出する。表示部36が閉じられた状態は、その表示部36の開閉部に設置された表示部開閉センサ36aから出力される信号に基づいて検出される。
・状態2:クライアント装置12の表示部36の表示画面がOFFされた状態を検出する。これは、表示スイッチ35aによって表示部36の表示機能がOFF操作されたことで検出される。
・状態3:図11に示すように、クライアント装置12が筆記操作によりデータ入力を行うためのタッチパネル40を備えている場合において、同図(a)のようにタッチパネル40上で描画データの送信禁止マーク(この例では「レ」マーク)41が入力された状態を検出する。この送信禁止マーク41の入力は、図12に示すような認識テーブル43を用いて認識される。この認識テーブル43は、例えば記憶部34内に設けられる。
前記状態1〜3のいずれかの検出に伴い、不要求識別子ID1がサーバ装置11に送信されると、サーバ装置11では、その不要求識別子ID1を受信した時点でクライアント装置12に対する描画データの送信を中断する(図6のステップA24あるいは図9のステップB24参照)。
また、CPU31は、以下のような状態4〜6を検出した場合に(ステップC16のYES)、サーバ装置11から描画データを受信できる状況を示す第2の条件を満たすものと判断して、第2の識別子である要求識別子ID2をサーバ装置11に送信する(ステップC17)。
・状態4:表示部36が開閉可能な構造を有する場合において、その表示部36が開かれた状態。なお、表示部36の開かれた状態は、その表示部36の開閉部に設置された表示部開閉センサ36aから出力される信号に基づいて検出される。なお、この状態4の検出は、前記状態1の検出によって不要求識別子ID1が送信された場合に適用されるものとする。
・状態5:クライアント装置12の表示部36の表示画面がONされた状態を検出する。これは、表示スイッチ35aによって表示部36の表示機能がON操作されたことで検出される。なお、この状態5の検出は、前記状態2の検出によって不要求識別子ID1が送信された場合に適用されるものとする。
・状態6:図11に示すように、クライアント装置12が筆記操作によりデータ入力を行うためのタッチパネル40を備えている場合において、同図(b)のようにタッチパネル40上で送信要求マーク(この例では「○」マーク)42が入力された状態を検出する。この送信要求マーク42の入力は、図12に示すような認識テーブル43を用いて認識される。この認識テーブル43は、例えば記憶部34内に設けられる。なお、この状態6の検出は、前記状態3の検出によって不要求識別子ID1が送信された場合に適用されるものとする。
前記状態4〜6のいずれかの検出に伴い、要求識別子ID2がサーバ装置11に送信されると、サーバ装置11では、その要求識別子ID1を受信した時点で描画データの送信を開始する(図6のステップA29あるいは図9のステップB27参照)。
サーバ装置11から描画データが送られて来ると(ステップC18のYES)、CPU31は、その描画データをフレームバッファRAM33に格納した後、表示部36の画面上に表示する(ステップC19)。詳しくは、当該描画データと共に送られてくる領域情報に基づいて画面上の表示位置を判断し、その表示位置に描画データを表示する処理を行う。
以上のような処理をサーバ装置11との通信接続を終了するまでの間、繰り返し行う(ステップC20のNO)。サーバ装置11との通信接続を終了する場合(ステップC20のYES)、CPU23は、所定の接続断処理を行ってサーバ装置11との接続を遮断して(ステップC21)、ここでの処理を終える。
「テキスト入力モードを検出する場合」
図13はサーバベース・コンピューティング・システムのクライアント装置12によるテキスト入力モードを検出する場合の処理動作を示すフローチャートである。
ネットワーク13上のサーバ装置11に接続するため、まず、クライアント装置12に備えられたCPU31は、通信制御部27を通じて予め設定されたパスワードやIDなどを送信して接続認証要求を行う(ステップD11)。この接続認証要求に対し、サーバ装置11から接続許可の応答があると、続いて、CPU31は、通信制御部27を通じて所定の接続処理を行い、サーバ装置11との間で互いにデータ通信可能な状態を確立する(ステップD12)。
ここで、サーバ装置11との間で入力イベントの送信を含む通信処理が行われると(ステップD13)、CPU31は、記憶部34のモード記憶領域34bに記憶されたテキスト入力モードの設定情報に基づいて、テキスト入力モードがON設定されているか否かを判断する(ステップD14)。
テキスト入力モードとは、ユーザがキーボード等の入力部35を通じて入力したテキストデータの入力処理を実行するためのモードであり、所定の操作によりON/OFF設定される。このテキスト入力モードの設定によって実行されるデータ入力処理は、サーバ装置11は関与せずに、クライアント装置12の中だけで実行される所謂「クローズ処理」の1つである。
このテキスト入力モードがON設定された場合に(ステップD14のYES)、CPU31は、サーバ装置11から描画データを受信できない状況を示す第1の条件を満たすものと判断して、第1の識別子である描画データの不要求識別子ID1をサーバ装置11に送信し(ステップD15)、その間に入力部35を通じて入力されたテキストデータを記憶部34の入力データ記憶領域34cに保存しておく(ステップD16)。
そして、テキスト入力モードがONからOFFに切り替えられた場合、つまり、テキスト入力モードが解除された場合に(ステップD17のYES)、CPU31は、前記記憶部34の入力データ記憶領域34cに保存されたテキストデータを一括してサーバ装置11に送信すると共に(ステップD18)、サーバ装置11から描画データを受信できる状況を示す第2の条件を満たすものと判断して、第2の識別子である要求識別子ID2をサーバ装置11に送信する(ステップD19)。
サーバ装置11から描画データが送られて来ると(ステップD20のYES)、CPU31は、その描画データをフレームバッファRAM33に格納した後、表示部36の画面上に表示する(ステップD21)。詳しくは、当該描画データと共に送られてくる領域情報に基づいて画面上の表示位置を判断し、その表示位置に描画データを表示する処理を行う。
以上のような処理をサーバ装置11との通信接続を終了するまでの間、繰り返し行う(ステップD22のNO)。サーバ装置11との通信接続を終了する場合(ステップD22のYES)、CPU23は、所定の接続断処理を行ってサーバ装置11との接続を遮断して(ステップD23)、ここでの処理を終える。
このように第1の実施形態によれば、サーバベース・コンピューティング・システムにおいて、通信中にクライアント装置12が表示画面を閉じているなど、描画データを受信できない状況にある場合に、サーバ装置11による描画データの送信を中断することができる。
これにより、例えばスクリーンセーバ、アニメーション、動画GIFなどのように、クライアント装置12が画面を閉じている間は必要としない描画データの送信処理をなくして、その間の無駄な通信量を削減することができる。
さらに、動画等の連続性を有するデータについては、クライアント装置12が受信できない間、サーバ装置11側で保持される。そして、クライアント装置12が受信できる状況になったときに、サーバ装置11からマージ転送方式あるいは差分転送方式を用いて、それまでの画面変化分の描画データがまとめて送信される。したがって、従来システムのように、クライアント装置12の受信状況が分からずに、その都度、描画データにヘッダ情報を付けて繰り返し送るような無駄な手間が省かれ、しかも、1回で送るデータ量が多くなる分、圧縮効率を上げることができるので、通信量としてのデータ量を減らして効率的に送ることができる。
なお、クライアント装置12に描画データを送る際に、「マージ転送方式」を用いた場合には、クライアント装置12に送信済みの描画データをその都度保持しておく必要がないので、その分、メモリ容量を抑えることができるといった利点がある。これに対し、「差分転送方式」を用いた場合には、前回送信済みの描画データとの差分のみを送るので、通信量を抑えることができるといった利点がある。
また、従来システムでは、クライアント装置12側でサーバ装置11による描画データの送信を制御することができなかったが、本実施形態では、クライアント装置12から所定の条件に従って特定の識別子(不要求識別子ID1,要求識別子ID2)を送信することで、サーバ装置11による描画データの送信をクライアント装置12側で制御することができる。
前記所定の条件とは、クライアント装置12の表示部36が開閉されたとき、表示画面がON/OFFされたとき、タッチパネル40を通じて送信禁止マーク41/送信要求マーク42が入力されたときである。
クライアント装置12の表示部36が開閉されたときに特定の識別子を送信する方法であれば、例えばユーザが表示部36を閉じて移動する場合に、その間の描画データの送信を一時的に止めておき、移動先で表示部36を開いたときに描画データをまとめて受信するといった利用ができる。
また、クライアント装置12の表示部36の画面がON/OFFされたときに特定の識別子を送信する方法であれば、例えばユーザが何らかの理由で画面をOFFしておく場合に、その間の描画データの送信を一時的に止めておき、画面をONしたときに、描画データをまとめて受信するといった利用ができる。
また、タッチパネル40を通じて送信禁止マーク41/送信要求マーク42が特定の識別子を送信する方法であれば、表示画面をONにしたままの状態で、ユーザの都合に合わせて描画データの送信を制御することができる。
なお、前記図10のフローチャートでは、クライアント装置12の表示部36の開閉状態、あるいは、表示部36の画面のON/OFF状態、あるいは、送信禁止マーク41/送信要求マーク42の入力状態を検出する場合を想定して説明したが、これらの状態以外であっても、例えば描画データの送信制御用に特定の操作ボタンを設け、その操作ボタンのON/OFF状態を検出するなど、クライアント装置12側のデータ受信状況に関わる状態を示すものであれば、その状態を検出することで同様の効果を得ることができる。
また、送信禁止マーク41/送信要求マーク42を入力する場合についても、「レ」/「○」マーク等の記号を筆記入力することに限らず、送信禁止マーク41/送信要求マーク42をクリックするなど、要は不要求識別子ID1と要求識別子ID2を入力できるような構成であれば良い。
また、本実施形態では、テキスト入力モードの設定状態に応じて不要求識別子ID1または要求識別子ID2を発送するようにしたことで、ユーザがテキストデータを入力している間、クライアント装置12による描画データの送信を止めておくことができ、データ入力後、サーバ装置11からその入力済みのテキストデータに対する描画データを効率的に送ることができる。
なお、前記図13のフローチャートでは、テキスト入力モードの設定状態を検出する場合を想定して説明したが、テキスト入力モード以外であっても、サーバ装置11が関与せずに、クライアント装置12内だけで実行されるモードであれば、そのモードの設定状態を検出することで同様の効果を得ることができる。
また、本実施形態では、図6にて「マージ転送方式を用いる場合」、図9にて「差分転送方式を用いる場合」を別々のフローチャートにて説明したが、これら両方式を組み合わせれば、マージ転送方式を用いた場合に取得されたクライアント装置12に送信すべき描画データと差分転送方式を用いた場合に取得されたクライアント装置12に送信すべき差分データとのデータ容量の大小比較を行い、小さいデータ容量の方をクライアント装置12に送信することができる。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。
前記第1の実施形態では、サーバ装置11がクライアント装置12から所定の条件に従って送信される不要求識別子ID1/要求識別子ID2に基づいて描画データの送信を制御する構成としたが、第2の実施形態では、サーバ装置11がクライアント装置12との間の通信状況を検出して描画データの送信を制御する。
なお、サーバ装置11とクライアント装置12の構成については、基本的には前記第1の実施形態と同様である。ただし、サーバ装置11の記憶部24には、現在のクライアント装置12との通信状況を判断するための構成要素として、図14に示すように、応答時間N、計測カウンタC、計数回数Mの各値を記憶するための記憶領域24c〜24dが設けられる。さらに、この記憶部24には、現在のクライアント装置12との通信状況(オフライン/オンライン)を示す情報を記憶領域24eが設けられる。
以下では、マージ転送方式を用いて描画データを送信する場合を想定し、サーバ装置11の処理動作を説明する。
図15はサーバベース・コンピューティング・システムのサーバ装置11によるマージ転送方式を用いた処理動作を示すフローチャートである。
クライアント装置12からネットワーク13を介して接続要求があると、サーバ装置11に備えられたCPU21は、まず、その接続要求元のクライアント装置12に予め設定されたパスワードやIDなどを用いて認証処理を行う(ステップE11)。
認証後、CPU21は、そのクライアント装置12に対して接続許可を通知し、通信制御部27を通じて所定の接続処理を行いことにより、当該クライアント装置12との間で互いにデータ通信可能な状態を確立する(ステップE12)。
接続要求元のクライアント装置12との接続が確立されると、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONにすると共に(ステップE13)、メモリ22内の当該クライアント装置12に対応した領域管理バッファS0,S1をクリアしておく(ステップE14)。S0は前回の領域情報、S1は現在の領域情報を記憶するためのバッファである。
ここで、接続要求元のクライアント装置12からの入力イベントの受付けなどを含む通信処理が実行され、サーバ装置11で生成される描画データが当該クライアント装置12に送信されて、その画面上に表示される(ステップE15)。
その際、第2の実施形態では、接続要求元のクライアント装置12との通信状況を判断するため、応答時間の計測処理が実行される(ステップE16)。この応答時間の計測処理については、後に図16を参照して詳しく説明する。
前記第1の実施形態で説明したように、クライアント装置12との通信中において、サーバ装置11側では、クライアント装置12に提供しているアプリケーションプログラムの表示画面を監視しており、当該表示画面上で描画データが書き換えられた領域(更新領域)があると、その領域情報を取得して領域管理バッファS0に記憶する(ステップE17)。
具体的には、図7に示すように、画面上の更新領域をER1とすると、その更新領域ER1の矩形を構成する4点のうちの対角点のP1の座標(x1,y1)とP2の座標(x2,y2)、あるいは、任意の1点のP1の座標情報(x1,y1)と横サイズDW1と縦サイズDH1からなる。
その際、CPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードがONされているか否かを判断する(ステップE18)。描画データの送信モードがONであれば(ステップE18のYES)、続いて、CPU21は、前記ステップE16の計測結果として得られる通信状況情報に基づいて、現在のクライアント装置12との間の通信回線がオフライン状態またはオンライン状態であるかを判断する(ステップE19)。
なお、ここでの「オフライン状態」とは、クライアント装置12のレスポンスが遅い状態つまり通信状況が悪い状態を言う。これに対し、「オンライン状態」とは、クライアント装置12のレスポンスが早い状態つまり通信状況が良い状態を言う。
描画データの送信モードがONであり、かつ、現在のクライアント装置12との間の通信回線がオンフライン状態であれば(ステップE19のNO)、CPU21は、領域管理バッファS0に記憶されている領域情報を領域管理バッファS1に移すと共に(ステップE20)、その領域管理バッファS1に移した領域情報に対応した描画データを取得する(ステップE21)。そして、CPU21は、その取得した描画データにS1の領域情報を付して通信中のクライアント装置12に送信する(ステップE22)。
以上が正常な状態における描画データの送信処理であり、クライアント装置12との間の通信回線が接続されている間、同様に繰り返される(ステップE23のNO)。
一方、例えばユーザの移動中に通信状況が悪くなり、クライアント装置12が描画データを受信できない状況になると、前記ステップE15においてオフライン状態が設定される。サーバ装置11では、オフライン状態の場合には(ステップE19のYES)、以下のような処理を実行する。
すなわち、サーバ装置11のCPU21は、記憶部24のモード記憶領域24bに記憶された描画データの送信モードをONからOFFに切り替えて(ステップE24)、クライアント装置12に対する描画データの送信を中断する(ステップE25)。その際、CPU21は、現在、領域管理バッファS0に記憶されている領域情報を領域管理バッファS1に移し、送信中断時点おける画面状態として保持しておく(ステップE26)。
ここで、クライアント装置12に対する描画データの送信を中断している間も、例えば中断直前にクライアント装置12から受信した入力イベントを処理中であれば、表示画面は逐次更新されている。
送信中断の間に表示画面が更新されると、CPU21は、その更新域の情報を取得して領域管理バッファS0に記憶する(ステップE17)。そして、クライアント装置12との通信状況が回復するまでの間、CPU21は、領域管理バッファS1に記憶された送信中断時点での領域情報と領域管理バッファS0に記憶された領域情報とをマージし(S1+S0)、そのマージ後の領域情報に基づいて領域管理バッファS1に逐次書き換えていく(ステップE18→E27→E28)。
具体的に説明すると、今、図8に示すように、画面更新された領域がER2であるとすると、送信中断時点における更新領域ER1と今回の更新領域ER2とをマージした領域を送信中断時点から変化した領域ER3として取得する。そして、その領域情報(変化領域ER3のP1,P4の座標情報あるいはP1の座標情報と縦横サイズDH2,DW2)を新たに領域管理バッファS1に記憶する。
このようなマージ処理をクライアント装置12との通信状況が回復するまでの間(つまり、オンライン状態が設定されるまでの間)、繰り返し行う。これにより、領域管理バッファS1には、常に画面更新にて変化した領域の情報が保持されることになる。
その後、クライアント装置12との間の通信回線がオンライン状態になると(ステップE27のYES)、CPU21は、クライアント装置12に対する描画データの送信が可であると判断し、描画データの送信モードをOFFからONに戻して(ステップE29)、描画データの送信を開始する(ステップE30)。
この場合、CPU21は、オンライン状態になった直前に領域管理バッファS0に記憶された領域情報と領域管理バッファS1に記憶されている領域情報とをマージし、そのマージによって生成された新たな領域情報を領域管理バッファS1に記憶する(ステップE31)。そして、CPU21は、その領域管理バッファS1に記憶された領域情報に対応した描画データを取得し、その取得した描画データにS1の領域情報を付して通信中のクライアント装置12に送信する(ステップE22)。
また、クライアント装置12から接続終了要求を受けると(ステップE23のYES)、CPU21は、所定の接続断処理を行ってクライアント装置12との接続を遮断して(ステップE32)、ここでの処理を終える。
次に、図16を参照して前記ステップE16で実行される応答時間の計測処理について説明する。
図16はサーバベース・コンピューティング・システムのサーバ装置11による応答時間の計測処理の動作を示すフローチャートである。
接続要求元のクライアント装置12との間の通信回線が接続されると、サーバ装置11に備えられたCPU21は、まず、初期設定として、記憶部24の各記憶領域24c〜24eに記憶された応答時間N、計測カウンタC、測定回数Mの各値をクリアする(ステップF11)。
ここで、現在のクライアント装置12との通信状況を判断するため、CPU21は、計測用リクエスト信号を当該クライアント装置12に対して送信し(ステップF12)、その応答時間を計測する。その際、1回の計測では信頼性に欠けるため、複数回(ここではM回)の計測を行い、その平均を取るものとする。
詳しく説明すると、まず、CPU21は、計測用リクエスト信号を送信したときに測定回数Mの値を+1インクリメントし(ステップF13)、時間を計測する計測カウンタCのカウント動作を開始する(ステップF14)。そして、当該計測用リクエスト信号に対する応答信号(ACK信号)が返ってきたら(ステップF15のYES)、CPU21は、計測カウンタCのカウント動作を停止し(ステップF16)、そのときの計測カウンタCの値を応答時間Nに加算する(ステップF17)。
ここで、測定回数Mが所定回未満であれば(ステップF18のNO)、CPU21は、計測カウンタCの値をゼロクリアした後(ステップF19)、再び計測用リクエスト信号を当該クライアント装置12に対して送信し(ステップF12)、そのときに得られる計測カウンタCの値を応答時間Nに加算していく(ステップF13〜F17)。
以上の計測動作を繰り返し、測定回数Mが所定回に達すると(ステップF18のNO)、CPU21は、最終的に得られた応答時間Nの値をその測定回数Mの値で除算することにより、1回当たりの平均値Naを算出する(ステップF20)。そして、この応答時間の平均値Naが予め設定された時間(ここでは2秒)以内であれば(ステップF21のYES)、CPU21は、現在のクライアント装置12との間の通信回線がオンライン状態であることを示す情報を記憶部24の記憶領域24fに設定する(ステップF22)。
一方、前記応答時間の平均値Naが予め設定された時間(ここでは2秒)を超える場合には(ステップF23のYES)、CPU21は、現在のクライアント装置12との間の通信回線がオフライン状態であることを示す情報を記憶部24の記憶領域24fに設定する(ステップF22)。
上述したように、「オフライン状態」とは、クライアント装置12のレスポンスが遅い状態つまり通信状況が悪い状態のことであり、「オンライン状態」とは、クライアント装置12のレスポンスが早い状態つまり通信状況が良い状態のことである。
また、計測用リクエスト信号を送信しても、クライアント装置12から応答信号(ACK信号)が返ってこなかった場合には(ステップF15のNO)、CPU21は、現在のクライアント装置12との間の通信回線がオフライン状態であることを示す情報を記憶部24の記憶領域24fに設定する(ステップF25)。
このように第2の実施形態によれば、サーバ装置11がクライアント装置12との間の通信状況を検出し、通信状況が悪い場合にはクライアント装置12に対する描画データの送信を中断し、通信状況が良好になった時点で、マージ転送方式あるいは差分転送方式を用いて、それまでの画面変化分の描画データをまとめて送信する。これにより、前記第1の実施形態と同様に、クライアント装置12が受信できない状況での無駄な通信を防いで、受信できる状況になったときに描画データを効率的に送ることができる。
なお、このような方法で描画データをクライアント装置12に送る場合でも、「マージ転送方式」を用いた場合には、クライアント装置12に送信済みの描画データをその都度保持しておく必要がないので、その分、メモリ容量を抑えることができる。これに対し、「差分転送方式」を用いた場合には、前回送信済みの描画データとの差分のみを送るので、通信量を抑えることができる。
さらに、この第2の実施形態による方法では、サーバ装置11側で通信状況を検出して描画データの送信制御を行うため、クライアント装置12側に対しては特に処理的な改良を加えずに実現できる、といったメリットがある。
なお、前記図15では、マージ転送方式で描画データを送信する場合を想定して説明したが、差分転送方式で描画データを送信する場合でも同様に適用可能である。
また、前記各実施形態におけるサーバベース・コンピューティング・システムの処理、すなわち、図6、図9、図10、図13、図15、図16の各フローチャートで示されるサーバ装置11、クライアント装置12の各処理は、何れもコンピュータに実行させることができるプログラムとして、例えばメモリカード(ROMカード、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記録媒体28a,38aに格納して配布することができる。そして、サーバ装置11、クライアント装置12のコンピュータ(CPU21,31)は、この外部記録媒体28a,38aに記憶されたプログラムを読み込むことにより、前記各実施形態の処理を実行することができる。
さらに、前記各プログラムのデータは、プログラムコードの形態として通信ネットワーク13を介してサーバ装置11、クライアント装置12に提供することも可能である。
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
11…サーバ装置、12(12a,12b,12c)…クライアント装置、13…ネットワーク、20…システムバス、21…CPU、21a…送信可否判断部、22b…送信中断部、21c…送信制御部、21d…マージ処理部、21e…差分算出部、21f…通信状況検出部、22…メモリ、S0,S1…領域管理バッファ、FB0,FB1仮想フレームバッファ、23…フレームバッファRAM、24…記憶部、25…入力部、26…表示部、27…通信制御部、28…媒体読取り部、28a…媒体、30…システムバス、31…CPU、31a…第1の条件判断部、31b…第1の識別子送信部、31c…第2の条件判断部、31d…第2の識別子送信部、31e…モード設定部、32…メモリ、33…フレームバッファRAM、34…記憶部、35…入力部、36…表示部、36a…表示部開閉センサ、37…通信制御部、38…媒体読取り部、38a…媒体、40…タッチパネル、41…送信禁止マーク、42…送信要求マーク、43…認識テーブル。