JP4716715B2 - 分散型オペレーティングシステムにおけるサービスとしての装置 - Google Patents

分散型オペレーティングシステムにおけるサービスとしての装置 Download PDF

Info

Publication number
JP4716715B2
JP4716715B2 JP2004336406A JP2004336406A JP4716715B2 JP 4716715 B2 JP4716715 B2 JP 4716715B2 JP 2004336406 A JP2004336406 A JP 2004336406A JP 2004336406 A JP2004336406 A JP 2004336406A JP 4716715 B2 JP4716715 B2 JP 4716715B2
Authority
JP
Japan
Prior art keywords
mouse
service
keyboard
event
service means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004336406A
Other languages
English (en)
Other versions
JP2005158071A (ja
Inventor
ジー.コンロイ デビッド
クリサンサコポウロス ゲルギオス
エフ.ニールセン ヘンリク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005158071A publication Critical patent/JP2005158071A/ja
Application granted granted Critical
Publication of JP4716715B2 publication Critical patent/JP4716715B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピューティングシステムのサブシステムとしての装置に関し、より詳細には、装置が分散型オペレーティングシステムにおいてサービスとして表される基本設計構造に関する。
パーソナルコンピュータのユーザを恐怖に陥れる青色に輝くものとは何であろうか。それは、ほぼいつもプログラミングエラーによって引き起こされる恐怖の青い画面である。 デバイスドライバは、こうしたエラーの一般的な源である。デバイスドライバとは、コンピュータシステムをある装置と通信できるようにするソフトウェア構成要素である。正しいドライバがシステムにインストールされていない場合、装置は使用できない。というのは、ほとんどの場合ドライバは、装置との通信に使用されるハードウェアをどのように扱うかを理解する唯一のソフトウェアだからである。装置およびデバイスドライバの急増により、プログラミングエラーが急激に増加した。プログラマが装置とコンピュータとの間のすべての対話を視覚化したり、コンピュータと相互接続できる他のすべての装置との対話の結果を決定したりすることは事実上不可能である。図1は、こうした問題および他の問題をより詳しく示すシステム100を示している。
図1は、集中型オペレーティングシステム、つまりLinuxオペレーティングシステム101を示している。Linuxオペレーティングシステム101は、様々なユーザのアプリケーション106間の入力/出力装置114などのハードウェアの使用を制御し、調整する。Linuxオペレーティングシステム101は、カーネル102、システムライブラリ104、およびシステムユーティリティ(デーモン)108など、他のUNIX(登録商標)オペレーティングシステムの変形に似たコードの3つの密結合部分を使用することによって制御および調整を集中化する。カーネル102は、Linuxオペレーティングシステム101の核を形成する。カーネル102は、プロセスの稼働に必要なすべての機能を提供し、入力/出力装置114など、ハードウェアリソースへの保護されたアクセスを提供する。システムライブラリ104は、アプリケーションがカーネル102と対話できるようにし、Linuxオペレーティングシステム101の多くを実施する標準の1組の関数およびアプリケーションプログラミングインターフェイスを指定する。UNIX(登録商標)オペレーティングシステムの変形から出発するポイントは、Linuxオペレーティングシステム101のオペレーティングシステムインターフェイスにあり、カーネル102によって直接維持されているものではない。むしろ、アプリケーション106がシステムライブラリ104への呼出しを行い、システムライブラリ104が必要に応じてカーネル102のオペレーティングシステム関数を呼び出す。システムユーティリティ(デーモン)108は、ユーザによって呼び出されることなく、受信するネットワーク接続への応答、ハウスキーピング、またはメンテナンスユーティリティなど個々の特化された管理タスクを実行するプログラムである。カーネル102は、単一のモノリシックアーキテクチャ(Linuxオペレーティングシステム101のUNIX(登録商標)系統を示す)として作成される。単一バイナリの主な理由は、リソースの力(power)、権限(authority)、制御(Control)、および調整(coordination)を集中させることによってLinuxオペレーティングシステム101の全体的な性能を向上させることである。カーネルコードおよびデータの構造など、すべてがカーネル102内で密結合されている。すべてが単一のアドレス空間に保持されており、したがってあるプロセスがオペレーティングシステム関数を呼び出すとき、またはハードウェア割り込みが配信されるときに、高くつく(expensive)コンテキスト切替は不要である。コアスケジューリングおよび仮想メモリコードだけがこのアドレス空間を占めているのではなく、すべてのデバイスドライバ110、ファイルシステム、およびネットワーキングコードを含むすべてのカーネルコードが同じ単一のアドレス空間に存在している。
こうした密結合設計に関する問題は、その脆弱さである。単一のアドレス空間内のデバイスドライバ110が公開されることによって、こうしたデバイスドライバは、Linuxオペレーティングシステム101をデッドロックさせる可能性のある信頼できないコードを収納するトロイの木馬として働くおそれがある。ほとんどすべての場合、アプリケーション106が入力/出力装置114と通信するための唯一の方法は、カーネルモードのデバイスドライバ110を使用するものである。カーネルモードは、Linuxオペレーティングシステム101の最も特権的な実行モードである。特権的とは、Linuxオペレーティングシステム101がデバイスドライバ110の稼働中のコードを監視したり、メモリへのアクセスを保護したりする方法がないことを意味する。したがって、誤ったカーネルモードのデバイスドライバ110は、Linuxオペレーティングシステム101による監督無しに、所望のどんなことでも行うことができる。一例には、ハードウェア割り込み生成の処理の問題がある。ハードウェア割り込みの非同期性により、割り込みハンドラのほんの1つのプログラミングエラーがシステムをデッドロックさせたり、まれにしか復元できない異常なやり方でデータを破損させたりする可能性がある。
近年の装置は、数が少なく、コンピュータとの相互接続が単純であったため、安定していたように思われる。今日装置は急増し、ユーザの利益にはなっているが、こうした急増には、アプリケーション106と入力/出力装置114との間のリンクの提供に必要なデバイスドライバの数の著しい増加が伴う。誤ったデバイスドライバの信頼性の向上に対する解決策が無ければ、ユーザは、最終的にはもはや所望のコンピューティング体験の提供をシステム100に安心して委ねることができなくなり、それによってシステム100に対する需要が市場から減ることになる。したがって、既存のシステムに関連する前記および他の問題を回避または低減しながら装置をサービスとして表す方法およびシステムが必要である。
本発明によれば、装置をサービスとして表すシステム、方法、およびコンピュータ可読媒体が提供される。本発明のシステム形態は、ネットワーク式システムにおいてコンピュータサブシステムである装置を含む。装置は、その装置で実行する1つまたは複数のサービスを含む。各サービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびサービスの1つまたは複数の挙動を記述する契約(contract)を含む。
本発明の別のシステム形態は、ネットワーク式コンピュータシステムにおけるターミナルサービスを含む。ターミナルサービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびディスプレイサービスの1つまたは複数の挙動を記述する契約を備えるディスプレイサービスを含む。ターミナルサービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびキーボードサービスの1つまたは複数の挙動を記述する契約を備えるキーボードサービスをさらに含む。ターミナルサービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびマウスサービスの1つまたは複数の挙動を記述する契約を備えるマウスサービスをさらに含む。
本発明の方法の形態は、サービスとしての装置により入力/出力イベントを処理するコンピュータ実施方法を含む。方法は、ある入力/出力イベントのための装置を表すサービスを要求するステップを含む。サービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびサービスの1つまたは複数の挙動を記述する契約を含む。方法は、入力/出力イベントを含むカスタマイズ可能なタグベースのメッセージを受信するステップをさらに含む。方法は、入力/出力イベントを削除するようサービスに要求するステップをさらに含む。
本発明のコンピュータ可読形態は、サービスとしての装置により入力/出力イベントを処理するコンピュータ実施方法を実施するコンピュータ実行可能命令を有するコンピュータ可読媒体を含む。方法は、ある入力/出力イベントのための装置を表すサービスを要求するステップを含む。サービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポート、およびサービスの1つまたは複数の挙動を記述する契約を含む。方法は、入力/出力イベントを含むカスタマイズ可能なタグベースのメッセージを受信するステップをさらに含む。方法は、入力/出力イベントを削除するようサービスに要求するステップをさらに含む。
本発明の別のシステム形態は、ネットワーク式システムにおいてコンピュータサブシステムである装置を含む。装置は、装置で実行する1つまたは複数のサービスを含む。各サービスは、ユニフォームリソース識別子を含む識別子によって識別可能なポートを含む。 装置は、ネットワーク式システムに結合してカスタマイズ可能なタグベースのメッセージを交換することができる。
下記の詳細な説明を添付の図面と併せ読むことによって上記の態様、および本発明の付随的な利点の多くがよりよく理解できるようになるにつれて、それらをより容易に理解できるようになる。
本発明の様々な実施形態は、装置を、パーソナルコンピュータなど他の装置と通信することができるWebサービスまたは専用サーバに変換する。本発明の様々な実施形態によって、低レベルアスペクトの様々なデバイスドライバが装置に常駐できるようになり、それによって装置が従来の仕様との互換性を備えている必要性がなくなる。本発明の様々な実施形態によって、低レベルソフトウェアをすでに組み込んだ状態で様々な装置を工場から出荷することができ、したがってユーザは、デバイスドライバをインストールし、アップグレードする体験を処理する必要性から解放される。本発明の様々な実施形態では、各装置は、ユニフォームリソース識別子(URI)によって識別可能なネットワークノードであることが好ましい。「サービス」という用語は、本明細書で使用する場合、疎結合のサービス(loosely coupled service)の包含を意味する。
図2Aは、オペレーティングシステムサービスまたは別のサービスの唯一の称号を構成する、URI210A−1、210B−1によって識別可能なポート、および片務契約(unilateral contract)210A−2、210B−2をそれぞれ備える2つのオペレーティングシステムサービス210A、210Bを示している。装置は、サービス210A、210Bなどのサービスとして表すことができる。サービスのポートには、片務契約によって指定された挙動タイプが与えられている。装置の好ましい通信機構は、プログラムによる配線式のポートを介するものである。あるポートの挙動タイプが別のポートの挙動タイプと互換性がある場合、配線式ポートは可能である。ポートが互いにプログラムによって配線されている(URI210A−1、210B1により識別可能)とき、サービス210A、210Bは、メッセージを互いに送信することによって通信する。簡単に言えば、片務契約210A−2、210B−2は、サービス210A、210Bに流れ込む、またはそこから流れ出すメッセージの順序を指定する言語で表される。
リソースの共有は、リソースの挙動と互換性のある方法で、対話を介して可能である。(サービスによって表される)リソースの挙動は、片務契約で表される。サービスは、片務契約によって規定することができる。したがって、片務契約を介してファイルに挙動条件を添付して、アクセス制御を管理することができる。図2Bに片務契約210A−2の一部を示している。行210A−3は、キーワードUNILATERALCONTRACT、続いて指示子「PDA」、および片務契約210A−2の定義を区切る1対の開閉の中括弧「{}」を含む。行210A−4は、ファイル名「FILENAME」をパラメータとみなすOPEN操作のシグニチャを宣言する。オペレーティングシステムサービス210Aを使用するために、外部サービスは、OPEN操作を介して開くべきファイルの名前を指定する。したがってOPEN操作は、セッションごとに他のサービスによって呼び出される第1の操作となるはずである。PLAY操作は、行210A−5で宣言されている。PLAY操作は、別のサービスのポートをパラメータとみなす。PLAY操作が他のサービスによって呼び出されると、オペレーティングシステムサービス210Aは、開いたファイルからデータのストリームを読み取り、読み取ったデータを所与のサービスのポートに送信する。オペレーティングシステムサービス210Bなどの他のサービスは、行210A−6で宣言されているRECORD操作を介して、開いたファイルに情報を記録することもできる。RECORD操作は、データをパラメータとみなす。このデータは、RECORD操作によって開いたファイルに書き込まれる。所望のすべての操作が開いたファイルに対して実行されると、行210A−7で宣言されているCLOSE操作を介して開いたファイルを閉じることができる。CLOSE操作は、ファイル名「FILENAME」を引数とみなし、したがってCLOSE操作はどのファイルを閉じるべきかがわかる。
行210A−8〜210A−9は、オペレーティングシステムサービス210Aの挙動を含む。行210A−8は、挙動センテンスB=OPEN.BPRを含む。ここでは、Bは挙動ルール、OPENは、オペレーティングシステムサービス210Aを使用して呼び出される第1の操作がOPEN操作であることを示し、ピリオド「.」は、OPEN操作の呼出しの後に追加の挙動が続くことを示し、BPRは、行210A−9でさらに定義されている第2の挙動センテンスを指す。行210A−9は、次の挙動センテンスBPR=PLAY.BPR+RECORD.BPR+CLOSEを含む。ここでは、BPRは第2の挙動を示し、PLAY.BPRはPLAY操作を呼び出し、次いで第2の挙動が再度続く(再帰)ことを示し、RECORD.BPRはRECORD操作を呼び出し、次いで再帰的に第2の挙動が続くことを示し、CLOSEはCLOSE操作の呼出しを示し、プラス記号「+」は、オペレーティングシステムサービス210Bなどの他のサービスがPLAY操作、RECORD操作、およびCLOSE操作の間で呼出しを行うことができる選択肢を示す。
図2Cに片務契約210B−2の一部を示している。行210B−3は、キーワードUNILATERALCONTRACT、続いて指示子「SPEAKER」、および片務契約210B−2の部分の定義を区切る1対の開閉の中括弧「{}」を含む。行210B−4は、ファイル名「FILENAME」をパラメータとしてみなすOPEN操作のシグニチャを宣言する。REPRODUCE操作は、行210B−5で宣言されている。REPRODUCE操作は、別のサービスのポートをパラメータとみなす。CLOSE操作は、行210B−6で宣言されており、ファイル名「FILENAME」を引数として扱い、したがってCLOSE操作はどのファイルを閉じるべきかがわかる。
行210B−7〜210B−8は、オペレーティングシステムサービス210Bの挙動を含む。行210B−7は、挙動センテンスB=OPEN.BPを含む。ここでは、Bは挙動ルール、OPENは、オペレーティングシステムサービス210Bによるセッションで呼び出される第1の操作がOPEN操作であることを示し、ピリオド「.」は、OPEN操作の呼出しの後に追加の挙動が続くことを示し、BPは、行210B−8でさらに定義されている第2の挙動センテンスを指す。行210B−8は、次の挙動センテンスBP=REPORDUCE.BP+CLOSEを含む。ここでは、BPは第2の挙動を示し、REPRODUCE.BPはREPRODUCE操作を呼び出し、次いで第2の挙動が再度続く(再帰)ことを示し、CLOSEはCLOSE操作の呼出しを示し、プラス記号「+」はオペレーティングシステムサービス210Aなどの外部サービスがREPRODUCE操作およびCLOSE操作の間で呼出しを行うことができる選択肢を示す。
片務契約210A−2がサービス210Bによって受け入れられ、片務契約210B−2がサービス210Aによって受け入れられると、サービス210Aとサービス210Bとの間の通信のインスタンスが作成される。各片務契約210A−2、210B−2は、サービス210A、210Bによって、単なる実行の約束によって受け入れられることができるが、こうした片務契約に表される挙動に従って片務契約210A−2、210B−2の実行によって受け入れられることが好ましい。したがって、サービス210Bが片務契約210A−2の挙動センテンス210A−8、210A−9によって表されるような挙動に従い、それを実行する場合、サービス210Bは、約束されたサービスを提供しなければならない。例えば、オペレーティングシステムサービス210Bが、まず挙動センテンス210A−8によって指定されているようにOPEN操作を呼び出すことによって動作し、次いで行210A−9に示す挙動センテンスによって指定されているようにPLAY操作またはRECORD操作またはCLOSE操作のいずれかを呼び出す場合、オペレーティングシステムサービス210Aは、要求された呼出しに従って、ファイルを開く、ファイルの内容を再生する、内容をファイルに記録する、ファイルを閉じるなど、所望のサービスを提供する。
図2Dに、いくつかの装置を、識別子(URIなど)212B〜220Bによって識別可能なポート、および片務契約212A〜220Aをそれぞれ備えるサービス212〜220として示している。ディスプレイサービス212は、コンピュータの視覚出力装置であるディスプレイを表す。ディスプレイは一般に、CRTベースのビデオディスプレイであるが、次第にLCDベースまたはガスプラズマベースのフラットパネルディスプレイから成るものが増えつつある。マウスサービス214は、一般の位置決め装置である機械式マウスである。機械式マウスの基本的な特徴は、片手で握るように設計されている平底のケースであり、上部には1つまたは複数のボタン、下部には多方向検出装置(multi−directional detection device)(通常、ボールおよび何らかのシャフトエンコーダ)があり、マウスをコンピュータに接続するケーブルがある。ユーザは一般に、マウスをある面(デスクトップなど)上で移動させることによって画面上のカーソルを制御する。マウスは、相対的な位置決め装置である。というのは、マウスの移動には定義された制限がなく、ある面上にマウスを配置しても、特定の画面位置に直接対応付けられないからである。画面上で項目またはコマンドを選択するには、ユーザは、マウスのボタンのうちの1つを押して「マウスクリック」を生成する。キーボードサービス216は、タイプライタのキーボードに似ており、ユーザからコンピュータまたはデータ通信回路に情報を運ぶ1組のスイッチを備えるハードウェアユニットであるキーボードを表す。PDAサービス218は、個人用管理(カレンダ、ノートテーキング(note−taking)、データベース、計算機など)、および通信など、特定の機能を提供するように設計された軽量コンピュータであるPDAを表す(PDAサービス218の片務契約218Aの一例には、片務契約210A−2がある)。より高度なPDAは、音楽の再生などマルチメディア機能も提供する。多くのPDAは、入力については、キーボードまたはマウスの代わりにペンまたは他の位置決め装置に依存するが、一部のPDAには、タッチタイピングには小さすぎるが、ペンまたは位置決め装置とともに使用することができるキーボードを提供するものもある。PDAは、データの記憶については、電力を消費するディスクドライブの代わりにフラッシュメモリに依存する。ラウドスピーカサービス220は、デジタル符号化サウンドを含むカスタマイズ可能なタグベースのメッセージを受け付け、メッセージの内容をユーザが聞き取るのに十分大きいサウンドに変換する装置であるラウドスピーカを表す(ラウドスピーカサービス220の片務契約220Aの一例には、片務契約210B−2がある)。
従来、ディスプレイサービス212、マウスサービス214、キーボードサービス216、PDAサービス218、およびラウドスピーカサービス220によって表される各装置は、個別のデバイスドライバを必要としていたが、本発明の様々な実施形態によって、サービス212〜220のうちの1つによって表される各装置の特定のデバイスドライバが不要になる。様々なサービス212〜220が分散型オペレーティングシステム224および最終的には識別子(URIなど)226Bおよび片務契約226Aによって識別可能なアプリケーションサービス226によって表されるアプリケーションと通信するには、1つのネットワークデバイスドライバ222のみが存在していればよい。
図2Eは、識別子(URIなど)228Bによって識別可能なポート、および片務契約228Aを備える複合サービス(composed service)228を示している。複合サービス228は、マウスサービス214、キーボードサービス216、およびディスプレイサービス212から成る。一般に、ディスプレイ、マウス、およびキーボードは、グループとして動作する。複合サービス228は、キーボードサービス216の変化をサブスクライブし、キーボードサービス216によってキーボードイベントが生成されるとそれらを消費し、対応するキーボードイベントを生成する。各キーボードイベントにおける修飾キーの状態が注目され、したがって修飾キーをマウスイベントに結び付けることができるようになる。複合サービス228は、マウスサービス214の変化をサブスクライブし、マウスイベントが生成されるとそれらを消費し、(マウスイベントの)相対的なマウスモーションを絶対的なマウスモーションに変換し、画面上のカーソルの絶対位置を更新し、対応する絶対的なマウスイベントを生成する。各キーボードイベントにおける修飾キーの状態が注目され、したがって修飾キーをマウスイベントに結び付けることができるようになる。
図2Fは、ディスプレイサービス212、マウスサービス214、およびキーボードサービス216の状態を含む複合サービス228の状態を保持するカスタマイズ可能なタグベースの文書254を示している。カスタマイズ可能なタグベースの文書254は、複合サービス228の情報サービス(図示せず)によって生成することが可能である。カスタマイズ可能なタグベースの文書254は、開始タグ254A<C:INFO>とその対の終了タグ254L</C:INFO>との間で定義される情報要素を含む。タグ254Aと254Lとの間には、キーボードサービス216のデータサービスへのURIを含むタグ<C:KEYBOARDDATAURI>を定義する行254Bがある。タグ254Aと254Lとの間には、マウスサービス214のデータサービスへのURIを含むタグ<C:MOUSEDATAURI>を定義する行254Cがある。行254Dは、ディスプレイサービス212のカーソル位置サービスへのURIを含むタグ<C:DISPLAYCURSORPOSITIONURI>を定義している。行254Eは、ディスプレイサービス212によって表されるディスプレイの幅を含むタグ<C:DISPLAYWIDTH>を定義している。行254Fは、ディスプレイサービス212によって表されるディスプレイの高さを含むタグ<C:DISPLAYHEIGHT>を定義している。タグ254Aと254Lとの間にさらに埋め込まれているのは、タグ254H<C:MOUSEPOSITION>とその対の一方の終了タグ254K</C:MOUSEPOSITION>との間のマウス位置要素である。タグ254Hと254Kとの間には、マウスの横方向(horizontal)位置を示すタグ<C:H>を定義する行254Iがある。行254Jは、マウスの縦方向(vertical)位置を示すタグ<C:V>を定義している。
図2Gには、複合サービス228のデータサービス(図示せず)によって再生可能なカスタマイズ可能なタグベースの文書232を示している。カスタマイズ可能なタグベースの文書232は、マウスサービス214およびキーボードサービス216によって生成され、しかしアプリケーションサービス226によってまだ消費されていないキーボードイベントおよびマウスイベントを保持する。アプリケーションサービス226は通常、データサービスの変化をサブスクライブし、したがって新しいイベントが生成され、複合サービス228のデータサービスに現れると、アプリケーションサービス226に通知される。カスタマイズ可能なタグベースの文書232は、タグ232A<C:DATA>とその対の一方の終了タグ232AA</C:INFO>との間で定義されたデータ要素を含む。タグ232Aは、名前空間を定義する属性XMLNS:Cを含んでおり、アドレス「HTTP://SCHEMAS.COM/COORDINATOR」で見つけることができる。タグ232Aと232AAとの間には、キーボードサービス216によって生成されたキーボードイベント、またはマウスサービス214によって生成されたマウスイベントのいずれかを捕捉するゼロ個以上のデータ項目要素が含まれている。キーボードイベントの一例は、タグ232B<C:DATAITEM>とその対の一方の終了タグ</C:DATAITEM>232Lとの間で定義されている。時間要素は、行232Dでタグ<C:TIME>によって定義されている。時間要素は、システムグローバル時間(system global time)を使用してデータ項目要素が生成されたときを指定している。時間要素によってイベントが行われた順序の把握が容易になる。イベント間の時間が短い(マウスクリックなど)、またはイベントが異なる装置で行われた(コントロール−クリックなど)場合でさえ、行232E〜232Gは、キーボードサービス216によって表されるキーボードの修飾キーの状態を捕捉する。行232Eは、タグ<C:CTRLKEY>を介してコントロールキーの状態を含む。行232Fは、タグ<C:ALTKEY>によって定義されるALTキーの状態を含む。行232Gは、タグ<C:SHIFTKEY>を介してシフトキーの状態を含む。
キーボード上で作動されたキーは、タグ232Η<C:KEYSTROKE>とその対の一方の終了タグ232Κ</C:KEYSTROKE>との間に定義されているキーストローク要素によって捕捉される。タグ232Hと232Kとの間には、行232Iでタグ<C:EXTENDED>によって定義されている要素が含まれており、ここには、下記の<C:CΟDE>要素によって表されるコードがファンクションキーなどの拡張コードである場合、TRUE値が含まれる。行232Jは、キーボード上のキーの作動から生成された文字コードを含むタグ<C:CΟDE>を定義している。
カスタマイズ可能なタグベースの文書232は、ゼロ個以上のマウスイベントを含む。マウスイベントの一例は、タグ232M<C:DATAITEM>とその対の一方の終了タグ232Ζ</C:DATAITEM>との間で定義されているデータ項目要素によって捕捉される。時間要素は、行232Oでタグ<C:TIME>によって定義されている。時間要素は、データ項目要素が生成されたときを指定する。行232P〜232Rは、キーボードサービス216によって表されるキーボード上の修飾キーの状態を捕捉するタグ<C:CTRLKEY>、<C:ALTKEY>、および<C:SHΙFTKEY>を含む。シフトキーの状態は、行232Rのタグ<C:SHIFTKEY>によって捕捉される。マウスイベントは、タグ232S<C:MOUSE>とその対の一方の終了タグ232Y</C:MOUSE>との間で捕捉される。マウスボタンが作動されると、行232Tのタグ<C:BUTTONS>は、ボタンコードを捕捉する。タグ232U<C:POSITION>とその対の一方の終了タグ232X</C:POSITION>は、マウスの位置に関する情報を含む。行232Vは、マウスの横方向の位置を示すタグ<C:H>を記述している。行232Wは、マウスの縦方向の位置を示すタグ<C:V>を含む。
図2Hは、識別子(URIなど)214C−1によって識別可能なポート、および片務契約214C−2を備える情報サービス214C、識別子(URIなど)214D−1によって識別可能なポート、および片務契約214D−2を備えるデータサービス214Dから成るサービスとしてマウスサービス214を示している。マウスサービス214は、マウスへのインターフェイスを提供する。マウスを動かす、またはマウスボタンを押す、放すなど、マウスの物理的な状態が変わると、マウスイベントがマウスサービス214によってデータサービス214Dに挿入される。アプリケーションサービス226などのアプリケーションサービスは、データサービス214Dをポーリングすることによって直接マウスイベントを読み取ることはできるが、アプリケーションサービス226は、変更があったときはいつでもデータサービス214Dがアプリケーションサービス226に知らせることができるようにすることによって、こうした手動の読み取りを回避することができる。マウスモーションは、マウス内のエンコーダによって自然に生成されるどんな単位でも相対的な変化として報告されることが好ましい。有限数のマウスイベントをデータサービス214Dに挿入することができる。データサービス214が扱うことができるのと同じ数のイベントをデータサービス214Dがすでに含んでいる場合、新しいマウスイベントは破棄されることが好ましい。
図2Iに、要求に応じて情報サービス214Cによって生成できるカスタマイズ可能なタグベースの文書234を示している。情報サービス214Cは、マウスサービス214が表すマウスのプロパティのまとめを保持する。タグ234A<M:INFO>は、マウスサービス214の名前空間を定義する属性XMLNS:Mを含む。属性XMLNS:Mは、アドレス「HTTP://SCHEMAS.COM/M/I」を含むように定義されている。行234Bは、マウスサービス214によって表されるマウス上のボタンの数を示すタグ<M:ΒUTTONCOUΝΤ>を定義している。アプリケーションサービス226は、タグ<M:BUTTONCOUNT>を使用して、そのユーザインターフェイスを構成することができる。行234Cは、好ましくはある適当な長さ寸法当たりのシャフトエンコーダユニットによるマウスモーションイベントのスケールを示すタグ<M:MOTIONSCALE>を定義する。適当な長さ寸法にはインチがあるが、他を使用してもよい。
図2Jは、アプリケーションサービス226によってまだ用い尽くされていないマウスイベントを保持するデータサービス214Dによって管理されるカスタマイズ可能なタグベースの文書236を示す。タグ236A<M:EVENTS>およびその対の一方の終了タグ236J</M:EVENTS>は、イベント要素を定義している。タグ236Aと236Jとの間には、ゼロ個以上のイベント要素が含まれている。イベント要素の一例は、タグ236B<M:EVENT>とその対の一方の終了タグ</M:EVENT>236Iとの間で定義されている。行236Cのタグ<M:TIME>によって定義されている時間要素は、システムグローバル時間を使用してイベント要素が生成されたときを指定する。時間要素によって、イベントが行われた順序の把握が容易になる。行236Dは、好ましくはビットがマウスボタンの状態を指定するものと解釈される符号なし整数のタグ<M:BUTTONS>を定義している。左ボタンは10進数字の数字4として識別されることが好ましい。中央ボタンは10進数字の数字2として識別可能であり、右ボタンは10進数字の数字1として識別可能である。タグ<M:BUTTONS>によって定義されるボタン要素がない場合、アプリケーションサービス226は、最後のマウスイベント以降、マウスボタンの状態が変わっていないと解釈することができる。タグ<M:BUTTONS>によって定義されるボタン要素が存在する場合、アプリケーションサービス226は、最後のマウスイベント以降、マウスボタンの状態が変わっている可能性があると解釈することができる。タグ236E<M:MOTION>とその対の一方の終了タグ236H</M:MOTION>は、最後のマウスイベント以降、シャフトエンコーダユニットに対してマウスがどれだけ移動したかを指定する。タグ236Eによって定義されるモーション要素がない場合、アプリケーションサービス226は、最後のマウスイベント以降、マウスは移動していないと解釈することができる。タグ236Eと236Hとの間には、マウスの横方向の動きのデルタ変化を示すタグ236F<M:DH>がある。タグ236G<M:DV>は、マウスの縦方向の動きのデルタ変化を示す。
複合サービスとしてのキーボードサービス216は、識別子(URIなど)216C−1によって識別可能なポート、および片務契約216C−2を備える情報サービス216C、およびURI216D−1で識別可能なポート、および片務契約216D−2を備えるデータサービス216Dから成る。図2Kを参照されたい。キーボードサービス216は、標準キーボードへのインターフェイスを提供する。キーが作動されたり、修飾キーが押されたり放されたりすると、キーボードイベントがデータサービス216Dに自動的に挿入される。アプリケーションサービス226は、生成されたイベントをデータサービス216Dに直接要求したり、そのイベントストアの任意の変化をアプリケーションサービス226に自動的に知らせるようデータサービス216Dに要求したりすることができる。通常、キーの作動は、ユニコード文字として生成されることが好ましい。実際にはキーボードではないもの(ディスプレイ上の仮想キーボードなど)によってキーボードイベントを生成できるようにするには、普通のキーの作動を放したことが報告されないことが好ましい。有限数のキーボードイベントをデータサービス216Dに挿入することができる。最大数のイベントがすでに含まれている場合、データサービス216Dは、新しいキーボードイベントを破棄することが好ましい。
図2Lは、データサービス216Dのイベントストアとして働くカスタマイズ可能なタグベースの文書238を示す。タグ238A<K:EVENTS>およびその対の一方の終了タグ238M</K:EVENTS>は、キーボードイベントに関するゼロ個以上のイベント要素を含むイベント要素を定義している。タグ238Aは、キーボードサービス216の名前空間を定義する属性XMLNS:Kを含む。属性XMLNS:Kは、アドレス「HTTP://SCHEMAS.COM/K/D」を含む。イベント要素の例は、タグ238B<K:EVENT>とその対の一方の終了タグ238L</K:EVENT>との間で定義されている。時間要素は、好ましくはシステムグローバル時間を使用してイベント要素が生成されたときを指定するタグ238C<K:TIME>によって定義される。時間要素によって、アプリケーションサービス226は、イベントが行われた順序を把握することができる。タグ238D<K:CTRLKEY>は、キーボード上のコントロールキーの状態を示す。タグ238E<K:ALTKEY>は、キーボード上のALTキーの状態を示す。ALTキーは、別のキーとともに使用して何らかの特殊な特徴または機能を生成するものであり、一般にALTという文字が付されている。タグ238Fは、別の修飾キー<K:SHIFTKEY>を定義する。この修飾キーは、例えば文字キーを押すと大文字を生成するなど、(別のキーとともに押すと)そのキーに別の意味を与えるキーボードキーを示す。タグ238G<K:WINDOWKEY>は、ウィンドウキーの状態を含む。タグ238Bと238Lとの間で定義されているイベント要素内のタグ238D〜238Gの外観は任意である。タグ238D〜238Gが存在していない場合、アプリケーションサービス226は、最後のキーボードイベント以降、修飾キーの状態が変わっていないと推測することができる。修飾タグ238D〜238Gのうちの1つが存在する場合、アプリケーションサービス226は、最後のキーボードイベント以降、修飾キーのうちの1つの状態が変わっている可能性があると推測することができる。タグ238H<K:KEY>およびその対の一方の終了タグ238K</K:KEY>は、キーストロークの状態を定義する。タグ238Hと238Kとの間には、タグ238I<K:SPECIALCODE>がある。タグ238IがデフォルトのFALSE値を含んでいる場合、タグ238J<K:CODE>はユニコード文字を含む。そうでない場合、タグ238IはTRUE値を含み、タグ238J<K:CODE>は特殊キーコードを含む。TABおよび「CTRL+I」のようなものの間の相違を伝えることができるように、TABおよびENTERなどのキーは、特殊キーコードとして報告される(タグ238I<K:SPECIALCODE>をTRUEと設定)。
図2Mに、要求に応じて情報サービス216Cによって生成されるカスタマイズ可能なタグベースの文書240を示している。タグ240A<K:INFO>およびその対の一方の終了タグ240F</K:INFO>は、情報要素を定義する。情報要素は、キーボードサービス216の名前空間を定義する属性を含む。属性は、アドレス「HTTP://SCHEMAS.COM/K/I」を含むXMLNS:Kである。タグ240Aと240Fとの間には、キーボードにF1からF12とラベル付けされたキーなどのファンクションキーがある場合、値TRUEを有するタグ240B<K:HASFUNCTIONKEYS>が含まれている。キーボードに4つの矢印キー、INSERTキー、DELETEキー、HOMEキー、ENDキー、PAGE UPキー、PAGE DOWNキーなどのナビゲーションキーがある場合、タグ240C<K:HASNAVIGATIONKEYS>はTRUEに設定される。キーボードに数字キーパッドがある場合、タグ240D<K:HASNUMERICPADKEYS>はTRUEに設定される。NUMLOCKキーの状態変化は、アプリケーションサービス226に報告されない。代わりに、NUMLOCKキーは、数字キーパッドの他のキーによって送信されたコードを変更し、キーボードサービス216によって完全に処理される。キーボードにウィンドウズ(登録商標)キーがある場合、タグ240E<K:HASWINDOWS(登録商標)KEYS>はTRUEに設定される。
図2Nは、互いに重なり合うウィンドウ242Aおよびウィンドウ242Bを含むディスプレイ242を示している。各ウィンドウ242A、242Bは、それ自体の境界を有し、異なる文書または同じ文書内の別のビューを含むことができる。画面上のカーソル242Cは、わずかに左に傾いた矢印など、マウスが移動した場所をマークする特殊インジケータである。ディスプレイ242は、出力装置であり、サービス212C〜212Hから成る複合サービスであるディスプレイサービス212によって表されることが好ましい。ディスプレイサービス212は、ディスプレイ242へのインターフェイスを提供する。画面上でのすべてのドローイングは、ディスプレイ242の矩形エリアであるウィンドウ242A、242Bなどのウィンドウ内で行われることが好ましい。各ウィンドウは、それ自体の一意のURIの組を有していることが好ましく、それぞれは、さまざまな方法で指定することができる1組のピクセルを保持する。アプリケーションサービス226は、カスタマイズ可能なタグベースのメッセージをディスプレイサービス212に送信することによってウィンドウ242A、242Bの属性を作成し、変更する。
ディスプレイサービス212は、URI212C−1で識別可能なポート、および片務契約212C−2を備える情報サービス212Cを含む。図2Oを参照されたい。情報サービス212Cは、カスタマイズ可能なタグベースの文書244を含む。図2Pを参照されたい。タグ244A<D:INFO>およびその対の一方の終了タグ244E</D:lNFO>は、ディスプレイ242のプロパティのまとめを保持する情報要素を定義する。タグ244B<D:W>は、ディスプレイ242の画面の幅のピクセル単位によるサイズを含む。タグ244C<D:H>は、ディスプレイ242の画面の高さのピクセル単位によるサイズを記述する。タグ244D<D:FORMAT>は、ディスプレイ242の画面のネイティブのピクセル形式を記述する。
ディスプレイサービス212は、識別子(URIなど)212D−1によって識別可能なポート、および片務契約212D−2を備えるカーソル形状サービス212Dを含む。図2Oを参照されたい。カーソル形状サービス212Dは、画面上のカーソル242Cの現在の形状を記述する。形状は、カスタマイズ可能なタグベースの文書246によって記述される。図2Qを参照されたい。タグ246A<D:SHAPE>およびその対の一方の終了タグ246G</D:SHAPE>は、画面上のカーソル242Cの形状要素を定義する。タグ246B<D:IMAGE>は、32×32の2レベルビットマップを表す(base64表記を使用して符号化された)128バイトブロックの画像データを含むことが好ましい。データは、ネットワークでは、バイト0の最上位ビットがビットマップの位置(0,0)に対応し、バイト127の最下位ビットがビットマップの位置(31,31)に対応するように、バイトオーダーであることが好ましい。また、タグ246C<D:MASK>は、32×32の2レベルビットマップを表す(ベース64表記を使用して符号化された)128バイトブロックのデータを保持する。この場合もまた、タグ246Cによって定義されるマスク要素のデータは、バイト0の最上位ビットがビットマップの位置(0,0)に対応し、バイト127の最下位ビットがビットマップの位置(31,31)に対応するように、ネットワークではバイトオーダーであることが好ましい。マスク要素のビットマップは、どのピクセルが実際に画面上のカーソル242の一部であるかを指定する(1はピクセルが有効であることを意味する)。画面要素のビットマップは、実際のピクセルを指定する(0は黒、1は白を意味する)。画面上のカーソル242Cは、すべてのビットが0である場合にマスク要素のビットマップを指定することによって非表示にすることができる。タグ246D<D:HOTSPOT>およびその対の一方の終了タグ246Η</D:HOTSPOT>は、カーソルのホットスポット(マウスの現在の位置に実際に結合される位置)とカーソルビットマップの位置(0,0)との間のオフセットを指定する。これは、カーソルビットマップ内の位置であることが好ましいが、オフセットには符号が付けられているため、ホットスポットはビットマップの外側の任意の方向にあってもよい。タグ246Dと246Hとの間には、横方向のオフセットを定義するタグ246E<D:DH>がある。タグ246F<D:DV>は、ホットスポット要素の縦方向のオフセットを定義する。
ディスプレイサービス212は、識別子(URIなど)212E−1によって識別可能なポート、および片務契約212E−2を備えるカーソル位置サービス212Eを含む。図2Oを参照されたい。カスタマイズ可能なタグベースの文書248は、画面上のカーソル242Cの現在の、好ましくは絶対位置を記述している。図2Rを参照されたい。タグ248A<D:POSITION>およびその対の一方の終了タグ248D</D:POSΙTION>は、位置要素を定義する。タグ248Aと248Dとの間には、画面上のカーソル242Cの横方向の位置を定義するタグ248B<D:H>がある。画面上のカーソル242Cの縦方向の位置は、タグ248C<D:V>で定義される。タグ248Aは、属性XMLNS:Dを含み、この属性は、アドレス「HTTP://SCHEMAS.COM/P/P」を含むように定義される。
ディスプレイサービス212は、識別子(URIなど)212F−1によって識別可能なポート、および片務契約212F−2を備える1つまたは複数のウィンドウサービス212Fを含む。図2Oを参照されたい。ウィンドウサービス212Fの各インスタンス化は、対応する各ウィンドウ242A、242Bを表す。ウィンドウサービス212Fは、それが表しているウィンドウ242A、242Bを記述するカスタマイズ可能なタグベースの文書250を含む。図2Sを参照されたい。タグ250A<D:WINDOW>およびその対の一方の終了タグ250H</D:WINDOW>は、ウィンドウ要素を定義する。タグ250Aは、ウィンドウ要素の名前空間を示す属性XMLNS:Dを含む。属性XMLNS:Dは、アドレス「HTTP://SCHENAS.COM/D/W」に相当する。タグ250Aと250Hとの間には、ウィンドウサービス212Fによって表されるウィンドウ242A、242Bが表示されるディスプレイ242の情報サービスURI212C−1を含むタグ250B<D:URI>がある。タグ250C<D:T>およびタグ250D<D:L>は、ディスプレイ242の画面上のウィンドウ242A、242Bの左上隅の座標を記述している。ウィンドウ242A、242Bの左上隅は、ディスプレイ242の画面上にあることが好ましい。タグ250E<D:W>およびタグ250F<D:H>は、ウィンドウ242A、242Bのサイズを記述している。タグ250Eまたはタグ250Fがゼロ値を含んでいる場合、ウィンドウ242A、242Bは、ディスプレイ242の画面上のピクセルを覆わず、不可視である。タグ250G<D:DROPTIME>は、ウィンドウ242A、242Bの自動ドロップタイムを記述する。タグ250Gによって定義されたドロップタイム要素の値がゼロ以外である場合、ドロップタイム要素の値が現在のシステムグローバル時間より小さければ、ウィンドウ242A、242Bが自動的に削除される。
ディスプレイサービス212は、識別子(URIなど)212G−1によって識別可能なポート、および片務契約212G−2を備えるウィンドウリストサービス212Gを含む。図2Oを参照されたい。ウィンドウリスト212Gを使用して、ウィンドウスタック順でディスプレイ242の画面上に実際に表示されるウィンドウ242A、242Bのリストを維持する。ウィンドウリストサービス212Gは、ウィンドウ242A、242Bの提示の順を記述するカスタマイズ可能なタグベースの文書252を含む。図2Tを参照されたい。タグ252A<D:WINDOWS>およびその対の一方の終了タグ252D</D:WINDOWS>は、ウィンドウ要素を定義する。1つまたは複数のタグ<D:URI>252B、252Cは、ウィンドウサービスURI212F−1などのウィンドウサービスのURIを含んでいる。タグ252B、252Cは、2つのURI要素を定義する。URI要素の順序は、ディスプレイ242上のウィンドウスタック順を定義する。 リスト内の第1のURI要素は、そのウィンドウがスタックの前部にあることを示し、リスト内の最後のURI要素は、そのウィンドウがスタックの後部にあることを示す。
ディスプレイサービス212は、識別子(URIなど)212H−1によって識別可能なポート、および片務契約212H−2を備える1つまたは複数のウィンドウ更新サービス212Hを含む。図2Pを参照されたい。アプリケーションサービス226は、適切な片務契約212H−2を備えるウィンドウ更新サービス212Hを作成し、ウィンドウ更新サービス212Hをウィンドウ242A、242Bに関連付け、更新要求をウィンドウ更新サービス212Hに送信して、ウィンドウ242A、242Bをリフレッシュする、または塗り直すことによってウィンドウ242A、242Bに関連するピクセルを変更する。アプリケーションサービス226からのデータの各形式は、それ自体の片務契約212H−2をそれぞれ備えるそれ自体のタイプのウィンドウ更新サービス212Hを有していることが好ましい。ウィンドウ242A、242Bに関連するピクセルを変更するのに必要なすべてのパラメータは、ウィンドウ更新サービス212Hの状態の一部であることが好ましい。
図3A〜3Fは、サービスとしての装置によりI/Oイベントを処理する方法300を示している。簡潔にするために、方法300の次の説明は、マウスサービス214(図2I)、キーボードサービス216(図2L)、およびディスプレイサービス212(図2P)に関連して示した様々な要素を参照する。方法300は、開始ブロックから、継続端子(continuation terminal)(「端子A」)と終了端子(「端子B」)との間で定義されている1組の方法ステップ302に進む。1組の方法ステップ302は、キーボードサービスがキーボードイベントを処理するプロセス(図3B参照)を記述している。
方法300は、端子A(図3B)から決定ブロック308に進み、キーボード上のキーが作動されたかどうかを決定するための検査が行われる。回答がNOである場合、方法300は、決定ブロック308に戻り、上述した処理ステップを繰り返す。そうではなく、決定ブロック308に対する回答がYESである場合、方法300はブロック310に進み、キーボードイベントがデータサービス216Dに自動的に挿入される。ブロック312で、キーボードイベントの挿入がアプリケーションサービス226に通知される。アプリケーションサービス226は、時間順に各キーボードイベントを処理する。ブロック314を参照されたい。方法300はブロック316に進み、アプリケーションサービス226は、処理されたキーボードイベントを削除する旨のメッセージをデータサービス216Dに送信する。ブロック318で、キーボードサービス216のデータサービス216Dは、処理されたキーボードイベントを削除する。次いで方法300は終了端子Bに入る。
方法300は、終了端子B(図3A)から、継続端子(「端子C」)と終了端子(「端子D」)との間で定義されている1組の方法ステップ304に進む。1組の方法ステップ304は、マウスサービス214がマウスイベントを処理するプロセス(図3C参照)を記述している。
方法300は、端子C(図3C)から決定ブロック320に進み、マウスが作動されたかどうかを決定するための検査が行われる。決定ブロック320での検査に対する回答がNOである場合、方法300は決定ブロック320に戻り、上述した処理ステップが繰り返される。そうではなく、決定ブロック320での検査に対する回答がYESである場合、方法300はブロック322に進み、マウスイベントがデータサービス214Dに自動的に挿入される。ブロック324で、マウスイベントの挿入がアプリケーションサービス226に通知される。アプリケーションサービス226は、時間順に各マウスイベントを処理する。ブロック326を参照されたい。方法300はブロック328に進み、アプリケーションサービス326は、処理されたマウスイベントを削除する旨のメッセージをデータサービス214Dに送信する。ブロック330で、マウスサービス214のデータサービス214Dは、処理されたマウスイベントを削除する。方法300は続いて終了端子Dに進む。
方法300は、終了端子D(図3A)から、継続端子(「端子E」)と終了端子(「端子F」)との間で定義されている1組の方法ステップ306に進む。1組の方法ステップ306は、ディスプレイサービス212がディスプレイイベントを処理するプロセス(図3D〜3F参照)を記述している。
方法300は、端子E(図3D)から決定ブロック332に進み、ウィンドウを作成すべきかどうかを決定するための検査が行われる。決定ブロック332での検査に対する回答がYESである場合、方法300はブロック334に進み、ウィンドウサービス212Fを識別するURI212F−1を有するウィンドウサービス212Fが作成される。ブロック336で、作成されたウィンドウサービス212Fは、アプリケーションサービス226によってウィンドウリストサービス212Gに挿入され、それによってディスプレイ242の画面上でのウィンドウ242A、242Bのスタック順が制御される。決定ブロック332での検査に対する回答がNOである場合、方法300は別の決定ブロック338に進む。方法300は、ブロック336からも決定ブロック338に進む。決定ブロック338で、ウィンドウ242A、242Bを新しいピクセルで更新する必要があるかどうかを決定するための検査が行われる。回答がYESである場合、アプリケーションサービス226は、所望の更新をウィンドウ更新サービス212Hに送信し、ウィンドウ更新サービス212Hは、対応するウィンドウ242A、242Bを新しいピクセルで塗り直す。ブロック340を参照されたい。決定ブロック338での検査に対する回答がNOである場合、方法は別の継続端子(「端子E1」)に進む。
方法300は、端子E1(図3E)から決定ブロック342に進み、新しいカーソル形状があるかどうかを決定するための検査が行われる。回答がYESである場合、カーソル形状サービス212Dは新しい画像で更新される。ブロック346で、カーソル形状サービス212Dは、新しいマスクで更新される。方法300は、ブロック346から別の決定ブロック348に進む。決定ブロック342に対する回答がNOである場合も、方法300は決定ブロック348に進む。決定ブロック348で、マウスイベントがあったかどうかを決定するための検査が行われる。決定ブロック348での検査に対する回答がYESである場合、画面上のカーソル242Cの位置が更新される。ブロック350を参照されたい。決定ブロック348での検査に対する回答がNOである場合、方法は別の継続端子(「端子F」)に進む。方法300は、ブロック350からも終了端子Fに進む。方法300は、端子F(図3A)から実行を終了する。
本発明の好ましい実施形態を例示し、説明してきたが、本発明の意図および範囲から逸脱することなく様々な変更をそこに加えることができることを理解されたい。
従来のコンピューティングシステム、および入力/出力装置、デバイスドライバ、およびオペレーティングシステムの間の関係を示すブロック図である。 サービスの例を示すブロック図である。 図2Aに示したサービスの片務契約の例を示す構造図である。 図2Aに示したサービスの片務契約の例を示す構造図である。 分散型オペレーティングシステムにおいて装置をサービスとして示すブロック図である。 端末を表す複合サービスの例を示すブロック図である。 図2Eに示した複合サービスのカスタマイズ可能なタグベースの文書の例を示す構造図である。 図2Eに示した複合サービスのカスタマイズ可能なタグベースの文書の例を示す構造図である。 マウスサービスの例を示すブロック図である。 図2Hに示すマウスサービスに関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Hに示すマウスサービスに関連するカスタマイズ可能なタグベースの文書を示す構造図である。 キーボードサービスの例を示すブロック図である。 図2Kに示すキーボードサービスに関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Kに示すキーボードサービスに関連するカスタマイズ可能なタグベースの文書を示す構造図である。 ウィンドウがディスプレイ上に描かれた状態のディスプレイの例を示すブロック図である。 ディスプレイサービスの例を示すブロック図である。 図2Oに示すディスプレイサービスの例に関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Oに示すディスプレイサービスの例に関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Oに示すディスプレイサービスの例に関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Oに示すディスプレイサービスの例に関連するカスタマイズ可能なタグベースの文書を示す構造図である。 図2Oに示すディスプレイサービスの例に関連するカスタマイズ可能なタグベースの文書を示す構造図である。 分散型オペレーティングシステムにおいてサービスとしての装置によりI/Oイベントを処理する方法を示すプロセス図である。 分散型オペレーティングシステムにおいてサービスとしての装置によりI/Oイベントを処理する方法を示すプロセス図である。 分散型オペレーティングシステムにおいてサービスとしての装置によりI/Oイベントを処理する方法を示すプロセス図である。 分散型オペレーティングシステムにおいてサービスとしての装置によりI/Oイベントを処理する方法を示すプロセス図である。 分散型オペレーティングシステムにおいてサービスとしての装置によりI/Oイベントを処理する方法を示すプロセス図である。
符号の説明
210A,210B サービス
210A−1,210B−1 ユニフォームリソース識別子(URI)
210A−2,210B−2 片務契約
212 ディスプレイサービス
212 識別子(URI)
212 片務契約
214 マウスサービス
214 識別子(URI)
214 片務契約
216 キーボードサービス
216 識別子(URI)
216 片務契約
218 PDAサービス218
218 識別子(URI)
218 片務契約
220 ラウドスピーカサービス
220 識別子(URI)
220 片務契約
222 ネットワークデバイスドライバ
224 分散型オペレーティングシステム
226 アプリケーション
226 識別子(URI)
226 片務契約

Claims (12)

  1. マウス装置と接続されたコンピュータにおいて前記マウス装置に関連した情報を提供するためのプログラムを記録した記録媒体であって、前記プログラムは、前記コンピュータを、
    前記マウス装置に対応するマウスサービス手段と、
    として機能させ、
    前記マウスサービス手段は、ユニフォームリソース識別子によって識別可能なポートと、当該マウスサービスの1つまたは複数の挙動を挙動センテンスにより記述した片務契約を有し、当該片務契約を受け入れた他のサービス手段との間で前記マウス装置に関する情報を通信することを特徴とする、記録媒体。
  2. 前記マウス装置に関する情報は、前記マウス装置内のモーションエンコーダで検出されたモーションに対応するマウスイベントであり、
    前記プログラムは、前記コンピュータを、さらにマウスデータサービス手段として機能させ、
    前記マウスサービス手段が、前記マウスイベントを前記マウスデータサービス手段へ格納し、
    前記マウスデータサービス手段が、前記アプリケーションに対応するアプリケーションサービス手段との間で前記マウスイベントを通信し、
    前記マウスサービス手段、前記マウスデータサービス手段及び前記アプリケーションサービス手段は、それぞれユニフォームリソース識別子によって識別可能なポートと、各ポートに対応するサービス手段の1つまたは複数の挙動を挙動センテンスにより記述した片務契約とを有し、当該片務契約を受け入れた他のサービス手段との間で前記ポートを介して前記マウスイベントを通信することを特徴とする請求項1に記載の記録媒体。
  3. 前記マウスデータサービス手段が、前記マウスイベントを当該マウスイベントが発生した時間とともに格納し、前記マウスイベント及び当該マウスイベントが発生した時間を前記アプリケーションサービスとの間で通信することを特徴とする請求項2に記載の記録媒体。
  4. 前記マウスデータサービス手段は、前記マウスイベントを前記アプリケーションサービス手段から要求されるまで保持することを特徴とする請求項2に記載の記録媒体。
  5. 前記プログラムは、前記コンピュータを、
    前記マウス装置に関する情報として前記マウス装置のプロパティを格納するマウス情報サービスとして機能させ、
    前記マウス情報サービスは、ユニフォームリソース識別子によって識別可能なポートと、当該ポートに対応するサービスの1つまたは複数の挙動を挙動センテンスにより記述した片務契約とを有し、当該片務契約を受け入れた他のサービスとの間で前記ポートを介して前記マウス装置のプロパティを通信することを特徴とする請求項1に記載の記録媒体。
  6. マウス装置及びキーボード装置に接続されたコンピュータにおいて前記マウス装置に関連した情報及び前記キーボード装置に関連した情報をアプリケーションへ提供するためのプログラムを記録した記録媒体であって、前記プログラムは、前記コンピュータを、
    前記マウス装置に対応するマウスサービス手段と、
    マウスデータサービス手段と、
    前記キーボード装置に対応するキーボードサービス手段と
    キーボードデータサービス手段と
    として機能させ、
    前記マウスサービス手段は、前記マウス装置内のモーションエンコーダで検出されたモーションに対応するマウスイベントを前記マウスデータサービス手段へ格納し、
    前記マウスデータサービス手段が、前記アプリケーションに対応するアプリケーションサービス手段との間で前記マウスイベントを通信し、
    前記キーボードサービス手段は、前記キーボード装置内で検出されたキーストロークに対応するキーボードイベントを前記キーボードデータサービス手段へ格納し、
    前記キーボードデータサービス手段は、前記キーボードイベントを前記アプリケーションサービス手段へ提供し、
    前記マウスサービス手段、前記マウスデータサービス手段、前記キーボードサービス手段、前記キーボードデータサービス手段及び前記アプリケーションサービス手段は、それぞれユニフォームリソース識別子によって識別可能なポートと、各ポートに対応するサービス手段の1つまたは複数の挙動を挙動センテンスにより記述した片務契約とを有し、当該片務契約を受け入れた他のサービス手段との間で前記ポートを介して前記マウスイベントまたは前記キーボードイベントを通信する、ことを特徴とする記録媒体。
  7. 前記キーボードデータサービス手段は、前記キーボードイベントを当該キーボードイベントが発生した時間とともに格納し、前記キーボードイベント及び当該キーボードイベントが発生した時間を前記アプリケーションサービス手段へ提供することを特徴とする請求項6に記載の記録媒体。
  8. 前記キーボードデータサービス手段は、前記キーボードイベントを前記アプリケーションサービス手段から要求されるまで保持することを特徴とする請求項6に記載の記録媒体。
  9. 前記マウスデータサービス手段は、前記マウスイベントを当該マウスイベントが発生した時間とともに格納し、前記マウスイベント及び当該マウスイベントが発生した時間を前記アプリケーションサービス手段へ提供することを特徴とする請求項6に記載の記録媒体。
  10. 前記マウスデータサービス手段は、前記マウスイベントを前記アプリケーションサービス手段から要求されるまで保持することを特徴とする請求項6に記載の記録媒体。
  11. 前記プログラムは、前記コンピュータを、
    前記キーボード装置に関する情報として前記キーボード装置のプロパティを格納するキーボード情報サービス手段として機能させ、
    前記キーボード情報サービス手段は、ユニフォームリソース識別子によって識別可能なポートと、当該ポートに対応するサービスの1つまたは複数の挙動を挙動センテンスにより記述した片務契約とを有し、当該片務契約を受け入れた他のサービス手段との間で前記ポートを介して前記キーボード装置のプロパティを通信することを特徴とする請求項6に記載の記録媒体。
  12. 前記プログラムは、前記コンピュータを、
    前記マウス装置に関する情報として前記マウス装置のプロパティを格納するマウス情報サービスとして機能させ、
    前記マウス情報サービスは、ユニフォームリソース識別子によって識別可能なポートと、当該ポートに対応するサービスの1つまたは複数の挙動を挙動センテンスにより記述した片務契約とを有し、当該片務契約を受け入れた他のサービスとの間で前記ポートを介して前記マウス装置のプロパティを送受信することを特徴とする請求項6に記載の記録媒体。
JP2004336406A 2003-11-20 2004-11-19 分散型オペレーティングシステムにおけるサービスとしての装置 Expired - Fee Related JP4716715B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/717,830 US8112764B2 (en) 2003-11-20 2003-11-20 Devices as services in a decentralized operating system
US10/717,830 2003-11-20

Publications (2)

Publication Number Publication Date
JP2005158071A JP2005158071A (ja) 2005-06-16
JP4716715B2 true JP4716715B2 (ja) 2011-07-06

Family

ID=34552735

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004336406A Expired - Fee Related JP4716715B2 (ja) 2003-11-20 2004-11-19 分散型オペレーティングシステムにおけるサービスとしての装置

Country Status (5)

Country Link
US (2) US8112764B2 (ja)
EP (1) EP1548590B1 (ja)
JP (1) JP4716715B2 (ja)
KR (1) KR101137140B1 (ja)
CN (1) CN100437531C (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112764B2 (en) 2003-11-20 2012-02-07 Microsoft Corporation Devices as services in a decentralized operating system
US7543126B2 (en) * 2005-08-31 2009-06-02 International Business Machines Corporation Apparatus, system, and method for implementing protected virtual memory subcontexts
US8495613B2 (en) * 2005-12-22 2013-07-23 Microsoft Corporation Program execution service windows
KR100754222B1 (ko) * 2006-06-15 2007-09-03 삼성전자주식회사 네트워크 디바이스간에 서비스 제어 방법 및 그 방법을수행할 수 있는 네트워크 디바이스와 저장 매체
JP2010524120A (ja) * 2007-04-13 2010-07-15 トムソン ライセンシング ユーザインタフェースにおける論理アセットと物理アセットのマッピングシステム及び方法
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
EP2991315A1 (en) * 2014-09-01 2016-03-02 Thomson Licensing A method for assigning a tag with an action within a publish/subscribe network, and a respective publish/subscribe network
EP3286624B1 (en) * 2016-02-12 2022-01-12 Hewlett Packard Enterprise Development LP Keyboard data
CN107784021A (zh) * 2016-08-31 2018-03-09 北京国双科技有限公司 控制数据删除的方法、装置及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002288110A (ja) * 2001-01-12 2002-10-04 Microsoft Corp エレクトロニック周辺デバイスに関係するソフトウェアへのアクセスを周辺デバイスにストアされたアドレスに基づいて行う方法とシステム
JP2003001878A (ja) * 2001-06-20 2003-01-08 Fuji Xerox Co Ltd 情報処理方法、情報処理システム、並びに当該システムに使用される装置
JP2003178017A (ja) * 2001-09-17 2003-06-27 Anyone Kk プログラム内蔵のusbデバイス

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209048B1 (en) * 1996-02-09 2001-03-27 Ricoh Company, Ltd. Peripheral with integrated HTTP server for remote access using URL's
US6370592B1 (en) * 1997-11-04 2002-04-09 Hewlett-Packard Company Network interface device which allows peripherals to utilize network transport services
US6895588B1 (en) * 1999-04-09 2005-05-17 Sun Microsystems, Inc. Remote device access over a network
US6910068B2 (en) * 1999-06-11 2005-06-21 Microsoft Corporation XML-based template language for devices and services
WO2001035531A1 (en) * 1999-11-10 2001-05-17 Screenboard Technologies, Inc. Methods and systems for providing and displaying information on a keyboard
EP1117220A1 (en) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Method and system for protocol conversion
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US6643650B1 (en) * 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
GB2380010A (en) * 2001-09-21 2003-03-26 Hewlett Packard Co Apparatus and method for binding business protocols to contract actions
US7299304B2 (en) * 2001-11-20 2007-11-20 Intel Corporation Method and architecture to support interaction between a host computer and remote devices
DE10203409B4 (de) * 2002-01-28 2004-09-16 Wincor Nixdorf International Gmbh Computersystem mit einem Anwendungsserver, einer Gerätesteuerung mit angeschlossenen Peripheriegeräten und einem Verzeichnisserver
CN1208732C (zh) * 2002-02-01 2005-06-29 上海贝尔阿尔卡特移动通信***有限公司 在基于Web技术的应用***中使用的事件处理方法
US7197751B2 (en) * 2003-03-12 2007-03-27 Oracle International Corp. Real-time collaboration client
US8112764B2 (en) 2003-11-20 2012-02-07 Microsoft Corporation Devices as services in a decentralized operating system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002288110A (ja) * 2001-01-12 2002-10-04 Microsoft Corp エレクトロニック周辺デバイスに関係するソフトウェアへのアクセスを周辺デバイスにストアされたアドレスに基づいて行う方法とシステム
JP2003001878A (ja) * 2001-06-20 2003-01-08 Fuji Xerox Co Ltd 情報処理方法、情報処理システム、並びに当該システムに使用される装置
JP2003178017A (ja) * 2001-09-17 2003-06-27 Anyone Kk プログラム内蔵のusbデバイス

Also Published As

Publication number Publication date
CN100437531C (zh) 2008-11-26
US8112764B2 (en) 2012-02-07
CN1624671A (zh) 2005-06-08
US20120137305A1 (en) 2012-05-31
KR20050049403A (ko) 2005-05-25
US8572632B2 (en) 2013-10-29
EP1548590B1 (en) 2018-04-11
JP2005158071A (ja) 2005-06-16
EP1548590A3 (en) 2007-08-29
EP1548590A2 (en) 2005-06-29
KR101137140B1 (ko) 2012-04-19
US20050114868A1 (en) 2005-05-26

Similar Documents

Publication Publication Date Title
US8572632B2 (en) Devices as services in a decentralized operating system
US7512892B2 (en) Method and system for displaying and interacting with paginated content
US5864668A (en) System for connecting a client to a server with a protocol stack dynamically constructed by using top and bottom service descriptions as query parameters
US6226693B1 (en) Method and system for logical event management
US20060117267A1 (en) System and method for property-based focus navigation in a user interface
KR20040060806A (ko) 메시징 어플리케이션 프로그램에 대한 사용자인터페이스의 템플릿 기반 고객 맞춤화
JP2002024020A (ja) 画面制御プログラム、動的表示情報取得プログラム、画面表示トランザクションプログラム、画面コンポーネントインタフェースプログラム、画面プログラム作成方法
KR20060015705A (ko) 사용자 인터페이스 자동화 프레임워크 클래스 및 인터페이스
KR100562905B1 (ko) 어플리케이션 프로그램 모듈의 동적 배치 방법
US7058657B1 (en) Architecture for developing and reusing analytic and visualization components and methods of use thereof
US10013478B2 (en) System and method for modular business applications
CA2686367A1 (en) Dynamic native editor code view facade
JP2001507491A (ja) 情報処理システム
JP2000099317A (ja) ユーザインタフェース設計装置及び方法
EP2466461B1 (en) System and method for modular business applications
CN101421685B (zh) 通用用户界面命令体系结构
US7490133B1 (en) Context-sensitive content level semantic information propagation system and method
CN114296845B (zh) 界面处理方法、装置、电子装置以及存储介质
JP5275540B2 (ja) アノテーション利用プログラムおよびアノテーション利用装置
CN102841918A (zh) 二进制长对象流化数据处理装置和方法
JP5749611B2 (ja) アノテーションの表示制御システム、アノテーションの表示制御プログラムおよびアノテーションの表示制御方法
JP6002256B2 (ja) アノテーション制御方法、アノテーション制御プログラム及びアノテーション制御システム
JP2002032182A (ja) キー割当てシステムおよびキー割当て方法
CN112416214A (zh) 一种显示设备
CN115310074A (zh) 资源管理方法、资源管理装置、电子设备和可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100827

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101129

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110318

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees