JP2003533766A - 分散コンピューティング環境でサービスにアクセスし、アドレッシングする機構および装置 - Google Patents

分散コンピューティング環境でサービスにアクセスし、アドレッシングする機構および装置

Info

Publication number
JP2003533766A
JP2003533766A JP2001583302A JP2001583302A JP2003533766A JP 2003533766 A JP2003533766 A JP 2003533766A JP 2001583302 A JP2001583302 A JP 2001583302A JP 2001583302 A JP2001583302 A JP 2001583302A JP 2003533766 A JP2003533766 A JP 2003533766A
Authority
JP
Japan
Prior art keywords
service
space
client
message
gate
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.)
Pending
Application number
JP2001583302A
Other languages
English (en)
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003533766A publication Critical patent/JP2003533766A/ja
Pending legal-status Critical Current

Links

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
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5061Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the interaction between service providers and their network customers, e.g. customer relationship management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 分散コンピューティング環境でサービスを通知し、サービスをアドレッシングし、かつ/またはサービスにアクセスするシステムおよび方法を提供する。サービス通知に、特定のサービスにアクセスするためにクライアントが必要とする情報の実質的にすべてが含まれる。サービスは、拡張マークアップ言語(XML)ドキュメントなどのドキュメントが格納されるスペース内でサービス通知をパブリッシュすることができる。通知に、サービスのUniform Resource Identifier(URI)およびXMLスキーマを含めることができる。スキーマによって、サービスの関数を呼び出すのに使用可能なXMLメッセージが指定される。クライアントは、スペースにアクセスし、通知を読みとることができる。クライアントは、通知内のURIおよびスキーマを使用して、サービスにアクセスするためのゲートを構築することができる。クライアントは、サービスの1つまたは複数の関数を呼び出すために、第1のXMLメッセージをURIにあるサービスに送ることができ、この第1のXMLメッセージは、XMLスキーマで指定される。それに応答して、サービスの関数を呼び出すことができる。サービスは、クライアントに第2のXMLメッセージ(たとえば、呼び出された関数の結果を含むメッセージ)を送ることができ、この第2のXMLメッセージは、サービスのXMLスキーマで指定される。

Description

【発明の詳細な説明】
【0001】 (発明の背景) (1.発明の分野) 本発明は、ウェブ中心およびインターネット中心の分散コンピューティング環
境を含む分散コンピューティング環境に関し、より詳細には、ネットワーク・ク
ライアントとサービスを接続するメッセージ・パッシング・モデルに基づく異機
種分散コンピューティング環境に関する。
【0002】 (2.関連技術の説明) インテリジェント型デバイスの普及が進んでいる。このようなデバイスとして
は、スマート・アプライアンス、パーソナル・デジタル・アシスタント(PDA
)、携帯電話、ラップ・トップ・コンピュータ、デスクトップ・コンピュータ、
ワークステーション、メインフレーム、さらにはスーパー・コンピュータなども
ある。ネットワークも、次第に、互いに通信できるインテリジェント型デバイス
を相互接続する一般的な方法となってきている。ただし、さまざまなインテリジ
ェント型デバイスの計算能力と記憶能力には大きな違いがある。能力が制限され
ているデバイスは、省スペース・デバイスまたは「シン(thin)」デバイス呼ばれ
ることがある。シン・デバイスは、より能力の高いデバイスを相互接続するネッ
トワークに参加することができない場合がある。しかし、さまざまな異なる種類
のインテリジェント型デバイスを相互接続することが望ましいと考えられる。
【0003】 ネットワーキング能力の向上はなおいっそう望まれている。ビジネス用ネット
ワークは、仕入れ先と顧客との相互の直接的なやり取りを取り込むように拡大を
続けている。携帯電話、パーソナル・デジタル・アシスタント、およびインター
ネット対応コンピュータは、企業においても家庭においても当たり前のものにな
っている。ホーム・ネットワークは、テレビやステレオ機器などのオーディオ/
ビジュアル機器を家庭用コンピュータ、およびセキュリティ・システムや温度制
御サーモスタットなどのインテリジェント型システムを制御するその他のデバイ
スに相互接続するために使用することができる。ケーブルやASDLなどの高帯
域幅メディアを使用すると、インターネット・アクセス・ビデオ・オンデマンド
、電子商取引などのサービスを向上させることができる。ネットワーク・システ
ムは普及途上にある。正式なネットワークがなくても、インテリジェント型デバ
イスで互いに通信し、またリソースを共有できることが望ましい。
【0004】 現在、従来のネットワークのセットアップ、拡張および管理は複雑な作業であ
る。たとえば、ハードウェアまたはソフトウェアをネットワークに追加するには
、多くの場合、ネットワーク管理者がドライバをロードをし、システムを設定す
る必要がある。ネットワーク構成に小さな変更を加えるにしても、ネットワーク
全体を一定期間停止することが必要になる場合がある。さらに、所定のネットワ
ークで通信するのに必要なインターフェースをサポートしていないインテリジェ
ント型デバイスもある。
【0005】 必要なのは、各種のインテリジェント型デバイスを接続し、通信およびリソー
スの共有を可能にしながら、従来のネットワークに存在する相互運用性と複雑な
構成という問題を回避できる単純な方法である。ネットワークにデバイスを追加
する機能を改善する技術はさまざまなものが存在する。たとえば、ユニバーサル
・シリアル・バス、1394、およびPCIなどの多くの現代的な入出力バスで
は、プラグ&プレイや動的ディスカバリ・プロトコルをサポートしており、新し
いデバイスをバス上に追加する作業が簡単に行える。しかし、これらの解決方法
は、特定の周辺機器バスに制限されており、一般的なネットワークには適してい
ない。
【0006】 最近の技術である、Sun Microsystems,Inc.のJini
では、プリンタおよびディスク・ドライブなどのデバイスをネットワーク上で簡
単に接続し共有できるようにすることを追求している。Jiniを組み込んだデ
バイスは、ネットワークへアナウンスを行い、自デバイスの能力に関する詳細を
知らせ、直ちにネットワーク上の他のデバイスからアクセスできる状態に入る。
Jiniでは、さまざまなデバイスの機能をネットワーク上で共有する分散コン
ピューティングが可能になっている。Jini技術は、ユーザがネットワーク上
でサービスおよびリソースを共有できるようにすることを目指している。Jin
i技術の他の目標は、たとえユーザのネットワーク・ロケーションが変化しても
ユーザはネットワーク上の任意の場所のリソースに簡単にアクセスすることがで
きるようにすることである。Jiniではさらに、デバイス、ソフトウェア、お
よびユーザのネットワークを構築し、保守し、変更するタスクを簡素化すること
も追及している。
【0007】 Jiniでは、各Jini対応デバイスに特定の容量のメモリと処理能力が必
要である。通常、Jini対応デバイスはJava(登録商標)仮想マシン(J
VM)を備えている。そのため、JiniシステムはJava技術を中核とする
。Javaは、Sun Microsystems,Inc.が開発した高水準
オブジェクト指向プログラミング言語である。Javaソース・コードをバイト
コードと呼ばれる形式にコンパイルし、これをJava仮想マシンで実行するこ
とができる。
【0008】 バイトコードは、「実際の」コンピュータ・マシンであるハードウェア・プロ
セッサではなく、仮想マシンにより処理されるコンピュータ・ソース・コードで
ある。仮想マシンは、一般化された機械語命令(バイトコード)を特定の機械語
命令(コンピュータのプロセッサが理解する命令)に変換する。各プラットフォ
ームの仮想マシンに付属する言語を使用し、ソース言語ステートメントを1回だ
けコンパイルして、その仮想マシンをサポートするプラットフォーム上で実行す
ることができる。Javaプログラミング言語は、このような言語の一例であり
、Java仮想マシン(JVM)は、Javaプログラミング言語で書かれたプ
ログラムをサポートする仮想マシン・プラットフォームの一例である。Java
仮想マシンは、ほとんどのコンピューティング・プラットフォームに用意されて
いるため、JavaしたがってJiniは一定のプラットフォーム独立性を実現
している。Jiniアーキテクチャでは、Javaプログラミング言語がJin
iシステムのコンポーネントの実装言語であるという想定を活用している。Ja
vaコードを動的にダウンロードして実行できることが、Jiniアーキテクチ
ャの多くの機能の中心となっている。
【0009】 Jiniアーキテクチャの目的は、デバイスとソフトウェア・コンポーネント
からなる複数のグループを単一の動的分散システムとして連合させることである
。Jiniアーキテクチャの概念で重要なのは、サービスという概念である。サ
ービスは、人、プログラム、または他のサービスが使用できるエンティティであ
る。サービスの例としては、文書を印刷するサービスと、一方のワードプロセッ
サ形式から他方の形式に変換するサービスの2つがある。Jiniを使用すると
、Jiniシステムのメンバがサービスへのアクセスを共有することができる。
Jiniシステム内のサービスは、Javaプログラミング言語で書かれた一組
のインターフェースである、サービス・プロトコルを使用することにより互いに
通信する。サービスの探索およびソリューションは、Jiniシステム内でルッ
クアップ・サービスを使用して行う。ルックアップ・サービスにより、サービス
によって提供される機能を示すインターフェースを、そのサービスを実装するオ
ブジェクト群にマッピングする。
【0010】 記述エントリもサービスに関連付けることができる。デバイスとアプリケーシ
ョンは、発見(discovery)と呼ばれるプロセスを使用してJiniネットワーク
に登録する。デバイスまたはアプリケーションは、いったん登録されると、ルッ
クアップ・サービス内に入る。ルックアップ・サービスでは、ネットワーク上の
これらのサービスへのポインタを格納するだけでなく、これらのサービスにアク
セスするためのコードも格納する。たとえば、プリンタはルックアップ・サービ
スに登録されると、そのプリンタ・ドライバおよび/またはドライバとのインタ
ーフェースをルックアップ・サービスにロードする。クライアントがプリンタの
使用を要求すると、そのドライバおよびドライバ・インターフェースはルックア
ップ・サービスからそのクライアントにダウンロードされる。このようにコード
を移動できることは、クライアント側で、ドライバやその他のソフトウェアをプ
リインストールしたりロードをすることなく、ネットワークからのサービスを利
用することができることを意味する。
【0011】 Jiniシステム内のサービス間の通信は、Java Remote Met
hod Invocation(RMI)を使用してを行う。RMIは、従来の
リモート・プロシージャ・コールのメカニズムに対するJavaプログラミング
言語対応の拡張機能である。RMIでは、Jiniネットワーク内でオブジェク
トからオブジェクトへデータを渡すことができるだけでなく、コードを含む完全
なオブジェクトも渡すことができる。Jiniシステムは、コードがJavaオ
ブジェクトとしてカプセル化された形式でネットワーク内を移動できることに依
存している。
【0012】 Jiniシステム内のサービスへのアクセスはリースに基づく。リースとは、
一定期間保証されたアクセスを許可することである。各リースはサービスの利用
者とサービスのプロバイダとの間で、サービス・プロトコルの一環として交渉さ
れる。ある期間サービスが要求されると、ある期間、たぶん要求期間と考えられ
るが、アクセスを許可できる。サービスがJiniシステムの一部としてとどま
るためにはリースを更新する必要がある。
【0013】 図1は、Jiniの基本的な技術の積み重ねを示している。Jini技術では
、分散プログラミング・モデル12(JavaSpaces、リース、およびオ
ブジェクト・テンプレートによってサポートされている)を定義する。Jini
のオブジェクト通信は、TCP/IP対応ネットワーキング・レイヤ16上のR
MIレイヤ14に基づいている。
【0014】 Jiniは、分散コンピューティングを簡素化するための有望な技術である。
ただし、デバイスの種類によっては、Jiniが適さない場合もある。コンピュ
ーティング技術の流れは、分散Web中心サービスおよびコンテンツ・モデルに
向かっており、クライアント・サービスとコンテンツの内容は急激に変化してい
る。将来のクライアントは、ユーザがどこへでも持ち運べるコンパニオン・タイ
プのデバイスになると思われる。このようなデバイスとしては、たとえば、携帯
電話とPDAとの組み合わせが考えられる。このようなデバイスがより強力なデ
バイスとだけでなく、より軽量なシン・デバイスまたは非力なデバイスとも通信
し、リソースを共有できることが望ましい。
【0015】 さらに、インターネットが出現し、その結果ネットに接続したデバイスが爆発
的に増え、こうした現象を活用するように設計された分散プログラミング・モデ
ルが必要になった。クライアントが信頼できる、セキュリティで保護され安全な
方法でサービスに接続するための実現技術が要求される。シック(thick)・クラ
イアントからシン・クライアントに至るさまざまなクライアントとサービスをイ
ンターネット、企業内イントラネット、またさらには単一コンピュータ内で接続
する必要がある。クライアントとサービスの両方から距離、待ち時間、実装を抽
象化(abstract)することが望ましい。
【0016】 分散コンピューティング技術で重要な課題は、パワーのあるシック・クライア
ントから組み込み型モバイル・デバイスなどの非常に軽量なシン・クライアント
に至るまでスケーラブルにすることである。Jiniなどの現在の分散コンピュ
ーティング技術は、あらゆる種類のクライアントのニーズに応じられるほどスケ
ーラブルでないといえる。省スペース・デバイスや組み込み型デバイスなどの一
部のデバイスでは、メモリリソースが十分でなかったり、十分なネットワーキン
グの帯域幅を欠いていたりして、現在の分散コンピューティング技術に十分に参
加できない。組み込み型モバイル・デバイスなどのクライアント製品群のローエ
ンドは、多くの場合、コード実行環境が限られていたり固定されている。これら
のデバイスもまた、ストレージ能力が最低限であったりあるいは全く永続性がな
い場合がある。大半の小型組み込み型モバイル・デバイスは、Java仮想マシ
ンをサポートしていない。ほとんどのコード実行可能小型クライアントはネイテ
ィブ・コードのみを実行する。さらに、ほとんどの小型デバイスは、その単独の
永続的ストレージ・メディアとしてせいぜいフラッシュ・メモリーやバッテリ・
バックアップRAMを備えているぐらいである。ストレージの容量は非常に小さ
く、時には本質的に読み取り専用であることが多い。さらに、このタイプのスト
レージ・メディアのアクセス・タイムは、より強力なクライアントのハード・デ
ィスクのアクセス・タイムに比べて1桁以上遅いことが多い。
【0017】 Jiniなどの既存の接続技術は、サイズが大きいことから、望んでいるほど
はスケーラブルでありえない。たとえば、Jiniでは、すべての参加者がJa
vaをサポートする必要があるが、小さなクライアントの多くはJava仮想マ
シン用にリソースを確保することはできない。さらに、JiniではRMIを使
用するため、クライアント側でコードとコンテンツをダウンロードできる必要が
ある。Jiniは、新しいクラスをダウンロードすることにより既存のクライア
ント・プラットフォームを補強しているので、組み込む型デバイスなどの小型デ
バイスにセキュリティおよびサイズの面で問題がrawじることがある。Jin
iは、コードとデータを渡すことによりクライアントとリソースが通信するとい
う形で動作する。クライアントがJiniサービスをアクティブにすると、この
サービスは結果をクライアントに返すが、これには大量のコードまたはコンテン
ツが含まれる場合がある。Jiniでは、クライアントはメソッドを呼び出し、
大きなオブジェクトが返され、それをダウンロードすることがある。クライアン
トは、返されたオブジェクトを受け入れるだけのリソースを持たないことがある
。さらに、RMIとJava自体が大量のメモリを必要とする。多くの省スペー
ス・デバイスは、現在の分散コンピューティング技術に事実上または少しでも加
わるだけのリソースを持たないことがある。
【0018】 既存の分散コンピューティング技術の問題としては他に、多くの場合、複数の
レベルの接続能力およびプロトコルを必要とするという点があげられる。たとえ
ば、Jiniでは、コンピュータとデバイスを接続するための妥当な速度のネッ
トワークが存在していることを想定している。またJiniでは、TCP/IP
ネットワーク・トランスポート・プロトコルをサポートするデバイスも必要とす
る。しかし、多くの小型デバイスは接続能力が限られている。小型デバイスは、
ネットワーク接続の待ち時間が長かったり、または低速であったりし、TCP/
IPをサポートしない場合もある。
【0019】 上述のように、Jiniでは、JavaをサポートするJava仮想マシンを
備えるデバイスを必要とし、そのため、多くの小型デバイスには備えられないよ
うな処理能力およびストレージ機能を必要とする。このこともまた、Java対
応でないデバイスはJiniシステムに直接参加できないという点でJiniの
柔軟性を制約している。JiniはJavaを必要とするため、均質的な環境と
みなすことができる。ただし、非常に小型の組み込み型デバイスからPDA、携
帯電話、さらにラップトップおよび最強のコンピュータに至るまでの異機種分散
コンピューティングに対応する分散コンピューティング機能を備えることが望ま
しい。コモン・オブジェクト・リクエスト・ブローカ・アーキテクチャ(COR
BA)など他の異機種ソリューションも存在する。CORBAは、プログラム・
オブジェクトが、作成に使用されたプログラミング言語に関係なく、またはその
オブジェクトが実行されるオペレーティング・システムに関係なく互いに通信で
きるようにするアーキテクチャである。しかし、CORBAはJiniで取り扱
われている接続問題をすべて取り扱えるわけではない。さらに、CORBAには
Jiniと似たスケーラビリティの問題もある。
【0020】 JiniやCORBAなどの技術では、コード中心のプログラミング・モデル
を使用して、リモート・コンピュータ間のインターフェースを定義している。コ
ード中心プログラミング・モデルでは、リモート・クライアントまたはコンポー
ネント間の通信にプログラム・インターフェースまたはAPIを定義する。AP
Iは、特定のプログラミング言語で定義することができる。APIは、適切な相
互運用性を確実なものとするために、すべてのソフトウェア・コンポーネントで
矛盾がないようになっていなければならない。コンポーネントに対するアクセス
はすべてこれらの標準APIを通じて行うため、これらのAPIを実装するコー
ドがクライアント・プラットフォーム内に存在している必要がある。コードは、
プラットフォームに静的にリンクすることも、また必要に応じて動的にダウンロ
ードすることもできる。多くの組み込み型またはモバイル・デバイスは、単に、
品質管理問題がかかわっているだけでなく、単一の言語およびプログラム実行環
境に依存しているということから、コードをネットワークから動的に受け入れる
ことができないのである。ネットワーキング・プロトコルなどのデータ中心モデ
ルは、コードの移動に依存することを避けているが、このようなプロトコルは簡
単に分散コンピューティングに対応できるほど機能豊富でなく、型安全性などコ
ードやその他のプログラミング機能によるプログラミングを簡単に行うことがで
きない。
【0021】 従来の分散コンピューティング・システムは、第1のデバイスで実行されるプ
ログラムが第2のデバイスのプログラムをリモート・コールできるということに
依存しており、結果は第1のデバイスに返される。リモート・プロシージャ・コ
ール(RPC)は、プログラムまたはプロシージャのリモート・コールを行うた
めの基本的メカニズムである。CORBAとJiniは両方とも、プログラム・
メソッドをリモートから呼び出す機能に基づいている。ただし、JiniやCO
RBAなどのコードまたはオブジェクトを渡すことで通信を行うのは幾分複雑に
なることがある。たとえば、上述のように、JiniではJava Remot
e Method Invocation(RMI)を使用してサービス間の通
信を行う。クライアントがJavaオブジェクトをリモート・ロケーションとの
間で移動するには、シリアライゼーション/デシリアライゼーションの何らかの
手段が必要になる。Java開発キット(JDK)におけるこのような現在の機
能は、Javaオブジェクトの内容を判別するためにリフレクションAPIに依
存しており、最終的にはそのコードが仮想マシンに問い合わせを行う必要がある
。このコードはかなり大きく、非効率である。
【0022】 シリアライゼーション/デシリアライゼーションを行うための現在の方法には
、サイズ、速度、およびオブジェクト・トラバーサル・モデルに関する基本的な
問題がある。JVMの外部のコードは、Javaオブジェクトの構造またはグラ
フを認識しないため、オブジェクト・グラフをトラバースし、引き離して、最終
的にJVMを呼び出す必要がある。Javaオブジェクトの格納および移動を行
う従来のシリアライゼーションおよびリフレクション・メカニズムは、すべての
種類のデバイス、特により軽量のシン・デバイスについては実用的でない。Ja
vaリフレクションおよびシリアライゼーションの問題点として、オブジェクト
のグラフ(オブジェクトの推移的閉包(transitive closure))リフレクションが
JVMの外部で実行することが困難であるという点があげられる。シリアライゼ
ーションは、大量のコードを必要とし、大きすぎる。さらに、シリアライゼーシ
ョンはJava固有のオブジェクト交換形式であり、Java非対応のデバイス
では使用できない。
【0023】 Jini分散コンピューティング・モデルでは、Javaデバイス間でJav
aオブジェクトを移動する必要がある。そのため、Java対応でないプラット
フォーム側でオブジェクトの発送および受取に使用することができないためシリ
アライゼーション・メカニズム自体はプラットフォーム独立ではない。シリアラ
イゼーションは、均質的なオブジェクト形式であり、Javaプラットフォーム
でのみ動作する。シリアライゼーションでは、リフレクションAPIを使用する
ため、セキュリティ関連の制限を受ける場合があり、しばしば、ネイティブのJ
VM依存メソッドを使用して対処する必要がある。リフレクションAPIは、オ
ブジェクトのグラフを提供できるが、JVMとリフレクション・メソッドを呼び
出すコードとの間で何回も呼び出しが行われるため非効率である。
【0024】 Javaリフレクションを使用してオブジェクトをシリアライズするには、オ
ブジェクトの推移的閉包を動的に解析するときに、アプリケーション側がJVM
とピンポンのようにやり取りし、一度にフィールド1つずつオブジェクトを取り
出す必要がある。Javaデシリアライゼーションを使用してオブジェクトをデ
シリアライズするには、オブジェクトの推移的閉包を動的に解析するときに、ア
プリケーション側がJVMと緊密に連携し、一度にフィールド1つずつオブジェ
クトを再構成する必要がある。そのため、Javaシリアライゼーション/デシ
リアライゼーションは時間がかかり、扱いにくく、しかも、アプリケーションと
JVMのコードを大量に書く必要があるだけでなく、永続的な記憶領域も必要で
ある。
【0025】 Javaをサポートするシン・クライアントの場合も、Jini RMIは、
最小限のメモリ専有面積と最低限の帯域幅を備えるシン・クライアントの場合に
は実用的でないと思われる。Jini RMIと関連するシリアライゼーション
は、実行時間が長く、コード・サイズが大きく、JVMリフレクションAPIを
必要とし、Java固有オブジェクトの表現である。Javaデシリアライゼー
ションも実行に時間がかかり、コード・サイズが大きく、シリアライズ・オブジ
ェクト・パーサを必要とする。Javaベースのシン・クライアントであっても
、Jini内で要求されたときにクライアントへネットワーク経由で(必ず)返
される巨大なJavaオブジェクト(必要なクラスに沿って)を受け入れられな
い場合がある。さらにスケーラブルな分散コンピューティング・メカニズムが必
要である。よりスケーラブルな分散コンピューティング・メカニズムでセキュリ
ティ問題に対処すること、またJavaオブジェクトなどのオブジェクトの受け
渡しを可能にし、さらに一方のネットワーク・モードから他方のネットワーク・
モードにプロセスを移行できるように、拡張可能であることが望ましい。
【0026】 オブジェクト・ベースの分散コンピューティング・システムでは永続的記憶領
域が必要である。ただし、上述のように、オブジェクト記憶領域での試みは多く
の場合言語とオペレーティング・システムに特有のものである。さらに、これら
のオブジェクト・ストレージ・システムは、複雑すぎて、多くの小さな組み込み
型システムでは使用できない。たとえば、Jini技術では、JavaSpac
esを永続的オブジェクト・コンテナとして使用する。しかし、JavaSpa
ceは、Javaオブジェクトを格納するだけであり、小型デバイスに実装でき
ない。JavaSpace内の各オブジェクトは。シリアライズ化され、Jav
aシリアライゼーションと関連する上述のペナルティを払う。小型デバイスから
大型デバイスに至るまでの分散コンピューティング用に異機種オブジェクト・リ
ポジトリを備えることが望ましいと考えられる。
【0027】 Sun Microsystems,Inc.のJavaSpacesは、エ
ール大学コンピュータ・サイエンス学部のDavid Gelernter教授
の並列処理の成果を利用している。Gelernter教授の「Linda」と
いう名前の機能セットでは、TupleSpaceと呼ばれる共有メモリ空間を
作成し、コンピュータのプロセスの結果またはそれらのプロセス自体を格納し、
複数のCPUでアクセスできるようにする。Lindaは、したがって複数のプ
ロセッサ用にグローバルな共有メモリを備える。
【0028】 Lindaを拡張するもう1つの技術がIBM CorporationのT
Spaceである。TSpaceは、基本的なLinda TupleSpac
eフレームワークを拡張し、実データ管理を行い、新しいデータ型および新しい
セマンティック機能をダウンロードできるようにしている。TSpaceは、一
組のネットワーク通信バッファとこれらのバッファにアクセスするための一組の
APIを備えている。したがって、上述の多くのソリューションのように、TS
paceはコード中心プログラミング・モデルを使用しており、そのようなモデ
ルの欠点も共有している。さらに、TSpaceは、Javaプログラミング言
語で実装されているため、Java仮想マシンやJavaバイトコードを実行す
る、Java実行可能マイクロプロセッサなどの他の手段を必要とする。したが
って、TSpaceは、十分なリソースをJavaバイトコードの実行専用に割
り当てることができない省スペース・デバイスには不適切と思われる。
【0029】 オブジェクト指向分散システムでは、オブジェクト・リポジトリを特定し、そ
れらのリポジトリ内で特定のオブジェクトを見つけることができることが望まし
い。供述のように、Jiniルックアップ・サーバはメモリ専有面積の小さな小
型デバイスには実用的でないと思われる。オブジェクト・ストアを特定するより
効率的なメカニズムがあることが望ましい。
【0030】 分散ネットワーク・コンピューティング・モデルでは、クライアントがサービ
スを特定する機能を備えることが望ましい。現在のネットワーク・プロトコルは
、ネットワーク・サービスにアクセスするときにセキュリティを一切持たない単
一の標準サービス・アクセス・インターフェースのみを提供するか、または管理
者もしくは特権のある機能も含めて、サービスの全機能に対する「オール・オア
・ナッシング」アクセス機能を提供する。また、サービスを特定する現在のネッ
トワーク・プロトコルでは、サービスを見つける柔軟なメカニズムを提供してい
ない。現在のプロトコルは、選択的サーチ機能をまったく備えていないか(たと
えば、UPnP)、またはプリミティブ・キーワードおよび属性文法メカニズム
のみを備える(たとえば、SLP)。そのため、現在のサービス発見メカニズム
(service discovery mechanism)はセキュリティおよびサーチ基準メカニズム(se
arch criteria mechanism)に関してあまりにも柔軟性が不足していると考えられ
る。
【0031】 さらに、現在のサービス発見モデルは、サービスを特定するために対称モデル
を使用している。ただし、近さに基づく機能を使用できるデバイスなどある種の
サービス・デバイスが発見モデルをサポートするのはリソースの無駄と考えられ
る。これは、このようなデバイスが近いところにあるためすでに特定されている
ためである(たとえば、他方のデバイスを物理的にポイントしている一方のデバ
イス)。そのため、代替えとなる軽量発見メカニズムもこのようなデバイスに対
して望ましいと考えられる。
【0032】 分散オブジェクト・アクセスにも、偏りのない効率のよい共有メカニズムを必
要とする。上述のように、Jiniは今のところ、リース・メカニズムを使用し
てオブジェクトを共有している。ただし、Jiniのリースは時間に基づいてい
るため、さまざまな問題が発rawしうる。たとえば、現在のオブジェクト・ホ
ルダは、オブジェクトをどれだけの期間リースするかという考え方がなく、保持
期間が長くなりすぎる場合がある。さらに、時間に基づくリースを使用するには
、複数のマシンの間で時間が同期している必要がある。さらに、時間に基づくリ
ースには、オペレーティング・システムのサポートも必要と考えられる。さらに
、Jiniのリースは、RMI経由で確立され、解放される。そのため、Jin
iのリース・メカニズムには、RMIを使用する上述の問題が発rawする。さ
らに、Jiniのリース・メカニズムは、リースの確立、更新、および取り消し
のためのセキュリティ・メカニズムを備えていない。他のリース・メカニズムも
望ましいと考えられる。
【0033】 一般的に、メモリ専有面積の小さなモバイル・クライアント・デバイスは分散
環境でさまざまなサービス、つまりレガシサービスと新サービスの両方を実行で
きることが望ましい。小型クライアントとしては、携帯電話およびPDAがあり
、通常は低帯域幅のさまざまなネットワーキング・インターフェースを備える。
これらのデバイスは多くの場合、グラフィック機能が限られた非常に小さなディ
スプレイを備えているが、大画面のディスプレイを備え、グラフィック機能も高
度なものを使用するラップトップやノートブック・コンピュータもある。サービ
スは、さまざまなアプリケーションだけでなくプリンタなどのデバイス用の制御
プログラムもある。モバイル・クライアントは、使用できる場所であればどこで
もこれらのサービスを使用できることが望ましい。
【0034】 モバイル・クライアントは、多くの場合、一時的な動的ネットワーク・アドレ
スが割り当てられ、このクライアントが送るネットワーキング・メッセージはそ
のネットワーキング・インターフェースを超えて配信することはできない(そう
でないと、異なるネットワーク上の2つの異なるクライアントが同じ動的アドレ
スを持つときに競合が発rawすることがある)。モバイル・クライアントは、
多くの場合、全機能搭載のブラウザやその他の高度なソフトアウェア用の機能を
持たない。ディスプレイが制限となって、クライアントが一部のアプリケーショ
ンを実行できない場合もある。従来のアプリケーション・モデルは、所定のユー
ザ・インターフェースまたはデータ特性に基づいている。アプリケーションに変
更を加えると再コンパイルが必要になる。
【0035】 このようなクライアントは分散アプリケーションまたはサービスを見つけて呼
び出すメカニズムを備えることが望ましい場合がある。クライアントは、クライ
アントのメモリ専有面積に収まり切らない可能性のある一層大きなレガシ・アプ
リケーションを実行する必要がある場合もある。上述のように、Jiniなどの
現在の技術は、省スペース・デバイスには実用的でない場合がある。また、モバ
イル・シン・クライアントが普及することでさらにニーズも高まる可能性がある
。たとえば、ユーザとそのユーザのモバイル・クライアントの物理的な場所に基
づいてサービスを特定することが望ましい場合がある。たとえば、現地のレスト
ラン、天候、道路交通現況図、および映画情報など現地周辺のサービスに関する
情報が非常に役立つことがある。それと同様に、特定の場所にあるプリンタなど
計算リソースに関する情報が役立つ。現行技術では、クライアントの物理的場所
に基づいてサービスを特定する自動的なメカニズムを備えていない。シン・モバ
イル・クライアントによってrawじるニーズとしては、他に、人的要因を取り
扱うものがある。シン・モバイル・クライアントは、通常、エルゴノミック・キ
ーボードおよびモニタを備えない。このような人的要因サービスを提供すること
および/または分散コンピューティング環境でこのようなサービスを特定する機
能があると望ましい。分散コンピューティング・モデルは、クライアントは一時
的ドキュメントおよびサービスを見つける手段を備える必要がある。ドキュメン
トが拡張マークアップ言語(XML)によって提供されるものなどプラットフォ
ーム独立および言語独立の型で表される汎用ドキュメント(サービスおよび/ま
たはサービス通知を含む)を見つけるメカニズムを備えることが望ましい場合が
ある。Jini、Universal Plug and Play(UPnP
)、およびService Location Protocol(SLP)の
ルックアップ・メカニズムを含む現在のアプローチでは、このような汎用ドキュ
メントルックアップ・メカニズムをサポートしていない。たとえば、Jiniル
ックアップ・メカニズムは、Java言語型付けに限定されており、したがって
、言語独立ではない。UPnPおよびSLPは、サービスのみについて発見プロ
トコルをサポートしており、汎用ドキュメントについては発見プロトコルをサポ
ートしていない。
【0036】 (発明の要旨) 上で概要を示した問題は、分散コンピューティング環境内でサービスを通知し
、サービスをアドレッシングし、かつ/またはサービスにアクセスするシステム
および方法のさまざまな実施態様によって大部分が解決される。分散コンピュー
ティング環境は、「スペース」またはオブジェクト・リポジトリに依拠して、ク
ライアントとサービスの間の相互作用のためのランデブー機構または触媒作用(c
atalyst)を提供することができる。サービス・プロ「バイダは、スペース内のサ
ービスを通知することができる。クライアントは、スペース内の通知を見つけ、
通知からの情報を使用して、分散コンピューティング環境のXML(拡張マーク
アップ言語)メッセージング機構を使用してサービスにアクセスすることができ
る。サービスまたはコンテンツを記述するXML通知がそれぞれに含まれる、多
数のスペースが存在することができる。したがって、スペースは、結果などのr
awデータまたはデータに関する通知とすることができる、サービスのXML通
知および/またはXMLデータのリポジトリとすることができる。
【0037】 一実施態様では、スペース自体がサービスである。他のサービスと同様に、ス
ペースは通知を有し、この通知は、スペースのクライアントが、スペース・サー
ビスを実行できるようになるために最初に得なければならない。スペース独自の
通知には、XMLスキーマ、1つまたは複数の証明書、およびスペースにアクセ
スする方法を示すURI(Uniform Resource Identif
ier)を含めることができる。クライアントは、スペースにアクセスするため
に、スペース・サービスの通知からゲートを構築することができる。スペースの
クライアント自体を、そのスペース内の通知を探すか既存の通知を変更すること
を求めるサービス・プロバイダとすることができる。あるいは、スペースのクラ
イアントを、スペースによってリストされるサービスまたはコンテンツへのアク
セスを求めるアプリケーションとすることができる。したがって、スペースは、
分散コンピューティング環境でのクライアントとサービスの間の相互作用の触媒
作用を提供することができる。
【0038】 スペースには、名前付きの通知の集合を含めることができる。スペースは、ス
ペース自体を記述した単一のルート通知を用いて作成することができる。追加の
通知を、スペースに追加することができる。通知の名前によって、名前の階層な
どの必要なグラフ化情報の指定を含めて、スペース内の通知を特定することがで
きる。好ましい実施態様では、スペースの構造が、分散コンピューティング環境
によって指示されない。すなわち、スペースは、たとえば通知のフラットな関連
しないセットまたは関連する通知のグラフ(たとえば市販データベース)などと
して構成することができる。好ましい実施態様では、分散コンピューティング環
境が、スペースが実際にその内容を格納する方法を指定しないので、スペースを
、小さいデバイスから大きいデバイスまでによってサポートすることができる。
たとえば、単純なスペースを、PDAなどの小さいデバイスにおさまるように調
整することができる。より高度なスペースを、大規模な市販データベースを使用
して大型サーバで実施することができる。
【0039】 上で述べたように、スペースに、分散コンピューティング環境内のサービスに
関する通知を含めることができる。通知は、分散コンピューティング環境内のサ
ービスおよび/またはコンテンツのアドレッシングおよびアクセスの機構を提供
することができる。通知では、サービスのURIを指定することができる。いく
つかの実施態様で、URIによって、サービスがインターネットを介してアクセ
スすることができる。通知には、サービスに関するXMLスキーマを含めること
もできる。XMLスキーマでは、サービスのクライアントがサービスの機能を呼
び出すためにサービスに送ることができるメッセージのセットを指定することが
できる。XMLスキーマでは、クライアントとサービスのインターフェースを定
義することができる。通知で指定されるURIとXMLが一緒になって、サービ
スのアドレッシングとアクセスの方法を示すことができる。URIとスキーマの
両方を、スペース内の通知としてXMLで提供することができる。したがって、
分散コンピューティング環境内のサービスのアドレッシングおよびアクセスの機
構を、スペース内の通知としてパブリッシュすることができる。クライアントは
、スペースを発見し、その後、サービスまたはコンテンツに関する個々の通知を
ルックアップすることができる。スペースとあるスペース内のすべての通知を、
URIを使用してアドレッシングすることができる。一実施態様では、スペース
名および通知名を、URL(Uniform Resource Locato
r)命名規約に従うものとすることができる。いくつかの実施態様では、スペー
スのアドレッシングに、たとえばURLなどのURIを使用することによって、
スペースを、インターネット全体を通じてアドレッシング可能にすることができ
るようになる。
【0040】 スペースのクライアントがスペース・サービスの通知を見つけた後に、スペー
スのそのクライアントは、他のサービスと同様に、スペース・サービスを実行す
ることができる。スペース・サービスのクライアントが、別のサービス(たとえ
ば、スペース内の通知を探すサービス)である場合があることに留意されたい。
一実施態様では、スペース・サービスを実行するために、スペースのクライアン
トが、まず、スペースに関する認証サービスを実行して、認証トークンを得るこ
とができる。認証サービスは、スペース・サービスのサービス通知で指定するこ
とができる。スペースのクライアントは、認証トークン、スペースのXMLスキ
ーマ(スペースのサービス通知から)、およびスペースのURI(スペースのサ
ービス通知から)を使用して、スペース用のゲートを構築する。スペースのクラ
イアントは、その後、ゲートを使用してスペース・サービスにメッセージを送る
ことによって、スペース・サービスを実行することができる。
【0041】 認証を使用する実施態様に関して、スペース・サービスが、認証トークンを埋
め込まれた最初のメッセージをクライアントから受け取る時に、スペース・サー
ビスは、同一の認証サービス(スペース・サービスのサービス通知で指定される
)を使用して、クライアントを認証し、したがって、クライアントを識別する。
スペース・サービスは、クライアントの機能を判定し、それらを認証トークンに
バインドすることができる。
【0042】 スペースのクライアントは、スペース・サービスにメッセージを送ることによ
って、さまざまなスペース機能を実行することができる。一実施態様では、スペ
ースのクライアントは、スペース・サービスに要求を送る時に、その要求で認証
トークンを渡し、したがって、スペース・サービスが、クライアントの特定の機
能に対して要求を検査することができる。
【0043】 各スペースは、通常はサービスであり、スペース・サービスのコア機能を定義
するXMLスキーマを有することができる。XMLスキーマによって、スペース
・サービスへのクライアント・インターフェースを指定することができる。一実
施態様では、すべてのスペース・サービスが、スペース関連メッセージのベース
レベルを提供することができる。ベースレベル・スペース機能は、PDAなどの
小さいデバイスを含むほとんどのクライアントが使用できる基本的なスペース機
能とすることができる。たとえばより高度なクライアント用など、追加の機能を
提供することが望ましいであろう。ベースレベル・スペースに対する拡張は、ス
ペースを通知するXMLスキーマにより多くのメッセージを追加することによっ
て達成することができる。たとえば、一実施態様では、ベースレベル・メッセー
ジが、いかなる関係グラフも通知に押し付けることはない。たとえば、通知の階
層をトラバースするメッセージを、スペース拡張とすることができる。そのよう
な追加の機能の提供は、1つまたは複数の拡張されたXMLスペース・スキーマ
またはスペース用のスキーマ拡張を提供することによって行うことができる。拡
張されたスキーマに、ベース・スキーマを含めることができ、その結果、拡張さ
れたスペースのクライアントが、今まで通りベース・スペースとしてスペースに
アクセスできるようになる。
【0044】 一実施態様では、スペースが、スペース内で通知されるサービスをクライアン
トがインスタンス化する機能を提供することができる。サービスのインスタンス
化は、クライアントにサービスを実行させる初期化行為である。サービスをイン
スタンス化するために、クライアントは、まず、スペース内でパブリッシュされ
るサービス通知の1つを選択することができる。クライアントは、スペース内で
通知されるさまざまな通知をルックアップするために、スペースによって提供さ
れるルックアップ機能などのさまざまな機能を使用することができる。その後、
クライアントは、サービスをインスタンス化することをスペースに要求すること
ができる。
【0045】 一実施態様では、サービス・インスタンス化に、下記のアクションを含めるこ
とができる。クライアントが、選択されたサービスをインスタンス化することを
スペース・サービスに要求した後に、スペース・サービスは、要求されたサービ
スをクライアントがインスタンス化することを許可されることを検証する。スペ
ース・サービスは、クライアント・メッセージに含まれる認証トークンを検査す
ることによって、この検証を実行することができる。認証トークンは、クライア
ントがスペース・サービスとのセッションを確立する時に受け取った証明書であ
る。スペース・サービスは、クライアントの認証トークンおよびそのクライアン
トについて示される機能に従って、クライアントが、要求されたサービスをイン
スタンス化することを許可されるかどうかを検証することができる。
【0046】 クライアントが許可されると仮定すると、スペース・サービスは、クライアン
トによって指定されるリース要求時間を有する、クライアントに関するサービス
通知に対するリースを得ることもできる。スペース・サービスは、その後、割り
振られたリースおよびサービスのサービス通知を含むメッセージをクライアント
に送ることができる。一実施態様では、クライアントが、サービス通知で指定さ
れた認証サービスを実行し、認証トークンを得ることができる。次に、クライア
ントは、サービス用のゲートを構築することができる(たとえば、認証トークン
と、通知からのXMLスキーマおよびサービスURIを使用して)。上で述べた
クライアントとスペース・サービスの間の通信は、分散コンピューティング環境
のXMLメッセージングを使用して実行される。クライアントは、その後、構成
されたゲートとXMLメッセージングを使用してサービスを実行することができ
る。サービスは、同様に、クライアントとのXMLメッセージ通信用のサービス
・ゲートを構築することができる。
【0047】 一実施態様では、サービス通知に、特定のサービスにアクセスするためにクラ
イアントが必要とする情報の実質的にすべてが含まれる。サービスは、スペース
内でサービス通知をパブリッシュすることができる。スペースは、拡張マークア
ップ言語(XML)ドキュメントなどのドキュメントが格納される、ネットワー
ク・アドレッシング可能な記憶場所とすることができる。一実施態様では、通知
に、サービスのUniform Resource Identifier(U
RI)およびスキーマを含めることができる。URIでは、サービスにアクセス
できるネットワーク・アドレスを指定することができ、スキーマでは、サービス
の1つまたは複数の関数を呼び出すのに使用可能な1つまたは複数のメッセージ
を指定することができる。一実施態様では、スキーマおよびメッセージを、XM
Lなどのデータ表現言語で表現することができる。クライアントは、スペースに
アクセスし、通知を見つけることができる。たとえば、クライアントは、発見サ
ービスを使用してスペースを見つけ、ルックアップ・サービスを使用してスペー
ス内の通知を見つけることができる。
【0048】 クライアントは、スペースから通知を読み取ることができる。一実施態様では
、クライアントが、通知内のURIおよびスキーマを使用して、サービスにアク
セスするためのゲートを構築することができる。クライアントは、サービスの1
つまたは複数の関数を呼び出すために、第1のメッセージをURIにあるサービ
スに送ることができ、この第1のメッセージは、スキーマ内で指定される。それ
に応答して、サービスの関数を呼び出すことができる。一実施態様では、サービ
スが、第2のメッセージ(たとえば、呼び出された関数の結果を含むメッセージ
)をクライアントに送ることができ、この第2のメッセージは、サービスのスキ
ーマで指定される。
【0049】 本発明は、さまざまな修正態様および代替態様を許すが、その特定の実施態様
を、例として図に示し、以下で詳細に説明する。しかし、図面およびそれに対す
る詳細な説明が、開示される特定の態様に本発明を制限することを意図されてお
らず、逆に、その意図が、本発明の趣旨および範囲に含まれるすべての修正態様
、同等物、および代替態様を包含することであることを理解されたい。
【0050】 (発明の実施形態の詳細な説明) 分散コンピューティングの実施形態の概要 図2には、分散コンピューティング環境のプログラミング・モデルが示されて
いる。このモデルには、分散コンピューティングを使いやすくするAPIレイヤ
102が含まれている。APIレイヤ102は、クライアントとサービスとの接
続を容易にするインターフェースを備えている。APIレイヤ102は、クライ
アントおよびサービスの発見(discovery)および接続に関係する。APIレイヤ
102は、メッセージ発送およびメッセージ受取機能を備える。このメッセージ
ングAPIは、拡張マークアップ言語(XML)など、表現データまたはメタデ
ータ形式による単純メッセージ用のインターフェースを提供する。実施形態はこ
こではXMLを採用しているものについて説明しているが、他の実施形態では他
のメタデータ型言語または形式を使用することもできることに注意されたい。い
くつかの実施形態では、APIレイヤは、さらに、Javaオブジェクトなど、
オブジェクト間の通信やオブジェクトの受け渡しのためのメッセージのインター
フェースを備えることもできる。オブジェクト・リポジトリまたは「スペース」
を発見し、特定のオブジェクトを見つけ、オブジェクトの要求および解放を行い
、オブジェクトをオブジェクト・リポジトリに書き込んだり、オブジェクト・リ
ポジトリからオブジェクト取り出したりするAPIが用意される場合もある。A
PIレイヤ102を通じてアクセス可能なオブジェクトは、XMLなどの表現デ
ータ形式で表現することができる。そのため、オブジェクト自体とは反対に、オ
ブジェクトのXML表現は操作が可能である。
【0051】 APIレイヤ102は、メッセージング・レイヤ104の上にある。メッセー
ジング・レイヤ104は、XMLなどの表現データ形式に基づいている。一実施
形態では、XMLメッセージは、APIレイヤ102の呼び出しに従って、メッ
セージング・レイヤ104によって生成される。メッセージング・レイヤ104
は、クライアントとサービスとの間で送ることができる定義済みの静的メッセー
ジを備えている。メッセージング・レイヤ104は、さらに、動的に生成される
メッセージにも対応している。一実施形態では、Javaオブジェクトなどのオ
ブジェクトをXML表現に動的に変換することができる。メッセージング・レイ
ヤ104により、XMLオブジェクト表現はメッセージとして送ることができる
。逆に、メッセージング・レイヤ104は、オブジェクトのXML表現を受け取
ることができる。その後、そのメッセージからオブジェクトは再構成できる。一
実施形態では、メッセージング・レイヤ104によって送られるメッセージは、
アドレス、認証証明書、セキュリティ・トークン、およびメッセージ本体など、
複数の基本要素を含むことができる。メッセージ・システムの発送および受取メ
カニズムは、完全に状態を保持しないようにできる。状態という概念を、発送側
と受取側との間のメッセージ・ストリームに埋め込むことができる。そのため、
メッセージ発送は非同期に行われる。好ましい実施形態では、接続モデルは課さ
れていない。したがって、TCPなどのトランスポートは不要である。また、エ
ラー条件は不達またはセキュリティ例外に限られる。
【0052】 メッセージング・レイヤ104は、メッセージ対応ネットワーキング・レイヤ
106の上にある。好ましい実施形態では、メッセージング・レイヤ104は、
特定のネットワーキング・プロトコルを使用する必要がない。TCP/IPおよ
びUDP/IPは、メッセージ対応ネットワーキング・レイヤ106に使用でき
るメッセージ対応プロトコルの例である。ただし、ワイヤレス・アプリケーショ
ン・プロトコル(WAP)などの他の専用プロトコルも使用できる。他にも、ト
ランスポート・レイヤの下のIrDAやBluetoothネットワーク・ドラ
イバのメッセージ・プロトコルも考えられる。ネットワーキング・レイヤ106
は、TCP/IPなどの単一の信頼できる接続プロトコルに限られない。したが
って、さまざまなデバイスとの接続が可能である。
【0053】 一実施形態では、メッセージ対応ネットワーク・レイヤ106は、Java2
Micro Edition(J2ME)プラットフォームが提供するネット
ワーキング・クラスから実装することができる。Java2 Micro Ed
itionプラットフォームは、完全なJavaプラットフォーム用のリソース
を持たないまたは完全なJavaプラットフォームを実行するのは効率的でない
省スペース・デバイスに適している。J2MEがすでにネットワーキング・プロ
トコルのメッセージ対応ファミリ(ソケットをサポートする)を備えているため
、メッセージング・レイヤ104を追加した場合の省スペース・コストについて
、分散コンピューティング機能をすでにJ2MEを含んでいる小型デバイス用に
提供することができる。
【0054】 メッセージ対応ネットワーキング・レイヤ106はさらに、Java開発キッ
ト(JDK)のjava.netネットワーキング・クラスでも用意できる。そ
れとは別に、メッセージ対応ネットワーキング機能をメッセージ対応ネットワー
キング・レイヤ106に使用することもできる。好ましい実施形態では、信頼で
きるトランスポートは不要であり、したがって、UDP/IPなどの信頼できな
いデータグラム・トランスポートをサポートする組み込み型デバイスもまたメッ
セージング・レイヤをサポートできる。したがって、シン・クライアントは、単
にシン・メッセージング・レイヤ104を基本ネットワーキング・プロトコル・
スタックの上に追加するだけで分散コンピューティング環境に参加することがで
きる。図3に示されているように、基本システムはネットワーキング・レイヤ1
06の上にメッセージング・レイヤ104を備える。ネットワーキング・レイヤ
は、信頼できるメッセージ、たとえばTCP、または信頼できないメッセージ、
たとえばUDPに対応できる。インターネット・プロトコル(IP)は、図3に
、ネットワーキング・レイヤ106で使用できるプロトコルの例として示されて
いる。ただし、分散コンピューティング環境ではIPを必要としない。分散コン
ピューティング環境では、IPに加えて、他のプロトコルも使用できる。Eth
ernet(登録商標)、Token Ring、Bluetoothなどのネ
ットワーク・ドライバも、ネットワーキング・レイヤの一部とすることができる
。多くの小さなクライアントがすでに、UDP/IPなどのネットワーク・ドラ
イバおよびトランスポート・プロトコルを備えている。そこで、シンXMLベー
スのメッセージング・レイヤを追加する際に、デバイスは分散コンピューティン
グ環境に参加できる。
【0055】 そこで、分散コンピューティング環境の基礎は、信頼できる接続および/また
は信頼できないデータグラムの上に実装された単純なメッセージ通信レイヤであ
る。このメッセージング技術は、Javaリモート・メソッド呼び出し(RMI
)を採用するJiniなどの他の分散コンピューティング・システムで採用され
ている通信技術とはかなり異なる。メッセージ通信レイヤ104は、RMIで記
述される状態を保持する同期スタイルではなく、状態を保持しない非同期スタイ
ルの分散プログラミングをサポートしている。さらに、メッセージ通信レイヤ1
04は、XMLなどのデータ表現言語に基づいており、そのため、RMIと異な
り、コピー元からコピー先へデータをコピーするが、コードはコピーしない。J
avaコードはメッセージの発送側または受取側に想定されていないため、XM
Lなどの表現データ言語を使用することにより、メッセージング・レイヤ104
は非Javaおよび非Jiniプラットフォームとの相互運用性をシームレスに
実現できる。さらに、RMIとは異なり、メッセージング・レイヤ104は、T
CP/IPなどの信頼できるトランスポート・メカニズムを必要としない。
【0056】 メッセージ通信レイヤは、たとえば、バイトの配列またはバイト列として指定
されたメッセージを送るために単純なsend()およびreceive()メ
ソッドを提供することができる。send()メソッドは即座に戻り、データ転
送を非同期に実行することができる。フロー制御のため、send()メソッド
がsend()リクエストを処理できないことを示す例外をスローした場合に呼
び出されるコールバック・メソッドを提供できる。receive()メソッド
は同期メソッドで、次に使用可能なメッセージを返す。
【0057】 このメッセージ通信レイヤは、さらに、「スペース」内にオブジェクト、サー
ビス、およびコンテンツのXML表現を格納するメソッドを備えることもできる
。スペースは、URI(Uniform Resource Identifi
er)を使用してネットワーク上で名前が指定されアクセスされる。URIは、
URL(Uniform Resource Locator)またはURLの
簡易版でもよい。いくつかの実施形態では、URLクラスは大きすぎる場合があ
る。このような実施形態では、より単純なリソース・ロケータを使用し、クライ
アントとサーバとの間のメッセージの移動に使用するプロトコル、プロトコル依
存ホストID、プロトコル依存ポートID、スペース名を指定する。
【0058】 メッセージング・レイヤで提供しているwrite()メソッドを使用してオ
ブジェクトのXML表現をスペースに追加することができる。一実施形態では、
クライアント指定名とオブジェクトをパラメータとして与えることができる。一
実施形態では、writeメソッドは、オブジェクトをそのXML表現に変換す
る。オブジェクトを返し、スペースから削除するためにtake()メソッドを
用意することができる。スペース内のXML表現から指定されたオブジェクト返
すためにfind()メソッドを用意することができる。find()メソッド
もまた、クラスが与えられた場合にスペース内のマッチするオブジェクトの配列
を返すのに使用できる。これらのスペース・メソッドはそれぞれ、メッセージ通
信レイヤを使用して実装される。リース・メカニズムも、後述のように提供する
ことができる。
【0059】 発見サービスを、特定のスペースを見つけるためにクライアントが使用できる
一般的なサーチ機能としてクライアントに提供することができる。シン・クライ
アントが実装することができないと思われる複雑なサーチ・プロトコルを定義し
ようとするのではなく、発見サービスが実際のサーチをXMLベースのサーチ機
能にオフロードし、発見サービスがインターフェース機能をクライアントに簡単
に提供できるようにする。このアプローチは図4に示されている。一実施形態で
は、発見サービスは特定するものを指定するストリングを受け取り、XMLメッ
セージを既知の発見フロント・エンド(たぶん、デフォルトのスペースで見つか
る)に送り、その後、ストリングを解析し、サーチ機能に対し対応するXMLク
エリを実行する(これは、インターネットサーチ機能でもよい)。発見フロント
・エンドは、サーチ機能から受け取ったものを解析し、ストリングの配列(各ス
トリングは見つかったそれぞれのスペースのURI)としてそれを再パッケージ
し、XMLメッセージでクライアントに送ることができる。発見サービスでは、
メッセージングが接続指向トランスポートの上にあることを要求していないこと
に注意されたい。したがって、TCPを持たない非常に軽量のシン・クライアン
トであってもこのような発見サービスを使用できる。発見フロント・エンドでは
、クライアントがクライアント上にブラウザまたはサーチ機能なしでスペースを
発見することが可能である。クライアントは、キーワードを指定するストリング
を、サーチ機能とインターフェースするフロント・エンドに送る単純な機能だけ
あればよい。
【0060】 クライアントは、少なくともAPIとメッセージング・レイヤのサブセットを
使用してメッセージを送ることができるプラットフォームであれば何でもよい。
一実施形態では、APIレイヤは、静的(またはraw)および書式付き(また
はcooked)メッセージの両方に対応できる。サーバは、メッセージ要求を
受け取り、遂行できるプラットフォームであれば何でもよい。クライアントから
サーバへ、または他のクライアントへバイト列を移動する明示的rawメッセー
ジを送ることができる。メッセージ・タイプは、信頼できるメッセージ(たとえ
ばTCP)、または信頼できないメッセージ(たとえばUDP)として指定でき
る。デバイスのうち最も小さいものは、rawの信頼できないメッセージ通信を
、分散コンピューティング環境に参加する単独の手段として使用する。デバイス
は、これらのメッセージを使用してその存在と状況をアナウンスする。このよう
な小さなデバイスは、さらに、rawメッセージを受け取りて、機能のオン/オ
フなどのいくつかの機能を実行できる。
【0061】 スペースなどのメッセージベースのサービスでは、信頼できる書式付きメッセ
ージを送受取できる。スペース・メッセージは、きちんと定義されたヘッダーを
備える形式とし、XMLを使用する。一実施形態では、書式付きメッセージは、
クライアントがスペース・メソッドを使用して、スペースにオブジェクトを要求
したり、スペースにオブジェクトを書き込んだり、スペースからオブジェクトを
取り出したりする。メッセージ・コンテンツは、動的にXML形式にすることが
でき、きちんと定義されたヘッダを備える。図5は、書式付きの静的メッセージ
をサポートするクライアント・プロファイルを示している。静的メッセージを使
用することにより、小さなデバイスはコードのさらに小さなプロファイルを使用
して、分散コンピューティング環境に参加することができる。たとえば、小さな
デバイスは基本的なあらかじめ定められたメッセージだけを送ることができる。
クライアントにもよるが、静的なあらかじめ定義されたメッセージが占有するメ
モリは少ないと考えられる(たとえば、200バイト未満)。静的メッセージは
、さらに、大きなデバイスにあってはオプションとしてもよい。他方、動的XM
Lメッセージは、オブジェクト値がコンパイル時にわかっていないときに役立つ
【0062】 図6には、メッセージング・システムとXMLメッセージおよびXMLオブジ
ェクト表現とを組み合わせた分散コンピューティング・モデルが示されている。
プラットフォームがXMLから独立していることを利用すると、システムを異機
種分散コンピューティング環境に対応させることができる。したがって、クライ
アント110は、Javaなどの特定のプラットフォームではなくほとんどどの
ようなプラットフォームにでも実装することができる。メッセージング・システ
ムは、インターネット・プロトコル(たとえば、TCP/IPやUDP/IP)
などのネットワーク対応メッセージング・レイヤに実装することができる。その
ため、コンピューティング環境をインターネットに分散させることができる。一
実施形態では、メッセージング・システムはさらに、クライアントおよび/また
はスペース・サーバおよび/またはサービスが同じコンピュータ・システムにあ
るときに、共有メモリを高速なプロセス間メッセージ・パッシング・メカニズム
として使用することもできる。図6の分散コンピューティング・モデルは、さら
に、ほとんどどのような規模のクライアントであってもXMLメッセージの発送
および/または受取を行えるように設定できるため、非常にスケーラブルである
【0063】 図6に示されているように、分散コンピューティング・モデルで、サービス1
12およびクライアント110の2種類のソフトウェア・プログラムを実行する
ことができる。サービス112は、サービスの使用を望んでいるクライアントに
機能を通知することができる。サービス112は、スペース114で機能を通知
する。図7に示されているように、クライアント110およびサービス112は
同じネットワーク・デバイス内に常駐することもまた常駐しないこともある。た
とえば、デバイス120および124はそれぞれ、1つのクライアントをサポー
トするが、サービス112aおよびクライアント110bは同じデバイス122
内に実装される。また、図7に示されているように、デバイスがクライアントと
サービスをサポートするのに特定のプラットフォームを必要としない。たとえば
、デバイス120は、Javaベースとし、デバイス124はネイティブ・コー
ドのランタイム環境を備える。
【0064】 デバイスは、ネットワーキング・トランスポートでアドレス指定可能なユニッ
トである。デバイスの例としては、それらに限定はされないが、PDA、携帯電
話、ノートパソコン、ラップトップ、デスクトップ・コンピュータ、より強力な
コンピュータ・システム、さらにはスーパー・コンピュータもある。クライアン
トとサービスは両方とも、デバイスで実行されるソフトウェア(またはファーム
ウェア)のURIアドレス指定可能なインスタンスとすることができる。クライ
アントは、分散コンピューティング環境アーキテクチャを使用してサービスを実
行する。スペースとは、XMLドキュメントのリポジトリを管理するサービスで
ある。これが冗長であっても、読みやすさのために、ここではスペース・サービ
スという用語を使用する。ソフトウェア・コンポーネントは、別々の時にクライ
アントでかつサービスであってもよい。たとえば、サービスがスペースを使用す
るときに(たとえば、自分を通知するために)、そのサービスはスペースのクラ
イアントとなる。
【0065】 図8は、一実施形態における分散コンピューティング環境の基本モデルを示し
ている。この分散コンピューティング環境は、ネットワーク全体を通してクライ
アント110をサービス112に接続する。ネットワークは、インターネットな
どのワイド・エリア・ネットワークでよい。また、ネットワークは、インターネ
ットで無線ネットワークに接続されたローカル・エリア・ネットワーク(LAN
)などのネットワークの組み合わせとすることもできる。図8に示されているよ
うに、サービス112は、スペース114内で自分自身に対し通知132をパブ
リッシュする(XMLで表される)。通知132で、サービスのXMLスキーマ
とURIアドレスを指定する。その後、クライアント110は、通知132をル
ックアップする。クライアント110は、通知132を使用して、ゲート130
をインスタンス化する。ゲート130により、クライアント110はサービス1
12を実行するが、その際に、XMLメッセージをサービス112に(から)発
送(し、そして受取)する。
【0066】 サービスを実行した結果は一部、XMLメッセージでクライアントに返すこと
ができる。ただし、小さなクライアントでは他の結果が大きすぎ一度に受け取り
て消費することができないため、サービス112は、図9に示されているように
、それらの結果または結果134のXML表現をスペース114に入れ、値で返
すのではなく、(XMLメッセージによる)参照でクライアント110に返す。
結果への参照を返す方法の例として、それらに限定されないがスペース内の結果
を参照しているURIをメッセージで返す方法や、結果のURIを含むXMLド
キュメントをメッセージで返す方法がある。後で、クライアント110は、結果
にアクセスするか、または結果を参照で他のサービスに受け渡すことができる。
結果を格納するスペースはサービスが通知されるスペースと異なっていてもよい
【0067】 一実施形態では、分散コンピューティング環境はコンテンツの定義、通知、お
よび記述にXMLを使用する。分散コンピューティング環境の新しいコンテンツ
(たとえば、メッセージおよび通知)はXMLで定義される。既存のコンテンツ
・タイプ(たとえば、他の環境用に開発されたもの)も、XMLを使用して、あ
るレベルの間接化(メタデータ)として記述することができる。XMLは、Ja
vaがユニバーサル・コードを提供するのと似た方法で、ユニバーサル・データ
を提供するため、分散システム全体を通じてデータを表現する強力な手段となっ
ている。XMLは、言語にとらわれない手段であり、自己記述的である。XML
コンテンツは、強い型付けで、スキーマを使用して妥当性を確認できる。システ
ムは、用意されたXMLスキーマを使用する際に、有効なXMLコンテンツのみ
がメッセージで確実に渡されるようにできる。XMLコンテンツはさらに、HT
MLやWMLなどの他のコンテンツ・タイプに変換することもできる。したがっ
て、XMLを認識しないクライアントでも、そのまま、分散コンピューティング
環境のサービスを使用できる。
【0068】 一実施形態では、分散コンピューティング環境のメッセージで、クライアント
をサービスと接続し、スペースおよびストア内のコンテンツを取り扱うために使
用されるプロトコルを定義することができる。メッセージを使用してプロトコル
を定義すると、さまざまな種類のデバイスをプロトコルに参加させることができ
る。各デバイスは、その能力と役割に最適の方法でプロトコルを自由に実装する
ことができる。たとえば、すべてのデバイスがJavaランタイム環境をサポー
トできるわけではない。分散コンピューティング環境のプロトコル定義では、デ
バイスでJavaを使用する必要もなければ使用することを暗示してもいない。
また除外することもない。
【0069】 サービスの機能は、そのサービスが受け入れるメッセージに関して表すことが
できる。サービスのメッセージ・セットは、XMLスキーマを使用して定義する
ことができる。XMLメッセージ・スキーマにより、XML型付きタグを使用し
て各メッセージ形式を定義する。タグの使用規則もまた、スキーマで定義できる
。メッセージ・スキーマは、メッセージを受け取るために使用するサービスのメ
ッセージ・エンドポイントとともにXML通知の一コンポーネントであってよい
。分散コンピューティング環境では、クライアントがサービスの機能のすべての
サブセットまたは一部のサブセットを使用することができる。クライアントに与
えられた機能セットを強制するためにセキュリティ・ポリシーを採用する。たと
えば、一組の機能をクライアントに与えた後、クライアントは適切な承認がない
とそのセットを変更することはできない。この機能定義のモデルにより、基本機
能セットから拡張機能セットまでのサービス・レベルに対応できる。認識された
メッセージの数に加えることにより、拡張機能をサービスに追加することができ
る。
【0070】 一実施形態では、分散コンピューティング環境内のすべてのオペレーションは
、クライアントとサービスとの間で送られるXMLメッセージとして実現される
。ストレージ(一時的記憶と継続的記憶の両方)プロバイダは、クライアントと
サービスがコンテンツを格納し、通知し、アドレス指定できるようにするサービ
スの例である。クライアントおよびサービスは、一時的ストレージ・スペースを
使用して互いを見つけまたブローカ・コンテンツを見つけることができる。サー
ビスは、コンテンツまたはサービス通知をスペース内に配置する。通知を使って
、コンテンツ・タイプまたはサービスの機能を記述することができる。クライア
ントは、その後、スペースをブラウズして、目的の機能セットとマッチする通知
を探す。クライアントがマッチする通知を見つけると、通信チャネルを確立し、
その通知を裏付けるサービスとの間で双方向メッセージ通信を行えるようにする
。一実施形態では、通信チャネルは認証される。サービスのオペレーションの結
果(もう1つのコンテンツ・タイプにすぎない)は、応答メッセージでクライア
ントに直接返され、スペース内で通知され格納されるか、またはスペース内で通
知されるが永続的に格納される。格納されている結果は、URI(たとえば、応
答メッセージで返される)を使用して取り扱われ、関連する認証証明書が割り当
てられる。
【0071】 メッセージ・ゲート 上述のように、分散コンピューティング環境では、XMLなどのデータ記述言
語を使用する。XMLを使用してターゲット・エンティティ(たとえば、ドキュ
メント、サービス、またはクライアント)を記述し、そのエンティティにアクセ
スするためのコードを生成することができる。ターゲット・エンティティにアク
セスするため生成されるコードは、メッセージ・ゲートと呼ばれる。したがって
、一実施形態では、この分散コンピューティング環境は、他のオブジェクトにア
クセスするために必要なオブジェクト間の必要なコードを受け渡す代わりに、こ
の分散コンピューティング環境ではオブジェクトまたはターゲットXML記述に
アクセスできるようにしてターゲットにアクセスするためXML記述に基づいて
コードを生成するという点で、他の分散コンピューティング環境とは異なる。分
散コンピューティング環境では、XMLスキーマを使用して、言語固有のAPI
に依存することなくXMLスキーマだけで型安全性とともにプログラミング・モ
デル(たとえば、サポートされているメッセージ)を確実なものにすることがで
きる。XMLスキーマから生成されたコードはさらに、ローカル・プラットフォ
ームの言語、セキュリティ、型安全性、および実行環境の特性を組み込むことも
できる。したがって、ローカル・プラットフォームでは、バグが入り込まないよ
うに、またスキーマに従って有効なデータのみが生成されるように、生成される
コードを制御する。生成されるコードは、クライアントのコード実行環境(たと
えば、Java、C++、Smalltalk)だけでなく、その管理およびセ
キュリティ・フレームワーク(Webサーバおよび/またはオペレーティング・
システム)に適合する。
【0072】 分散コンピューティング環境では、XMLスキーマから生成されるコードが実
行時に「オンザフライで」生成されることを要求していないことに注意されたい
。その代わりに、コードの一部または全部をサービスのカテゴリ(またはクラス
)に合わせて事前に生成し、その後、プラットフォームのビルド・プロセスでリ
ンクする。コードの事前生成は、いくつかのXMLスキーマがすでに知られてい
る組み込みデバイスなどのある種のクライアントに対し有用である。一実施形態
では、コードの一部または全部が実際に、全く生成されなくてもよい。一実施形
態では、プライベート・コード・ロード方式(クライアント内の)を使用して生
成プロセスを補強することができる。さらに、いくつかの実施形態では、分散コ
ンピューティング環境でサービスにアクセスする際に追加機能のコードをダウン
ロードするためのインターフェースを指定することができる(たとえば、後述の
メッセージ・コンダクタを参照)。通常、ダウンロードされるこのようなコード
は小さく、クライアントにはコードをダウンロードするかしないかのオプション
が用意される。
【0073】 「生成されるコード」というフレーズは、クライアント・コード実行環境の制
御のもとでクライアント内で起動されるコードまたは別のところで(サービス・
システムまたはスペース・サービス・システム上で)生成され、生成後クライア
ント・システムにダウンロードできるコードを指す。ただし、バインド時は実行
時となる。実行時に、生成されたコードは、サービス・アドレス(URI)にバ
インドされ、メッセージがそのサービスのインスタンスに送られる。
【0074】 上述のように、分散コンピューティング環境のサービスとのインターフェース
をXMLスキーマで指定し、クライアントがそのサービスに送る(そしてそのサ
ービスから受け取る)メッセージの集まりを定義することができる。図10に示
されているように、クライアント110およびサービス112は、それぞれ、メ
ッセージ・ゲート130を構築し、指定されたXMLスキーマに従って通信する
。サービス112について通知されたXMLスキーマ(および場合によってはサ
ービス通知の他の情報)から、クライアント110aまたは110bがそれぞれ
メッセージ・ゲート130aまたは130bを構築できる。同じXMLスキーマ
から生成される対応するメッセージ・ゲート130cも、サービス112a上に
存在する。ゲート130は、型安全なXMLメッセージの発送および/または受
取を行え、またメッセージの発送および/または受取のときにXMLメッセージ
の型の正しさを検証できるメッセージ・エンドポイントである。メッセージ・ゲ
ートはさらに、メッセージ・エンドポイントがセキュリティで保護されているこ
とを確認する認証および/またはその他のセキュリティ・メカニズムにも対応す
る。一実施形態では、メッセージ・ゲートは常にセキュリティで保護されている
【0075】 上記の分散コンピューティング環境のメッセージング・レイヤをゲートに結合
するか、またはゲートの一部とすることができる。メッセージング・レイヤは、
非同期にネットワーキング・トランスポートを使用し、バイトの順序列を発送側
から受取側へ送り、発送側と受取側の両方でこのバイト列が1つのアトミック・
ユニット、つまりメッセージであるという概念を維持する。分散コンピューティ
ング環境では、ネットワーキング・トランスポートがIPベースであるという仮
定を置かない。その代わりに、メッセージング・レイヤは、デバイスによってど
のようなネットワーキング・トランスポート・レイヤがサポートされていようと
一番上に置かれる。
【0076】 メッセージ・ゲートは、クライアントとサービスとの間でXMLメッセージを
送り受け取るメカニズムを備えることができる。XMLメッセージは、「型付け
する」ことができる。たとえば、メッセージに、メッセージ・データ・フィール
ドが、たとえば整数、浮動小数点、テキスト・データなどであるかどうかを示す
タグを入れることができる。メッセージ・ゲートは、発送または受け取ったメッ
セージの型の正しさを検証するように構築することができる。メッセージ・ゲー
トはさらに、受け取ったメッセージの発送側を認証(たとえば、セキュリティ保
護機能を使用して識別)することもできる。サービスによって受け入れられるか
つ/またはサービスによって送られるメッセージ・セットを記述するXMLスキ
ーマをサービスに対し提供することができる。メッセージ・ゲートは、そのゲー
トが構築されたXMLスキーマに従って発送または受け取ったメッセージの正し
さを検証する。
【0077】 ゲートは、分散コンピューティング環境で、型検証および/またはメッセージ
の正しさの検証および/またはクライアントとサービスとの間のメッセージに対
する発送側識別を実行するコードおよびデータの単一のアトミック・ユニットと
して構築することができる。一実施形態では、メッセージ・ゲートに対するコー
ドおよびデータのアトミック・ユニットが作成されると、これはその型付け、メ
ッセージ記述子、および発送側識別に関して変更することはできない。他の実施
形態では、ゲートは、作成後、メッセージ・スキーマ内のメッセージの削除、追
加、または修正を含めて、メッセージ・スキーマのコンテンツに関して修正する
ことができる。
【0078】 メッセージ・ゲートは、分散コンピューティング環境におけるクライアントま
たはサービスのメッセージ・エンドポイントである。メッセージ・ゲートは、型
安全なXMLメッセージを送り受け取るセキュリティで保護されたメッセージ・
エンドポイントを備える。メッセージ・ゲートを使用すると、クライアントとサ
ービスは、適当なメッセージ・トランスポート(たとえば、HTTP)で、セキ
ュリティで保護され信頼できる方法により、XMLメッセージを交換することが
できる。クライアントでは、メッセージ・ゲートは、サービスの機能の一部また
は全部を使用する権限を表す。各機能は、サービスに送ることができるメッセー
ジによって表すことができる。このようなメッセージはそれぞれ、メッセージの
正しさを検証するクライアント・メッセージ・ゲートを通じて送ることができる
。メッセージを受け取るには、メッセージを認証し、その正しさを検証するサー
ビス・メッセージ・ゲートを使用する。
【0079】 メッセージ・ゲートは、XMLメッセージの型検査を行うセキュリティで保護
された通信エンドポイントを備えることができる。後述するように、メッセージ
・ゲートはさらに、クライアントとサービスとの間のメッセージの流れを制限す
るメカニズムを備えることができる。一実施形態では、クライアントがサービス
にアクセスしようとする場合、クライアントとサービスのメッセージ・ゲートの
ペアが、すでに存在しているのでなければ、作成される。一実施形態では、サー
ビス・メッセージ・ゲートは、サービスがクライアント・メッセージ・ゲートか
ら第1のメッセージを受け取ったときに作成される。一実施形態では、1つまた
は複数のサービス・メッセージ・ゲートをサービスの初期化時に作成し、これを
使用して、作成の際にクライアント・メッセージ・ゲートとペアを組むようにで
きる。メッセージ・ゲートを作成する場合、目的のレベルのセキュリティを交渉
する認証サービスおよびクライアントとサービスとの間で受け渡すことができる
メッセージ・セットが必要になることがある。一実施形態では、認証サービスは
クライアントIDトークン(クライアント・トークンともいう)、サービスID
トークン(サービス・トークンともいう)、およびサービスに発送またはサービ
スから受け取ることができるデータ表現言語メッセージ・セットを記述するデー
タ表現言語メッセージ・スキーマを受け付けることができる。たとえば、サービ
スを呼び出す、またはサービスのいくつかの一部を呼び出すために、クライアン
トからサービスに送られるメッセージを記述できる。また、応答メッセージやイ
ベント通知メッセージなど、サービスから送るメッセージも記述できる。メッセ
ージ・ゲートの構築および使用での認証サービスの使用方法の詳細については、
以下の「認証とセキュリティ」の項を参照のこと。
【0080】 クライアント・メッセージ・ゲートとサービス・メッセージ・ゲートのペアに
より、クライアントとサービスとの間でメッセージを送ることができる。一実施
形態では、サービスのメッセージ・スキーマに記述されているとおり全メッセー
ジ・セットのサブセットを発送かつまたは受け取るだけのメッセージ・ゲートを
作成することができる。分散コンピューティング環境でこのような制限されたア
クセスを利用することにより、セキュリティ・ポリシーに基づいて特定の個別メ
ッセージ・タイプへのアクセスのみをクライアントに許可する最低限の特権のポ
リシーを実施することができる。ゲートの使用法およびゲートの作成方法の詳細
については、以下の「認証とセキュリティ」の項を参照のこと。
【0081】 クライアント・ゲートとサービス・ゲートは、サービス通知(サービス通知内
のサービスのURI)で指定されたプロトコルを使用して、クライアントからサ
ービスへのメッセージの実際の発送(および受取)を実行する。クライアントは
、このメッセージ・パッシングでサービスを実行する。メッセージ・ゲートは、
クライアントとサービスとの間の抽象(abstraction)のレベルを与える。クライ
アントは、サービス・オブジェクトに直接アクセスする代わりにメッセージ・ゲ
ートを通じてサービス・オブジェクトにアクセスすることができる。ゲートはク
ライアントからのサービスを抽象化しているので、クライアントが最初にサービ
スを使用するまで、サービスのコードをロードして開始する必要はない。
【0082】 クライアント・ゲートも、XMLスキーマと突き合わせてメッセージの検証を
実行するか、または、たとえば、メッセージがまだ検証されていないことをクラ
イアントが示した場合に、XMLスキーマと突き合わせてメッセージの検証をサ
ービス・ゲートによって実行することができる。いくつかの実施形態では、単純
なクライアントの場合に検証は実用的でなく、クライアント側に必要ない場合が
ある。いくつかの実施形態では、サービス側で検証を実行できる。ゲートではさ
らに、認証有効化および/またはセキュリティ方式を実行することもできる。一
実施形態では、クライアントがサービス通知で指定されたプロトコルをサポート
しない場合、正しいゲートを構築できないことがある。この問題を避けるために
、サービス通知(ゲート構築に使用される)はサービスに使用可能なURIのリ
ストを含め、さまざまなクライアントをサポートできるようにする。
【0083】 基本メッセージ・ゲートは、メッセージを発送および受け取るためのAPIを
実装できる。このAPIは、ゲートとの間でデータ(たとえば、XMLメッセー
ジ)を出し入れし、送る前および/または受取後のメッセージの妥当性を確認す
る。一実施形態では、メッセージ・ゲートは、メッセージを発送および受け取る
ための定められた最低限のAPIをサポートできる。後述のように、このAPI
は他の機能に拡張することができる。図10bに示されているように、ゲート1
30は、XMLスキーマ132に従って生成することができる。生成されたゲー
ト・コードは、XMLスキーマに基づいてメッセージを検証する。このゲートは
、メッセージAPIを通じてメッセージ・タイプおよび/またはコンテンツが正
しいかどうかを検証する。図10bに示されているように、検証されたメッセー
ジは、メッセージAPIを通じて、サービスに送られる。このメッセージを、サ
ービス側の対応するゲートで受け取る。このメッセージへの応答として、サービ
スは結果180を生成することができる。サービスは、そのゲートを通じて結果
データ182を返す。結果データは、それ自体結果であるか、または、スペース
に格納されている結果へのURIなど結果に対する参照である。さまざまな実施
形態において、メッセージAPIは、たとえば、同期メッセージ(要求応答)、
非同期メッセージ(応答は要求から切断される)、ユニキャスト・メッセージ(
2地点間)、マルチキャスト・メッセージ(ブロードキャスト)、およびパブリ
ッシュとサブスクライブ(イベント・メッセージ)をサポートできる。リモート
・メソッド呼び出しメッセージなどの他のタイプのメッセージもサポートできる
【0084】 ゲートによって送られた各メッセージは、受取ゲートがメッセージを認証する
ための認証証明書を含むことができる。各メッセージは、さらに、メッセージが
損なわれていないあるいは改変されていないことを受取ゲートが検証するための
情報を含むトークンも含む。たとえば、発送側は、受取側が検証するメッセージ
のハッシュまたはチェックサムを計算することができる。発送側はさらに、発送
側の秘密鍵を使用してこのトークンおよび/またはメッセージ全体を暗号化し、
暗号化されたメッセージに対応する公開鍵を含め、トークンが変更されていない
ことを受取側が検証できるようにする。詳細については、以下の「認証とセキュ
リティ」の項を参照のこと。
【0085】 メッセージ・ゲートのペアは、クライアントからサービスへの要求およびサー
ビスからクライアントへの応答を伝達するメカニズムを備える。2つの関連する
メッセージ・ゲート・エンドポイントを使用して、要求応答メッセージ通信用の
セキュリティで保護された双方向アトミック・メッセージ・チャネルを作成する
ことができる。そこで、分散コンピューティング環境では、メッセージ・ゲート
がクライアントとサービスの両方の側に存在するメッセージ・トランスポートを
採用する。この2つのゲートは連携して、セキュリティで保護され信頼できるメ
ッセージ・チャネルを実現する。
【0086】 図11aには、サービス通知またはその他のサービス記述132からクライア
ント110内にゲート130aを構築することを示す一実施形態の図が示されて
いる。クライアントは、XMLサービス記述に基づいてゲートを生成するクライ
アント上の信頼できるコードであるゲート・ファクトリ140を備える。ゲート
・ファクトリ140を使用すると、生成されるゲートが信頼できるコードでもあ
ること、またそのコードがサービス通知に関して正しいものであることを確認す
ることができる。図11bに示されているように、ゲート130cはさらに、サ
ービス112に構築することもできる。クライアント・ゲート130aおよびサ
ービス・ゲート130cは、クライアントとサービスとの間の通信を行うための
メッセージ・エンドポイントを提供する。一実施形態では、ゲート・ファクトリ
がゲート130を構築するために必要とする断片はサービス(サービス通知から
)のXMLスキーマとサービス(サービス通知から)のURIである。他の実施
形態では、さらに、サービスを通知で指定された認証サービスを実行することに
より、認証証明書を取得し、ゲート構築で使用することができる。
【0087】 ゲート・ファクトリは、メッセージ・ゲートを作成するための信頼できるメカ
ニズムを備える。いくつかの実施形態では、メッセージ・ゲートが信頼できるメ
ッセージ・エンドポイントであることを確実なものとするために、ゲートを作成
するために使用されるコードは信頼できるコードである必要がある。ゲート・フ
ァクトリ140は、ゲートを作成するために使用されるコードの信頼できるパッ
ケージとすることができる。一実施形態では、分散コンピューティング環境でメ
ッセージの発送および受取を望む各クライアントおよびサービス・デバイス・プ
ラットフォームはゲート・ファクトリを備える。いくつかの実施形態では、別の
ゲート・ファクトリによりゲートをあらかじめ構築して、あらかじめ構築された
ゲートを備えたデバイスで完全なゲート・ファクトリを必要としなくて済むよう
にするか、またはゲートは、サービスURIおよび/または認証証明書の実行時
に(たとえば、メッセージ通信が必要なときに)あらかじめ構築されたゲートに
バインドする部分ゲート・ファクトリを備えることができる。
【0088】 デバイス用のゲート・ファクトリは、ローカル・デバイス・プラットフォーム
の言語、セキュリティ、型安全性、および/または実行環境の特性を組み込むゲ
ート・コードを生成できる。デバイスは、ゲート自体を構築することにより、生
成されたゲート・コードにバグがないこと、有効なデータのみを生成すること、
型安全であることを確認することができる。サービスにアクセスするためコード
をダウンロードするのではなく自分のゲート・コードをデバイスで生成する利点
は、クライアント・コード管理環境に制御権があるという点である。生成される
コードは、クライアントのコード実行環境(たとえば、Java、C++、Sm
alltalk)だけでなく、その管理およびセキュリティ・フレームワーク(
Webサーバおよび/またはオペレーティング・システム)に適合する。生成さ
れたコードは、クライアントの実行時環境がコード作成に関わっていたため信頼
できるコードでもある。したがって、信頼できる生成されたコードにより信頼で
きるセキュリティ情報も追加できる。そのため、デバイスはサービスに対するX
MLメッセージ・スキーマを受け取りてから、その後デバイスにアクセスするた
めにそのスキーマに基づいてゲートを構築することができる。XMLスキーマは
、サービスとの契約を定義することとみなすことができ、生成されたゲート・コ
ードは、その契約を実行するセキュリティで保護された手段を提供することとみ
なすことができる。信頼できない(たとえば、ダウンロードされた)コードが実
行される開いているデバイスは、信頼できるコードでのみゲートを生成できるよ
うに設定できることに注意されたい。開いているデバイスは、ゲートの実装、特
にゲート認証証明書を発見することができるデバッガなど、ゲートがツールから
アクセスできない保護され分離されているコード・コンテナに封じ込められてい
るプロセス・モデルを採用することができる。
【0089】 ゲート・ファクトリ140は、クライアントのためにサービスと交渉し、メッ
セージをサービスに送るためのゲートを作成する。同様に、ゲートをサービスで
構築し、クライアント・ゲートからメッセージを受け取り、メッセージをクライ
アント・ゲートに送るようにできる。それとともに、クライアントとサービス・
ゲートは、セキュリティで保護された双方向通信チャネルを形成できる。
【0090】 ゲート・ファクトリは、ゲートを作成する際にあるレベルの抽象化を行う。た
とえば、クライアントがサービスを使用することを望んでいる場合、クライアン
トが直接サービスにアクセスするゲートを作成する代わりに、サービスをインス
タンス化する一環としてゲート・ファクトリによりゲートを作成できる。
【0091】 ゲート・ファクトリは、構築するゲートの認証証明書を受け取るため認証サー
ビス(たとえば、サービス通知により指定された)と通信するために使用される
信頼できる独自のメッセージ・ゲートを作成または備えることができる。アクセ
スが制限されているサービスでは、認証証明書なしでゲートを構築することがで
きる。サービスではアクセスを制限しないので、このようなサービスのゲートは
、各メッセージを有する認証証明書を送る必要がない場合がある。認証サービス
は、一実施形態では、アクセスを制限しないサービスの一例である。したがって
、サービスでアクセスを制限するかどうかをチェックすることによりゲート構築
を最適化するようにゲート・ファクトリを設定できる。サービスがアクセスを制
限しない場合、ゲート・ファクトリはゲート構築の一環として認証サービスの実
行を回避することができ、また構築されたゲートの一部として認証証明書に対す
る取り込まれた規定を回避できる。ゲート・ファクトリはさらに、XMLメッセ
ージ・スキーマ(たとえば、サービス通知によって指定される)を受取またはダ
ウンロードし、そのスキーマとマッチするゲートを作成することもできる。ゲー
ト・ファクトリはさらに、URIと通信するクライアント・メッセージ・ゲート
の作成に使用するサービスおよび/またはサービス・メッセージ・ゲート用にU
RIを受取またはダウンロードすることもできる。
【0092】 さらに、サービスのXMLスキーマと突き合わせてメッセージのチェックを実
行することを望んでいないいくつかのクライアントに対して別のゲート構築最適
化を採用することができる。クライアントは、軽量過ぎてチェックを実行できな
かったり、チェックを実行するのにサービス・ゲートに依存していたり、単にチ
ェックの実行を選択しなかったりする(たとえば、ゲート・メモリ占有面積を減
らすため)。提供されるXMLスキーマと突き合わせてメッセージを検証するた
めにゲートを構築するかどうかの表示を受け取るようにゲート・ファクトリを設
定できる。いくつかの実施形態では、いくつかのクライアントが、構築されたゲ
ートのスキーマと突き合わせてメッセージの検証を行う機能を備えていないゲー
ト・ファクトリを備えることができる。いくつかの実施形態では、メッセージを
検証しないようにゲートを事前に構築する。いくつかの実施形態では、送出メッ
セージのみを検証するか、または受け取ったメッセージのみを検証するように、
ゲートを構築することができる。したがって、いくつかの実施形態では、クライ
アントは、XMLスキーマと突き合わせてメッセージをチェックするゲート・コ
ードの一部または全部の構築を回避するか、または回避することを選択できる。
【0093】 いくつかの実施形態では、デバイスは、同じサービスが実行されるごとに構築
するのを回避するためにゲートのキャッシュを維持することができる。たとえば
、新しいゲートがゲート・ファクトリにより構築されるときに、ゲートをゲート
・キャッシュ内に維持することができる。ゲートが使用されなくなったら、削除
する代わりに、ゲート・キャッシュ内に保持する。ゲート・キャッシュがいっぱ
いになったら、最近最も使用されていないデータを追い出すアルゴリズムなどの
キャッシュ置換アルゴリズムに従って1つまたは複数のゲートをゲート・キャッ
シュから削除することができる。ゲートを構築するためゲート・ファクトリが呼
び出された場合、ゲート・ファクトリはまず、新しいゲートの構築を回避できる
ようにゲート・キャッシュをチェックしてマッチするゲートがすでに存在してい
ないか調べる。
【0094】 他のゲートを構築するのに使用した断片を適切に再利用することによりゲート
の構築を軽量化することができる。各ゲートのいくつかの部分は同じでよいため
、メッセージ検証コードの一部など、ゲートからゲートへ再利用することができ
る。さらに、いくつかのデバイスについては、共通ゲート・コードをデバイスの
システム・ソフトウェアに組み込み、そのデバイスのすべてのゲートと共有する
ことができる。したがって、ゲート・ファクトリは、ゲートごとにこの共通コー
ドを再構築することを回避することができる。その代わりに、ゲート・ファクト
リは、単に、ゲートをこのシステム・ソフトウェア部分にバインドすることがで
きる。たとえば、デバイスにどのようなトランスポートが提供されていようとメ
ッセージ・レイヤを取り扱えるシステム・ソフトウェア部分を用意することがで
きる。
【0095】 特に、スペース・サービスは、スペース・サービスに対して構築されたサービ
ス・ゲートがそのスペース・サービスの他のサービス・ゲートと同じ多くの機能
を実行できるため、上述のゲート構築最適化の多くに対して適切な候補といえる
。スペース・サービスの詳細については、以下の「スペース」のセクションを参
照のこと。
【0096】 いくつかの場合において、より効率的なメソッド呼び出し形式が存在すること
がある。たとえば、ターゲット・サービスがクライアント・アプリケーションと
同じJava仮想マシンで実行される場合、より効率的なメソッド呼び出し形式
は、サービスに対しJava Dynamic Proxy Classを作成
することである。このような場合、java.lang.reflect.Me
thod呼び出しは、メッセージの発送よりも高速なことがある。ゲート・バイ
ンド時間プロシージャは、このような最適化をチェックし、ゲート・ファクトリ
を実行する代わりにそれを使用して、ゲートを作成するか、または既存のゲート
をバインドする。
【0097】 一実施形態では、専用クライアントや小型埋め込み型デバイスの場合などで、
実行時のゲート・コードの生成は、メモリの消費とコード生成時間の観点から、
望ましくないことがある。したがって、実行時にゲートを生成するゲート・ファ
クトリを用意する代わりに、いくつかの実施形態では、ゲートを事前に生成し、
デバイスに組み込む。たとえば、埋め込み型ソフトウェアのビルド時に、実行時
に構築しなくてよい組み込みのセキュリティで保護されたメッセージ・エンドポ
イントを含める手段としてメッセージ・ゲートを生成することができる。したが
って、組み込み型ゲートを持つクライアントは、完全なゲート・ファクトリを必
要としないか、またはURIおよび/または認証証明書など、組み込みゲートへ
のある種の実行時バインドを実行するために部分的ゲート・ファクトリのみあれ
ばよい。
【0098】 ゲートの事前構築用に生成ツールを用意することができる。そのゲート生成ツ
ールは、XMLパーサ、コード・ジェネレータ、およびコード・コンパイラを備
える。一実施形態では、コード・ジェネレータはJavaソース・コード・ジェ
ネレータであり、コード・コンパイラはJavaコード・コンパイラである。組
み込みメッセージ・ゲートが望まれるソフトウェアのビルド時に、ゲートが望ま
れる関連するすべてのXMLスキーマからの入力とともに生成ツールが実行され
る。
【0099】 たとえば、デバイスがデジタル・カメラとの間でメッセージを送受取できる組
み込みメッセージ・ゲートを備えることが望ましい場合、デバイス・ソフトウェ
アのビルドは、カメラのXMLメッセージ・スキーマを入力としてゲート生成ツ
ールを実行する作業を含む。XMLスキーマは、XMLスキーマをメッセージ検
証プロセスで高速アクセスするのに適している内部形式に変換するXMLパーサ
により解析することができる。ツールのコード・ジェネレータは、カメラのスキ
ーマに対応するゲートのソース・コードを提供することができる。いくつかの実
施形態では、生成ツールはさらにソース・コードをコンパイルし、ゲート・コー
ドはデバイスのソフトウェア・パッケージにリンクすることができる。実行時に
、分散コンピューティング環境でカメラ・サービスを発見することができる。カ
メラ・サービスのメッセージURIをデバイス内でカメラの組み込みゲートにバ
インドすることができる。事前に構築されたゲートへのURIのバインドは、デ
バイス内のゲート・コンストラクタによって実行される。このゲート・コンスト
ラクタは、かなり小さく、単純なゲート・ファクトリである。カメラ・サービス
がインスタンス化されると、カメラ・サービスのURIがXMLメッセージとし
てゲート・コンストラクタに渡される。その後、ゲート・コンストラクタはUR
Iを事前構築されたゲートにバインドする。
【0100】 したがって、ゲートは、実行時に部分的にまたは完全に生成されるか、または
ゲートは、実行時に実行されるバインド・プロセス(たとえば、URIまたは証
明書の)で実行時の前に事前生成される。一実施形態では、ゲート・ファクトリ
などのゲート生成ツールまたは事前構築されたゲートの生成ツールを、あるレベ
ルのプラットフォーム独立性を実現するJavaベースのツールとすることがで
きる。それとは別に、ゲート生成ツールは、分散コンピューティング環境では特
定のデバイスのネイティブ・コードなど任意の言語のものが提供できる。分散コ
ンピューティング環境では、デバイスがゲートのコードの一部または全部をダウ
ンロードできないことはないことに注意されたい。たとえば、いくつかの実施形
態では、サービスは、そのサービスへのアクセスを望むクライアントによってダ
ウンロードできるゲート・コードを提供する。ただし、ダウンロードされたコー
ドは、サイズ、セキュリティ、および/または安全に関する危険性を示す場合が
ある。
【0101】 一実施形態の考えられるゲート・コンポーネントの詳細な図を図12に示す。
ゲートは、そのアドレス(または名前)150、デスティネーション・ゲート・
アドレス152、有効なXMLスキーマ(または内部形式)154、およびトラ
ンスポートURI 153を備えることができる。他の実施形態では、ゲートに
認証証明書156を含むことができる。一部のゲートは、さらに、リース158
および/またはメッセージ・コンダクタ160を備え、メッセージ順序付けを検
証することができる。ゲートの名前150は、そのゲートを参照するだけの一意
的なIDでよい(そのゲートの存続期間中)。ゲートは、ゲート名150を使用
してアドレス指定することができる。一実施形態では、ゲート名はXMLスキー
マのストリング(たとえば、サービス通知からのストリング)と128ビット乱
数などの乱数の組み合わせとして生成することができる。名前150を使用する
際に、クライアントおよびサービスはネットワークに関して移行することができ
、またそのまま協調動作する。好ましい実施形態では、ゲート・アドレスは、物
理的メッセージ・トランスポート・アドレスおよび/またはソケット・レイヤと
独立である。したがって、ゲート名はメッセージ・トランスポート・アドレスに
対するバインドおよびバインド解除できる仮想メッセージ・エンドポイント・ア
ドレスを与えることができる。一実施形態では、ゲートの名前は、そのゲートの
存続期間中、そのゲートを参照するだけのUniversal Unique
Identifier(UUID)でよい。
【0102】 ゲート名は、ゲートは存続している限り存続するため、同じデバイス内で実行
する異なるアプリケーションとクライアントは特定のゲートを繰り返し見つけて
、使用することができる。たとえば、サービスにアクセスするためデバイス内で
実行している第1のクライアント・プロセスについてゲートを作成することがで
きる。第1のクライアント・プロセスがそのサービスに対する活動を完了した後
、ゲートを解放する。ゲートを解放する作業では、ゲートの第1のクライアント
・プロセスのメッセージ・トランスポート・アドレス(たとえば、IPおよび/
またはポート・アドレス)へのバインドを解除する必要がある。ゲートは、ゲー
ト・キャッシュまたはリポジトリに格納することができる。同じサービスを実行
する必要がある同じデバイス内で実行している第2のクライアント・プロセスは
、そのゲートを名前で特定し、そのゲートを使用してサービスにアクセスする。
ゲートを使用するために、第2のクライアント・プロセスはゲートをそのメッセ
ージ・トランスポート・アドレスにバインドし、第2のクライアント・プロセス
に対するメッセージ・エンドポイントがゲート名と第2のクライアント・プロセ
スのトランスポート・アドレスとの組み合わせになるようにする。他の実施例で
は、クライアントは動的IPアドレスを受け取ることができる(たとえば、モバ
イル・クライアント)。クライアントのトランスポート・アドレスが変更される
と、(1つまたは複数の)ゲート名がクライアントの新しいトランスポート・ア
ドレスに再バインドされ、クライアントがそのまま、サービスを再配置しゲート
を再作成せずにすでにアクセスしているサービスにアクセスできる。ゲート名は
、プロセスの移行にも使用できる。プロセスおよび関連するゲートを、分散コン
ピューティング環境の一ノードにチェックポイント化するかまたは保存して、他
のノードに移動することができる。プロセスを新しいノードで再起動し、関連す
るゲートをその新しいノードのトランスポート・アドレスにバインドすると、プ
ロセスは、移行前のアクセス先であった外部サービスにそのままアクセスするこ
とができる。ゲートは、ペアの相手である他のゲートの現在の場所を追跡するこ
とができる。したがって、サービスまたはクライアントを移行しても、そのまま
アクセス可能である。たとえば、複製または負荷バランスをとったサービス実装
をゲートによってサービスのクライアントから抽象することができる。そこで、
ゲート名150は、分散コンピューティング環境でメッセージ・エンドポイント
のアドレス指定を行う柔軟性の高いメカニズムを提供する。ゲート名を使用して
、ローカル・ネットワークからインターネットにいたるさまざまなネットワーク
上でゲートを特定および/またはアドレス指定することができる。ゲート名は、
メッセージ・トランスポートとは無関係で、メッセージ・エンドポイント(ゲー
ト)を基礎となる異なるトランスポート・アドレス(たとえば、IP/ポート・
アドレス・ペア)へのバインド解除および再バインドによりトランスポートから
トランスポートへ移動することができる。
【0103】 一実施形態では、ゲートをさらにサービスから分離し、同じゲートを使用して
時間がたつうちに要求を異なるサービスに送ることができる。この作業には、ゲ
ートのデスティネーション・ゲート・アドレス152のバインドを解除し、新し
いデスティネーション・ゲート・アドレスをゲートにバインドする作業が必要で
ある。
【0104】 ゲートは、デバイスのトランスポート・レイヤの上のレイヤとして実装するこ
とができる(たとえば、ネットワーキング・ソケット)。各ゲートは、トランス
ポート参照153を含む。ゲート名150は、上述のようにトランスポート参照
153にバインドされる。複数のゲートが、同じメッセージ・トランスポートを
共有することができる。たとえば、複数のゲートが同じTGP/IPソケットへ
のトランスポート参照153を持つことができる。同じメッセージ・トランスポ
ートを共有することにより、各ゲートのサイズおよび複雑さを低減することがで
きる。分散コンピューティング環境内のデバイスは、メッセージの送受取に必要
なゲートの数が増える場合がある。複数のゲートに対するメッセージ処理の複雑
さは、共通メッセージ・トランスポートを共有することにより低減される。トラ
ンスポート参照153は、トランスポートURI(たとえば、URL)またはソ
ケット参照であり、基礎のトランスポートに名前を付け、そのトランスポートを
他のゲートと共有するメカニズムを提供することができる。複数のローカル・ゲ
ートは、同じトランスポートへの参照153を含むが、各ローカル・ゲートは、
ペアのリモート・ゲートとの間でメッセージの送受取を行う他のローカルゲート
とは無関係に動作する。
【0105】 スキーマ154は、ゲート・ファクトリによってスペースからゲート内にダウ
ンロードすることができる。スキーマを、メッセージ検証プロセス中に素早くア
クセスするのに適している内部形式にコンパイルすることができる。一実施形態
では、スキーマは、クライアント・サービス・メッセージおよびプロバイダ・サ
ービス・メッセージという2つのメッセージのグループを指定できる。クライア
ント・サービス・メッセージ・グループは、クライアントが送ることができるす
べてのメッセージの記述(プロバイダがサポートする)を含み、プロバイダ・サ
ービス・メッセージ・グループは、プロバイダが送ることができる(クライアン
トが受け取る)すべてのメッセージの記述を含む。一実施形態では、クライアン
トまたはプロバイダのいずれかがスペース・サービスに対し特定の要求を送り、
クライアント・サービス・メッセージ全体、プロバイダ・サービス・メッセージ
全体、クライアントおよびプロバイダ・サービス・メッセージ全体、またはクラ
イアント・サービス・メッセージまたはプロバイダ・サービス・メッセージのい
ずれかの特定のメッセージのいずれかのメッセージとともに応答メッセージを取
得する。さらに、ゲートが構築された後、クライアントは、ゲートが実際にメッ
セージを送りなくても、ただし、その代わりに、ゲートのメッセージ群を検査す
ることにより、サービスの機能に関してクエリを実行することができる。
【0106】 上述のように、メッセージ・ゲートは、認証証明書を使用するメッセージの発
送側、型安全性に対するメッセージ・コンテンツをXMLスキーマに従って検証
することができる。ただし、クライアントとサービスとの間でメッセージが正し
い順序で送られることを検証することが望ましい。クライアント上のアプリケー
ションに関係する既存の特定の機能なしで(たとえば、クライアント上のアプリ
ケーションにGUIがない場合)実行するクライアント用のアプリケーション(
サービス)を提供できることが望ましい。たとえば、クライアント上でWebブ
ラウザをサービスのGUIとして使用し、アプリケーション固有のGUIを使用
しないようにできる。XMLスキーマ内の可能なメッセージのうち、クライアン
トは次にサービスに送るメッセージを知る必要がある。クライアントはサービス
に関する特定の情報がないまま次に送るメッセージを判別できることが望ましい
。一実施形態では、サービスは必要な次の入力を示す応答メッセージを継続的に
送ることができる。サービスは、その後、要求入力が指定されているクライアン
トから対応するメッセージのみを受け入れる。メッセージ順序付けに対する他の
アドホックな方式も採用できる。
【0107】 他の実施形態では、各メッセージのシンタックスを検証する(スキーマに従っ
てゲート内ですでに実行されている可能性がある)のとは反対に、メッセージ・
コンダクタ160をゲート内で採用するか、またはゲートに関連付け、メッセー
ジの正しい順序を検証することができる。メッセージ・コンダクタ160は、ア
プリケーションの準備のためのより一般的なアプローチをとることができる。メ
ッセージ・コンダクタ160は、サービスの通知で指定できる。スキーマ内のメ
ッセージ・コンダクタ指示により、ゲート構築中に、クライアント上に生成する
か、またはクライアントにダウンロードすることができ、次にサービスに送るメ
ッセージを決定するのに必要なコレオグラフを提供できる。メッセージ・コンダ
クタは、Javaアプリケーション、Java Script、およびWMLス
クリプトとして、または他のプログラミングまたはスクリプティング言語で実装
できる。
【0108】 一実施形態では、メッセージ・コンダクタは入力を、クライアントとサービス
の間で送ることができるメッセージの有効な順序またはコレオグラフを表示する
XML文書(たとえば、サービス通知からの)として受け入れることができる。
このXML文書はさらに、ユーザ・インターフェース情報とその他の規則を指定
することもできる。コンダクタは、このXML文書を解析して、内部形式にし、
囲まれている順序付け情報に従ってメッセージ順序付け(および/またはその他
の規則)を強制する。コンダクタは、メッセージの発送順序が狂うのを防ぐこと
ができる。または、メッセージの発送順序が狂った場合、発送デバイス内に例外
を発生させることができる。メッセージの受取順序が狂った場合、コンダクタは
順序付けエラーを宣言する自動応答メッセージを送る。これで、発送側はメッセ
ージを正しい順序で再送することができる。いくつかの実施形態では、コンダク
タの一部または全部を複数のゲートで共有することができることに注意されたい
。そのため、コンダクタを複数のゲートにリンクすることができる。
【0109】 分散コンピューティング環境の一実施形態では、サービスのフロント・エンド
(サービス・インターフェース)をクライアントに組み込むことができる。一実
施形態では、サービス・インターフェースを、サービスによってクライアントに
提供される事前構築ユーザ・インターフェースとすることができる。一実施形態
では、サービス・インターフェースを、サービス通知でクライアントに提供する
ことができる。サービス・インターフェースは、クライアント上でサービスのユ
ーザと対話し、サービスを実行するための入力を取得し、サービスを実行した結
果をクライアントに表示することができる。「ユーザ」は、人間でも、組み込み
システムでも、他のクライアントまたはサービスなどでもよい。一実施形態では
、クライアント・デバイスは、フロント・エンドを組み込んでいるサービスを実
行できるだけなので、任意のサービスを用意することができない場合がある。一
実施形態では、サービスのサービス・インターフェースは、クライアント上のW
ebブラウザに実装することができる。
【0110】 一実施形態では、メッセージ・コンダクタおよび/またはサービス・インター
フェースはゲートの外部にあってもよく、したがって、ゲートとクライアントか
ら抽象することができる。抽象されたメッセージ・コンダクタは、任意のクライ
アント・デバイスに対し任意のサービスを提供することができる。一実施形態で
は、メッセージ・コンダクタを、実質的にどのようなプラットフォームでも実行
できるコードで書くことができる。一実施形態では、メッセージ・コンダクタは
、Java言語で書く。一実施形態では、メッセージ・コンダクタは、クライア
ント・デバイスに返される、オブジェクト、たとえば、Javaオブジェクトの
任意のダウンロードを必要としない。たとえば、非常に大きなオブジェクトを返
す場合、メッセージ・コンダクタは、そのような非常に大きなオブジェクトをダ
ウンロードしないことを選択できる。一実施形態では、メッセージ・コンダクタ
は、クライアントのために、XMLメッセージをクライアント・デバイスからサ
ービスに送ることができる。メッセージ・コンダクタは、サービスのユーザと対
話して、入力を受け取り、結果を表示することができる。
【0111】 一実施形態では、クライアントと対話し(たとえば、ユーザ・インターフェー
スを介して)、サービスを実行するためのすべての情報を取得するサービス・イ
ンターフェースを提供し、これにより、サービスを実行した結果または結果の場
所に関する情報のいずれかを適宜表示することができる。サービス・インターフ
ェースは、メッセージ・コンダクタ160の一部でもよく、またはメッセージ・
コンダクタ160に加えてそれと連携することもできる。サービス・インターフ
ェースは以下のいずれかである。 1.クライアント・デバイスに組み込まれ、クライアント上で実行される。 2.スペース・サーバからクライアント・デバイスにダウンロードされる。 3.スペース・サーバ上で実行される。 4.サービス・プロバイダ上で実行される。
【0112】 一実施形態では、クライアントに対して、分散コンピューティング環境のスペ
ース・サーバは#1を常にサポートし、#2がサポートされていればそのことを
示し(スペース内の通知で)、#3と#4のうち少なくとも1つがサポートされ
ていればそのことを示す必要がある。#4をサポートしているかどうかは、サー
ビス・プロバイダが#4をサポートしているかどうかにかかっていることに注意
されたい。一実施形態では、サービス・プロバイダに対し、分散コンピューティ
ング環境のスペース・サーバは#4を常にサポートし、#3をサポートしていれ
ばそのことを示す必要がある。
【0113】 サービス・インターフェースがどこで実行されようと、サービスがアクティブ
化された後、サービス・インターフェースはクライアントと対話し、クライアン
トの表示装置に入力に対する要求を(リモートから)表示し、サービスの実行結
果を(リモートから)表示することができる。クライアントとのこのような対話
は、XMLメッセージとして実装される。このようなサービス・インターフェー
スおよび/またはメッセージ・コンダクタは、サービスを発見したけれども、ふ
つうサービスの使い方を知るために大部で無味乾燥のコンピュータ・マニュアル
を読みたくないクライアント・ユーザのニーズに応えられる。サービス・インタ
ーフェースおよび/またはメッセージ・コンダクタがユーザと対話して、サービ
スが必要とするすべての入力を要求するときに、ユーザが要求した場合に、要求
された入力の短い説明を用意することさえできる。サービス・インターフェース
がクライアントから必要な情報を取得した後、XMLメッセージを、そのサービ
スを実行するサービス・プロバイダに送る。メッセージの順序は、ゲート内のメ
ッセージ・コンダクタ160によって検証される。
【0114】 好ましい実施形態では、すべてのメッセージはゲート内を流れる。ゲートは、
フロー制御メカニズムを提供するように構成することができる。たとえば、サー
ビスが大量の着信メッセージおよび発信メッセージを処理する必要がある。フロ
ー制御により、サービスは高トラフィック・ボリュームに追随することができる
。フロー制御タグについてメッセージを監視するようにゲートを構成することが
できる。ゲートがメッセージを受け取ると、ゲートはそのメッセージに対するフ
ロー制御タグを調べる。フロー制御タグはXMLタグとすることができる。たと
えば、メッセージには、OFFタグまたはONタグのいずれかを記述できる。受
け取ったメッセージにOFFタグが含まれる場合、受取ゲートはペアのデスティ
ネーション・ゲートへの発送メッセージを停止する。ゲートは、ONタグを含む
メッセージを受け取ると、メッセージの発送を再開する。
【0115】 そこで、サービス側ゲートはそのリソースの使用を監視し、そのリソースの使
用がしきい値を超えた場合にフロー制御を起動する。たとえば、サービスが、O
FFタグを含むメッセージを1つまたは複数のクライアント・ゲートに送ること
により負荷を低減することができる。OFFタグを含むメッセージを受け取った
クライアント・ゲートは、サービスへのメッセージ発送を停止する。クライアン
ト内の保留メッセージは、バッファリングするか、または内部フロー制御メカニ
ズムによって処理することができる。サービスがさらに要求を処理できるように
なると、ONタグを含む1つまたは複数のクライアントにメッセージを送り、ク
ライアントはメッセージ発送を再開する。他の実施形態では、ONおよびOFF
に加えて、またはONおよびOFFの代わりに、他のフロー制御タグをサポート
することができる。他のフロー制御タグはメッセージ・フローの低減を示すか、
またはそのメッセージ・フローを高くすることができる。
【0116】 メッセージ・ゲートはリソース監視を実行するように構成することができる。
たとえば、すべてのメッセージはゲート内を流れるため、ゲートはクライアント
がサービス(および場合によっては、メモリーやスレッドなどの関連するリソー
ス)を使用する状況を管理しかつ/または追跡するように構成することができる
。ゲートは、サービスなどのリソースがどれだけ使用されているか、またどのサ
ービス・リソースをどれだけ使用しているかを監視することにより、クライアン
トなどのソフトウェア・プログラムの活動を追跡するように構成できる。一実施
形態では、ゲートはクライアント活動ログを生成するか、またはクライアント活
動ログの生成を簡単に行えるようにする。各メッセージおよびその宛先または発
送側をログに記録することができる。
【0117】 さらにゲートは、ゲート・ペアのローカル(発送)側からフロー制御に関する
リソース監視を実行するように構成することもできる。クライアントが、割り当
てられたサービス(またはリソース)使用の帯域幅を超えた場合、たとえば、ゲ
ートは自動的にメッセージの流れを絞る。したがって、クライアント側メッセー
ジ・ゲートは、発信メッセージの流れを監視することにより異なるフロー制御モ
ードを自動的に起動することができる。発信メッセージ・フローがしきい値を超
えた場合、ゲートは発信メッセージの流れを減らすかまたは遮断する。サービス
のXMLスキーマまたは通知でしきい値を指定することができる。いくつかの実
施形態では、しきい値は特定のサービス・リソースを使用するメッセージのみま
たはすべてのメッセージについて指定することができる。
【0118】 ゲートは、さらに、メッセージ・フローが増えるか、または再開するのを判別
するように構成することもできる。一実施形態では、ゲートは、マッチする返信
(応答)を受け取ることなく、送られた発信メッセージのカウントを保持するこ
とができる。マッチする応答がクライアント側ゲートに届いたら、未処理の要求
メッセージのカウントを減らす。このカウントが未処理要求メッセージの指定さ
れたしきい値以下に減ったら、ゲートは新しい要求メッセージを増やすか、また
はその発送を再開することができる。
【0119】 ゲートは、メッセージ・ベースの課金請求機能をサポートするように構成でき
る。請求システムは、メッセージ・ゲートで発送および/または受け取ったメッ
セージの個数および/または種類に基づいて実装することができる。クライアン
トとの間でやり取りされるすべてのメッセージはゲートを通過するので、たとえ
ば、1メッセージごとにまたは「即金で支払う」方式でサービス使用料金を簡単
にクライアントに請求できるようにゲートを構成することができる。したがって
、たとえば、ユーザの代わりに実行されているソフトウェアがメッセージを発送
および/または受け取るごとにユーザに課金できる請求システムを分散コンピュ
ーティング環境内に実装することができる。
【0120】 一実施形態では、メッセージ・ゲートは、たとえば、サービスに関してXML
スキーマから請求情報を受け取る。請求情報は請求ポリシーとチャージ・バック
URIを表すことができる。チャージバックURIは、メッセージ・ゲートがユ
ーザの代わりに時間課金または使用度課金する場合に使用する。メッセージ・ゲ
ートは、課金メッセージをXMLスキーマで指定したチャージバックURIに送
ることによりチャージバックを実行する。このように構成されたゲートは請求ゲ
ートと呼ばれる。請求ポリシーは、1メッセージ当たりの課金金額または累積メ
ッセージ合計に対する課金金額などを示す。請求ポリシーは、ユーザに対しどれ
だけおよび/またはどのような頻度で(たとえば、x個のメッセージを発送およ
び/または受け取った後)課金するかを示す。このポリシーはある種のメッセー
ジのみが課金を発生させ、このようなメッセージにより指定されたサービス・リ
ソースが要求されることを示す。請求ポリシーはさらに、異なるクライアントま
たはクライアントのクラスに対して異なる請求モデルを示す場合もある。たとえ
ば、いくつかのクライアントがサービスにアクセスするためゲートを作成すると
きに一度限りの課金の対価を支払うように請求ポリシーを(たとえば、サービス
のXMLスキーマで)構成することができる。ポリシーは、即金で(たとえば、
メッセージごとに)支払うクライアントを示す場合もあれば、または全く課金さ
れないクライアントを示す場合もある。
【0121】 いくつかの実施形態では、クライアントは軽量すぎて完全なゲートをサポート
できなかったり、クライアントに、直接分散コンピューティング環境に参加する
ためのソフトウェアを組み込めない場合がある。このような実施形態では、サー
バ(サービスが通知されるスペース・サーバや他のサーバなど)はそのクライア
ントに対して完全または部分的なプロキシ・ゲートとすることができる。サーバ
は、クライアントで使用するサービスごとにサービス・エージェント(ゲートを
含むことがある)をインスタンス化する。サービス・エージェントは、メッセー
ジを送る許可を確認し、メッセージをプロバイダに送り、その際、場合によって
はプロバイダが次のメッセージを受け付けるようになるまでキューに入れておき
、メッセージをクライアントに送り、その際、場合によってはクライアントが次
のメッセージを受け付けるようになるまでキューに入れておき、結果またはアク
ティブ・スペースに結果を格納する作業を管理するという操作を行うことができ
る。「ブリッジ」のセクションを参照されたい。たとえば、図13に示されてい
るように、クライアントは、ゲートが上述のメッセージング方式に直接参加する
ことをサポートしていない従来のブラウザ400とすることができる。ブラウザ
400は、プロキシ・サーブレット(エージェント)402によって補助される
。ブラウザのユーザは、サーチ・エンジンを使用して、分散コンピューティング
環境内のスペース通知サービスの前面に置かれる(その内容を表示する)Web
ページを見つけることができる。ユーザは、スペースのWebページをポイント
してクリックし、サーブレットの助けを借りて、サービスにアクセスすることが
できる。Webページには、スクリプト、たとえば、JavaやWMLスクリプ
トを含むことができ、これを使用して、ブラウザをプロキシ・サーブレットに接
続する。また、スクリプトを使用して、メッセージをプロキシ・サーブレットに
送ることもできる。サーブレット・エージェントは、ブラウザ・クライアントに
代わってWebページ・アクションをメッセージに翻訳する。これらのはアクシ
ョンは、スペースのナビゲート、サービスの起動、および結果の返却を含む。結
果ページURI(XMLを含むページを参照する)は、直接(または必要ならば
HTMLまたはWAPに変換されて)ブラウザに返され、ユーザに対し表示され
る。したがって、ブラウザ・ベースのクライアントは、サービスの起動方法を知
る必要がなく、またサービス使用セッションで送るメッセージを知る必要もない
。たとえば、WAPブラウザのユーザ(たとえば、携帯電話の)は、スペース・
ページに接続し、そのコンテンツ(サービス)を参照し、サービスを起動するが
、すべてポイントしてクリックする操作により行える。エージェント402は、
従来のクライアントと分散コンピューティング環境との間のクライアント・イン
ターフェースを備える。
【0122】 分散コンピューティング環境は、異なる機能をサポートするクライアントとサ
ービスとの間の通信を行うための数種類のメッセージ・ゲートを備えることがで
きる。たとえば、上述のように、いくつかのゲートは、フロー制御または請求機
能をサポートする。他の種類のメッセージ・ゲートでは、特定の形式のリモート
・メソッド呼び出しをサポートする。このタイプのゲートは、メソッド・ゲート
と呼ばれる。
【0123】 ゲートは、型安全なメッセージ、たとえばXMLメッセージを送り受け取るセ
キュリティで保護されたメッセージ・エンドポイントである。リモート・メソッ
ド呼び出し(RMI)スタイルのゲートは、メソッド・ゲートと呼ばれる。直接
データ中心ゲートは、メッセージ・ゲートと呼ばれる。メソッド・ゲートは、メ
ッセージ・ゲートの上の「レイヤ」として実装することができる。正確な実装は
、プラットフォームのバインドで定義することができる。
【0124】 図14は、メソッド・ゲートを使用してリモート・メソッド呼び出しインター
フェースをサービスに提供する方法を示す。メソッド・ゲートは、クライアント
とサービスとの間のメソッド・インターフェースを提供する。メソッド・ゲート
は双方向にすることができ、クライアントからサービスへ、またサービスからク
ライアントへのリモート・メソッドを呼び出しが可能である。XMLスキーマ情
報170から(たとえば、スペース内のサービス通知から)メソッド・ゲート1
72を生成することができる。XMLスキーマ情報170は、メソッド・インタ
ーフェースを定義するXMLを含む。この情報から、1つまたは複数のメソッド
とのインターフェースのコードをゲートの一部として生成することができる。生
成されたコード内の各メソッドを呼び出し(たとえば、クライアント・アプリケ
ーション176からの)により、マーシャリングされたメソッド・パラメータを
含むメッセージをサービスに送ることができる。含まれるメッセージのシンタッ
クスおよびパラメータをXMLスキーマで指定する。したがって、メソッド・ゲ
ート172は、サービス・メソッドをリモートから呼び出すXMLメッセージ・
インターフェースを備える。メソッド・ゲートは、クライアント上に生成するか
、またはサービス・メソッドが通知されたスペース・サーバまたは特別ゲートウ
ェイ・サーバなどのサーバをプロキシとすることができる。
【0125】 サービスは、サービスのXMLスキーマで定義されたメソッド・メッセージ・
セットに対応するオブジェクト・メソッド・セットを実装するかまたは、それに
リンクされている対応するメソッド・ゲートを備えることができる。サービスの
メソッド・ゲートよって実装された、またはそれにリンクされているオブジェク
ト・メソッドとサービスのXMLスキーマによって定義されたメソッド・メッセ
ージとの間に一対一の対応関係がある。サービスの対応するメソッドがクライア
ントからメッセージを受け取りサービスのメソッドの1つを呼び出すと、サービ
スのメソッド・ゲートはメッセージ呼び出しのパラメータのアンマーシャリング
またはアンパックを行い、受け取ったメッセージによって示されるメソッドを呼
び出し、アンマーシャリングされたパラメータを渡す。
【0126】 メソッド・ゲートは、同期要求応答メッセージ・インターフェースを備え、ク
ライアントがこれを使用してリモートからメソッドを呼び出し、サービスが結果
を返すようにする。基礎のメッセージ・パッシング・メカニズムは、クライアン
トから完全に隠されている。この形式のリモート・メソッド呼び出しでは、メソ
ッドの結果を次のように処理することができる。一実施形態では、結果オブジェ
クト(および関連するクラス)をクライアントにダウンロードする代わりに、結
果の参照のみをXMLメッセージで返す。オブジェクト参照178は実際のオブ
ジェクト結果180(たとえば、ネット上にそのまま格納)を表す生成されたコ
ード・プロキシ(たとえば、結果ゲート)である。他の実施形態では、クライア
ントは実際の結果オブジェクトを受け取ることを選択できる。さらに、クライア
ントが結果オブジェクト参照を受け取った後、クライアントはこの参照を使用し
て実際の結果オブジェクトを受け取ったり操作したりできる。一実施形態では、
結果参照に実際の結果への1つまたは複数のURIを含める。
【0127】 実際の結果オブジェクトは、サービス結果スペース内に格納される(これは、
たとえば、サーブレットにより動的に作成できる)。この一時的結果スペースは
、クエリ結果キャッシュとして機能することができる。古い結果領域をクリーン
アップするサーバ・ソフトウェア(ガベージ・コレクタ)が結果キャッシュ(ス
ペース)内を巡回する。メソッドを呼び出しごとに返される結果は、結果スペー
ス内に通知される。クライアントがリモートから結果自体をインスタンス化し、
その固有のメソッド・ゲートを生成できるメソッドである場合もあれば、そのよ
うなメソッドを含む場合もある。したがって、分散コンピューティング環境では
再帰的リモート・メソッドを呼び出しサポートすることができる。
【0128】 上述のように、クライアントはメソッド・ゲートを使用してリモートからサー
ビス・メソッドを呼び出すと、サービス・メソッド・ゲートから実際の結果では
なくメソッド結果への参照が返される。この参照から、結果ゲートを生成して実
際の結果にアクセスする。したがって、クライアントまたはクライアント・メソ
ッド・ゲートは結果URI、それとたぶん、結果XMLスキーマおよび/または
認証証明書を受け取り、これを使用してゲートを構築しリモート・メソッド結果
にアクセスする。
【0129】 一実施形態では、サービス・ゲートは結果に対する「子ゲート」を作成する。
この子結果ゲートは、親ゲートと同じ認証証明書を共有することができる。いく
つかの実施形態では、結果は異なるアクセス権限セットを備え、したがって、そ
の親と同じ認証証明書を共有しない。たとえば、給料支払い簿サービスではユー
ザの異なる集まりが給料支払い簿サービスの結果(給与)を読み取るためにそれ
を起動することができる。
【0130】 サービス・メソッド・ゲートは、子結果ゲートをメソッドの結果としてクライ
アント・ゲートに返す。クライアントは、その結果ゲートを使用して実際の結果
にアクセスする。一実施形態では、結果ゲートを受け取るソフトウェア・プログ
ラム(クライアント)は結果ゲートと結果自体とを区別することはできず、その
場合、結果ゲートは実際の結果オブジェクトのオブジェクト・プロキシとなる。
結果ゲートはさらに、結果オブジェクトへのリモート・メソッド呼び出しをサポ
ートするメソッド・ゲートとすることもできる。このようにして、親と子のメソ
ッド/結果ゲートのチェーンを作成できる。
【0131】 一実施形態では、メッセージ・ゲートおよびリモート・メソッドは、Java
で書れている。この実施形態では、Java入力システムに従ってメソッド結果
が正しく入力される。上述のようにJavaメソッドをリモートから呼び出した
場合、結果ゲートは結果の型とマッチするJavaの型にキャストすることがで
きる。この実施形態では、分散コンピューティング環境でメソッド・ゲートを使
用して、リモートJavaオブジェクトがローカルJavaオブジェクトとして
動作するようにできる。メソッド呼び出しおよび結果は、実際のオブジェクトが
ローカルであるかリモートであるかに関係なくJavaソフトウェア・プログラ
ムと同じように表示される。結果に対するスペースの使用の詳細については、以
下の「スペース」セクションを参照のこと。
【0132】 メッセージ・ゲートは、さらに、イベントのパブリッシュおよびサブスクライ
ブ・メッセージ通信もサポートする。イベント・サポートのあるメッセージ・ゲ
ートは、イベント・ゲートと呼ぶ。サービスのXMLスキーマは、サービスによ
ってパブリッシュされる1つまたは複数のイベントの集まりを示す。イベント・
ゲートは、XMLスキーマから構築できる。イベント・ゲートは、サービスによ
ってパブリッシュされたイベントの集まりの一部または全部を認識し、それらの
イベントにサブスクライブし、各イベントを、サービスによって生成されるのと
いっしょに配布するように構成できる。
【0133】 サービスに対するイベントの集まりは、サービスのXMLメッセージ・スキー
マで記述することができる。XMLスキーマのイベント・メッセージごとに、イ
ベント・ゲートはそのイベントの消費者としてサブスクライブする。一実施形態
では、イベント・ゲートはXMLスキーマで示されるすべてのイベントにサブス
クライブする。XMLタグを使用してそれぞれのイベント・メッセージに名前を
付ける。イベント・ゲートは、サブスクライブ先のイベントのXMLタグを含む
サブスクライブ・メッセージを送ることによりサブスクライブすることができる
【0134】 サービスで対応するイベントが発生した場合、そのサービスはイベント・メッ
セージをサブスクライバに送り、そのイベントの発生を知らせる。イベント・メ
ッセージは、XMLイベント・ドキュメントを含み、このメッセージはそれぞれ
のサブスクライブされたゲートに送られる。サブスクライブされたゲートがイベ
ント・メッセージを受け取ると、XMLイベント・ドキュメントがそのメッセー
ジから削除され、配布プロセスが開始する。イベント配布は、クライアント・プ
ラットフォーム内のイベント・ドキュメントを配るプロセスである。クライアン
ト・プラットフォーム内の各イベント消費者は、各タイプのイベントのイベント
・ゲートにサブスクライブすることができる。Javaプラットフォームで、入
力システムはJavaである(XMLイベント型から変換される)。イベント消
費者は、イベント・ハンドラ・コールバック・メソッドをイベント・ゲートに供
給する。イベント・ゲートは、これらのサブスクライブのリストを保存する。各
イベント・メッセージがゲートに届くと(イベントを発生したサービスから)、
ゲートはクライアント消費者のリストをトラバースし、各ハンドラ・メソッドを
呼び出して、XMLイベント・ドキュメントをパラメータとして渡す。一実施形
態では、XMLイベント・ドキュメントはハンドラ・コールバック・メソッドに
渡される唯一のパラメータである。
【0135】 一実施形態では、イベント・ゲートはローカルの消費者クライアントのために
イベントに関して自動的にサブスクライブする。クライアントがインタレストを
ゲートに登録すると、ゲートはインタレストをイベント・プロデューサ・サービ
スに登録する。クライアントはさらに、インタレストのサブスクライブ解除も行
い、これにより、ゲートはそのイベントを生成するサービスから登録を解除する
【0136】 イベント・ゲートは、上述の標準要求応答メッセージ通信スタイルで通常のメ
ッセージ・ゲートが行うのと全く同じようにしてXMLスキーマを使用しイベン
ト・ドキュメントの型検査を行う。イベント・ゲートは、さらに、送られたメッ
セージ内の認証証明書を含み、受け取ったイベント・メッセージの認証証明書を
検証することができる。
【0137】 上述のゲート機能の組み合わせは単一のゲートでサポートされることに注意さ
れたい。それぞれのタイプは、分かりやすくするため、別々に説明した。たとえ
ば、ゲートは、メッセージ・ゲート、メソッド・ゲート、およびイベント・ゲー
トであって、フロー制御とリソース監視をサポートする。
【0138】 サービス発見メカニズム 一実施形態では、分散コンピューティング環境は、クライアントがサービスを
見つけだし、サービスの機能の一部または全部を使用する権限を交渉するための
手段を提供するサービス発見メカニズムを備える。スペースはサービスの一例で
あることに注意されたい。サービス発見メカニズムは、セキュリティで保護され
、発信クライアント要求を追跡し、着信サービス応答とマッチングを行うことが
できる。
【0139】 サービス発見メカニズムは、それらに限定されないが、以下のようなさまざま
な機能を提供することができる。柔軟なサーチ基準を使用してサービスを見つけ
る機能、サービスの機能セット全体またはそのサブセットを使用する権限をクラ
イアントに伝達することができる、承認メカニズム、たとえば認証証明書を要求
する機能、クライアントにサービスのインターフェースを伝達するための証明書
、ドキュメント、またはその他のオブジェクトを要求する機能などがある。一実
施形態では、サービスのインターフェースは、サービスの機能の要求されたセッ
トとのインターフェースを含むことができる。
【0140】 発見の追跡が最初の要求に応答する。一実施形態では、各クライアント要求は
、マッチする応答で返されるデータの集合を含み、要求と応答の相関を求めるこ
とができる。
【0141】 分散コンピューティング環境の一実施形態では、サービス発見メカニズムは拡
張可能文法に基づいて柔軟なサーチ基準を提供することができる。一実施形態で
は、サーチ対象のサービス名、サービス・タイプ、およびもしあればその他の要
素とXMLドキュメント内の要素とをマッチングすることができる。一実施形態
では、XMLドキュメントはサービスに対するサービス通知である。XMLは、
サーチのための柔軟で拡張可能な文法を提供する。XMLはさらに、マッチする
要素について型安全であるという特徴も備える。一実施形態では、サービス名お
よびサービス・タイプは、XMLサービス通知の要素タイプと突き合わせて型検
査を行うことができる。
【0142】 一実施形態では、分散コンピューティング環境はクライアントがサービス・ア
クセス権を交渉するためのメカニズムを備えることができる。一実施形態では、
このメカニズムを使用して、サービスの全機能のサブセットについて交渉するこ
とができる。交渉の結果は、クライアントにサービスの機能の要求されたサブセ
ットを使用する権限を伝達する認証証明書などの承認である。
【0143】 一実施形態では、サービス発見メカニズムを使用する際に、クライアントはサ
ービスにセキュリティ能力証明書を要求することができる。一実施形態では、ク
ライアントはサービスに対し、保護された(セキュア)通知の形で望む機能群を
示すことができる。それに対してサービスは、クライアントに保護された通知で
記述されている要求された機能を使用する権限を伝達することができる能力証明
書で応答することができる。
【0144】 一実施形態では、分散コンピューティング環境は、クライアントがサービス・
アクセス権限を交渉し、その後、サービスのアクセス・インターフェースをクラ
イアントによって要求されたサービスの機能のセットまたはサブセットに提示す
るために使用できるセキュリティ証明書またはドキュメントを取得するためのメ
カニズムを備えることができる。
【0145】 一実施形態では、サービスから能力証明書を受け取ったクライアントは、「完
全通知」と呼ばれるカスタム・サービス・アクセス・インターフェース・ドキュ
メントを生成することができる。一実施形態では、完全通知はXMLドキュメン
トである。生成された通知を利用し、受け取った能力証明書によってクライアン
トに対し許可されるサービス機能にアクセスすることができる。一実施形態では
、通知により、クライアントが能力証明書によりアクセスを許可されたサービス
機能のみのインターフェースが提供される。一実施形態では、クライアントに対
し、必要な機能に限りクライアントがアクセス特権を持つアクセスを許可するこ
とができる。
【0146】 一実施形態では、分散コンピューティング環境はクライアントがサービスと機
能を交渉するためのメカニズムを備えることができる。一実施形態では、クライ
アントはサービスに対する機能を交渉することができる。サービスはその後、ク
ライアントと交渉したパラメータに基づいて結果をカスタマイズする。たとえば
、160×200の解像度で1ビット表示が可能なクライアントは、サービスに
対しそれらのパラメータを交渉し、それにより、サービスはクライアントに対し
結果をカスタマイズできる。
【0147】 以下に、XML機能メッセージの一例を示したが、何らかの形で制限すること
を意図していない。 <type name="Capabilities"> <element name="display"type="string"/> <element name="memory"type="string"/> <element name="mime"type="string"/> .... </type>
【0148】 分散コンピューティング環境は、サービスがサービス呼び出しの結果を返す方
法をクライアントが交渉できるようにするメカニズムを備える。一実施形態では
、能力証明要求時に、結果返却方法の1つを選択する手段をサービスに伝達する
ことができる。その後、サービスはクライアントに、使用する結果メカニズム、
さらにサービス・インターフェースを伝達することができるカスタム・サービス
通知を生成する。
【0149】 一実施形態では、分散コンピューティング環境はサービス発見サーチ要求およ
び要求への応答を追跡するメカニズムを備える。一実施形態では、サーチ要求お
よび応答メッセージは、フィールドを備え、このフィールドを使用してストリン
グまたはXMLドキュメントを含むことができる。一実施形態では、要求メッセ
ージのフィールドに含まれるストリングまたはXMLドキュメントはさらに、応
答メッセージでも返される。一実施形態では、ストリングまたはXMLドキュメ
ントは応答メッセージで返す必要がある。一実施形態では、ストリングまたはX
MLドキュメントは、応答メッセージで返すときにストリングまたはドキュメン
ト内に挿入または付加される追加情報を含むことができる。一実施形態では、こ
のメカニズムを複雑なシステムのデバッグに使用することができる。一実施形態
では、このメカニズムはさらに、クライアントに対し、ストリングまたはXML
ドキュメントを使用して、クライアントとサービスのみが理解できるクライアン
トとサービスとの間のカスタムサーチ情報を渡すことによりアクセスするサービ
スを選択するためのメソッドを提供することができる。
【0150】 コンポーネント(サービス)インターフェースのマッチング 分散コンピューティング環境は、コンポーネント(たとえば、サービス)仕様
インターフェースと要求されたインターフェースとのマッチングを行うメカニズ
ムを備えることができる。たとえば、クライアント(サービスでもよい)は、一
組のインターフェース要求条件を満たすサービスを必要とすることがある。各コ
ンポーネントは、それが適合するインターフェースの記述を含む。仕様インター
フェース・マッチング・メカニズムを使用すると、リクエスタのインターフェー
ス要求条件と最もよくマッチするコンポーネントを配置することができる。仕様
インターフェース・マッチング・メカニズムではさらに、インターフェース要求
条件の「ファジー」マッチングを実行できる。つまり、このメカニズムを使用す
ると、インターフェースのすべての側面を正確に指定しなくてもマッチングを実
行でき、最近マッチング(ファジー)メカニズムを実現できる。一実施形態では
、仕様インターフェース・マッチング・メカニズムを、単一のインターレス・レ
ベルで仕様を要求しないマルチレベル・サブクラス化モデルとして実装できる。
【0151】 一実施形態では、コンポーネントは、XMLスキーマ定義言語(XSDL)を
使用してそのインターフェースを記述することができる。XSDLでは、インタ
ーフェースを記述する人間が解釈可能な言語を実現し、デバッグなど人間の介入
を必要とする活動を簡素化することができる。一実施形態では、インターフェー
ス記述を本書の別のところで説明しているように通知の一部(たとえば、サービ
ス通知)として提供することができる。
【0152】 仕様インターフェース・マッチング・メカニズムを使用すると基本的な望まし
いインターフェースとコンポーネントの一組のインターフェース記述とを比較す
ることができる。基本的な望ましいインターフェースとマッチする1つまたは複
数のコンポーネントが識別される。インターフェース記述は、コンポーネントに
よって提供されるインターフェースをより具体的に記述するサブクラス記述を含
む。サーチ・プロセスで、クラス・タイプ階層を調べて、所定のクラスがサーチ
・タイプのサブクラスであるかどうかを判別することができる。一実施形態では
、サブクラスは基本クラスのプロパティーを継承する。このフェーズではサブク
ラス特有の情報は調べることができない。そのため、サーチは一般的に実行する
ということができる。識別されたコンポーネントは、次の(サブクラス)レベル
でサーチできる。サーチは、サブクラスに特有なものとなり、インターフェース
記述に含まれるサブクラス情報を解釈することにより実行できる。サーチは、リ
クエスタの望むインターフェースとの最近マッチのある1つまたは複数のコンポ
ーネントが判別されるまで1つまたは複数のサブクラスについて続けられる。
【0153】 一実施形態では、インターフェース・マッチング・メカニズムは、類似のイン
ターフェースを実装する2つまたはそれ以上のコンポーネントを区別する機能を
備える。一実施形態では、インターフェース・マッチング・メカニズムは、同じ
コンポーネントの異なるリビジョンを区別する機能を備える。
【0154】 一実施形態では、コンポーネントが適用するインターフェースの仕様を含むコ
ンポーネント記述を提示することができる。コンポーネント記述にさらに、コン
ポーネント自体に関する情報を含めることができる。インターフェース記述およ
び/またはコンポーネント情報を使用して、所定のインターフェースの異なる実
装を区別することができる。コンポーネント記述には、標準識別子とバージョン
情報を入れることができる。バージョン情報を使用すると、コンポーネントのリ
ビジョンを区別することができる。一実施形態では、コンポーネント記述を本書
の別のところで説明しているように通知の一部(たとえば、サービス通知)とし
て提供することができる。
【0155】 一実施形態では、特定の標準識別子についてコンポーネントをサーチする。マ
ッチする標準識別子を持つ2つまたはそれ以上のコンポーネントを識別すること
ができる。マッチする標準識別子を持つコンポーネントのうちから1つまたは複
数のコンポーネントを選択することができる。選択手順では、インターフェース
仕様バージョン、コンポーネント実装仕様、コンポーネント実装仕様バージョン
、コンポーネント記述からのその他の情報または情報の組み合わせを使用して、
リクエスタの要求条件に最もよくマッチする1つまたは複数のコンポーネントの
集まりを出力することができる。
【0156】 スペース 上述のように、分散コンピューティング環境はスペースに依存し、サービスま
たはコンテンツをクライアントに仲介するランデブー・メカニズムを備える。図
15は、スペース114の基本的な使用法を示している。サービス・プロバイダ
は、スペース114でサービスを通知することができる。クライアント110は
、スペース114で通知を見つけ、通知からの情報を使用し、分散コンピューテ
ィング環境のXMLメッセージング・メカニズムを利用してサービスにアクセス
する。多くのスペースが存在し、それぞれサービスまたはコンテンツを記述する
XML通知を含む。したがって、スペースは、サービスおよび/またはXMLデ
ータのXML通知のリポジトリと考えることができ、これは結果などの未処理デ
ータまたはデータの通知とすることができる。
【0157】 スペース自体はサービスである。サービスのように、スペースには通知があり
、スペースのクライアントはまず、そのスペース・サービスを実行するためにそ
れを取得する必要がある。スペースの自通知は、XMLスキーマ、1つまたは複
数の証明書、およびスペースにアクセスする方法を示すURIを含むことができ
る。クライアントは、スペースにアクセスするためにスペース・サービスの通知
からゲートを構築することができる。スペースのクライアントはそれ自体、その
スペース内で通知するまたは既存の通知を修正することを求めるサービス・プロ
バイダである。または、スペースのクライアントはスペースによってリストに入
れられたサービスまたはコンテンツにアクセスすることを求めるアプリケーショ
ンである。したがって、スペースは分散コンピューティング環境においてクライ
アントとサービスとの間の対話に対する触媒の働きをする。
【0158】 スペースは、名前付きの通知の集合といえる。一実施形態では、通知に名前を
付ける作業は、名前ストリングを通知に関連付けるプロセスである。この関連付
けは、スペースに通知を格納した後発生する。スペースから通知を取り除くと、
名前と通知との関連付けが解除される。スペースは、スペース自体を記述する単
一のルート通知で作成できる。追加通知をスペースに加えることができる。通知
の名前で、スペース内の通知を特定できるが、これは、名前の階層など必要なグ
ラフ化情報を指定する操作を含む。好ましい実施形態では、分散コンピューティ
ング環境はスペースの構造を規定しない。つまり、たとえば、スペースをフラッ
トな関係付けのない通知の集まりまたは関係付けのされている通知のグラフ(た
とえば、商用データベース)として構造化される。好ましい実施形態では、分散
コンピューティング環境はスペースに実際にその内容を格納する方法を規定しな
いので、小さなデバイスから大きなデバイスまでスペースをサポートすることが
でき。たとえば、単純なスペースは、PDAなどの小さなデバイスに収まるよう
に手直しすることができる。より高度なスペースは、大規模な商用データベース
を採用している大規模なサーバー上に実装することができる。
【0159】 上述のように、スペースは分散コンピューティング環境でサービスの通知を含
むことができる。通知は、分散コンピューティング環境内でサービスおよび/ま
たはコンテンツのアドレスを指定し、アクセスするためのメカニズムを提供する
。通知により、サービスのURIを指定することができる。いくつかの実施形態
では、URIを使用すると、インターネット上でサービスにアクセスすることが
できる。また、通知はサービスのXMLスキーマも含む場合がある。XMLスキ
ーマにより、サービスのクライアントがそのサービスの機能を呼び出すためにサ
ービスに送る一組のメッセージを指定することができる。XMLスキーマでは、
クライアント・サービス・インターフェースを定義する。それとともに、URI
および通知で指定されたXMLは、サービスのアドレスを指定し、サービスにア
クセスする方法を指示する。URIとスキーマは両方とも、XMLで、スペース
内の通知として用意される。そのため、分散コンピューティング環境でサービス
のアドレスを指定し、サービスにアクセスするメカニズムをスペース内の通知と
して公開することができる。クライアントは、スペースを発見し、サービスまた
はコンテンツについて個々の通知をルックアップする。
【0160】 図16は、一実施形態による通知構造を示す。通知500は、他のXMLドキ
ュメントのように、階層状に配列された一連の要素502を含むことができる。
各要素502は、データまたは追加要素を含む。要素はさらに属性504を持つ
。属性は、名前−値ストリングのペアである。属性は、メタデータを格納し、こ
れにより、要素内のデータを記述することが簡単になる。
【0161】 いくつかの実施形態では、通知は異なる状態で存在してもい。このような状態
の1つにドラフト状態がある。一実施形態では、スペースの範囲外に存在するド
ラフト状態で通知を最初に構築する。通知の作成者は、XMLエディタを使用す
るなどさまざまな方法で構築することができる。ドラフト状態の要素および属性
へのアクセスは、適当な手段を使用して未処理データおよびメタデータ・レベル
で行われる。通常、ドラフト状態で通知に加えられた変更についてはイベントを
発生しない。したがって、通知の作成者は、自由に、要素を追加、変更、または
削除できるだけでなく、目的の属性セットを用意し、確認する分散コンピューテ
ィング環境の残り部分に対する通知をパブリッシュすることができる。
【0162】 一実施形態では、通知に対する可能な状態としてほかに、パブリッシュ状態が
ある。通知は、スペースに挿入されるとパブリッシュ状態に移行する。通知がス
ペース内に入ると、関連するクライアントおよびサービスが、たとえば、名前お
よび/またはその要素をサーチ基準として使用してそれを特定することができる
。たとえば、サーチ基準は、スペース内の通知と(たとえば、スペース・サービ
スにより)比較できるXMLテンプレート・ドキュメントとして指定できる。パ
ブリッシュされた通知は、クライアントが使用できる状態にある「オンライン」
サービスを表す。サービスのメッセージ・アドレス(URI)は、通知内に要素
として格納できる。スペースから削除される通知は、破棄されるかまたは保持さ
れるドラフト状態に遷移して戻る。削除により、イベントが発生し、関連するリ
スナーが変更に気づく。メッセージ・ゲートは通常、パブリッシュされた通知か
ら作成される。
【0163】 一実施形態では、通知に対する可能な状態としてほかに、永続的アーカイブ状
態がある。アーカイブ・プロシージャは、ライブ・パブリッシュ通知を、後で再
構成するため永続的に格納できるバイトのストリームに変換する。アーカイブ通
知が、スペースからアーカイブ・サービスに送られる(たとえば、raw XM
L形式で)。通知のアーカイブ・サービスのURIは、通知内に要素として格納
できる。XMLは、通知の格納および取り出しを行い、通知オブジェクトを再構
成するのに十分な通知要素の状態を表す形式を用意できる。通知は、アーカイブ
・サービスの実装に応じて、他の形式でも格納できる。パブリッシュされた通知
を永続的にするプロセスでは、永続的アーカイブ状態の通知を準備する。将来使
用するため永続的通知を(たとえば、アーカイブ・サービスにより)、ファイル
やデータベースなどの永続的記憶場所に格納できる。スペースは、アーカイブ・
プロシージャを介して、通知を格納できるが、スペースは必ずしも、永続通知エ
ントリを実際に格納する際に重要な役割を果たすわけではない。永続通知を格納
する方法は、通知のアーカイブ・サービスにより決定される。通常、アーカイブ
通知の代わりに生成されるイベントはない。また、永続的アーカイブ状態での通
知に対し変更が許されない場合がある。通知は、アーカイブと削除、またはアー
カイブだけが許される。通知が、スペースから削除することなくアーカイブされ
ると、スペースはシャドウ・バージョンの通知を格納する。アーカイブされたサ
ービスにアクセスすると、通知がオンデマンドで永続的バッキング・ストアから
「フォールトイン」する。この機能を使用すると、たとえば、オンデマンドで、
LDAP(ライトウェイト・ディレクトリ・アクセス・プロトコル)エントリか
ら通知に入力することができる。
【0164】 図17は、通知がその存続期間中に置かれる通知状態遷移の一例を示す図であ
る。まず、1に示されているように、通知を構築することができる。構築のとき
に、通知はドラフト状態にある。その後、2に示されているように、通知がスペ
ースの中に挿入される。通知は、パブリッシュされた親として挿入できる。通知
は、スペースに挿入された後、パブリッシュ状態にある。イベント(たとえば、
AdvInsertEvent)は、通知がスペース内に挿入されたときに生成
される。イベントについては以下で詳述する。通知は、3に示されているように
、アーカイブされ、永続的にされ、これにより、通知が永続的アーカイブ状態に
遷移する。通知はさらに、4に示されているように、永続的アーカイブ状態から
パブリッシュすることもできる。通知は、スペースから除去され、5に示されて
いるように、ドラフト状態に遷移し戻される。イベント(たとえば、AdvRe
moveEvent)は、通知が削除されたときに生成される。
【0165】 一実施形態では、アーカイブされた永続的状態は使用されない。この実施形態
では、状態変化3および4も使用されない。この実施形態では、通知はドラフト
状態またはパブリッシュ状態のいずれかである。
【0166】 スペース内に格納された通知は、バージョン(要素の場合もある)、作成日(
属性の場合もある)、変更日(属性の場合もある)、実装サービスURI(要素
の場合もある)、および/または永続的アーカイブ・サービスURI(要素の場
合もある)などの標準化された要素および/または属性を備える。
【0167】 スペース自体は通常サービスである。スペース・サービスは、スペース内の通
知をサーチする機能を備え、これは、通知のタイプによるスペースのサーチを含
む。スペース・サービスはさらに、通知を読み込み、通知を書き込み(パブリッ
シュする)、通知を取る(削除する)機能も提供することができる。スペースは
さらに、スペース・イベント通知メッセージのサブスクライブを行う機能も備え
る。スペースには、位置によりスペース関係グラフをナビゲートする機能、通知
要素の読み込み、書き込み、または取り出しの機能、通知属性の読み込み、書き
込み、または取り出しの機能、および通知イベントの通知メッセージのサブスク
ライブの機能など、拡張機能を備えるものもある。スペースの機能については、
以下で詳述する。スペースの機能は、スペース通知のメッセージ・スキーマで具
現化される。メッセージ・スキーマ、スペース・アドレス、および認証証明書か
ら、クライアント・メッセージ・ゲートを作成し、スペースとその機能にアクセ
スできる。
【0168】 スペースおよびスペース内のすべての通知は、URIを使用してアドレス指定
できる。一実施形態では、スペースおよび通知名は、URL命名規則に従う。い
くつかの実施形態では、スペースのアドレス指定にURI、たとえばURLを使
用すると、インターネット全体からスペースにアクセス可能になる。スペース・
メッセージ受取側(スペース・サービス)を指定するには、そのスペースについ
てサービス通知で受け取ったURIを使用する。URIには、プロトコル、ホス
ト、ポート番号、および名前を含めることができる。プロトコルでは、クライア
ントとスペースの間でメッセージを移動するために使用できるプロトコルに名前
を付ける(たとえば、信頼できるソケットまたは信頼できないソケット)。ホス
トおよびポート番号は、プロトコル依存のIDである。名前は、スペース名の後
に通知、要素、および/または属性名を続けたものである。一実施形態では、パ
ス名を使用して、スペース内の通知を識別することができる。パス名は絶対パス
または相対パスのいずれかである。絶対パス名では、スペースだけでなく、通知
も指定できる。相対パス名は、想定されるスペース内で指定通知に相対的である
。一実施形態では、パス名の作成に適用されるシンタックスは、URI(統一リ
ソース識別子)のシンタックスである。したがって、その実施形態では、通知お
よびスペース名はURI予約語文字または一連の文字を含むことができない。要
素および属性へのパス名も、URIを使用して指定できる。一般に、要素名およ
び属性名は、http://java.sun.com/spacename/advertisement/element/attribut
eなど通知のパス名に付加することができる。
【0169】 一実施形態では、分散コンピューティング環境は、クライアントがスペースの
URIを発見できるようにするが、そのスペースに対するサービス通知へのアク
セスを制限するメカニズムを備える。一実施形態では、完全通知をスペースに戻
すのではなく、スペースのURIとスペースに対する認証サービスのURIを返
す。クライアントは、スペース内で通知されたドキュメントまたはサービスにア
クセスするために、まず、リターン・メッセージで与えられるURIで認証サー
ビスに対し自己認証を実行する。認証サービスは、認証証明書を返し、これを使
用して、クライアントはスペースに対する部分的または完全アクセスを実行でき
る。クライアントは、認証証明書を受け取ると、スペースに接続し、スペース内
のドキュメントまたはサービス通知にアクセスしようとする。
【0170】 分散コンピューティング環境は、クライアントをスペースに接続できるように
するメカニズムを備える。接続メカニズムの実施形態は、クライアント−スペー
ス・アドレス指定、クライアント承認、セキュリティ、リース、クライアント能
力判別、およびクライアント−スペース接続管理に対応している。クライアント
−スペース接続をセッションと呼ぶ。一実施形態では、セッションに一意的なセ
ッション識別番号(セッションID)を割り当てることができる。セッションI
Dにより、クライアント−スペース接続を一意に識別することができる。一実施
形態では、クライアントがリースを更新しない場合にセッション・リース・メカ
ニズムを使用してセッションの透過的ガベージ・コレクションを実行する。
【0171】 一実施形態によるこのような接続メカニズムの使用例を以下に示す。クライア
ントは、認証証明書を取得する。一実施形態では、スペースでは、クライアント
がスペースへのアクセスを要求したことに応答して行う認証サービスを提供する
。クライアントは、認証サービスを通じて認証証明書を取得することができる。
クライアントは、認証証明書を受け取ると、接続要求メッセージを送ることによ
りスペースとの接続を開始できる。一実施形態では、接続要求メッセージに、ス
ペース・サービスのURIアドレス、クライアントの認証証明書、およびクライ
アントが要求している接続リースに関する情報を含めることができる。スペース
は、接続要求メッセージを受け取った後、そのメッセージの妥当性を確認する。
一実施形態はXMLスキーマを使用してメッセージの妥当性を確認できる。クラ
イアントは認証証明書を使用して認証を受けることができる。一実施形態では、
接続要求メッセージで受け取った情報を使用してスペースを使用するクライアン
トの能力を判別することができる。一実施形態では、スペースの各クライアント
にスペースを使用するそれぞれの能力の集まりを割り当てることができる。一実
施形態では、スペースの1つまたは複数のクライアントに関する能力情報を含む
アクセス制御リスト(ACL)をクライアント能力判別で使用することができる
。一実施形態では、接続要求メッセージで受け取った情報を使用してACL内の
クライアントの能力をルックアップすることができる。
【0172】 クライアントを認証し、クライアントの能力を判別した後、クライアントを許
可する接続リースを判別できる。リースが判別された後、クライアント−スペー
ス間接続を維持する構造を生成できる。接続に対するセッションIDを生成する
。一実施形態では、各クライアント−スペース間接続に一意的セッションIDを
割り当てる。一実施形態では、アクティブ化スペースを作成し、クライアント−
スペース間セッションに割り当てるか、またはそれとは別に、既存のアクティブ
化スペースをクライアント−スペース間セッションに割り当てることができる。
一実施形態では、アクティブ化スペースを使用すると、スペースを使用したとき
にクライアントのサービスの結果を格納することができる。一実施形態では、ク
ライアントの能力を使用して、アクティブ化スペースがクライアントに対し作成
されるかどうかを判別する。たとえば、クライアントは、結果を格納し取り出す
アクティブ化スペースにアクセスする能力を持たないことがある。1つまたは複
数のメッセージをクライアントに送り、接続が確立されたことをクライアントに
通知することができる。その1つまたは複数のメッセージに、セッションIDと
リースに関する情報を入れることができる。その後、クライアントでは、それら
に限定されないが、通知ルックアップ、通知登録、および通知取り出しなどのス
ペースを使用できる。一実施形態では、割り当てられたリースの有効期限が切れ
るか、またはクライアントがスペースにリース取り消しを要求するメッセージを
送るまで接続は開いたままである。一実施形態では、クライアント側で、そのリ
ースの有効期限が切れる前にそのリースを更新する必要がある。クライアントが
リースを更新する前にリースの有効期限が切れた場合、接続は切断され、クライ
アントとスペースとの接続が途絶える。一実施形態では、再接続するには、クラ
イアントは接続手順を繰り返す必要がある。
【0173】 一実施形態では、スペースのクライアントはスペースの通知をいくつかの異な
る方法で取得することができる。クライアントがスペースの通知を取得する方法
のうちいくつかを図18に示す。たとえば、スペース発見プロトコルを分散コン
ピューティング環境の一部として提供することができる。スペース発見は、クラ
イアントまたはサービスがスペースを見つけるために使用するプロトコルである
。リスナー・エージェント202は、発見要求が来ないか監視するように1つま
たは複数のスペースと関連付けて設定できる。発見リスナー・エージェント20
2は、さまざまなネットワーク・インターフェース上で待機し、スペースを探し
ているクライアント200aからブロードキャスト要求またはユニキャスト要求
を(エージェントのURIで)受け取る。その後、リスナー・エージェント20
2は要求されたスペースのサービス通知に関してサービス通知またはURIで応
答する。一実施形態では、リスナー・エージェントは、一般に、スペースから分
離されているが、それは、その機能がスペース・サービスの機能と直交している
からである。ただし、リスナー・エージェントは、スペース・サービスと同じデ
バイスまたは異なるデバイスに実装することができる。
【0174】 一実施形態では、発見プロトコルはデフォルト・スペース内で通知されるサー
ビスでよい。クライアントは、追加スペースを発見するためにクライアントのデ
フォルト・スペースから発見プロトコルをインスタンス化する。発見プロトコル
は、クライアントのデフォルト・スペースに事前に登録できる。それとは別に、
発見プロトコルは、たとえば、クライアントは発見サービスによって処理される
ローカル・ネットワークに接続した時に、そのスペース内に通知を置くことによ
りデフォルト・スペースに自己登録することもできる。
【0175】 一実施形態では、スペース発見プロトコルを、SLP、Jini、UPnPな
どの他のプラットフォーム用の基本デバイス発見プロトコルにマッピングするこ
とができる。そこで、クライアントは分散コンピューティング環境の発見プロト
コルを使用して他の環境内のサービスを見つける。これらの他の環境とのブリッ
ジを用意し、それらの他の環境内のサービスに通知を送って、ここで説明した分
散コンピューティング環境のクライアントがそれらにアクセスできるようにする
。「ブリッジ」のセクションを参照のこと。
【0176】 通知される発見プロトコルごとに、分散コンピューティング環境では発見プロ
トコルの結果を保持するための後続結果スペースを作成することができる。一実
施形態では、分散コンピューティング環境内のスペース・サービスはMulti
cast Announcement Protocol(マルチキャストUD
P)を使用してLAN上でアナウンスすることができる。リスナー・エージェン
トがこの情報を記録する。デバイス(クライアントまたはサービス)は、Mul
ticast Request Protocol(マルチキャストUDP)を
使用して、スペース・マネージャの発見を開始する。一実施形態では、スペース
・マネージャは、それぞれのスペースのURIを示す情報で応答する。それとは
別に、リスナー・エージェントは複数スペースについて応答することができる。
発見応答は、さらに、各スペースにラベルを付ける短いストリング(たとえば、
スペースのキーワードから取得する)と、たとえばそれぞれのスペースに対し操
作を実行する各スペース・マネージャとのTCP接続を設定するために使用でき
る情報を含むことができる。要求側デバイスは複数のスペース・マネージャから
応答(またはリスナー・エージェントから複数のスペース・リスティング)を受
け取るので、この情報は、クライアントが接続先スペースを選択する場合に役立
つ。
【0177】 上述のマルチキャスト発見に加えて、発見サービスではさらに、ネットワーク
(たとえば、インターネット、他のWAN、LANなど)上の既知のアドレスで
スペース・マネージャを発見するために使用できるユニキャスト・メッセージン
グ(たとえば、TCPで)を使用して発見を実行することもできる。ユニキャス
ト発見メッセージは、サービス通知を送るため既知のURIのスペース・サービ
スの要求を含むことができる。マルチキャスト発見プロトコルをおよびユニキャ
スト発見プロトコルは、メッセージ・レベルで定義され、そのため、発見に参加
しているデバイスがJavaをサポートしていようと他の特定の言語をサポート
していようと関係なく使用することができる。
【0178】 発見プロトコルを使用すると、分散コンピューティング環境内のクライアント
をサポートするサーバ・コンテンツを拡散することとは独立にクライアントを拡
散させることが容易にできる。たとえば、モバイル・クライアントは、その初期
デフォルト・スペースをそのローカル・プラットフォームに組み込むことができ
る。デフォルト・スペースで通知されたローカル・サービスに加えて、モバイル
・クライアントは、発見プロトコルにアクセスするためのサービスやスペースサ
ーチ・エンジンにアクセスするためのサービスなど、追加スペースをサーチする
サービスを備えることができる。
【0179】 一実施形態では、分散コンピューティング環境のスペース発見プロトコルは、
一組のXMLメッセージとその応答を定義し、クライアントが以下のことを行え
るようにする。 ・ ネットワーク・インターフェース上でプロトコル定義スペース発見メッセー
ジをブロードキャストする。 ・ リスナーから、それらのリスナーが表す候補スペースを記述するXMLメッ
セージを受け取る。 ・ クライアントが選択されたスペースのアドレスを知らなくても、発見された
スペースの1つをデフォルトとして選択する。 ・ そのアドレスなど選択されたスペースに関する情報を取得し、クライ
アントが後で発見プロトコルの外部の手段により同じスペースを見つけることが
できるようにする(これは、後でクライアントがローカルでなくなったがまだク
ライアントに関わっているスペースにアクセスする場合に役立つ)。
【0180】 いくつかの実施形態では、マルチキャストおよびユニキャスト発見プロトコル
はIPネットワークを必要とする。これらの発見プロトコルは、IPネットワー
ク対応のデバイスの必要条件を満たすが、これらの発見プロトコルで直接サポー
トされないデバイスも多くある。分散コンピューティング環境でスペースの発見
にこのようなデバイスの要求条件を満たすには、事前発見プロトコルを使用して
IPネットワーク対応のエージェントを見つける。事前発見プロトコルは、ネッ
トワーク・エージェントを要求する非IPネットワーク・インターフェース上で
メッセージを送るデバイスを含むことができる。ネットワーク・エージェントは
、それ自身とデバイスとの間の接続を設定する。デバイスとエージェントの間の
接続が設定されると、エージェントはこれがエージェントとして使用されるデバ
イスのためにIPネットワーク上で発見プロトコルに参加する。ネットワーク・
エージェントは、さらに、一般に分散コンピューティング環境にデバイスを接続
するためのインターフェースとなる。たとえば、発見されたスペース内で通知さ
れるサービスを実行するためにデバイスのためにエージェント内にゲートを構築
することができる。「ブリッジ」のセクションを参照されたい。
【0181】 クライアントが分散コンピューティング環境でスペースを特定するための方法
としては他に、他のスペース内でスペースを通知する方法がある。スペースはサ
ービスなので、他のサービスと同様、他のスペース内で通知を受けることができ
る。図18に示されているように、クライアント200bは、第2のスペース2
04bについて第1のスペース204a内で通知206を見つける。スペース2
04bは、次に、追加スペースへの通知を含む。サービス(スペースを実装する
)はさらにクライアントとしても機能するため、スペースは通知を交換するかま
たは一緒に連鎖し、図19に示されているように、ベースの連合を実現する。分
散コンピューティング環境にはスペースをいくつでも含めることができる。スペ
ースの個数とトポロジは、実装に依存する。たとえば、IPネットワーク上に実
装されたスペースは、それぞれ異なるサブネットに対応していることがある。
【0182】 クライアントでスペースを特定する第3の方法として、図18に示されている
ように、サービス208を実行する方法がある。サービス208は、実行され、
その結果としてスペース・サービスのサービス通知を返す。サービス通知はXM
L文書であり、分散コンピューティング環境はインターネットを含むため、サー
ビス208はWebベースのサーチ・ツールとすることができる。このようなサ
ービスの一例として、図4で説明しているスペース・ルックアップ・サービスが
ある。一実施形態では、分散コンピューティング環境内のスペースはWebペー
ジとして実装することができる。それぞれのWebページ・ベースは、Webペ
ージを分散コンピューティング環境内のスペースとして識別するためにサーチで
きるキーワードを含むことができる。スペースは、その他のサーチ可能なキーワ
ードを含むだけでなく、さらにスペースを定義することができる。クライアント
は、サーチ・サービス208に接続し、キーワードをXMLメッセージの形式で
サーチ・サービスに供給する。サーチ・サービスは、クライアントからキーワー
ドを受け取りそのキーワードをインターネットサーチ・エンジンに送るが、これ
は従来のサーチ・エンジンまたはサードパーティ製のサーチ・エンジンでもよい
。サーチ・サービスは、XMLメッセージとして直接にまたは結果スペースへの
参照によりインターネットサーチ・エンジンからクライアントに結果を返す。結
果は、サーチ要求とマッチするスペースのURIである。それとは別に、サーチ
・サービスは、サーチによって識別されたスペースにコンタクトし、このような
それぞれのスペースについてサービス通知を取得し、XMLメッセージとして直
接に、または結果スペースでの参照により、スペース・サービス通知をクライア
ントに返すことができる。クライアントは、その後、サーチ結果からスペースを
選択し、ゲート(それ自身によりまたはプロキシを通じて)を構築し、選択した
スペースにアクセスすることができる。選択されたスペースにアクセスした後、
クライアントはそのスペース内のサービス通知をルックアップし、これによりス
ペースが追加される。
【0183】 上述のように、スペースはXMLペースのWebサイトとすることができ、そ
のため、インターネットWeb上でサーチ・メカニズムによりサーチすることが
できる。スペースはインターネットサーチ可能キーワードを含むことができる。
小型クライアント・デバイスなどいくつかのデバイスでは、インターネット・ブ
ラウザをサポートしていない。ただし、このようなデバイスであっても、分散コ
ンピューティング環境内でスペースについてインターネット・サーチを実行する
ことができる。デバイスは、キーワードの列を受け付けるプログラムを備え、こ
れらのキーワードはサーバ上のプロキシ・プログラムに送られる(たとえば、サ
ーチ・サービス)。プロキシは、これらのキーワード列をブラウザ・ベースのサ
ーチ機能に送り(たとえば、インターネットサーチ機能)、サーチを実行するこ
とができる。プロキシは、サーチの出力を受け取ってサーチ結果の各URIを表
すストリング(たとえば、XMLストリング)に解析し、応答ストリングをクラ
イアントに送り返す。したがって、クライアントは、Webブラウザなどのプロ
グラムをサポートしていなくてもインターネットを介してスペースを特定するこ
とができる。さらに高機能のデバイスでは、プロキシの使用を避けて、インター
ネット・ベースのルックアップ・サービスを直接開始することができる。
【0184】 クライアントはスペースを特定するための第4の方法は、新規作成された空の
スペースまたは既存のスペースが生成されるときには生成されたスペースに関す
る情報を取得または受け取る方法である。既存のスペースは、生成元のスペース
と同じ機能(たとえば、同じXMLスキーマ)を持つ空のスペースを生成するイ
ンターフェースを備えることができる。スペースの生成については以下で詳述す
る。
【0185】 スペースのクライアントはスペース・サービスの通知を見つけると、スペース
のそのクライアントは他のサービスの場合と同様にスペース・サービスを実行で
きる。スペース・サービスのクライアントは別のサービスでもよいことに注意さ
れたい(たとえば、スペース内で通知すること求めるサービス)。一実施形態で
は、図20に示されているように、スペース・サービスを実行するため、スペー
スのクライアントはまずスペースに対し認証サービスを実行し、300に示され
ているように、認証証明書を取得する。認証サービスは、スペース・サービスの
サービスを通知で指定することができる。スペースのクライアントは、302に
示されているように、認証証明書、スペースのXMLスキーマ(スペースのサー
ビス通知からの)、およびスペースのURI(スペースのサービス通知からの)
を使用して、スペースのゲートを構築する。次に、スペースのクライアントは、
そのゲートを使用してメッセージをスペース・サービスに送ることによりスペー
ス・サービスを実行する。第1のそのようなメッセージは304に示されている
【0186】 認証を採用する実施形態では、スペース・サービスがクライアントから第1の
メッセージを認証証明書が埋め込まれた状態で受け取ったときに、スペース・サ
ービスは同じ認証サービス(スペース・サービスのサービス通知で指定されてい
る)を使用して、クライアントを認証し、306で示されているように、その素
性を確定する。スペース・サービスは、クライアントの能力を判別し、308で
示されているように、クライアントを認証証明書にバインドする。
【0187】 310に示されているように、スペースのクライアントは、メッセージをスペ
ース・サービスに送ることによりさまざまなスペース機能を実行することができ
る。一実施形態では、スペースのクライアントがスペース・サービスに要求を送
るときに、クライアントはその要求で認証証明証を渡し、スペース・サービスが
クライアントの特定の能力について要求をチェックできるようにする。
【0188】 各スペースは、通常、サービスであり、スペース・サービスのコア機能を定義
するXMLスキーマを備える場合がある。XMLスキーマでは、スペース・サー
ビスとのクライアント・インターフェースを指定する。一実施形態では、すべて
のスペース・サービスは、基本レベルのスペース関係のメッセージを出すことが
できる。基本レベルのスペース機能は、PDAなどの小型デバイスをはじめとす
るほとんどのクライアントで使用できる基本的なスペース機能である。たとえば
、より高機能なクライアントについては、機能を増やすことが望ましい場合があ
る。基本レベルのスペースの拡張は、スペースを通知するXMLスキーマにさら
にメッセージを追加することにより実現できる。たとえば、一実施形態では、基
本レベルのメッセージは、通知に対して関係グラフを強制しない。たとえば、通
知の階層をトラバースするメッセージはスペース拡張である。このような追加機
能は、スペースの1つまたは複数の拡張をXMLスペース・スキーマまたはスキ
ーマ拡張を通じて提供することができる。拡張されたスキーマは、基本スキーマ
を含むので、拡張スペースのクライアントもまた、基本スペースとしてスペース
にアクセスすることができる。
【0189】 一実施形態では、基本スペース・サービスは、XMLドキュメントの一時的リ
ポジトリを備える(たとえば、サービスの通知、実行中サービスの結果)。ただ
し、一実施形態の基本スペース・サービスは、スペース・コンテンツの永続性、
スペース構造(たとえば、階層)のナビゲーションまたは作成、およびトランザ
クション・モデルをサポートする高度な機能に対応していない場合がある。永続
性、階層、および/またはトランザクションをサポートするメカニズムは、XM
Lスキーマを拡張することによって実現される。拡張されたスペースはそれでも
基本XMLスキーマを含むので、必要なのが、あるいはサポートできるのが基本
スペースの機能だけの場合に、クライアントは拡張スペースを基本スペースとし
て取り扱うことができる。
【0190】 一実施形態では、基本スペースは一時的なものとすることができる。基本スペ
ースは、さまざまな目的のために受け入れることができる。サービス・プロバイ
ダは、さまざまなスペースでサービスを登録することができる。一実施形態では
、サービスはスペース内の情報のパブリッシュ後継続的にリースを更新する必要
がある。このような性質があることから、サービス通知は、多くの場合に再構築
かつ/または再確認するという点で一時的なものである。ただし、スペース内に
何らかの永続性を実現することが望ましい。たとえば、結果があるスペースは、
一定期間結果が失われないようにしたいユーザに対しては何らかの永続性を提供
できる。一実施形態では、クライアントが永続的ストアによって裏付けられてい
るスペース内のオブジェクトを制御し、その永続性ストアのメンテナンスを管理
することができるスペース・インターフェースを指定することにより永続性を実
現することができる。永続性インターフェースは、永続性に関してインターフェ
ースを定義するスペースの拡張XMLスキーマで指定することができる。
【0191】 一実施形態では、基本スペースは、XMLドキュメントがスペースに追加され
、ストリングによって識別できるインターフェースを備える。基本スペースは、
スペース内のさまざまな名前をつけられたXMLドキュメントの階層を実現する
ことはできない。階層のサポートが望ましい実施形態では、ユーザが階層を指定
することができる追加インターフェースを定義するとよい(XMLスキーマを拡
張する)。階層をナビゲートしたり、関係グラフを位置でナビゲートするように
他のインターフェースを指定することもできる。ただし、他のユーザはそれでも
、基本スペース・インターフェースを使用して、階層を使わずに、同じドキュメ
ントにアクセスすることができる。拡張スペース・スキーマでは、他のスペース
の構造に対するインターフェースも実現できる。
【0192】 拡張XMLスペース・インターフェースもまた、スペース・トランザクション
・モデルについて実現することができる。たとえば、拡張スペースXMLスキー
マがACIDトランザクションのインターフェースを指定する。ACIDは、エ
ンタプライズ・レベルのトランザクションの4つの特性を記述するために使用さ
れる頭字語である。ACIDは、Atomicity(原子性)、Consis
tency(一貫性)、Isolation(独立性)、およびDurabil
ity(耐久性)のそれぞれの頭文字をとったものである。原子性とは、トラン
ザクションを完全に完了するか、または元に戻すかのいずれかであることを意味
する。障害が発生した場合、すべての操作およびプロシージャを元に戻し、すべ
てのデータを前の状態にロールバックする必要がある。一貫性とは、トランザク
ションがシステムを一方の一貫性のある状態から他方の一貫性のある状態に変換
することを意味する。独立性とは、各トランザクションが同時に発生する他のト
ランザクションとは独立に発生することを意味する。耐久性とは、完了したトラ
ンザクションが、たとえばシステムに障害が発生したときでも、内容を失うこと
なく恒久的であるということを意味する。他のトランザクション・モデルはさら
に、拡張スペース・スキーマで指定することができる。
【0193】 拡張スペース・スキーマは、拡張されたスペースの特徴、機能性、または機能
を使用するためのメッセージ・インターフェース(たとえば、XMLメッセージ
)を指定するXMLドキュメントとすることができる。スペースには、基本スキ
ーマおよび複数のを拡張スキーマを用意できる。これにより、クライアントの認
証に応じて、異なるレベルのサービスを異なるクライアントに簡単に提供するこ
とができる。
【0194】 スペースの永続性、構造、およびトランザクションの拡張のほかに、必要に応
じて、他のスペース拡張機能も指定できる。たとえば、通知要素の読み込み、書
き込み、または取り出しの機能、通知属性の読み込み、書き込み、または取り出
しの機能、および通知イベントの通知メッセージのサブスクライブの機能など、
要素または属性のレベルで通知を操作するための拡張機能を備えることもできる
。スペースは仮想的にいくつの機能でも提供でき、必要に応じて、基本スキーマ
および拡張スキーマに配列することができる。一実施形態では、すべての基本ス
ペースは通知の読み込み、書き出し、取り込み、およびルックアップの機能、さ
らにスペース・イベント・サブスクライブの機能を備える必要がある。さまざま
なスペース機能を用意できる。いくつかの実施形態では、スペースとのセッショ
ンを確立するための機能を備えることができる。このような実施形態では、スペ
ース機能のうちの残りの機能は、これが完了するまでに利用できない。他の実施
形態では、セッションという概念がないか、またはオプションであるか、および
/または実装に依存する。
【0195】 他のスペース機能として、スペースにサービス通知を追加したり、スペースか
らサービス通知を削除する機能もある。さらに、XMLドキュメントを追加また
は削除するスペース機能も用意できる(通知ではなく、おそらくスペース内の結
果)。スペース・サービスは、アイテムの追加を許可する前にアイテムの一意性
を検査する。たとえば、スペースに追加される各アイテムは、アイテムを識別し
、そのアイテムの一意性を検査するために使用できるユーザ指定のストリングと
関連付けることができる。
【0196】 一実施形態では、クライアントはスペース内で通知されるすべてのサービスの
リスティング、ツリー、またはその他の表現を要求することができる。ユーザは
、その後、通知をスクロールまたは操縦して、目的のサービスを選択する。また
、スペースはキーワードまたはストリング名を与えることによりクライアントが
サービスをサーチできるようにするルックアップ機能も備える。一実施形態では
、スペース機能は、スペースに追加されているスペース・エントリをルックアッ
プするためのメカニズムを備える。ルックアップ機能は、名前とマッチするスト
リング、またはワイルドカード、またはデータベース・クエリでルックアップす
ることができる。ルックアップ機能は、クライアントが1つ選択できる、または
さらに絞り込みサーチを実行できる複数のエントリを返す。一実施形態では、ル
ックアップ機能は特定のXMLスキーマとマッチするサービス通知を特定するた
めのメカニズムを備える。クライアントは、スペース内でサーチ対象となる、特
定のXMLスキーマ、または特定のXMLの一部を指定することができる。した
がって、インターフェース機能に従ってスペース内でサービスをサーチすること
ができる。
【0197】 分散コンピューティング環境で提供できるスペース機能としては他に、サービ
スおよびクライアントがXMLなどの型付けモデルに基づき一時的ドキュメント
を見つけられるメカニズムがある。このメカニズムは、汎用の型付けドキュメン
ト・ルックアップ・メカニズムである。一実施形態では、このルックアップ・メ
カニズムはXMLに基づく。このルックアップ・メカニズムを使用すると、クラ
イアントおよびサービスは、サービス通知を介したサービスを含めて、一般にド
キュメントを見つけることができる。
【0198】 一実施形態では、スペース・ルックアップおよび応答メッセージのペアを使用
することにより、クライアントおよびサービスがネットワーク一時ドキュメント
・ストア(スペース)内に格納されているXMLドキュメントを見つけられるよ
うにできる。スペースは、さまざまなドキュメントを格納するために使用される
ドキュメント・スペースである。一実施形態では、ドキュメントはXMLドキュ
メントまたはXMLでカプセル化された非XMLドキュメントである。スペース
については他のところでさらに詳述する。ルックアップ・メッセージは、サービ
ス通知およびデバイス・ドライバ通知を含む、スペース内に格納されているあら
ゆる種類のXMLドキュメント上で機能する。一実施形態では、クライアント(
他のサービスでもよい)は別のところで説明しているように発見メカニズムを使
用して、1つまたは複数のドキュメント・スペースを見つけることができる。そ
の後、クライアントはスペース・ルックアップ・メッセージを使用して、スペー
ス内に格納されているドキュメントを特定することができる。
【0199】 分散コンピューティング環境には、サービスおよびクライアントがXMLドキ
ュメントの発行に関するイベントのサブスクライブおよび受取を行うためのメカ
ニズムが備えられる。イベントは、スペースなどの一時的XMLドキュメント・
リポジトリにXMLドキュメントをパブリッシュしたり、そこから除去したりす
る機能を含むことができる。一実施形態では、イベントは、他のXMLドキュメ
ントを参照するXMLドキュメントである。
【0200】 一実施形態では、スペース・イベント・サブスクライブおよび応答メッセージ
のペアを使用することにより、クライアントおよびサービスがスペースに追加ま
たはスペースから削除されるドキュメントに関するイベントのサブスクライブを
行える。一実施形態では、他のところで説明しているリース・メカニズムを使用
して、イベント・サブスクライブをリースすることができる。一実施形態では、
リースが取り消されるかまたはその有効期限が切れたときにサブスクライブを取
り消すことができる。一実施形態では、サブスクライブ上のリースを更新する際
に、サブスクライブを更新できる。
【0201】 一実施形態では、イベント・サブスクライブ・メッセージに、ドキュメント・
マッチング・メカニズムとして使用できるXMLスキーマを含めることができる
。スキーマとマッチするドキュメントはサブスクライブによって取り扱われる。
一実施形態では、スペースに追加され、XMLスキーマとマッチするドキュメン
トは、スペース・イベント・メッセージを生成する。
【0202】 また、スペースに何かを追加したときやスペースから何かを削除したときにそ
の通知を取得するためクライアントが登録できる(または登録解除できる)スペ
ース機能を提供することができる。スペースは一時的コンテンツを格納すること
ができ、これはスペースに追加されたまたはスペースから削除されたサービスを
反映する。たとえば、サービスが利用できるようになったときまたは利用できな
くなったときにそのことをクライアントに通知するメカニズムを用意することが
できる。クライアントは、このような通知を取得するためイベント・サービスに
登録することができる。一実施形態では、クライアントは指定されたストリング
とマッチする名前または指定されたスキーマ(またはスキーマ部分)とマッチす
るスキーマを持つサービスをスペースに追加したりスペースから削除したりする
ときにそのことを通知するように登録することができる。したがって、スペース
・イベント通知機能に登録するクエリは、上述のサービス・ルックアップ機能の
ものと同じであるか類似している。
【0203】 図43は、一実施形態による、分散コンピューティング環境での、サーチ・サ
ービスを使用するスペースのサーチを示す流れ図である。一実施形態では、デバ
イスのクライアントが、同一のまたは異なるデバイスのサーチ・サービスと対話
して、データの格納および/または取出のためのスペース(すなわち、ネットワ
ーク・アクセス可能オブジェクト・リポジトリ)を見つけることができる。この
対話の実施形態を、さらに図46aおよび46bに示す。クライアント110は
、2000に示されているように、サーチ・サービス2102にサーチ要求を送
ることができる。サーチ要求には、スペースからサーチされる1つまたは複数の
所望の特性を含めることができる。一実施形態では、サーチ要求が、拡張マーク
アップ言語(XML)などのデータ表現言語で表現される。一実施形態では、サ
ーチ要求の所望の特性に、1つまたは複数のキーワードを含めることができる。
クライアントに、キーワードを受け入れ、それらをサーチ・サービス2102に
送るプログラム2100を含めることができる。一実施形態では、キーワードを
、XMLメッセージ2106としておよび/または本明細書に記載のゲートを使
用して送ることができる。
【0204】 サーチ要求に基づいて、サーチ・サービス2102が、サーチを行うことがで
きる。図46aに示された実施形態では、サーチを行う際に、サーチ・サービス
2102が、インターネット・サーチ・エンジンなどのサーチ・エンジン210
4と対話することができる。この形で、サーチ・サービスが、クライアントとサ
ーチ・エンジンの間のプロキシとして働くことができる。プロキシは、ウェブ・
ブラウザの使用またはサーチ結果のセット全体の受取によるなど、サーチ・エン
ジンとの対話のためのリソースを有しない小さいデバイスのクライアントに特に
望ましい可能性がある。サーチ・エンジンに、ブラウザ・アクセス可能なインタ
ーネット・サーチ・エンジンなどの、ネットワーク・アクセス可能なサードパー
ティ・サーチ・エンジンを含めることができる。図46bに示された実施形態で
は、サーチ・サービス2102に、サーチ・エンジン2104を含めるか、他の
形で密に結合することができる。2002に示されているように、サーチ・サー
ビス2102は、サーチ要求を、データ表現言語(たとえばXML)から、サー
チ・エンジン2104によって使用可能なテキスト・フォーマットに変換するこ
とができる。2004に示されているように、サーチ・サービス2102は、変
換されたサーチ要求をサーチ・エンジン2104に送ることができる。
【0205】 2006に示されているように、サーチをサーチ・エンジン2104によって
実行して、サーチ結果を生成することができる。サーチ結果には、たとえば21
20a、2120b、および2120cなどの1つまたは複数の結果のスペース
の位置(たとえばURI)を含めることができる。一実施形態では、スペースに
、インターネット2110を介してアクセス可能な1つまたは複数のウェブ・ペ
ージを含めることができる。ウェブ・ページには、ウェブ・ページを分散コンピ
ューティング環境内のスペースとして識別する識別キーワードを含めることがで
きる。サーチ要求に、このキーワードを、スペースについて望まれる特性を記述
する1つまたは複数の他のキーワードと共に含めることができる。
【0206】 2008に示されているように、サーチ・サービス2102は、サーチ・エン
ジン2104からテキスト・フォーマットでサーチ結果を受け取ることができる
。2010に示されているように、サーチ・サービス2102は、テキスト・フ
ォーマットのサーチ結果をデータ表現言語(たとえばXML)のサーチ結果に変
換し、その結果をクライアント110に送る。一実施形態では、サーチ・サービ
ス2102が、結果のスペース2120a、2120b、および2120cのそ
れぞれに関するサービス通知を得ることができる。各サービス通知に、めいめい
のスペースにアクセスするのに使用可能な情報が含まれる。サーチ・サービス2
102は、これらの通知への参照(たとえばUniform Resource
Identifier)または通知自体をサーチ結果として送って、2012
に示されているように、クライアントが、めいめいの位置の結果のスペースにア
クセスできるようにする。一実施形態では、結果位置のスペースに、Unifo
rm Resource Identifier(URI)が含まれる。
【0207】 一実施形態では、サーチ結果をクライアント110に送る際に、サーチ・サー
ビス2102が、サーチ結果を結果のスペース(すなわち、ネットワーク・アク
セス可能なストレージ・リポジトリ)に格納し、その結果スペースのアドレスを
クライアント110に送ることができる。クライアント110は、適当な時に、
結果スペース内のサーチ結果にアクセスすることができる。結果スペースの使用
は、結果のセット全体を受け取って表示するリソースを有しない小さいクライア
ントに特に望ましい。この情況では、一実施形態によれば、ユーザが、異なるク
ライアントを使用して結果スペースから結果を読み取ることができる。
【0208】 いくつかの実施形態では、サーチ・サービスが、サーチ・サービスを介して見
つけることができるスペースを制限またはフィルタリングするか、分散コンピュ
ーティング環境内の少数のサポートされるスペースだけをサーチするようにクラ
イアントを制限することができる。許可されるサーチの範囲は、クライアント認
証に従って決定することができる。
【0209】 図47は、一実施形態の分散コンピューティング環境での、スペース内のドキ
ュメントのサーチを示す流れ図である。一実施形態では、クライアントが、サー
チメッセージを介してスペースと対話して、スペース内のドキュメントを見つけ
ることができる。2200に示されているように、クライアントは、ルックアッ
プ・メッセージをスペースに送ることができる。スペースには、1つまたは複数
のドキュメントを格納するために動作可能であるネットワーク・アドレッシング
可能記憶場所を含めることができる。格納されたドキュメントは、拡張マークア
ップ言語(XML)などのデータ表現言語で表現することができる。ルックアッ
プ・メッセージが格納されたドキュメントの所望の特性を指定することができる
。一実施形態では、ドキュメントに、XMLサービス通知およびXMLデバイス
通知ならびに汎用XMLドキュメントを含めることができる。たとえば、スペー
ス内のXMLドキュメントに、XMLで表現された、サービスの結果を含めるこ
とができる。
【0210】 2202に示されているように、ルックアップ・メッセージにマッチするドキ
ュメントのセットを発見することができる。発見されるドキュメントには、ルッ
クアップ・メッセージで指定された所望の特性にマッチするすべての格納された
ドキュメントを含めることができる。0個以上の格納されたドキュメントが、所
望の特性にマッチする可能性がある。一実施形態では、ルックアップ・メッセー
ジに所望の名前を含めることができる。一実施形態では、ルックアップ・メッセ
ージで指定された所望の名前に、1つまたは複数のワイルドカードを含めること
ができる。発見されるドキュメントのそれぞれが、所望の名前とマッチする名前
を有することができ、名前によって、スペース内で発見されたドキュメントを識
別することができる。一実施形態では、ルックアップ・メッセージに、データ表
現言語で表現された所望のスキーマを含めることができる。発見されるドキュメ
ントのそれぞれが、所望のスキーマとマッチするスキーマまたはスキーマの一部
を有することができる。一実施形態では、ルックアップ・メッセージに、所望の
名前および所望のスキーマの両方を含めることができる。この場合には、発見さ
れるドキュメントのセットに、所望の名前とマッチする名前を有する発見された
ドキュメントと、所望のスキーマとマッチするスキーマを有する発見されたドキ
ュメントの両方を含めることができる。一実施形態では、ルックアップ・メッセ
ージに、所望の名前も所望のスキーマも含めないことができる。この場合には、
ルックアップ・メッセージは、本質的に、スペース内のすべてのドキュメントに
関する要求であり、発見されるドキュメントのセットに、スペースに格納された
ドキュメントの実質的にすべてを含めることができる。
【0211】 マッチするドキュメントが見つかった後に、2204に示されているように、
スペースが、クライアントにサーチ応答メッセージを送ることができる。一実施
形態では、サーチ応答メッセージに、発見されたドキュメントの名前を含めるこ
とができる。一実施形態では、サーチ応答メッセージに、0個以上の発見された
ドキュメントのそれぞれに関する通知メッセージを含めることができる。各通知
に、めいめいの発見されたドキュメントを得るか、ドキュメントが通知するリソ
ース(たとえばサービス)にアクセスするために、クライアントによって使用可
能な情報を含めることができる。一実施形態では、各通知に、めいめいの発見さ
れたドキュメント(または、ドキュメントによって通知される、サービスなどの
リソース)にアクセス可能である場所のUniform Resource I
dentifier(URI)を含めることができる。一実施形態では、発見さ
れるドキュメントの少なくとも1つを、サービスに関する通知とすることができ
る。サービスに関する通知に、スキーマを含めることができ、このスキーマによ
って、サービスの1つまたは複数の関数を呼び出すのに使用可能な1つまたは複
数のメッセージが指定される。通知は、XMLなどのデータ表現言語で表現する
ことができる。
【0212】 一実施形態では、ルックアップ・メッセージおよびサーチ応答メッセージが、
XMLなどのデータ表現言語で表現される。スペースに関するスキーマで、ルッ
クアップ・メッセージおよびサーチ応答メッセージの形式を指定することができ
る。一実施形態では、このメッセージの対を、下記のようにXMLで表現するこ
とができる。ルックアップ・メッセージ <Space> <LookupAdvertisement> <AdvertisementName>名前</AdvertisementName> <AdvertisementSchema>通知スキーマ</AdvertisementSchema> </LookupAdvertisement> </Space> サーチ応答メッセージ <Space> <LookupAdvertisementResponse> <Advertisement>通知</Advertisement> <AdvertisementName>名前</AdvertisementName> </LookupAdvertisementResponse> </Space>
【0213】 XMLルックアップ・メッセージでは、「名前」を、ストリング値とすること
ができ、名前によって、スペース内の一意の識別子を指定することができる。ワ
イルドカードが使用される場合には、識別子が、一意でない場合がある。「Ad
vSchema」は、ルックアップがマッチすると期待されるスキーマである。
一実施形態では、両方のフィールドが任意選択である。XMLルックアップ応答
メッセージでは、「Adv」が、0個以上のマッチする通知のグループであり、
「Names」が、通知に対応する名前のグループである。
【0214】 図48は、一実施形態による、分散コンピューティング環境での、スペース内
に格納された通知を使用する、サービスのアドレッシングを示す流れ図である。
一実施形態では、2300に示されているように、サービスが、スペース内でサ
ービス通知をパブリッシュすることができる。スペースは、拡張マークアップ言
語(XML)ドキュメントなどのドキュメントが格納されるネットワーク・アド
レッシング可能記憶場所とすることができる。通知のパブリッシュは、この詳細
な説明の他所で詳細に説明する。一実施形態では、通知に、サービスのUnif
orm Resource Identifier(URI)およびスキーマを
含めることができる。URIでは、サービスにアクセスできるネットワーク・ア
ドレスを指定することができ、スキーマでは、サービスの1つまたは複数の関数
を呼び出すのに使用可能である1つまたは複数のメッセージを指定することがで
きる。一実施形態では、スキーマおよびメッセージを、XMLなどのデータ表現
言語で表現することができる。2302に示されているように、クライアントは
、スペースにアクセスし、通知を見つけることができる。たとえば、クライアン
トは、発見サービスを使用してスペースを見つけ、その後、図47に示されたも
のなどのルックアップ・サービスを使用して、スペース内の通知を見つけること
ができる。
【0215】 一実施形態では、通知に、特定のサービスにアクセスするためにクライアント
が必要とする情報の実質的にすべてが含まれる。2304に示されているように
、クライアントは、スペースから通知を読み取ることができる。一実施形態では
、クライアントは、通知内のURIおよびスキーマを使用して、サービスにアク
セスするためのゲートを構築することができる。2305に示されているように
、クライアントは、URIにあるサービスにスキーマで指定された第1のメッセ
ージを送って、サービスの1つまたは複数の関数を呼び出すことができる。それ
に応答して、2308に示されているように、サービスの関数を呼び出すことが
できる。一実施形態では、サービスが、第2のメッセージ(たとえば、呼び出さ
れた関数の結果を含むメッセージ)をクライアントに送ることができ、この第2
のメッセージは、そのサービスのスキーマで指定されたものである。
【0216】 スペースのクライアントが、XMLドキュメント(たとえばサービス通知)が
スペースに追加または除去される時に通報されるように契約する時に、そのクラ
イアントは、通報のためのこの契約に対するリースを得ることができる。リース
を用いて、スペース・サービスが、特定のクライアントへの通報の発送を継続す
るかどうかを知ることができる。たとえば、通知機能に対するリースは、更新さ
れない場合に、ある時間の後に満了するようにすることができる。クライアント
がスペースとのアクティブ・セッションを確立している間は、リースが不要であ
る可能性があることに留意されたい。クライアントは、スペースとのアクティブ
・セッションを切断した後に、対応するリースがアクティブのままである限り、
そのイベント契約に従ってイベント通報の受取を継続することができる。下のリ
ースの節を参照されたい。
【0217】 クライアントは、異なる型のイベントに対して契約することができる。例は、
上で説明したように、スペースに追加または除去されるサービス通知である。ク
ライアントは、クライアント(またはほかの誰か)によって開始されたサービス
からの結果がスペースに置かれる時にも通報を受けることができる。たとえば、
クライアントとサービスが、サービスの結果を参照する名前を相互に選択するこ
とができる。クライアントは、選択された名前によって参照される結果がスペー
スに追加される時にイベントを受け取るために、結果がポストまたは通知される
スペース・サービスに登録することができる。
【0218】 スペースは、クライアントが契約することができる異なる型のイベントを生成
することができる。スペース変更の合成物として、イベントを、そのようなイベ
ントについて契約したクライアントおよびサービスに対して作ることができる。
一実施形態では、2つの主なスペース・イベント・カテゴリすなわち、スペース
に関するカテゴリ(通知の挿入および除去)と、通知に対する変更を示すのに使
用されるカテゴリ(要素または属性の追加、除去、変更)を設けることができる
。どのイベントがサポートされるかは、スペースのXMLメッセージ・スキーマ
で示すことができる。
【0219】 下記のイベントは、スペース・イベントまたは通知イベントを示すためにスペ
ース・サービスによって作られる可能性があるイベントの例である。
【0220】
【表1】
【0221】 イベントは型付けされる。いくつかの実施形態では、スペースによってサポー
トされるイベント機能を使用すると、イベント・リスナーがたとえば、Java
クラス(またはXMLの型)階層を利用することができる。たとえば、AdvE
lementEventが発生するのを待つことで、リスナーは型AdvEle
mentEventおよびそのサブクラス(XML型)のすべてのイベントを受
け取る。したがって、この例では、要素変更に関係するすべてのイベントは(通
知の挿入および削除はないが)、受取される。
【0222】 他の例では、トップレベルのイベント・クラスまたは型、たとえば、Spac
eEventのサブスクライブまたは待機する際に、すべてのスペース・イベン
トが受取される。イベント・クラスの型は、たとえば、Javaのinstan
ce of演算子またはXML型付けシステムを介して区別することができる。
【0223】 イベントには、影響を受ける通知または要素へのURIが含まれる。たとえば
、AdvertisementEventおよびそのすべてのサブクラスは影響
を受ける通知への参照(たとえば、URIまたはURL)を含む。AdvEle
mentEventおよびそのサブクラスは、影響を受ける要素の名前について
調査することができる。たとえば、前の要素値(URIまたはURL)は、Ad
vElementRemoveEventおよびAdvElementValu
eChangeEventから利用することができる。
【0224】 一実施形態のスペース・イベントの型階層を図21に示した。型は、XMLで
定義し、JavaやC++などの他の適当なオブジェクト指向言語で使用するこ
とができる。
【0225】 スペースは、クライアントがスペース内で通知されたサービスをインスタンス
化する機能を備える。サービスのインスタンス化は、クライアントがサービスを
実行できるよう行われる初期化である。サービスのインスタンス化の一実施形態
を図22に示す。サービスをインスタンス化するために、クライアントはまず、
320で示されているように、スペース内でパブリッシュされたサービス通知の
うちから1つ選択する。クライアントは、スペースに用意されているルックアッ
プ機能などのさまざまな機能を使用して、スペース内のさまざまな通知をルック
アップすることができる。次に、クライアントは、322に示されているように
、スペースに対しサービスのインスタンス化を要求する。
【0226】 一実施形態では、サービス・インスタンス化は、以下の操作を含む。クライア
ントがスペース・サービスに対し選択されたサービスのインスタンス化を要求し
た後、322に示されているように、スペース・サービスは、324に示されて
いるように、クライアントが要求されたサービスをインスタンス化できることを
確認する。スペース・サービスは、クライアントのメッセージに含まれる認証証
明書を調べることによりこの確認を実行する。認証証明書は、スペース・サービ
スとのセッションを確立したときにクライアントが受け取る証明書である。スペ
ース・サービスは、クライアントがそのクライアントに指示されているクライア
ントの認証証明書および能力に応じて要求されたサービスをインスタンス化でき
るかどうかを検証する。以下の「認証とセキュリティ」の項を参照のこと。
【0227】 クライアントが承認されていると仮定すると、スペース・サービスはさらに、
326に示されているように、クライアントによって指定されているリース要求
時間でクライアントに対するサービス通知のリースを取得することができる。リ
ースについては以下で詳述する。スペース・サービスは、328に示されている
ように、割り当てられたリースとサービスのサービス通知を含むメッセージをク
ライアントに送る。一実施形態では、クライアントはサービス通知で指定された
認証サービスを実行し、330で示されているように、認証証明書を取得する。
認証サービスの詳細については、「認証とセキュリティ」の項を参照のこと。次
に、332で示されているように、クライアントはサービスのためにゲートを構
築する(たとえば、認証証明書と通知からのXMLスキーマおよびサービスUR
Iを使用する)。「ゲート」の項を参照のこと。クライアントとスペース・サー
ビスとの上述の通信は、分散コンピューティング環境のXMLメッセージングを
使用して実行される。その後、クライアントは、構築されたゲートとXMLメッ
セージングを使用してサービスを実行する。サービスは、同様に、XMLメッセ
ージによるクライアントとの通信用にサービス・ゲートを構築する。
【0228】 まとめとして、スペースの使用例を以下で説明する。クライアントは、スペー
ス・サービスにアクセス(たとえば、接続)することができる。(サービスは、
スペースにアクセスするかまたはその他の方法でスペースを使用するためにクラ
イアントとして機能する。)スペース・サービスは、1つまたは複数のサービス
通知および/またはその他のコンテンツス・ペース内に格納し、サービス通知の
それぞれが、対応するサービスにアクセスし、実行するために使用できる情報含
む。スペース・サービスは、スペース・サービスの機能を呼び出すために使用で
きる1つまたは複数のメッセージを指定するスキーマを備えることができる。た
とえば、スキーマはスペースから通知を読み込み、スペース内で通知をパブリッ
シュするメソッドを指定できる。スキーマおよびサービス通知は、拡張可能マー
クアップ言語(XML)などのオブジェクトを表現言語で表すことができる。ス
ペース・サービスにアクセスする場合、クライアントはXMLメッセージ(スキ
ーマで指定されている)などの情報をインターネット・アドレスにあるスペース
・サービスに送る。スペース・サービスにアクセスする際に、クライアントはス
ペースに格納されている1つまたは複数のをサービス通知をサーチする。クライ
アントは、スペースからサービス通知の1つを選択できる。一実施形態では、ク
ライアントは、スペースから目的のサービス通知を選択した後インスタンス化要
求をスペースに送る。目的のサービスに対するリースを取得し、リースおよびス
ペース・サービスによって、選択されたサービス通知をクライアントに送る。そ
の後、クライアントは目的のサービスに対するアクセスのためのゲートを構築す
る。目的のサービスをクライアントのために実行できる。
【0229】 スペース・サービスによって提供される機能としてはほかに、空のスペースの
生成または作成の機能がある。このスペース機能を使用する際に、クライアント
(他のクライアントへのサービスであってもよい)は新しいスペースを動的に作
成することができる。一実施形態では、このスペース機能は、生成元のスペース
と同じ機能(同じXMLスキーマまたは拡張スキーマ)を持つ空のスペースを生
成するインターフェースを備えることができる。この機能は、結果に対しスペー
スを(たとえば、動的に)生成する場合に使用できる。たとえば、クライアント
は、サービスで結果を生成されたスペースに置くかまたは結果を生成されたスペ
ースで通知するよう要求するスペースを生成することができる。クライアントは
、生成されたスペースのURIおよび/または認証証明書をサービスに渡す。ま
たは、サービスは、結果に対しスペースを生成し、生成されたスペースのURI
および/または認証証明書をクライアントに渡す。いくつかの実施形態では、ス
ペースがいったん生成されると、他のスペースと同様に、ここで説明したスペー
スを発見メカニズムのうち1つまたは複数を使用して発見することができる。
【0230】 他のスペース内のインターフェースを介してスペースを作成するメカニズム(
たとえば、スペース生成機能)を使用して、新しいスペースを効率よく作成する
ことができる。たとえば、一実施形態では、格納用の元のスペースで使用してい
るのと同じ機能を使用して、生成されたスペース用の記憶域を割り当てることが
できる。また、生成されたスペースは共通サービス機能を元の(または親の)ス
ペースと共有することができる。たとえば、新しいURIを新しいスペースに割
り当てることができる。一実施形態では、新しいURIは元のスペースと共有さ
れる共通スペース機能へのリダイレクションとすることができる。したがって、
新しく生成されたスペースは元のスペースと同じサービス・コードまたはその一
部を使用することができる。
【0231】 スペース機能はさらに、たとえば、スペースのさまざまなセキュリティ・ポリ
シーおよびその他の管理機能を更新するためのセキュリティ管理機能を備える。
たとえば、通知の個数および経過時間を、ルート・スペース・サービスにより制
御し監視することができる。旧い通知を収集して処分することができる。たとえ
ば、通知を旧いとみなすことができる場合については「リース」の項を参照のこ
と。スペースを実装するサービスは管理者の制御の下にある。管理者は、サービ
スに依存する形でポリシーを設定することができる。スペースで機能はさらに、
空のスペースを削除する機能を備える。
【0232】 いくつかのスペースでは、モバイル・クライアントなどのある種のクライアン
トの拡散をさらにサポートする機能またはサービスを備えることができる。たと
えば、モバイル・クライアントが発見プロトコルなどにより発見できるスペース
内のサービスは、モバイル・クライアントに対し次のようにサポートする ・ クライアントに対し一時的ネットワーク・アドレスを割り当て管理する。 ・ クライアントに対しメッセージ通信をプロキシに通す。 ・ 追加スペースに対しサーチ機能を用意する。たとえば、サービスにより、ク
ライアントは単純なインターフェースを介してキーワードを指定することができ
る。その後サービスは、ここで詳述しているように、Webサーチ・エンジンで
そのキーワードを使用して、Web上でスペースをサーチする。他の実施形態で
は、サーチ・サービスは、クライアントを分散コンピューティング環境内でごく
少数のサポートされているスペースをサーチすることに制約する。
【0233】 前に述べたように(図9および付属の文章を参照)、スペースはクライアント
によって実行されるサービスからの結果を格納する便利なメカニズムを提供する
。結果にスペースを使用する際に、小型クライアントはサービスを実行した結果
をバラバラにして受け取ることができる。いくつかのサービスでは、大量の結果
が生成されることがある。スペースを使用してサービスからな結果を格納するこ
とにより、一度に全部の結果を受け取るだけのリソースがないクライアントでも
そのサービスを使用することができる。さらに、スペースを使用して結果を格納
することにより、大量の結果が返されるときに高速な使用中サーバ上で実行され
ているサービスを低速なクライアントとの直接的な対話操作から解放することが
できる。したがって、サービスをすぐに解放することができ、他のクライアント
で使用できる。
【0234】 スペースは、異なるクライアントにより、かつ/または異なるときに、結果に
アクセスするための便利なメカニズムを備える。たとえば、クライアントは結果
をまるごとは使用できない場合があるが、ユーザはその結果にアクセスできる他
のクライアントを後で使用してその結果の残り部分にアクセスすることを望む。
たとえば、結果には、株式市況や、現在の株価の表示(PDAからアクセス可能
)、および株価チャートの表示(後でラップトップからアクセス可能)などがあ
る。また、結果に対し分散コンピューティング環境でスペースを使用すると、ク
ライアントは一方のサービスの結果を他方のサービスに供給することができ、し
かも、結果を最初にダウンロードする必要がない。たとえば、上の株式市況の場
合、PDAはチャートを他のサービスに送り、そこでチャートを印刷することが
でき、PDAでチャート自体をダウンロードする必要はない。したがって、結果
スペースは、クライアントが結果を処理または受け取らずに、他のクライアント
またはサービスに渡すためのメカニズムを提供する。
【0235】 異なる実施形態では、結果に対しスペースを使用する決定は、サービスによっ
て命じられるか、クライアントによって命じられるか、および/またはクライア
ントによって要求される。サービスは、たとえば、その通知で、結果に対しスペ
ースを使用することを提案することがある。一実施形態では、クライアントまた
はサービスのいずれかが結果に対する新しいスペースを生成するか、または結果
に対し既存のスペースを使用することができる。スペースの生成に関する説明を
参照のこと。
【0236】 一実施形態では、結果に対しスペースを使用しても、必ずしも、サービスがす
べての結果をそのスペースに入れる必要があるわけではない。サービスが生成す
る結果に対し代替えもありうる。たとえば、結果の一部または全部をメッセージ
によりインラインでクライアントに送ることができる。それとは別に、結果をス
ペースに入れ、その後、通知メッセージをクライアントに送り、結果を参照する
ようにできる(たとえば、結果へのURIや結果の通知へのURIを含める)。
他のオプションとして、結果をスペースに入れ、スペースからのイベントにより
通知を送る方法もある。たとえば、クライアントおよびサービスは何らかの特定
の名前で結果を呼び出し、クライアントはそのように名前を付けられた結果をス
ペースに追加するときにイベントを受け取るため(上記のものなどのスペース機
能を使用して)スペースに登録することができる。イベント通知に関する上の説
明を参照のこと。
【0237】 したがって、サービスが結果をクライアントに返すいくつかの異なるメカニズ
ムを分散コンピューティング環境内で使用することができる。実際の結果をXM
Lメッセージ内の値でクライアントに返すか、または結果をスペースに置かれて
いる実際の値(または、実際の結果に対する通知)による参照でクライアントに
返され、クライアントはスペース内の結果を参照しているメッセージを受け取る
。さらに、結果または結果通知をスペース内に置き、イベントでクライアントに
通知できる。
【0238】 結果を処理する他のメカニズムでは、クライアントが供給する結果に対し他の
サービスを指定する。たとえば、クライアントは、結果を出力するサービスを実
行する場合、そのサービスに(たとえば、XMLメッセージングを介して)、結
果を他のサービスに送ってさらに処理するよう指示することができる。これには
、他のサービスを実行して結果を渡すために、クライアントが他のサービスに通
知のURIを指示し、結果出力サービスが他のサービスへのゲートを生成するよ
うにする必要がある。この例では、結果出力サービスは他のサービスのクライア
ントでよい。いくつかの実施形態では、クライアントはスキーマまたは事前構築
されたゲートを結果出力サービスに送り、サービスにアクセスしてさらに処理す
る。さらに処理するサービスの例として、元のクライアントの結果を表示するこ
とができる表示サービスがある。この表示サービスは、クライアントと同じデバ
イスにあるか、またはそのようなデバイスと関連付けられる。
【0239】 図41は、1実施形態による分散コンピューティング環境での新しいスペース
の作成を示す流れ図である。1900に示されているように、クライアントは、
第1スペース・サービスにアクセス(すなわち接続)することができる(サービ
スは、スペースへのアクセスまたは他の使用のためにクライアントとして働くこ
とができる)。第1スペース・サービスは、1つまたは複数のサービス通知およ
び/または他のコンテンツを第1スペースに格納することができ、サービス通知
のそれぞれに、対応するサービスへのアクセスおよび実行に使用可能な情報を含
めることができる。第1スペース・サービスに、第1スペース・サービスの関数
を呼び出すのに使用可能な1つまたは複数のメッセージを指定する第1スキーマ
を含めることができる。たとえば、第1スキーマによって、第1スペースから通
知を読み取るメソッド、および第1スペースで通知をパブリッシュするメソッド
を指定することができる。第1スキーマおよびサービス通知は、拡張マークアッ
プ言語(XML)などのオブジェクト表現言語で表現することができる。第1ス
ペース・サービスにアクセスする際に、クライアントは、XMLメッセージなど
の情報(第1スキーマで指定される)を、第1インターネット・アドレス(たと
えばURI)にある第1スペース・サービスに送ることができる。第1スペース
・サービスにアクセスする際に、クライアントが、第1スペースに格納された1
つまたは複数のサービス通知をサーチすることができる。
【0240】 1実施形態では、スペースに、新しいスペースを作成する機能を含めることが
できる。1902に示されているように、クライアントが第1スペースのインタ
ーフェースに適当な要求を送ることによるなど、第2スペースの作成を要求する
ことができる。1実施形態では、要求を、第1スペースの第1スキーマに従うX
MLメッセージとしてフォーマットすることができる。1904に示されている
ように、それに応答して、第2スペースを有する第2スペース・サービスを、第
2インターネット・アドレス(たとえばURI)などで、作成することができる
。上と同様に、第2スペース・サービスに、第2スペース・サービスの関数を呼
び出すのに使用可能な1つまたは複数のメッセージを指定する第2スキーマを含
めることができる。第2スキーマに少なくとも第1スキーマを含めることができ
、第2スキーマに追加の機能性も含めることができる。1実施形態では、第2ス
ペースのスキーマに第1スキーマの一部を含めることができ、あるいは、第2ス
キーマを第2スペースの作成の時点で指定することができる。1906に示され
ているように、クライアントは、第2スキーマで指定されるメッセージの少なく
とも1つを第2スペースに送ることによって、第2スペースにアクセスすること
ができる。
【0241】 スペースの作成に、セキュリティに関するものなどの管理初期化を含めること
ができる。1実施形態では、要求する側がスペースを作成した時に、当初は、要
求する側だけが、作成されたスペースへのアクセスを許可される。そのような作
成されたスペースへのアクセスの制限は、クライアントおよびサービスがその作
成されたスペースを使用して結果を格納する時に有用になるであろう。作成され
たスペースの認証およびセキュリティに関する情報については、「認証およびセ
キュリティ」の節を参照されたい。クライアントは、新しいスペースを作成した
後に、作成されたスペースにアクセスするゲートを構築することができる。
【0242】 したがって、さまざまな実施形態で、結果を、複数の方法で、たとえば、メッ
セージ内で、スペース内で、クライアントがイベントを介して通報されるスペー
ス内で、メッセージ内で返される通知を使用して、スペース内で返される通知を
使用して、およびクライアントがイベントを介して通報されるスペース内で返さ
れる通知を使用して、クライアントに返すことができる。結果を返すこのさまざ
まな方法を、図44aから44gに示す。この複数の方法の使用可能性によって
、異なる機能を有するクライアントに関するものなどのさまざまな情況に関する
分散コンピューティング環境の柔軟性および適応性を強化することができる。追
加の柔軟性について、図45に示されているように、結果を、別のサービスに効
率的に渡すこともできる。
【0243】 図44aは、1実施形態による分散コンピューティング環境での、サービスの
結果をスペースに格納する方法を示す流れ図である。2050に示されているよ
うに、クライアントは、第1メッセージをサービスに送って、サービスの1つま
たは複数の関数の呼出しを要求することができる。サービスのスキーマによって
、第1メッセージを含む、サービスの関数を呼び出すのに使用可能な、複数のメ
ッセージを指定することができる。メッセージおよびスキーマは、XMLなどの
、プラットフォーム独立および/またはプログラミング言語独立のデータ表現言
語で表現することができる。
【0244】 2052に示されているように、第1メッセージに応答して、サービスの1つ
または複数の関数を呼び出すことができる。2054に示されているように、サ
ービスが、結果のセットを生成することができる。結果は、データ表現言語(た
とえばXML)で表現することができる。2056に示されているように、サー
ビスは、結果のセットをスペース内のロケーションに格納することができ、この
スペースには、ネットワーク・アドレッシング可能なストレージ位置が含まれる
。1実施形態では、結果のセットの格納の準備としてスペースを作成することが
できる。
【0245】 2058に示されているように、クライアントは、スペースから結果のセット
にアクセスし、読み取ることができる。1実施形態では、第2のクライアント(
すなわち、関数を呼び出すメッセージを送ったクライアントと異なるクライアン
ト)が、スペースから結果のセットを読み取ることができる。この形で、第1の
クライアントが結果の読取および表示などの作業を達成するのに十分なリソース
を有しない可能性がある時に、ユーザが、第2のクライアントを使用して結果を
読み取り、表示することができる。1実施形態では、クライアントが、サービス
が結果のセットのアドレスを第2サービスに渡すことを要求するメッセージをサ
ービスに送ることができ、その結果、第2サービスが、スペース内のアドレスか
ら結果のセットを読み取ることができるようになる。第2メッセージに、第2サ
ービスの通知のUniform Resource Identifier(U
RI)を含めることができ、この第2サービスの通知には、第2サービスにアク
セスするのに使用可能な情報が含まれる。この形で、結果を、クライアントに渡
さずに、第1サービスから第2サービスに効率的に渡すことができる。
【0246】 図44bは、1実施形態による、サービスの結果をスペース内に格納し、イベ
ントを使用してクライアントに通報する方法を示す流れ図である。2050に示
されているように、クライアントが、第1メッセージをサービスに送って、サー
ビスの1つまたは複数の関数の呼出しを要求することができる。2052に示さ
れているように、第1メッセージに応答して、サービスの1つまたは複数の関数
を呼び出すことができる。2054に示されているように、サービスが、結果の
セットを生成することができる。結果は、データ表現言語(たとえばXML)で
表現することができる。2056に示されているように、サービスは、結果のセ
ットをスペース内のロケーションに格納することができ、スペースに、ネットワ
ーク・アドレッシング可能なストレージ位置が含まれる。2057に示されてい
るように、イベントを生成し、クライアントに送って、結果がスペース内に格納
されていることをクライアントに通報することができる。2058に示されてい
るように、クライアントは、イベントに応答して、スペースから結果のセットに
アクセスし、読み取ることができる。
【0247】 図44cは、1実施形態による、サービスの結果をメッセージ内でクライアン
トに送る方法を示す流れ図である。2050に示されているように、クライアン
トは、第1メッセージをサービスに送って、サービスの1つまたは複数の関数の
呼出しを要求することができる。2052に示されているように、第1メッセー
ジに応答して、サービスの1つまたは複数の機能を呼び出すことができる。20
54に示されているように、サービスが、結果のセットを生成することができる
。結果は、データ表現言語(たとえばXML)で表現することができる。205
5に示されているように、サービスは、結果を含むメッセージをクライアントに
送ることができる。メッセージは、データ表現言語(たとえばXML)で表現す
ることができ、1実施形態では、サービスのスキーマで指定することができる。
【0248】 図44dは、1実施形態による、通知を使用してサービスの結果を返す方法を
示す流れ図である。2050に示されているように、クライアントが、第1メッ
セージをサービスに送って、サービスの1つまたは複数の関数の呼出しを要求す
ることができる。2052に示されているように、第1メッセージに応答して、
サービスの1つまたは複数の機能を呼び出すことができる。2054に示されて
いるように、サービスが、結果のセットを生成することができる。結果は、デー
タ表現言語(たとえばXML)で表現することができる。1実施形態では、サー
ビスが、結果のセットをスペース内のロケーションに格納することができ、この
スペースには、ネットワーク・アドレッシング可能なストレージ位置が含まれる
。2060に示されているように、サービスが、結果に関する通知を生成するこ
とができる。通知には、スペースからなど、結果にアクセスし読み取るのに使用
可能な情報を含めることができる。たとえば、通知に、結果にアクセスできる場
所のUniform Resource Identifier(URI)を含
めることができる。1実施形態では、通知に、結果のフォーマットを指定するス
キーマ(たとえばXMLスキーマ)を含めることができる。1実施形態では、通
知を、XMLなどのデータ表現言語で表現することができる。2068に示され
ているように、クライアントは、通知を使用することによって、結果のセットに
アクセスし、読み取ることができる。1実施形態では、第2のクライアント(す
なわち、関数を呼び出すメッセージを送ったクライアントと異なるクライアント
)が、通知を使用することによって結果のセットを読み取ることができる。
【0249】 図44eは、1実施形態による、メッセージ内でクライアントに送られる通知
を使用してサービスの結果を返す方法を示す流れ図である。2050に示されて
いるように、クライアントが、第1メッセージをサービスに送って、サービスの
1つまたは複数の関数の呼出しを要求することができる。2052に示されてい
るように、第1メッセージに応答して、サービスの1つまたは複数の機能を呼び
出すことができる。2054に示されているように、サービスが、結果のセット
を生成することができる。結果は、データ表現言語(たとえばXML)で表現す
ることができる。1実施形態では、サービスが、結果のセットをスペース内のロ
ケーションに格納することができ、このスペースには、ネットワーク・アドレッ
シング可能なストレージ位置が含まれる。2060に示されているように、サー
ビスが、結果に関する通知を生成することができる。通知には、スペースからな
ど、結果にアクセスし読み取るのに使用可能な情報を含めることができる。たと
えば、通知に、結果にアクセスできる場所のUniform Resource
Identifier(URI)を含めることができる。1実施形態では、通
知に、結果のフォーマットを指定するスキーマ(たとえばXMLスキーマ)を含
めることができる。1実施形態では、通知を、XMLなどのデータ表現言語で表
現することができる。2061に示されているように、サービスが、通知を含む
メッセージをクライアントに送ることができる。メッセージは、データ表現言語
(たとえばXML)で表現することができ、1実施形態では、サービスのスキー
マで指定することができる。2068に示されているように、クライアントは、
通知を使用することによって、結果のセットにアクセスし、読み取ることができ
る。
【0250】 図44fは、1実施形態による、スペースに格納された通知を使用してサービ
スの結果を返す方法を示す流れ図である。2050に示されているように、クラ
イアントが、第1メッセージをサービスに送って、サービスの1つまたは複数の
関数の呼出しを要求することができる。2052に示されているように、第1メ
ッセージに応答して、サービスの1つまたは複数の機能を呼び出すことができる
。2054に示されているように、サービスが、結果のセットを生成することが
できる。結果は、データ表現言語(たとえばXML)で表現することができる。
1実施形態では、サービスが、結果のセットをスペース内のロケーションに格納
することができ、このスペースには、ネットワーク・アドレッシング可能なスト
レージ位置が含まれる。2056に示されているように、サービスは、結果のセ
ットをスペース内のロケーションに格納することができ、スペースに、ネットワ
ーク・アドレッシング可能なストレージ位置が含まれる。2060に示されてい
るように、サービスが、結果に関する通知を生成することができる。通知には、
スペースからなど、結果にアクセスし読み取るのに使用可能な情報を含めること
ができる。たとえば、通知に、結果にアクセスできる場所のUniform R
esource Identifier(URI)を含めることができる。1実
施形態では、通知に、結果のフォーマットを指定するスキーマ(たとえばXML
スキーマ)を含めることができる。1実施形態では、通知を、XMLなどのデー
タ表現言語で表現することができる。2062に示されているように、通知を、
スペースに格納することができる。スペースは、2056で結果が格納されたス
ペースと同一のまたは異なるスペースとすることができる。2066に示されて
いるように、クライアントは、スペースから通知を読み取ることができる。1実
施形態では、第2のクライアント(すなわち、関数を呼び出すメッセージを送っ
たクライアントと異なるクライアント)が、スペースから通知を読み取ることが
できる。2068に示されているように、クライアントは、通知を使用すること
によって、結果のセットにアクセスし、読み取ることができる。
【0251】 図44gは、1実施形態による、スペースに格納された通知と、イベントを使
用することによるクライアントへの通報とを使用してサービスの結果を返す方法
を示す流れ図である。2050に示されているように、クライアントが、第1メ
ッセージをサービスに送って、サービスの1つまたは複数の関数の呼出しを要求
することができる。2052に示されているように、第1メッセージに応答して
、サービスの1つまたは複数の機能を呼び出すことができる。2054に示され
ているように、サービスが、結果のセットを生成することができる。結果は、デ
ータ表現言語(たとえばXML)で表現することができる。1実施形態では、サ
ービスが、結果のセットをスペース内のロケーションに格納することができ、こ
のスペースには、ネットワーク・アドレッシング可能なストレージ位置が含まれ
る。2056に示されているように、サービスは、結果のセットをスペース内の
ロケーションに格納することができ、スペースに、ネットワーク・アドレッシン
グ可能なストレージ位置が含まれる。2060に示されているように、サービス
が、結果に関する通知を生成することができる。通知には、スペースからなど、
結果にアクセスし読み取るのに使用可能な情報を含めることができる。たとえば
、通知に、結果にアクセスできる場所のUniform Resource I
dentifier(URI)を含めることができる。1実施形態では、通知に
、結果のフォーマットを指定するスキーマ(たとえばXMLスキーマ)を含める
ことができる。1実施形態では、通知を、XMLなどのデータ表現言語で表現す
ることができる。2062に示されているように、通知を、スペースに格納する
ことができる。スペースは、2056で結果が格納されたスペースと同一のまた
は異なるスペースとすることができる。2064に示されているように、イベン
トを生成し、クライアントに送って、結果に関する通知がスペースに格納されて
いることをクライアントに通報することができる。2066に示されているよう
に、クライアントは、スペースから通知を読み取ることができる。2068に示
されているように、クライアントは、通知を使用することによって、スペースか
ら結果のセットにアクセスし、読み取ることができる。
【0252】 図45は、1実施形態による、分散コンピューティング環境での、あるサービ
スの結果を別のサービスに送る方法を示す流れ図である。2070に示されてい
るように、クライアントが、第1メッセージを第1サービスに送って、サービス
の1つまたは複数の関数の呼出しを要求し、関数の結果を第2サービスに渡すこ
とを要求することができる。第1サービスのスキーマによって、第1メッセージ
を含む、第1サービスの関数を呼び出すのに使用可能な複数のメッセージを指定
することができる。メッセージおよびスキーマは、XMLなどのプラットフォー
ム独立のデータ表現言語で表現することができる。1実施形態では、第1メッセ
ージに、第2サービスの通知のUniform Resource Ident
ifier(URI)を含めることができ、第2サービスの通知には、第2サー
ビスへのアクセスに使用可能な情報が含まれる。
【0253】 2072に示されているように、第1メッセージに応答して、第1サービスの
関数を呼び出すことができる。2074に示されているように、第1サービスが
、結果のセットを生成することができる。結果は、データ表現言語(たとえばX
ML)で表現することができる。2076に示されているように、第1サービス
は、結果をクライアントに直接に送らずに、メッセージ内で結果を第2サービス
に送ることができる。この形で、結果を、クライアントに渡さずに、第1サービ
スから第2サービスに効率的に渡すことができる。
【0254】 結果スペースおよびメソッド・ゲートにより、分散コンピューティング環境で
は、メモリが最低限しかなく、帯域幅の非常に狭い、シン・クライアントにとっ
て実用的な単純なリモート・メソッド呼び出しを提供することができるが、それ
は、従来のリモート・メソッドを呼び出し手法のように巨大なプログラム・オブ
ジェクトが(必要なクラスとともに)ネットワーク上で(必ず)クライアントに
返される困った副作用がないからである。その代わり、結果は、結果スペースに
返すことができ、必要な場合のみ(そして、クライアントに常駐できる場合)、
クライアントにダウンロードされる実際のオブジェクトである。
【0255】 分散コンピューティング環境がリモート・メソッドを呼び出すため備えている
メカニズムは以下のとおりである(「ゲート」の項のメソッド・ゲートの説明も
参照のこと)。スペース内でオブジェクトを通知することができる(たとえば、
サービスとして、またはサービスの一部として)。通知は、オブジェクトのUR
I(たとえば、URL)をセキュリティ証明書およびXMLスキーマなどの他の
アクセス・パラメータとともに含む参照を含む。クライアントは、オブジェクト
に対しクライアント・メソッド・ゲートを設定しているか、または構築し、これ
は、オブジェクト(またはサービス)自体のすべてのメソッドについて、メソッ
ド・パラメータを取り、要求XMLメッセージを作成してオブジェクトのメソッ
ドを呼び出すラッパー・メソッドを備える。XMLメッセージは、サービス・オ
ブジェクト上で実際のメソッドを呼び出すサービス・ゲートに送られる。そのメ
ソッドが結果オブジェクトを返すと、サービス・ゲートは結果オブジェクトを結
果スペース内にポストし、メッセージを結果オブジェクトへの参照とともにクラ
イアントに返す。
【0256】 したがって、クライアントがリモートメソッドを呼び出すためには、クライア
ントはまず、上述のように、オブジェクト(たとえば、サービス)をインスタン
ス化するメッセージを送る。一実施形態では、オブジェクトのインスタンス化を
行うには、結果スペースを作成するかまたは生成する。他の実施形態では、結果
スペースの作成は、オブジェクトのインスタンス化とは別である。インスタンス
化により、オブジェクトURIがクライアントに返され、クライアントとサービ
ス・ゲートは、クライアントはインスタンス化を要求したときに動的に作成され
る。いくつかの実施形態では、結果スペースはすでに存在しており、オブジェク
ト(サービス)によって通知される。これらのゲートの一部または全部も事前に
構築されるかまたは再利用されている。
【0257】 クライアントがオブジェクトをインスタンス化した後、適切なクライアント・
メソッド・ゲートをローカルで呼び出すと、上述のように、実際のリモート・オ
ブジェクトへのリモート・コールが影響を受ける。分散コンピューティング環境
のリモート・メソッド呼び出しの方式は再帰的であり、クライアント・ゲートが
呼び出されると、オブジェクト自体ではなく、オブジェクト参照がクライアント
に返される。このような返されたオブジェクトはすでにインスタンス化されてい
ることに注意されたい。いくつかの実施形態では、クライアント側は、リモート
で呼び出すだけでなく、オブジェクト自体を丸ごとダウンロードする決定を下す
【0258】 上述のように呼び出されたメソッドまたはサービスは、結果ドキュメントと関
連付けられている子ゲートを生成する。メソッドは、参照自体ではなく、参照の
子ゲート(またはクライアントが子ゲートを構築するためのスキーマ、URIお
よび証明書)を返す。その後、クライアントは、子ゲートを通じて参照にアクセ
スすることができる。子ゲートは、メソッド・ゲートでもよい。
【0259】 上述のように、分散コンピューティング環境で提供されるこのリモート・メソ
ッド呼び出しにより、実際の結果オブジェクトを、サービス結果スペース内に格
納できる(これは、たとえば、サーブレットにより動的に作成できる)。結果ス
ペースは一時的である。結果スペースは、クエリ結果キャッシュとして機能する
ことができる。古い結果領域をクリーンアップするサーバ・ソフトウェア(ガベ
ージ・コレクタ)が結果キャッシュ内を巡回する。分散ガベージ・コレクション
を採用するが、それは、クライアントがスペースを必要としなくなったことを示
すか、またはサーバの管理者が適切な制限値を設定することにより、破棄される
まで結果スペースが満たされるからである。
【0260】 図23に戻ると、デフォルトのスペース350の図が示されている。分散コン
ピューティング環境は、少なくとも1つのデフォルト・スペースを用意し、クラ
イアントは通知の初期セットを見つけられるようにする。デバイスは、事前構築
されたゲートを組み込んだ、ローカルに存在するデフォルト・スペースを備える
ことができる。そのデフォルト・スペースで通知されたサービスは、ローカルで
そのデバイスに存在し、デバイスが分散コンピューティング環境に参加するのを
有効にするかまたは容易にするシステム・ソフトウェアを備える。
【0261】 デフォルト・スペース350は、図23に示されているように、外部スペース
を特定する1つまたは複数のメカニズム352を備える。デフォルト・スペース
内の1つのサービスが、上述のスペース発見プロトコルを実行して外部スペース
を見つけることができる。また、デフォルト・スペース内で外部スペースを通知
することができる。さらに、外部スペースを決定するまたは見つけるデフォルト
・スペース内でサービス(たとえば、サーチ・エンジンまたはサーチ・エンジン
へのプロキシ・サーバ)を通知する。各スペースは、ファイル・システムのマウ
ント・ポイントに似ている。したがって、分散コンピューティング環境はサービ
スに対しサーチ可能な動的マウント・ポイントを提供できる。デフォルト・スペ
ースは、分散コンピューティング環境へのクライアントの初期マウント・ポイン
トである。
【0262】 デフォルト・スペースまたはデフォルト・スペースへのアクセス機能をデバイ
スに組み込むことができる。デバイスに存在するデフォルト・スペースおよびロ
ーカル・サービスを通じて、分散コンピューティング環境にクライアント実行環
境を用意できる。デバイスのローカル・サービスおよびデフォルト・スペース・
サービスは、事前構築ゲートを組み込んでいる。デフォルト・スペース内にリス
トされている組み込みサービスの1つは発見プロトコルを実行するサービスであ
り、クライアントは追加(たとえば、外部)スペースを特定することができる。
デフォルト・スペースは、クライアント・ユーザがスペースを参照し、サービス
を選択し、インスタンス化するために使用するクライアント用の実行環境を提供
する組み込みサービスを備える。このようなサービスは、クライアントがストリ
ング全体(たとえば、スペースサーチのためのキーワード)を操作する、結果参
照(たとえば、スペースのリスティング、またはスペース内のサービス・リステ
ィング)を表示または参照する、アイテム(たとえば、サービスを選択してイン
スタンス化するため)を選択するなどのための単純なユーザ・インターフェース
を備える。
【0263】 主にサービスを提供するデバイスは、さらに、デフォルト・スペースも備え、
サービスでさまざまなスペース内での自己通知を管理できるようにする組み込み
サービスをデフォルト・スペースに備えることができる。たとえば、プリンタな
どのデバイスは、ローカル・エリア・ネットワーク上でスペースを(たぶん、発
見プロトコルを利用して)見つけ、プリンタ・サービスの通知をそのスペースに
追加する組み込みデフォルト・サービスを備える。このサービスはさらに、たと
えば、リースを更新したり、プリンタのXMLスキーマを更新するなどして、L
ANスペース内のプリンタ・サービス通知を維持することもできる。
【0264】 サービスを提供するいくつかのデバイスでは、サービスを通知し、その通知を
維持するのにスペースを見つけるオーバーヘッドは望ましくない。一実施形態で
は、サービス通知をパブリッシュするために1つまたは複数のスペースをサーチ
し維持するのではなく、いくつかのデバイスのサービスが接続要求に対する応答
としてそれらの通知を送る。たとえば、プリンタ・サービスを近接性ベースで利
用できるプリンタ・デバイスは、スペース内で通知を維持しない(デバイスで、
またはデバイスの外部で)。その代わり、他のデバイスがプリンタ・デバイスと
の接続を確立すると(たとえば、クライアントを実行しているラップトップを所
有するユーザがドキュメントを印刷しようとする)、プリンタ・サービスはサー
ビス通知を送り、プリンタ・デバイスで印刷機能を提供するサービスに接続し、
そのサービスを実行するXMLサービス・スキーマを提供することができる。さ
らに、いくつかのデバイスではある近傍またはローカル・ネットワークでサービ
スに対する通知を維持するのみである。このようなデバイスでは、広範にアクセ
ス性に関してトランスポートへのアクセスをサポートすることを望まない、また
はアクセスできない場合がある。
【0265】 デバイスがスペース内でサービス通知を避けるまたは制限することが望ましい
サービス・デバイスの一例として、機能を近接性ベースで利用できるデバイスが
ある。近接性ベース・サービスは、要求があった場合に機能の通知を行うことが
できる。これらの通知は、広くアクセスできない場合がある。たとえば、近接性
ベース・サービスは無線通信システムで提供できる。「無線」という用語は、電
磁波または音波が電線ではなく大気中を通して信号を伝送する通信、監視、また
は制御システムを意味する。ほとんどの無線システムでは、無線周波(RF)ま
たは赤外線(IR)の波長を使用する。通常、近接ベースの無線システムでは、
トランシーバを備えるデバイスは通信チャネルを確立し維持するために他のデバ
イスから到達範囲内(近接)になければならない。デバイスは、他のデバイスを
無線ローカル・エリア・ネットワーク(LAN)に接続するためのハブとするこ
ともできる。
【0266】 前述のように、分散コンピューティング環境の実施形態では、クライアントが
サービスとランデブーするためのルックアップ・スペースを使用するメカニズム
を提供する。近接コンピューティング環境では、分散コンピューティング環境の
一実施形態は、クライアントがランデブー・ポイントとしてルックアップ・スペ
ースを使用せずにサービスを発見するために使用するサービス発見メカニズムを
提供する。近接コンピューティング環境の一例として、IrDAポイントツーポ
イント通信環境がある。近接コンピューティング環境では、近接メカニズムがク
ライアントに対するサービスの「物理的」位置を見つけることができる。たとえ
ば、IrDA環境では、クライアント・デバイスは、クライアントが使用するこ
とを望んでいるサービスを含むデバイスを物理的に指している。
【0267】 近接サービス発見メカニズムを使用すると、クライアントは、サービス通知を
求めるためにサーチ要求をルックアップ・スペースに送るのではなく、直接サー
ビス通知を求めることができる。クライアント・デバイスはサービス・デバイス
への近接接続を確立しているため、クライアントは目的のサービスを直接要求で
きる。たとえば、PDAクライアント・デバイスはプリンタ・デバイスとの近接
接続を確立している場合があり、クライアントはプリンタ・デバイスのプリンタ
をサービス接続を要求することを「知っている」。
【0268】 一実施形態では、クライアントは、近接サービス発見メッセージをサービス・
デバイスに送ることができる。メッセージには、クライアント・デバイスが近接
接続を行う相手であるサービス・デバイスの目的のサービスを指定する情報を含
む。一実施形態では、サービス・デバイスのサービスは近接サービス発見メッセ
ージに応答し、クライアントに、目的のサービスに接続するためにクライアント
が使用するサービス通知を送る。近接サービス発見メッセージは、さらに、クラ
イアントの認証を行い、サービスでクライアントの能力を確定するために使用さ
れる情報を含む。受け取ったサービス通知を使用する際に、クライアントは、目
的のサービスとの通信を確立するためのゲートを確立することができる。しかし
ながら、広くアクセス可能なスペースで通知を維持することを望まない、または
維持できないサービスに対し通知をパブリッシュすることが望ましい。分散コン
ピューティング環境の一実施形態では、近接ベース・デバイスなどのサービス通
知をパブリッシュしないデバイスとの接続を確立するデバイスは、非パブリッシ
ュ・デバイスから受け取ったサービス通知をパブリッシュすることができる。た
とえば、近接ベース・デバイスとの接続を確立し、代替えトランスポート接続を
設定するデバイスは、代替えトランスポート環境で近接ベース・デバイスから受
け取ったサービス通知をパブリッシュ(または再パブリッシュ)し、近接ベース
・デバイス・サービスをデバイスの通常の近接範囲の外にある他のデバイスによ
り((再)パブリッシュされたサービス通知を通じて)使用できるようにする。
【0269】 パブリッシュ・デバイスが、発見および/またはルックアップ・サービスを通
じて近接ベース・デバイスのローカルでパブリッシュされたサービスを通知を特
定するか、またはそれとは別に、サービス通知をローカル・サービス・デバイス
がパブリッシュしないが、その代わりに、そのサービス通知を、上述のように、
接続の確立後、ローカル・デバイスがパブリッシュ・デバイスに送る。一実施形
態では、通知を維持するデバイスがローカル・デバイスに接続されているか、接
続することが可能である限り、再パブリッシュされたサービス通知は使用可能に
できる。たとえば、パブリッシュ・デバイスがローカル・デバイスから切断され
た場合(たとえば、デバイスの近接範囲から外へ移動する)、サービス通知はス
テールになるか、または削除される。通知が格納されているスペースがリース更
新メッセージをパブリッシュ・デバイスに送ることができるようにするリース・
メカニズムを実現できる。パブリッシュ・デバイスは、ローカル・デバイスとの
接続を確認し、これによりローカル・デバイスが利用できなくなったときにその
ことをスペースが検出できるようにする。ローカルの近傍(たとえば、近接領域
)またはローカル・ネットワークに対し、ローカル・デバイスまたは管理ポリシ
ーにより、サービス通知を再パブリッシュする規則を定める。図24は、一実施
形態により、近傍ベースのデバイスから提供されるサービスをデバイスの近傍の
範囲外にあるデバイスでアクセスできるようにする近傍ベースのデバイスを他の
トランスポート・メカニズムにブリッジするデバイスの一例を示す図である。パ
ブリッシュ・デバイス1404は、Ethernet LANまたはインターネ
ットなどのネットワーク1412に接続され、近接デバイス1400および14
04との近接接続1414を確立して維持する。近接接続は、たとえば、無線接
続または有線LAN接続とすることができる。近接デバイス1400および14
02は、それぞれ、接続後サービス通知をパブリッシュ・デバイス1404に送
るか、または、それとは別に、パブリッシュ・デバイスが近接接続に発見および
/またはルックアップ・サービスを使用してサービス通知を特定する。パブリッ
シュ・デバイス1404は、スペース1406内のサービス通知1416および
1418を再パブリッシュすることにより、近接デバイスによって提供されるサ
ービスをネットワーク1412上の他のデバイス1408および1410から利
用できるようにする。スペース1406は、パブリッシュ・デバイスまたはLA
Nに接続された他のデバイス(デバイス1408および1410を含む)上に格
納できる。
【0270】 デバイス1408および1410を含むLAN上の他のデバイスは、スペース
1406を発見し、再パブリッシュされたサービス通知1416および1418
を近接ベース・デバイスについてルックアップし、前記のXMLメッセージ・パ
ッシング方式を使用して近接ベース・デバイス1400および1402上でこれ
らのサービス(デバイス1404はプロキシまたブリッジとして機能する)との
デートの通信を確立し、近接デバイスとの間の要求の発送および結果の受取を行
う。パブリッシュ・デバイス1404は、ネットワーク1412と近接ベース・
デバイスへの近接接続1414との間のブリッジとして機能する。
【0271】 リース リースは、分散コンピューティング環境で、部分的な障害、リソースの同期(
スケジューリング)を処理し、秩序だったリソースのクリーンアップ・プロセス
を実施するために使用される。リースを使用すると、分散システム全体で行き来
する独立のクライアントおよびサービスを管理することができる。クライアント
がサービス(スペース・サービスを含む)から取得するさまざまなリソースは、
これらのサービスからリースすることができる。一般に、すべてのリソースをリ
ースするできるわけでも、またリースする必要があるわけでもない。一実施形態
では、どのリソースをリースする必要があるかの決定は、それぞれの特定のサー
ビスの実装に任されている。特に、大量のクライアントが使用するリソースが同
時に、リースを必要としない場合があったり、あるいはその代わりに、カスタム
・リース・プロトコルを必要とする場合もある。このようなはリースのクラスは
、サービス・プロバイダに任されている。たとえば、トランザクションを実装す
るものなどのカスタム・プロトコルは、基本リース方式に基づいて構築できる。
一実施形態では、基本リース・モデルは相対的な時間ベースのモデルである。
【0272】 サービスは、リースをクライアントに発行し、リースに対し操作を実行する。
一実施形態では、サービスのこのようなリース機能はすべてそのサービスのXM
Lスキーマの一部である。したがって、クライアントはそのゲート(サービスに
対応し、サービスのXMLスキーマに対し構築される)を使用してリース操作を
実行することができる。一実施形態では、リースを発行するサービスはすべて、
(i)リースの更新(リースの指定されたパラメータ(たとえば、リースID、
リース証明書)、要求された新しいリース時間)、および(ii)リースの取り
消し(リースの指定されたパラメータ(たとえば、リースID、リース証明書)
という2つのリース操作を行える(リースの所有者によってのみ使用可能)。一
実施形態では、すべてのリースは交渉可能な特定の相対的時間(リースの持続時
間)について認可される。リクエスタではある時間を指定し(たとえば、秒で)
、グランタ(grantor)ではその時間が経過するまでの間リースを認可できる。一
実施形態では、値を−1にすると、無期限のリースを指定することができる。
【0273】 一実施形態では、サービス通知に1つまたは複数のリース・アドレスを含める
ことができる。一実施形態では、リース・アドレスはURIとすることができる
。サービス・リソース・リースを更新する、または取り消す標準リース・メッセ
ージを、リースURIに送ることができる。リースURIの例: <leaser>service1://resource1</leaser>
【0274】 通知は、さらに上述のように、さまざまなリース・メッセージを含む。リース
・メッセージは、サービスのリソースに対するリースを更新するメッセージおよ
びリースを取り消すメッセージを含むことができる。一実施形態では、通知にメ
ッセージをXMLスキーマで含めることもできる。
【0275】 リース・メカニズムは、サービスおよびクライアントの障害を検出するメカニ
ズムを備える。リースはさらに、共有および排他的リソース・アクセスを実現す
るメカニズムも備える。一実施形態では、すべてのサービス・リソースはリース
がないか(リソースがリースされておらず、したがって使用できない)、共有リ
ソースがあるか(リソースは複数のクライアントによりアクセスされる)、また
は排他的リースがあるか(リソースは一度に1つのクライアントだけによりアク
セスされる)のいずれかである。一実施形態では、すべてのリソースはリースが
ない状態から始まる。リースがない状態は、現在基礎となるリソースにアクセス
がないことを意味し、リソースのインタレストが存在していてリースに使用可能
であることを示す。リース・レベルは、「なし」から「共有」へ、「なし」から
「排他的」へ、または「共有」から「排他的」へ上げることができる。リース独
立レベルも、「排他的」から「共有」へ、「排他的」から「なし」へ、または「
共有」から「なし」へ下げることができる。一実施形態では、クライアントは自
発的にリース独立レベルを上下させるか、またはサービスによりそのようにする
ことを要求することができる。サービスからの応答メッセージは、独立レベルの
変更が受け入れられたかどうかを示す。
【0276】 要求−応答メッセージのペアを使用して、リースの請求、解放、および更新を
行うことができる。予約されているXMLタグを使用して各メッセージにタグを
付け、メッセージがリース・メッセージであることを示す。分散コンピューティ
ング環境では、メッセージの完全な構成を必ずしも定義しない。このような実施
形態では、メッセージがリース・メッセージとしてタグ付けされる限り、サービ
ス開発者側でカスタム・メッセージ・コンテンツを付加することができる。
【0277】 一実施形態では、リースされたリソースを使用するクライアントは、(i)リ
ソースを共有または排他的として請求する、(ii)リソース請求を解放する(
要求された場合またはリソースで終了した場合)、および(iii)更新メッセ
ージに応答する(同じまたは異なる独立レベルの他の請求により)のいずれかを
行うことを期待される。更新メッセージは、サービスにより(たとえば、定期的
間隔で)クライアントの障害を検出するために送られる。この間隔(更新メッセ
ージが送られる)は、サービス固有である。一定時間経過後更新メッセージへの
応答が発行されない場合(たとえば、サービス通知で知らされた時間に基づき)
、リソース再利用プロセスがサービス内で開始し、そのリースを完全に破棄する
。このような実施形態では、クライアントに送られる更新メッセージは、タイミ
ングよく取り扱うべきである。図25は、クライアントとインスタンス化された
サービスとの間の更新メッセージ、およびサービス・プロバイダとスペース・サ
ービスとの間の更新メッセージの使い方を示している。両方とも、クライアント
とサービスとの間の更新メッセージの使用と考えることができるが、それは、サ
ービス・プロバイダがスペースの通知サービスへのクライアントであるためであ
ることに注意されたい。
【0278】 更新メッセージは、クライアントには取り扱いが不便な「アウトオブバンド」
方式で到着する。つまり、クライアントは、更新メッセージがいつサービスから
送られるかを予測できないということである。アウトオブバンド・メッセージ処
理により、クライアントのロジックがやっかいなものになり、その複雑度が増す
。この問題を解決するために、自動リース更新メカニズムを実装し、アウトオブ
バンド・メッセージを取り扱う必要があるクライアントの労力を軽減し、クライ
アントの複雑さを低減する。自動リース更新メカニズムで、それぞれのゲート(
メッセージ、メソッド、および/またはイベント・ゲート)は更新メッセージを
受け取り、クライアントの助けを借りずにそれに自動的に応答することができる
。更新要求に対するデフォルトの応答は、現在のレベルでリースを請求すること
である。それぞれのメッセージ・ゲートは、ゲートが更新メッセージを受け取っ
たときに自動的に通知スペース・サービスに送られる単一の留保更新応答メッセ
ージを含むことができる。この「アウトオブバンド」メッセージは、クライアン
トの代わって処理され、クリーンなクライアント・プログラミング・モデルを生
み出す。一実施形態では、ゲートにより、クライアントはリース・イベント・ハ
ンドラを登録し、応答メッセージの中で異なる独立レベルを指定できる。
【0279】 リース・メカニズムは、さらに、ステール(無効の)通知を検出するメカニズ
ムも備える。サービスがスペース内の通知をパブリッシュすると、そのサービス
はこれが通知をパブリッシュしたことに基づいてリースを取得する。それぞれの
通知には、サービスが通知を更新することを約束している時間が記述される。一
実施形態では、すべてのタイムアウト値を秒単位で指定する。サービスがリース
の更新を続ける場合、通知されたサービスがまだ提供中であるという何らかの確
認をスペースで行うようにする。更新時間は、スペース・サービスによりゼロに
なるまでカウントダウンされる。サービスがリースを更新しない場合、サービス
は失敗している可能性があるか、またはサービスを提供しなくなっているか、ま
たは提供できなくなっている。リースが更新されない場合、スペース・サービス
はサービス通知をステールにするため、クライアントから使用できなくなる。サ
ービスでは、スペースに更新メッセージを送ることにより通知を更新する。スペ
ース・サービスは、これらのメッセージを受け取りて、通知更新時を初期値にリ
セットする。
【0280】 一実施形態では、ステール状態の通知は自動的には削除されない。スペースの
ポリシーに応じて、十分に長い期間期限切れになっているステール状態のサービ
ス通知の削除を選択できる。削除ポリシーは、スペース・サービスで設定できる
。スペース・サービスは、ステール状態の通知をサーチし、たとえば、それを削
除するか、または管理者に知らせる。
【0281】 スペース・サービスは、リースを使用して、その機能によってスペースのクラ
イアント(他のサービスを含む)に提供されるリソースを管理することができる
。たとえば、クライアントがサービスを使用することを希望する場合、スペース
・サービスはサービスのインスタンス化の一部としてクライアントにリースを要
求する。サービスのインスタンス化を実行する際に、クライアントはサービスを
実行できる。サービスをインスタンス化するために、クライアントはまず、スペ
ース内でパブリッシュされたサービス通知のうちから1つ選択する。クライアン
トは、スペースに用意されているさまざまな機能を使用して、スペース内の通知
をルックアップすることができる。次に、クライアントは、スペースに対しサー
ビスのインスタンス化を要求する。サービスのインスタンス化のときに取得され
たリースは、サービス通知を使用したときのものである(サービス通知をパブリ
ッシュしたときのリースと同じではない)。スペース・サービスでは、共有され
ていることを示す通知の場合に複数のクライアントがサービス通知の使用につい
てリースすることができることに注意すべきである。そうでない場合、スペース
・サービスでは、一度に1つのクライアントがサービス通知についてリースする
だけである(排他的)。
【0282】 スペース・サービスがリースを使用してその機能によりクライアントに提供さ
れるリソースを管理するもう1つの例として、XMLドキュメント(たとえば、
サービス通知)がスペースに追加されるかまたはスペースから削除されるときに
そのことを通知するようスペースのクライアントが登録する場合が上げられる。
スペースの登録クライアントは、通知に対するこのサブスクライブでリースを取
得できる。このリースにより、スペース・サービスは通知を送り続けるかどうか
を知ることができる。このようなリースは、クライアントがスペースとのアクテ
ィブなセッションを確立している場合には、必要ないと思われる。また、スペー
スのクライアント(サービスの場合もある)がスペースとのセッションを確立す
るときに、クライアントがそのセッションでリースを取得することができること
に注意されたい。このため、スペースはセッションと関連するリソースを管理す
ることができる。
【0283】 他の実施形態では、分散コンピューティング環境は時間ベースではないリース
・メカニズムを採用する。このリースは、オブジェクトに対し使用が請求された
ときに生成される。時間ベースのメカニズムの代わりに請求メソッドでは、他の
何かのパーティが同じオブジェクト(たとえば、サービス)にアクセスしたいと
いうことを現在のリースホルダに通知するコールバックを受け付ける。したがっ
て、時間ベースのリースに対する他の実施形態として、代わりに、クライアント
がスペース・オブジェクト(たとえば、サービス)に対する請求を行うことがで
きる。他のクライアントが現在のリースホルダのリースと互換性のないリースを
望んでいる場合、サービスは、「コールバック・メッセージ」をクライアントに
送る。コールバック・メッセージを受け取ると、クライアント(つまり、クライ
アント・ゲート)はコールバック・メソッドを呼び出して、コールバック・メッ
セージに応答するかどうかを決定する(リースを持続する、リースを取り消す、
アクセス・レベルを共有に変更するなど)。応答が決定されたら、クライアント
・ゲートは応答メッセージをサービスに送る。リースを管理するこのような配布
メカニズムは、XMLメッセージ通信レイヤを使用して実装できる。
【0284】 時間ベースでないリース実施形態では、分散コンピューティング環境は複数の
レベル(または種類)のアクセスをサポートするリースを提供し、これにより、
分散アルゴリズムでリース互換性を判別することができる。レベルには、(i)
オブジェクトをスペース内に保持する(keepInSpace)、(ii)ス
ペース内のオブジェクトを読み込む(readShared)、および(iii
)スペース内のオブジェクトを排他的に読み込む(readExclusive
)というレベルがある。
【0285】 認証とセキュリティ 分散コンピューティング環境は、非同期メッセージ通信モデルに基づく自然発
生の分散システムと異機種分散システムに対応し、データおよび/またはオブジ
ェクトはXMLなどの表現言語により表現することができる。分散コンピューテ
ィング環境では、たとえば、クライアントは、インターネット全体を通してサー
ビスに接続することができる。分散コンピューティング環境では、大量のネット
ワーク・デバイスがセキュリティで保護された信頼できる動的な方式で連携動作
する。分散コンピューティング環境により、準拠するソフトウェア・コンポーネ
ント(クライアントおよびサービス)の間の相互運用性を実質的に可能にするプ
ロトコルが定義される。
【0286】 分散コンピューティング環境のコンテキストでは、デバイスはネットワーキン
グ・トランスポートでアドレス指定可能なユニットである。クライアントとサー
ビスは、デバイスで実行されるソフトウェアまたはファームウェアのUnive
rsal Resource Identifier(URI)アドレス指定可
能なインスタンスとして実装することができる。
【0287】 インターネット・スペースには、多数のコンテンツ・ポイントが配置されてい
る。URIは、コンテンツ・ポイントを識別するのに使用される方法であり、テ
キストのページ、ビデオまたはサウンド・クリップ、イメージ、ソフトウェア、
ファームウェア、またはその他のインターネット・コンテンツである。URIの
最も一般的な形式は、Webページ・アドレスであり、これは、Uniform
Resource Locator(URL)と呼ばれるURIの特定の形式
またはサブセットである。URIは、通常、リソース、リソースが置かれている
特定のコンピュータ、およびコンピューター上のリソースの特定の名前(通常、
ファイル名)にアクセスするために使用されるメカニズムを記述する。
【0288】 クライアントおよびサービス(両方とも、デバイスにソフトウェアおよび/ま
たはファームウェアとして実装できる)は、インターネット、企業イントラネッ
ト、動的近接ネットワーク上で、単一コンピュータ内で、またはその他のネット
ワーク接続モデルにより接続できる。たとえば、クライアントおよびサービスを
サポートするデバイスのサイズおよび複雑さは、単純な照明スイッチから複雑な
高可用性のサーバーまでさまざまなものがある。デバイスの例としては、それら
に限定されないが、PDA、携帯電話、ノートブック・パソコン、ラップトップ
・パソコン、より強力なPC、さらに強力なコンピュータ・システム、そしてス
ーパー・コンピュータに至るまで、さまざまなものがある。いくつかの実施形態
では、クライアントおよびサービスの距離、待ち時間、および実装を抽象化し、
共通の発見および通信方法を使用し、「ブラック・ボックス」効果を生み出して
いる。この定義方法により、ソフトウェアの実装問題は、根幹のプラットフォー
ムで取り扱うことができ、インターネット規模に合わせて拡大縮小できる粗結合
システムを実現できる。
【0289】 分散コンピューティング環境は、WEBおよびXMLコンテンツ表現、動的デ
バイス発見、およびさまざまなネットワーク・デバイスからアクセス可能なセキ
ュリティで保護されたデバイス通信など、インターネット中心のプログラミング
・モデルを提供する。分散コンピューティング環境は、CPUレベルよりも上で
抽象化されたネットワーク・プログラミング・モデルを含む。このプログラミン
グ・モデルは、以下の特性を持つ。 URIアドレス コンテンツと呼ばれる強く型付けられたデータ(URIでアドレス指定) 実質的に無制限の永続的コンテンツ記憶域(たとえば、ストア)(MIMEタ
イプで識別されるものなどのXMLおよび非XMLコンテンツを含む) スペースと呼ばれる実質的に無制限の一時的コンテンツ・メモリ(XMLコン
テンツを含む) 関係するクライアントに通知するためにスペース内に格納できる記述的XML
メタデータ(データに関するデータ)コンテンツ通知。 実質的に無制限の数の命令(メッセージとして埋め込まれる) URIによりアドレス指定されるセキュリティで保護されたメッセージ・エン
ドポイント(ゲート) 分散ソフトウェア・プログラム間のワーク・フローを調整するデータ・フロー
のサポート(イベント・メッセージ)
【0290】 サービスおよびクライアントは、分散コンピューティング環境内でプログラム
として実行できる。サービスは、サービスの使用を望んでいるクライアントに機
能を通知することができる。クライアントは、同じネットワーク・デバイス内に
常駐する場合も常駐しない場合もあり、デバイスのコード実行環境はJavaプ
ラットフォームをサポートする場合もあればしない場合もある。URIを使用し
てコンテンツおよびメッセージ・エンドポイントをアドレス指定する際に、分散
コンピューティング環境は強力なアドレス指定方式となる。アドレスにより、コ
ンテンツまたはエンドポイントの位置を指定し、また使用するルート(またはト
ランスポート・プロトコル)を指定することができる。URIを使用してアドレ
ス指定したアイテムはさらに、関連付けられたセキュリティ証明書を持つ。セキ
ュリティ証明書を使用して、どのようなクライアントにアイテムへのアクセスを
許可するか、また承認されたクライアントでそのアイテムに対しどの操作の実行
を許可するかを制御することができる。
【0291】 分散コンピューティング環境によって提供される高度なアクセスは、適切な認
証およびセキュリティ・システムおよび方法により制御できる。分散コンピュー
ティング環境における認証とセキュリティには、メッセージ内のXMLコンテン
ツの型付けの正しさの検証、受取側に対し発送側を安全に識別する操作、クライ
アントからサービスに、その逆にサービスからクライアントに送られるメッセー
ジの完全性を検査するメカニズム、およびクライアントに対し受け付けられたサ
ービスのメッセージ群を記述し、サービスで受け取ったメッセージに対しメッセ
ージ要求条件を強制するメカニズムがある。上記のセキュリティおよび認証の機
能は、コードおよびデータの単一アトミック・ユニットで活用できる。コードお
よびデータのアトミック・ユニットを動的に作成できる。一実施形態では、コー
ドおよびデータのアトミック・ユニットは、いったん作成されると、メッセージ
・エンドポイント(ゲート)を表し、作成時に実装されたセキュリティおよび認
証ポリシーに関して改変できない。
【0292】 ゲートは、サービスの機能の一部または全部を使用する権限を表す。各機能は
、サービスに送ることができるメッセージに関して表すことができる。ゲートは
さらに、クライアントがリソースをリースするときに障害が発生した場合を検出
するのに使用できる。
【0293】 認証およびセキュリティはさらに、サービスを使用しようとするクライアント
がそのサービスを使用することを承認されていること、クライアントがサービス
通知を受け取る先であるスペースがサービス通知を提供することを承認されてい
ること、および/またはサービス通知自体が承認されていることを検証するメカ
ニズムを備えることができる。
【0294】 メッセージ通信は、クライアントからサービスに要求を伝達する手段およびサ
ービスがクライアントに結果を応答する手段としてメッセージング・レイヤに実
装できる。分散コンピューティング環境のメッセージング・レイヤでは、有効な
XMLメッセージが送られることを実質的に保証し、また言語独立のセキュリテ
ィ・モデルを使用可能にするメカニズムを備えることができる。メッセージング
・レイヤでは、送るメッセージ・エンドポイントを受け取るメッセージ・エンド
ポイントにリンクさせることができる。2つの関連するメッセージ・エンドポイ
ントは、クライアントとサービスとの間の要求−応答メッセージ通信に適したセ
キュリティで保護された双方向のアトミック・メッセージ・チャネルを提供する
ことができる。
【0295】 分散コンピューティング環境の実施形態では、サービスに関してスペース内で
通知をパブリッシュすることができる。通知は、サービスのXMLスキーマおよ
びURIを含むXMLドキュメントとすることができる。サービスはさらに、通
知の中にサービスIDトークンまたは証明書を含めることもでき、通知で、クラ
イアントとサービスの両方により使用される認証サービスを指定することができ
る。その後、クライアントはスペースのサービス通知を特定し、その通知を使用
してクライアントでメッセージ・ゲートをインスタンス化する。クライアントは
、通知で指定された認証サービスを使用して、メッセージでクライアントに送る
ための認証証明書を取得する。一実施形態では、クライアントはサービスIDト
ークンまたは証明書をサービス通知から認証サービスに渡し、続いて認証サービ
スはサービス・トークンと、または証明書を使用して、そのクライアントの認証
証明書を生成することができる。一実施形態では、クライアントはメッセージ・
ゲートを作成するために必要な情報を受け取るゲート・ファクトリを備え、その
ゲート・ファクトリはメッセージ・ゲートを構築し、認証サービスと通信して、
クライアントの認証証明書を取得する。対応するサービス・メッセージ・ゲート
が、サービス側でインスタンス化される。
【0296】 クライアントは、ある時点で、第1のメッセージをサービスに送る。一実施形
態では、クライアント・メッセージ・ゲートは認証サービスにより構築されたク
ライアントの認証証明書をメッセージ内に埋め込む。サービスがメッセージを受
け取ると、同じ認証サービスを使用してメッセージで受け取った認証証明書を検
証する。同じ認証サービスを共有することにより、さまざまな認証プロトコルを
採用し、しかも、認証証明書の生成の詳細をクライアントとサービスから分離す
ることができる。したがって、クライアントは異なる認証証明書プロトコルを異
なるサービスとともに使用することができる。
【0297】 一実施形態では、認証サービスは、サービスからクライアント認証証明書を最
初に受け取った後クライアントの能力を判別することができる(たとえば、サー
ビスに対しクライアントがどのようなことを許されているか)。クライアントの
能力は、クライアントの素性に縛られる。そこで、クライアントのメッセージ・
ゲートはクライアントからサービスに送られるすべてのメッセージに認証証明書
を埋め込む。メッセージは、サービス・メッセージ・ゲートに届き、そこで、認
証サービスによりチェックされ、そのメッセージがクライアントからのものであ
ること、メッセージ要求がクライアントの能力範囲内にあることを確認する。他
の実施形態では、サービス・メッセージ・ゲートは、認証サービスを使用せずに
、能力を判別および能力に関するメッセージ検査を処理する。
【0298】 クライアントおよびサービス・メッセージ・ゲートは連携して、セキュリティ
で保護され信頼できるメッセージ・チャネルを実現する。ゲートはセキュリティ
で保護されたメッセージ・エンドポイントとして使用され、クライアントはセキ
ュリティで保護され承認されているXMLメッセージをサービスとの間で送受さ
れることによりサービスを実行できる。
【0299】 分散コンピューティング環境内のオペレーションは、クライアントとサービス
との間で送られるXMLメッセージとして実現される。クライアントをサービス
と接続し、スペースおよびストア内のコンテンツをアドレス指定するのに使用さ
れるプロトコルは、クライアントとサービスとの間で送ることができるメッセー
ジによって定義される。メッセージを使用してプロトコルを定義すると、さまざ
まな種類のデバイスをプロトコルに参加させることができる。各デバイスは、そ
の能力と役割に最適の方法でプロトコルを自由に実装することができる。
【0300】 サービスの機能は、そのサービスが受け入れるメッセージに表すことができる
。サービスのメッセージ・セットは、XMLスキーマを使用して定義することが
できる。XMLメッセージ・スキーマにより、XML型付きタグを使用して各メ
ッセージ形式を定義する。タグの使用規則もまた、スキーマで定義できる。メッ
セージ・スキーマは、メッセージを受け取るために使用するサービスのメッセー
ジ・エンドポイント(ゲート)とともにXML通知の一コンポーネントであって
よい。メッセージをXMLメッセージ・スキーマに加えることにより、拡張機能
(さらに多くの能力)をサービスに追加することができる。
【0301】 分散コンピューティング環境では、承認されたクライアントがサービスの能力
すべてを使用できるか、またはサービスの能力のサブセットの使用に限定される
。一実施形態では、一組の機能をクライアントに与えた後、クライアントは適切
な承認がないとそのセットを変更することはできない。この機能定義のモデルに
より、基本機能セットから拡張機能セットまでのサービス・レベルに対応できる
【0302】 サービスのインスタンス化を実行する際に、クライアントはサービスを実行で
きる。サービスをインスタンス化するために、クライアントはまず、スペース内
でパブリッシュされたサービス通知のうちから1つ選択する。クライアントは、
スペースに用意されているさまざまな機能を使用して、スペース内の通知をサー
チすることができる。次に、クライアントは、スペースに対しサービスのインス
タンス化を要求する。サービスのインスタンス化は、以下のことを含むが、これ
に限られるわけではない。 1.クライアントは、スペース・サービスにサービスをインスタンス化するよ
う要求する。 2.スペース・サービスは、クライアントがサービスをインスタンス化するこ
とを許可されていることを検証する。 3.スペース・サービスは、クライアントによって指定されたリース要求時間
にクライアントのサービス通知でリースを取得する。それとは別に、サービス通
知をクライアントに送るができ、しかもリース・メカニズムを使用しない。 4.スペース・サービスは、ステップ3で割り当てたリースとサービスのサー
ビス通知を含むメッセージをクライアントに送る。 5.クライアントは、サービス通知で指定された認証サービスを実行し、認証
証明書を取得する。 6.クライアントは、サービスと通信するためクライアント・メッセージ・ゲ
ートを構築する。 分散コンピューティング環境でクライアントとサービスとの間に信頼性を築く
ために、一連の動的に生成される数値(キー、またはトークン)を、クライアン
トのセキュリティまたは認証証明書として使用する。1つまたは複数の証明書を
使用して、クライアントがサービスを使用する権限を検証し、クライアントとサ
ービスとの間でやり取りするメッセージを検証することができる。それぞれクラ
イアントおよびサービスは、固有の証明書を備える。
【0303】 サービスを使用するのに必要な認証証明書の種類がサービス・サーチを実行す
るクライアントに返される。一実施形態では、認証証明書は、クライアントがサ
ービスを使用するごとに提示する必要がある隠蔽型オブジェクトである。一実施
形態では、認証証明書はサービスに送られるすべてのメッセージ内でクライアン
トのためにメッセージ・ゲートにより提示される。どのような種類の認証証明書
をサービスが必要としようと、クライアントとサービスの外部の認証サービスを
使用することにより、クライアントおよびサービスは認証証明書構造または認証
プロセスを意識する必要がない。
【0304】 認証証明書はさらに、サービス・チケットに加えてトランスポート固有のチケ
ットを備えることができる。サービスを実行するときに、サービス通知で指定さ
れるネットワーキング・トランスポートに応じて、トランスポートはセキュリテ
ィで保護された接続を提供できる。場合によっては、データ・リンク・レイヤが
すでにセキュリティで保護されている場合、すでにセキュリティで保護されてい
るデータ・リンク・レイヤ上でセキュリティで保護されたトランスポートを使用
する必要はないと考えられる。
【0305】 認証証明書の概念は、証明書実装に基づくさまざまなレベルのセキュリティを
可能にするだけの十分な抽象性を備えている。セキュリティのレベルにはそれら
に限定されないが以下のものがある。 1.なし(空のメッセージにセキュリティ証明書はないか、または証明書がな
い) トランスポートの物理的接続特性によりセキュリティが強制されるときは、証
明書が空であるか、または証明書がないメッセージで十分である。たとえば、照
明スイッチ・コントローラ1つだけに接続されたスマート・ライト・スイッチは
そのスイッチが安全な方法で配線されているので安全である。 2.シグネチャ付きメッセージ(電子シグネチャ) シグネチャ付きメッセージは、サービスがメッセージの発信源(クライアント
)を検証できるようにする電子シグネチャを含む。 3.暗号化メッセージ(トランスポートでこれを取り扱う) 暗号化メッセージは、メッセージの内容をスクランブルし、他の証明書でその
スクランブルを解除する必要があるようにするという方法により、別のレベルの
セキュリティを追加する。 4.能力メッセージ(サービス機能およびユーザ認識) このレベルのセキュリティは、ユーザごとのセキュリティ機能を実現し(たと
えば、ユーザが実行を許されているもの)、サービスおよび個々のサービス機能
に対する精密なアクセス制御を行うことができる。
【0306】 高いレベルのセキュリティ(能力および暗号化)を実現するのに必要な実装が
重いため、複数レベルのセキュリティ・ゾーンを使用する。メッセージ・トラン
スポートでこのようなセキュリティ・レベルをサポート(またはボートを支援)
する場合、このサポートを活用して一方のレベルのセキュリティから他方のレベ
ルのセキュリティへ橋架けするセキュリティ・レベル・ブリッジ・サービスを提
供する。
【0307】 上述のように、セキュリティ・モデルのないサービスでは、空の認証証明書を
受け付けることができる。アクセスが制限されていないサービスでは、認証証明
書なしでまたは「空の」認証証明書付きでゲートを構築することができる。この
ようなサービスのゲートは、それぞれのメッセージとともに認証証明書を送らな
いか、または空の証明書を送る。認証サービスは、アクセスを制限しないサービ
スの一例である。他のサービスでは、ユーザIDとパスワードのペアを必要とす
る。
【0308】 証明書を使用するサービス・アクセスの認証 いくつかの実施形態では、サービスを実行しようとするクライアントが承認さ
れているクライアントであることを検証し、クライアントによって受取されるサ
ービス通知が承認されたサービス通知であること検証し、かつ/またはクライア
ントがサービス通知を受け取った発送元のスペースが承認されていることを検証
するメカニズムは、公開鍵/秘密鍵非対称暗号メカニズムに基づく。このメカニ
ズムでは、承認された発送側エンティティは公開鍵をメッセージに埋め込み、秘
密鍵で公開鍵を含むメッセージを暗号化する。暗号化メッセージを受け取るエン
ティティは、公開鍵を使用してメッセージを復号化し、復号化されたメッセージ
に埋め込まれている同じ公開鍵を見つけ、そのメッセージが承認されたエンティ
ティからのものであることを検証するが、それは、そのエンティティのみがメッ
セージを暗号化するのに必要な秘密鍵を持っているからである。そこで、エンテ
ィティは、実質的に忘れることができない、他のエンティティが復号化して(適
切な公開鍵で)、エンティティによって送られたメッセージを検証することがで
きる証明書を発行する。
【0309】 さまざまな鍵生成アルゴリズムを分散コンピューティング環境で使用できる。
鍵の構成は、クライアントとサービスの両方から隠されており、クライアントと
サービスはどのような鍵生成アルゴリズムを使用しているかを問わない。
【0310】 Kerberosチケットは、分散コンピューティング環境で使用されるセキ
ュリティ証明書の一例である。Kerberosは、コンピュータ・ネットワー
ク内のサービスの要求を認証するセキュリティで保護された方法である。Ker
berosを使用すると、ユーザは特定のサービスを要求するために使用できる
認証プロセスに暗号化された「チケット」を要求することができる。ユーザのパ
スワードは、ネットワークに通す必要はない。
【0311】 分散コンピューティング環境では、クライアントとサービスとの間で送られる
メッセージの品質が損なわれないよう実質的に保証するメカニズムを提供する。
一実施形態では、メッセージが改変されていないことを検証するため発送側は受
取側が使用できる情報を含むトークンを埋め込む。メッセージに埋め込む情報を
生成する方法はいくつかある。一実施形態では、メッセージのハッシュを計算し
、それをメッセージとともに送る。ハッシュ法は、文字列を元の文字列を表す通
常短い固定長の値または鍵に変換する操作を含む。メッセージを受け取ると、受
取側はそのハッシュを再計算し、送られたハッシュに照らしてチェックする。メ
ッセージが改変されていた場合、同じハッシュが生成される可能性はほとんどな
い。発送側は、ハッシュを暗号化し、対応する公開鍵を暗号化されたメッセージ
に入れて送り、そのハッシュが損なわれないように実質的に保証する。
【0312】 他の実施形態では、巡回冗長検査などの誤り検出方式を使用する。巡回冗長検
査は、通信リンクで送られたデータ内にエラーがないか調べる方法である。巡回
冗長検査を使用する実施形態では、発送側はnビットの多項式をメッセージに適
用し、その結果の巡回冗長検査(CRC)をメッセージに付加する。受取側は、
同じ多項式(メッセージでも渡される)をメッセージに適用し、その結果を発送
側が付加した結果と比較する。マッチする場合、メッセージは正常に受け取られ
たということである。マッチしない場合、発送側はメッセージの再送を通知され
る。
【0313】 ゲート・ファクトリは「信頼できる」コードなので、ゲート・ファクトリもま
たセキュリティで一定の役割を果たす。信頼できるゲート・ファクトリを使用し
てゲートを生成することにより、ゲートが信頼できるコードであり、そのコード
がサービス通知に関して正しいものであることを保証できる。クライアントは、
認証の一手段として、クライアントIDトークンまたは証明書をゲート・ファク
トリに提示する必要がある。サービスは、クライアントがゲートを作成するとき
に、サービスIDトークンまたは証明書をクライアントに提示する(たとえば、
通知を通じて)。ここで説明したように、クライアントおよびサービス・トーク
ンのペアを使用して、クライアントがメッセージをサービスに送ることができる
ようにするために使用される第3の証明書を作成する。この第3の証明書は、認
証証明書と呼ばれる。認証証明書は、認証プロセスの実行時に認証サービスによ
り作成される。一実施形態では、サービスは認証ポリシーを自由に使用できる。
一実施形態では、認証サービスはサービスに代わって認証ポリシーを管理するた
め、サービス側では、使用されている特定の認証ポリシーを意識する必要はない
【0314】 クライアントはサービス通知で指定した認証サービスを実行することにより受
け取った認証証明書を使用してゲートを構築する。これにより、構築されたゲー
トは認証証明書をそれぞれのメッセージとともにサービスに送ることができる。
サービスがクライアントから第1のメッセージで第1の認証証明書を受け取ると
、サービスはサービス通知で指定されている認証サービスを使用してクライアン
トを認証し、認証証明書のクライアントのIDへのバインドを確立する。
【0315】 すでに述べたように、サービスによって出力されるいくつかの結果がスペース
内で通知され、最終的に結果ゲートを使用してアクセスされる。結果ゲートは、
結果を生成するために使用する入力ゲートと同じセキュリティ証明書を含む場合
もあれば含まない場合もある。サービスへの入力は出力(結果)と非同期である
ため、結果は、異なるアクセス権限セットが関連付けられる。たとえば、給料支
払い簿サービスではクライアントの異なる集まりが給料支払い簿サービスを起動
して給料支払い簿サービスの結果(給与)を読み取ることができる。そこで、ク
ライアントは、結果へのアクセス権を取得するために別の認証プロセスを適用さ
れる必要があり、これは、結果に関する通知で指定された認証サービスから結果
に対する認証証明書を受け取る作業も含む。
【0316】 メッセージ・ゲートにより、ほとんどのセキュリティ・チェックの負担がサー
ビスから取り除かれる。サービスでは、能力の発揮と、クライアントの認証に集
中することができる。クライアントが要求された(または割り当てられた)能力
にのみアクセスできるようにする際に、特権は最低限にするという原則が守られ
る。
【0317】 セキュリティ・チェックは、ゲートの作成時および/またはゲートの使用時(
メッセージを発送かつ/または受け取るとき)に実行される。クライアントが通
知されたアイテム(サービス)へのアクセスを要求したときに、ゲート作成のプ
ロセスが開始する。このプロセスで、クライアント・ゲート・ファクトリは、サ
ービスと連携して、互いに相互認証を行う。ゲート作成時に実行されるチェック
は広範にわたり、ゲートの使用時に実行されるチェックの回数が最小限に抑えら
れる。サービスでクライアントを認証した後、サービスはクライアントの特定の
能力を判別し(たとえば、サービスでクライアントがどのようなことを実行する
ことを許されているか)、その能力をクライアントの認証証明書に関連付けるこ
とができる。これらの特定の能力により、サービス上でクライアントがどのよう
な操作を実行することを許されるかを指定できる。ゲートではすべてのメッセー
ジに認証証明書が含まれることを確認するので、サービスでは、受け取ったとき
のそれぞれの要求を認証されたクライアントの能力に照らし合わせてチェックす
ることができる。
【0318】 ゲート作成チェックでは、XMLメッセージ・スキーマによって指定されたサ
ービス能力の一部または全部を使用する許可がクライアントにあることを確認す
る。一実施形態では、これらのチェックは、Kerberosなどの認証サービ
スとともにアクセス制御リスト(ACL)を使用して実施する。チャレンジ−応
答シーケンス(パスワードなど)も、クライアントの認証に使用できる。いくつ
かの実施形態では、ハードウェア・ベースの物理的識別方法を使用してクライア
ントを認証することができる。たとえば、ユーザは、識別と承認のためにスマー
ト・カードなどの物理的識別機能を提供することができる。認証のための他のメ
カニズムも、他の実施形態で使用できる。
【0319】 一実施形態では、クライアントを認証するためにどのような手段を使用すると
しても、認証はクライアントとサービスの両方に見えないものであり、ゲート・
ファクトリが使用する認証サービスを認識し、その認証サービスが認証メカニズ
ムとポリシーを取り扱う。ゲート・ファクトリは、製品と環境に依存しているか
、または構成管理システムによって制御することさえできる。一実施形態では、
クライアント独立の程度と方法はプラットフォーム依存であるが、ゲート・ファ
クトリには認識される。いくつかの実施形態では、ハードウェア・ベースの物理
的識別方法を使用してクライアントを認証することができる。たとえば、ユーザ
は、識別と承認のためにスマート・カードなどの物理的識別機能を提供すること
ができる。認証のための他のメカニズムも、他の実施形態で使用できる。
【0320】 分散コンピューティング環境のメッセージ・ゲートは、通常、単一のクライア
ントと関連付けられている。ゲート・ファクトリは関連付けの手段を決定する。
メッセージを送るときに実行されるチェックにより、適切なクライアントがゲー
トを使用していることが確認される。一実施形態では、ゲートはメッセージで渡
され、新しいクライアントがそのゲートを使用することを望んでいる場合、クロ
ーンが作成される。クローン・プロセスで、一組の作成チェックが新しく実行さ
れる。
【0321】 スペースのクライアントがスペース・サービスの通知を見つけると(クライア
ントは他のサービスでもよい)、スペースのクライアントは他のサービスの場合
と同様にスペース・サービスを実行する。スペース・サービスを実行するには、
認証メカニズムを使用する必要がある。スペース・サービスの実行ではそれに限
定されないが、以下のことを行う。 1.スペースのクライアントは、まず、スペース・サービスのサービス通知で
指定されている認証サービスを実行して認証証明書を取得する。 2.スペースのクライアントは、認証証明書、スペースのXMLスキーマ(ス
ペースのサービス通知からの)、およびスペースのURI(スペースのサービス
通知からの)を使用して、スペースのゲートを構築する。一実施形態では、クラ
イアントはゲート構築するための情報をゲート・ファクトリに渡す。 3.スペースのクライアントは、そのゲートを使用してメッセージをサービス
に送ることによりそのスペース・サービスを実行する。 4.スペース・サービスは、クライアントから認証証明書を埋め込んだ第1の
メッセージを受け取ったときに、クライアントが使用したのと同じ認証サービス
を使用してクライアントを認証するための認証証明書を取得し、クライアントの
素性を確定する。 5.スペース・サービスは、その後、クライアントの能力(たとえば、クライ
アントがスペース・サービス上で実行を許されているもの)を判別し、その能力
を認証証明書にバインドする。
【0322】 「スペース」の項で説明しているように、スペース機能は、生成元のスペース
と実質的に同じ機能(同じXMLスキーマ)を持つ空のスペースを生成するイン
ターフェースを備えることができる。
【0323】 図42は、一実施形態による、分散コンピューティング環境での、新しいスペ
ースの保護された作成を示す流れ図である。1950に示されているように、ク
ライアントは、第1のスペース・サービスにアクセス(たとえば接続)すること
ができる(サービスは、アクセスまたは他の形でのスペースの使用に関してクラ
イアントとして働くことができる)。1952に示されているように、クライア
ントが第1のスペースのインターフェースに適当な要求を送ることによるなど、
第2のスペースの作成を要求することができる。スペースの作成を要求するクラ
イアント(スペース・サービスのクライアントとして働くサービスを含む)を、
要求元クライアントと呼ぶ場合がある。それに応答して、1954に示されてい
るように、第2のスペースに伴う第2のスペース・サービスを、第2のインター
ネット・アドレスで作成することができる。上と同様に、第2のスペース・サー
ビスに、第2のスペース・サービスの関数を呼び出すのに使用可能である1つま
たは複数のメッセージを指定する第2のスキーマを含めることができる。第2の
スキーマに、少なくとも第1のスキーマを含めることができ、第2のスキーマに
、追加の機能も含めることができる。
【0324】 第2のスペースを、当初は、要求元クライアントだけにアクセスを許可するよ
うに構成することができる。一実施形態では、1956に示されているように、
第2のスペースに関してルート認証トークンを作成する。やはり1956に示さ
れているように、第2のスペースに関連する認証サービスを初期化することがで
き、これによって、第2のスペースを、ルート認証トークンを保持するクライア
ントだけにアクセスを許可するように構成する。1958に示されているように
、ルート認証トークンを、要求元クライアントまたはサービスに送ることができ
る。1960に示されているように、要求元クライアントが、第2のスキーマで
指定されたメッセージの少なくとも1つを第2のスペースに送ること、ルート認
証トークンを使用することによって、第2のスペースにアクセスすることができ
る。
【0325】 したがって、一実施形態では、要求する側が、スペースを作成した時に、その
要求する側だけが、作成されたスペースへのアクセスを許可される。たとえば、
作成されたスペースを、保護されることをクライアントが必要とするサービスか
らの結果を格納するためのものとすることができる。一実施形態では、このセキ
ュリティを、下記によって保証することができる。 ・ 1956で示されるように、初期ルート認証トークンを作成し、生成された
スペースの認証サービスを初期化する際に、認証サービスがルート認証トークン
のみを認証し、他の認証証明書を返さないようにする(最初に許可されている生
成されたスペースのクライアントはほかにない)。 ・ 生成されたスペースのセキュリティ・ポリシーを初期化し、ルート認証ト
ークンに関連付けられたルートIDで、セキュリティ管理機能を含むスペースの
すべての機能にアクセスできるようにする。 ・ 1958で示すように、ルート認証トークンおよび生成されたスペースのサ
ービス通知を生成されたスペースのリクエスタに返す。
【0326】 リクエスタは、生成されたスペースにアクセスするためのゲートを構築するが
、それは、認証証明書と生成されたスペースのサービス通知を返すからである。
一実施形態では、リクエスタとリクエスタが認証証明書と生成されたスペースの
サービス通知を渡すクライアントまたはサービスのみが生成されたスペースにア
クセスできる。生成されたスペースへのアクセスをこのように制限することは、
たとえば、クライアントとサービスが結果をプライベートの状態に保持する場合
にクライアントおよびサービスがその生成されたスペースを使用して結果を格納
するときに役立つ。
【0327】 サービスを実行した後、クライアントはセキュリティ管理スペース機能を使用
して生成されたスペースの認証ポリシーを変更し、その後、他のクライアントま
たはサービスはその生成されたスペースにアクセスできる。さらに、発見プロト
コルまたはその他の手段を用いて、生成されたスペースのサービス通知を生成さ
れたスペースの他のクライアント(他のクライアントはサービスでもよい)から
利用できるようにする。
【0328】 分散コンピューティング環境でのメッセージ・トランスポート・レイヤは、ト
ランスポート時にクライアントとサービスとの間の通信のセキュリティおよび安
全性を保護するメカニズムを備える。このようなセキュリティは、「ワイヤ・セ
キュリティ」または「トランスポート・セキュリティ」と呼ばれるものであり、
これにより、ゲートを含むメッセージング・システムにより実装された認証セキ
ュリティから区別できる。メッセージの暗号化は、分散コンピューティング環境
のメッセージ・トランスポート・レイヤで行われる。暗号化されたトランスポー
トを要求するサービスは、XML通知にタグを付けることによりそのような作業
を行う。その後、ゲート・ファクトリは、BluetoothやHTTPSによ
って提供されるものなどのセキュリティで保護されたメッセージ・トランスポー
トを使用するゲート(または複数のゲート)を作成する。
【0329】 HTTPS(Secure Hypertext Transfer Protocol)は、ユーザ・ページ要求
さらにWebサーバによって返されるページの暗号化および復号化を行うWeb
プロトコルである。HTTPSでは、ストリーム暗号化アルゴリズム(たとえば
、RC4)に多ビット鍵サイズ(40〜128ビット以上)を使用して、商用の
データ交換に対し十分な暗号化を行う。HTTPSは、分散コンピューティング
環境でトランスポートとして使用できる。
【0330】 Bluetoothは、新しく登場したピアツーピアの無線通信規格である。
Bluetooth鍵生成アルゴリズムを分散コンピューティング環境で使用で
きる。Bluetoothでは暗号鍵をサポートする。暗号鍵はトランスポート
に依存しているが、クライアント、サービス、および組み合わせ鍵はトランスポ
ートに依存しないようにできる。
【0331】 図26a−クライアントに認証証明書を提供する認証サービス 図26aは、一実施形態により、認証証明書をクライアントに提供する認証サ
ービスを示す流れ図である。分散コンピューティング環境のクライアントは、ク
ライアントのために1つまたは複数の機能を実行するサービスを必要とすること
がある。一実施形態では、セキュリティで保護されたメッセージング・チャネル
を設定するときにクライアントとサービスで使用する認証サービスを提供する。
認証サービスは、クライアントおよび/またはサービスの認証および望むレベル
のセキュリティおよびクライアントとサービスとの間で渡されるメッセージ・セ
ットを交渉するなどの機能をクライアントおよび/サービスのために実行する。
認証サービスは、分散コンピューティング環境内で実行されているプロセスでも
よい。認証サービスは、サービスおよび/またはクライアントと同じデバイスで
実行するか、またはそれとは別に、認証サービスは、認証サーバなどの別のデバ
イスで実行する。一実施形態では、認証サービスはインターネット・ベースのサ
ービスである。認証サービスは、それ独自のアドレス、たとえば、Univer
sal Resource Identifier(URI)を持ち、これによ
り、クライアントおよび/またはサービスは認証サービスと通信できる。一実施
形態では、認証サービスのアドレスを、サービスのサービス通知でクライアント
に提供する。認証サービスを共有するクライアントおよびサービスを使用すると
、クライアントとサービスとの間でセキュリティで保護されたメッセージング・
チャンネルを確立し、いくつかのセキュリティおよび認証プロトコルのどれかを
メッセージング・チャネルで使用できる。
【0332】 一実施形態では、クライアントはクライアントIDトークンまたは証明書を認
証サービスに提示する。クライアント・トークンまたは証明書は十分に忘れがた
いものであり、クライアントの素性を証明するものとして使用できる。次に、認
証サービスは、クライアントIDトークンまたは証明書をチェックし、クライア
ントに、認証サービスのみが作成できる認証証明書を発行する。クライアントに
返された認証証明書は、次に、クライアントによりすべてのメッセージに入れら
れてサービスに送られる。一実施形態では、クライアント・メッセージ・ゲート
はゲート・ファクトリによって作成され、認証証明書をメッセージ・ゲートに格
納すると、メッセージ・ゲートはクライアントに代わって認証証明書をすべての
メッセージに入れてサービスに送る。メッセージを受け取ると、サービスは認証
証明書をチェックする。認証サービスのみが認証証明書を作成できるので、クラ
イアントが認証証明書を改ざんしていないとサービスは認識する。一実施形態で
は、サービスは認証証明書をクライアントによって使用される同じ認証サービス
に渡し、認証証明書が有効であることを確認し、クライアントが承認されたクラ
イアントであることを検証し、クライアントの素性を調べる。
【0333】 スペース・サービスおよび認証サービスを含むすべてのサービスはそのクライ
アントを認証することができる。サービスによってクライアントの認証が行われ
ると、クライアントはそのサービスにアクセスできる。たとえば、スペース・サ
ービスの場合、クライアントはスペースからXML通知を取得する。
【0334】 一実施形態では、サービスはそのサービスのすべてのクライアントが使用する
あらかじめ整えられている証明書を用意する。この実施形態では、認証により、
そのあらかじめ整えられた証明書が要求側クライアントに提供される。クライア
ントはあらかじめ整えられている証明書をサービスに提示すると、サービスによ
って承認される。
【0335】 ステップ1000で、クライアントは認証証明書を認証サービスに要求する。
一実施形態では、クライアントは目的のサービスのサービス通知をサーチし、特
定する。一実施形態では、サービス通知はサービスにアクセスする際に使用され
る認証証明書を取得するために使用する認証サービスの通知を含む。一実施形態
では、サービス通知は、認証サービスのURIなどのアドレスを含む。一実施形
態では、クライアントは認証証明書を要求する認証サービスに情報を送る。一実
施形態では、クライアントは情報をゲート作成プロセス、たとえば、ゲート・フ
ァクトリに送り、ゲート作成プロセスは認証サービスにアクセスして認証証明書
を取得する。
【0336】 ステップ1002で、認証サービスはクライアントのために認証証明書を生成
する。認証証明書は、メッセージング・システムのメッセージに埋め込むことが
でき、これによりメッセージの受取側がメッセージの発送側を認証し、メッセー
ジが承認された発送側からのものであることを検証し、メッセージが発送側が受
取側に送ることを許可されているメッセージであることを検証できるようにする
データ要素またはデータ構造である。分散コンピューティング環境の一実施形態
では、認証証明書は特定のクライアントと特定のサービスとの間に設定されるメ
ッセージング・チャンネルに固有のものである。ステップ1002は、図26b
に詳しく示され、説明されている。図26aのステップ1004で、認証サービ
スはクライアントに認証証明書を返す。一実施形態では、認証証明書は、クライ
アントに直接返すことができる。一実施形態では、認証証明書をゲート作成プロ
セス、たとえば、ゲート・ファクトリに返し、このプロセスが次に、認証証明書
を使用してゲートを生成する。
【0337】 図26b−認証証明書を生成する認証サービス 図26bは一実施形態により、図26aのステップ1002で展開し、認証証
明書を生成する認証サービスを示す流れ図である。一実施形態のステップ100
2aで、認証サービスはクライアント・トークンとサービス・トークンを取得す
る。他の実施形態では、認証サービスはクライアント・トークンのみを取得する
。一実施形態では、クライアント・トークンは分散コンピューティング環境にお
けるクライアントの一意的な識別子である。一実施形態では、サービス・トーク
ンは分散コンピューティング環境におけるサービスの一意的な識別子である。た
とえば、公開/秘密鍵暗号化メカニズムの公開鍵をクライアントとサービスに対
する一意的な識別子として使用することができる。一実施形態では、クライアン
トはサービス通知でサービス・トークンを受け取り、クライアントはクライアン
ト・トークンとサービス・トークンを認証サービスに送る。他の実施形態では、
クライアントはクライアント・トークンとサービス通知URIを認証サービスに
送り、認証サービスはサービス通知からサービス・トークンを取り出すことがで
きる。
【0338】 ステップ1002bで、認証サービスはクライアントおよび/またはサービス
を検証する。一実施形態では、認証サービスはステップ1002aで取得したク
ライアント・トークンおよびサービス・トークンを使用して、クライアントおよ
び/またはサービスを検証する。他の実施形態では、ステップ1002aでクラ
イアント・トークンのみを取得しており、1002bでクライアント・トークン
のみを使用してクライアントを検証する。一実施形態では、クライアントはその
クライアント・トークンをすでに認証サービスに登録しており、認証サービスは
受け取ったクライアント・トークンを登録されているクライアント・トークンと
比較し、クライアントが有効なクライアントであるかどうかを検証することがで
きる。一実施形態では、クライアントはパスワードが設定されているログオン・
アカウントなどのチャレンジ/応答メカニズムを使用して認証サービスにアクセ
スし、クライアントを有効なクライアントとして検証することができる。一実施
形態では、サービスはすでに認証サービスに登録されており、そのサービス・ト
ークンを認証サービスに提供してある。認証サービスは、次に、受け取ったサー
ビス・トークンをすでに登録されているサービス・トークンと比較して、クライ
アントが有効なサービスにアクセスしようとしていることを検証する。他のタイ
プのクライアントおよびサービス認証も使用できる。たとえば、クライアントは
、認証サービスがクライアントを認証するためにかつ/またはクライアントがア
クセスしようとしているサービスを認証するために使用できる電子シグネチャま
たは電子証明書を提供する。
【0339】 ステップ1002cで、認証サービスは認証証明書を生成する。一実施形態で
は、認証証明書は、認証サービスのみが作成できる認証トークンを含む。一実施
形態では、認証サービスはクライアント・トークンとサービス・トークンを使用
して認証証明書を生成する。他の実施形態では、認証サービスはクライアント・
トークンだけを使用して、認証証明書を生成する。さらに他の実施形態では、認
証サービスは認証証明書の生成に取得されているトークを使用しないが、その代
わりに、認証証明書生成アルゴリズムを使用して実質的に忘れることはできない
認証証明書を生成することができる。一実施形態では、認証サービスはサービス
・トークンとクライアント・トークンを組み合わせて、一意的な認証証明書を生
成する。たとえば、サービス・トークンとクライアント・トークンを64ビット
値とし、この2つのトークンを組み合わせて128ビットの認証証明書を生成す
ることができる。他の実施形態では他の方法を使用して、認証証明書を生成する
ことができる。
【0340】 デバイスを分散ネットワーク環境にブリッジする方法 分散コンピューティング環境で実装されるメッセージ通信モデルをサポートし
ないデバイスが、分散コンピューティング環境の外部にある。これらのデバイス
は、分散コンピューティング環境のクライアントにとって有用と思われるサービ
スを備えている場合がある。分散コンピューティング環境には、このような外部
デバイスを分散コンピューティング環境にブリッジするメカニズムが備えられて
いる。分散コンピューティング環境内のクライアントはこのようなデバイスに用
意されているサービスにアクセスすることができる。分散コンピューティング環
境ではさらに、分散コンピューティング環境で使用するこのような外部デバイス
を発見するため既存のデバイス発見プロトコルを活用することができる。
【0341】 多くの技術が、ネットワークのデバイス構成をパブリッシュし、監視するため
の発見プロトコルを定義している。これらの技術には、これらに限定されないが
、Jini、SLP、Bluetooth、UPnPがある。さらに、LonW
orks、USB、および1394などの多くの入出力バスも動的発見プロトコ
ルをサポートしている。分散コンピューティング環境では、実装をAPIでラッ
プすることにより、デバイス発見技術を活用する。他のデバイス発見プロトコル
を活用し、他の発見プロトコルにブリッジする方法を使用することにより、分散
コンピューティング環境で、さまざまなネットワークおよび入出力バス上のデバ
イスまたはサービスを発見することができる。分散コンピューティング環境のデ
バイス発見は、したがって、分散コンピューティング環境に直接参加していなく
ても、PDAなどの小型デバイスを含むさまざまなデバイスに応用できる。発見
プロトコルは、メッセージ・レベルで定義することができる。
【0342】 ブリッジ・メカニズムは、分散コンピューティング環境用のメッセージングA
PIでBluetoothなどの1つまたは複数のを特定のデバイス発見プロト
コルを「ラップ」する方法として提供される。ラップでは、コードおよび/また
はデータ(API)でデバイス発見プロトコルの枠組みを作り、プロトコルを分
散コンピューティング環境内のクライアントおよび/またはサービスによって実
行できるようにするが、そうでないとこれは実行できない。ブリッジ・メカニズ
ムを実行すると、特定のデバイス発見プロトコルによりデバイスを発見する発見
エージェントが分散コンピューティング環境のスペース内のデバイスに対しサー
ビスをパブリッシュすることができる。サービスが分散ネットワーク環境でXM
Lメッセージ・スキーマ・インターフェースをクライアントに提示し、特定のデ
バイス発見プロトコルにより発見されたさまざまなデバイスを動作させることが
できる。したがって、サービス通知は、基礎のラップされたデバイス発見プロト
コルにより発見されたさまざまなデバイスを動作させるサービスに対してパブリ
ッシュされる。そこで、通知されたサービスは、分散ネットワーク環境の外部に
あるデバイス(またはサービス)を分散ネットワーク環境上のクライアントにブ
リッジする。
【0343】 図27は、スペース1200を持つ分散コンピューティング環境の一実施形態
を示している。1つまたは複数の発見エージェント1204が、外部発見プロト
コルに参加し、ブリッジ・メカニズム1202を通じて分散コンピューティング
環境にブリッジする。ラップされたデバイス発見プロトコルを実行すると、ブリ
ッジ・メカニズム1202を介した発見エージェント1204はスペース120
0内のサービス通知1206a〜1206cをパブリッシュし、そこで、通知1
206a〜1206cのそれぞれが分散コンピューティング環境の外部にある発
見プロトコル1204のうちの1つにより発見されるデバイスまたはサービスに
対応する。クライアントは、その後、スペース1200内のサービス通知120
6a〜1206cを使用して外部デバイスにアクセスし、対応する外部デバイス
またはサービスを動作させるエージェント1204のうちの1つでサービスをイ
ンスタンス化する。
【0344】 そこで、分散コンピューティング環境のクライアントは、デバイス発見プロト
コルをラップする発見エージェントを使用してデバイスを見つける。これらのデ
バイスとのブリッジとして機能するサービスをスペース内でパブリッシュし、通
知して、分散コンピューティング環境のクライアントが外部デバイスによって提
供されるサービスにアクセスできるようにする。通知されたサービスは、他のプ
ロトコルまたは環境により分散コンピューティング環境の外部のデバイスを呼び
出すことができる分散コンピューティング環境内のサービスであり、外部のデバ
イス/サービスを分散コンピューティング環境にブリッジする。分散コンピュー
ティング環境内のクライアントは、分散コンピューティング環境内の通知された
サービスのみを「見」、外部のデバイス/サービスに気付くことすらしない。
【0345】 一実施形態では、分散コンピューティング環境は上述のラップされたデバイス
発見プロトコルを含む基礎の外部デバイス発見プロトコルにマップされる、「ス
ペース」の項で説明した発見プロトコルなどの特定のバージョンのスペース発見
メッセージ・プロトコルを提供する。マップされた発見プロトコルは、スペース
、デフォルト・スペースに自己登録するかまたは登録されるが、その際に、その
スペースに通知を入れる。通知される発見プロトコルごとに、発見プロトコルの
結果を保持する後続の結果スペースが提供される。
【0346】 図28は、一実施形態によりBluetooth発見サービス1220にマッ
プされるスペース発見プロトコルの一例の図である。Bluetooth発見サ
ービス1220は、まず、分散コンピューティング環境に登録する1230。B
luetooth発見サービス1220は、ブリッジAPIでラップされ、発見
サービス1220の通知1225がスペース1224に追加される1232。ク
ライアントまたはサービスが、スペース1224上の発見サービス通知1225
を特定する。発見サービス1220が実行されると(発見プロトコル1220と
分散コンピューティング環境1222との間のブリッジとしてAPIラッパを使
用して)、発見プロセスの結果を格納するための新しいスペース1226が作成
される1234。発見サービス1220は、それらの結果を(再び、APIラッ
パを使用して)1つまたは複数の通知1227として発見結果スペース1226
に格納する。それとは別に、発見サービス1220を実行した結果は分散コンピ
ューティング環境のスペース1224または他の既存のスペースに格納される。
図28に示されているような方法を使用してデバイスを発見し、他の基礎の発見
プロトコルを使用して他のサービスを発見する。
【0347】 上述のように、分散ネットワーク環境で実装されるメッセージ通信モデルをサ
ポートしないデバイスが、分散ネットワーク環境の外部にある。これらのデバイ
スは、分散コンピューティング環境で提供されるサービスを使用する必要がある
クライアントを備えることもある。分散コンピューティング環境は、外部クライ
アントまたはクライアント・デバイスを分散コンピューティング環境にブリッジ
するメカニズムが備えられており、外部デバイスのクライアントは分散コンピュ
ーティング環境内のサービスにアクセスすることができる。
【0348】 分散コンピューティング環境でクライアントとして使用されるエージェントを
用意し、外部クライアントを分散コンピューティング環境にブリッジし、外部ク
ライアントが分散コンピューティング環境内でパブリッシュされているサービス
にアクセスできるようにする。一実施形態では、エージェントは、フロント・エ
ンドでメッセージ通信モデルと専用プロトコル(たとえば、外部デバイスによっ
てサポートされているプロトコル)を使用して外部デバイスにインターフェース
し、さらに外部クライアントにインターフェースする分散コンピューティング環
境内のサービスと通信することができるXML対応バックエンドを備える。した
がって、分散コンピューティング環境の外部のクライアントは、ブリッジ・エー
ジェントを通じて分散コンピューティング環境内のサービスを特定してアクセス
し、要求をサービスに送って結果データを含む応答をサービスから受け取ること
ができる。たとえば、外部クライアントは分散コンピューティング環境でブリッ
ジ・エージェントを使用してスペース発見を実行し、通知されたサービスをルッ
クアップし、分散コンピューティング環境内のサービスを呼び出す。
【0349】 一実施形態では、分散コンピューティング環境は分散コンピューティング環境
クライアントからJiniサービスにアクセスするためのブリッジ・メカニズム
を備える。Jiniサービスはリモート・メソッド呼び出し(RMI)を必要と
し、また分散コンピューティング環境内のクライアントはXMLメッセージなど
のメッセージを使用してサービスと通信するので、分散コンピューティング環境
クライアントによりJiniサービスへのアクセスを可能にするプロトコル・ブ
リッジ・メカニズムを提供できる。一実施形態では、分散コンピューティング環
境のスペース内でJiniサービスの動的通知を有効にし、さらに分散コンピュ
ーティング環境内のクライアントからJiniサービス・プロキシのアクセスを
有効にすることができるコネクタ・メカニズムを定義する。一実施形態では、分
散コンピューティング環境にブリッジできないJiniサービスもある。
【0350】 一実施形態では、Jiniサービスによって使用されるJini RMIプロ
トコルを分散コンピューティング環境のクライアントによって使用されるXML
メッセージングにブリッジするエージェントを分散コンピューティング環境内の
サービスとして提供することができる。エージェントを起動すると、エージェン
トはJiniスペースで一組の属性を持つJiniサービスのルックアップを実
行する。登録されているすべてのJiniサービスについて、エージェントは、
サービスに対応するXML通知を生成し、分散コンピューティング環境内のスペ
ースで通知を登録する。一実施形態では、エージェントは、Jiniルックアッ
プ・サービスのイベント通知について登録でき、新しいJiniサービスが登録
されると実行される。新しいJiniサービスが通知されると、エージェントは
Jiniスペースで検索を実行し、新たに通知されたJiniサービスを特定し
、分散コンピューティング環境のスペースを新しいサービスに対する新しいXM
L通知で更新する。一実施形態では、Jiniサービスが削除されると、エージ
ェントはJiniサービスの削除を通知するイベントを受け取る。エージェント
は、サービスのXML通知をスペースから削除する。
【0351】 一実施形態では、分散コンピューティング環境のスペースのXML通知を介し
てJiniサービスを呼び出すには、クライアントはスペース内のサービス通知
をルックアップし、有効なメッセージをエージェントに送ってサービスにアクセ
スする。エージェントは、サービス・プロキシに対するRMIコールを介して対
応するメソッドを呼び出してJiniサービスに対応するプロキシ・サービスを
呼び出す。プロキシがインスタンス化されていない場合、エージェントはプロキ
シ・コードをダウンロードし、プロキシ・オブジェクトの新しいインスタンスを
インスタンス化する。一実施形態では、すべてのクライアント接続は異なるプロ
キシ・インスタンスを持つ。クライアントから着信したメッセージは、エージェ
ントによってプロキシのメソッド・コールに変換される。メソッド・コールから
の結果は発信メッセージとしてクライアントに返される。
【0352】 一実施形態では、RMIメソッドへの引数として、単純なJavaの型のみを
使用できる。Javaの複合型が必要な場合、1つまたは複数のデータ通知をコ
ールの引数として渡し、データ通知はJava複合型のデータの位置とアクセス
方法を示す。一実施形態では、エージェントがXMLメッセージがRMIメソッ
ド・コール呼び出しへの初期変換を動的に実行する。エージェントはサービス・
インターフェースを認識するので、クライアントに通知される対応するメッセー
ジ・セットを生成する。
【0353】 図29は、分散コンピューティング環境の外部にあるクライアント1250を
分散コンピューティング環境内のスペース1254にブリッジする方法を示す図
である。ブリッジ・エージェント1252は、クライアント1250とスペース
1254との間の仲介者として使用される。ブリッジ・エージェント1252は
、クライアント1250が理解できる通信プロトコルでクライアント1250と
通信する。ブリッジ・エージェント1252は、クライアントの通信プロトコル
を、スペース1254によって提供される機能を実行するためにスペース125
4と通信するために必要なXMLメッセージング・プロトコルにマップする。ブ
リッジ・エージェント1252は、クライアント1250の要求があったときに
、スペース1254上のサービスを特定して実行する。たとえば、クライアント
1250は、スペース1254に特定のタイプのすべてのサービスのリストを要
求することができる。ブリッジ・エージェント1252は、サービス通知125
6a〜cを特定し、結果をクライアント1250に返す。それとは別に、結果を
結果スペースにポストし、結果の位置をクライアント1250に返す。クライア
ント1250は、その後、サービス通知1256aの実行を選択し、メッセージ
(クライアント1250の通信プロトコルで)をブリッジ・エージェント125
2に送る。ブリッジ・エージェント1252は、そこで、サービス通知1256
aによって表されるサービスを実行するのに必要なXML要求メッセージを送り
、サービスの結果をクライアント1250に返す。結果をクライアント1250
に直接返す以外のサービスの結果の処理方法は、上の「スペース」の項で説明し
ているように使用できる。ブリッジ・エージェント1252は、外部クライアン
ト1250のサービスとして機能し(外部クライアントのプロトコルを介して)
、また分散コンピューティング環境内のクライアントとして機能して、分散コン
ピューティング環境内のサービスを外部クライアントにブリッジする。
【0354】 ときには、分散コンピューティング環境内であっても、クライアントおよびサ
ービスは互いに直接通信し、また共通のスペースとのみ通信することはできない
。この場合、スペース・サービスはクライアント・サービスにブリッジするサー
ビス・プロキシを自動的に作成する。プロキシの主要な役目は、スペースを介し
てクライアントとサービスとの間でメッセージをやりとりすることである。サー
ビス・プロキシは動的に作成される。作成メカニズムは、スペースの実装に左右
される。プロキシ・メカニズムの説明については、図30を参照のこと。クライ
アント554およびサービス556は、たとえば、これらが異なるトランスポー
トまたはネットワーク・プロトコルをサポートしているため、分散コンピューテ
ィング環境内で直接通信することができない場合がある。ただし、両方とも両方
のプロトコルをサポートするスペース552とは通信できる。スペース・サービ
スは、クライアント554をサービス556にブリッジするプロキシ550を作
成する。プロキシの共通の形態はブラウザ・プロキシである。プラザ・プロキシ
(サーブレットとして実装されるは最も一般的である)は、従来のWebページ
要求をメッセージに変換する。「スペース」の項のスペースルックアップ・サー
ビス(およびプロキシ)の説明も参照のこと。
【0355】 分散コンピューティング環境は、分散コンピューティング環境内のクライアン
トをエンタプライズ・サービスにブリッジするメカニズムを備える。分散コンピ
ューティング環境の一実施形態では、クライアントをエンタプライズ・サービス
にブリッジする方法は、分散コンピューティング環境内のクライアント、分散コ
ンピューティング環境内のブリッジ・サービス、およびエンタプライズ環境内の
エンタプライズ・サービスを含む。分散コンピューティング環境のブリッジ・サ
ービスは、クライアントとエンタプライズ・サービスとの間のブリッジ・サービ
スとして使用される。エンタプライズは、企業、中小企業、非営利団体、政府機
関、またはその他の種類の組織である。エンタプライズでは、その事業の一部を
実施するためにエンタプライズ・コンピューティング環境を利用する。エンタプ
ライズ・コンピューティング環境は、さまざまなエンタプライズ・サービスを含
む。分散コンピューティング環境内のクライアントは、エンタプライズ・コンピ
ューティング環境のサービスを使用することを望んでいる場合がある。エンタプ
ライズ・サービスは、三層クライアント/サーバ・アーキテクチャなどのさまざ
まなアーキテクチャに基づく。エンタプライズ・サービスを実装するのに使用で
きるアーキテクチャの一例としてEnterprise JavaBeansが
ある。Enterprise JavaBeans(EJB)は、クライアント
/サーバ・モデルを使用してエンタプライズ環境のサーバー部分で実行する、J
avaプログラミング言語で書かれたプログラム・コンポーネントを設定するア
ーキテクチャである。オブジェクト指向プログラミングおよび分散オブジェクト
技術では、コンポーネントとは、アプリケーションを形成するために分散ネット
ワーク内で同じコンピュータまたは他のコンピュータ内の他のコンポーネントと
組み合わせて再利用可能なプログラムの基本要素のことである。EJBは、プロ
グラム・コンポーネント(Beans)をネットワーク内のクライアントに配布
するJavaBeans技術に基づき構築されている。EJB Beanまたは
コンポーネントを配置するには、コンテナと呼ばれる特定のアプリケーションの
一部である必要がある。Enterprise JavaBeansには、se
ssion beansとentity beansの2種類のbeansがあ
る。entity beansは、session beansと異なり、永続
性があり、最初の動作または状態を保持できるものである。EJBを使用すると
、実質的にすべての主要なオペレーティング・システムに配置することができる
。EJBのプログラム・コンポーネントは、一般にサーブレット(小さなサーバ
・プログラム)と呼ばれている。サーブレットを実行するアプリケーションまた
はコンテナは、アプリケーション・サーバと呼ばれることもある。
【0356】 ブリッジ・サービスは、XMLメッセージ通信を介してクライアントと対話し
、分散ネットワーク環境の外にあるエンタプライズ・サービスに要求を行うのに
必要な入力パラメータを収集する。たとえば、クライアントが分散コンピューテ
ィング環境内の他のサービスとまったく同様にブリッジ・サービスをルックアッ
プし、インスタンス化することができる。ブリッジ・サービスは、エンタプライ
ズ・サービスと対話して、エンタプライズ・サービスを実行する。この対話では
、エンタプライズ・サービスが理解できるプロセス間通信アーキテクチャを使用
する。たとえば、エンタプライズ・サービスがEnterprise Java
Beans(EJB)で実装されている場合、ブリッジ・サービスはEJBを使
用してエンタプライズ・サービスと通信する。ブリッジ・サービスは、エンタプ
ライズ・サービスから結果を受け取り、その結果を直接クライアントに(XML
メッセージで)返すか、またはその結果を分散ネットワーク環境内のスペース(
たとえば、結果スペース)に入れることができる。クライアントからは、ブリッ
ジ・サービスは唯一のサービスのように見えるため(エンタプライズ・サービス
はクライアントには隠されている)、クライアントはエンタプライズ・サービス
のアーキテクチャをサポートする必要がない。複数の分散ネットワーク環境のク
ライアントが同じブリッジ・サービス(それぞれ、一意的なゲート・ペアを使用
する)を使用して、エンタプライズ・サービスと対話する。
【0357】 ブリッジ・サービスまたはその他のエージェントは、分散コンピューティング
環境内のスペースでブリッジ・サービス(およびエンタプライズ・サービス)の
通知をパブリッシュする。たとえば、ブリッジ・サービスまたはその他のブリッ
ジ・エージェントはJavaリフレクションを使用して、EJBで実装されてい
るエンタプライズ・システム内のサービスについてBeansを調べ、Bean
sへのブリッジ・サービスのサービス通知を作成し、分散コンピューティング環
境内のスペースにそれらの通知をパブリッシュする。リフレクションは、クラス
のフィールド、メソッド、およびコンストラクタに関する情報を発見し、セキュ
リティ制限の範囲内でオブジェクトに対する基礎の対応する部分の上で動作する
リフレクトされたフィールド、メソッド、およびコンストラクタを使用するJa
vaコードのメソッドである。リフレクションAPIは、ターゲット・オブジェ
クトの公開メンバまたは所定のクラスで宣言されているメンバのいずれかにアク
セスするのが必要なアプリケーションに対応している。ブリッジ・サービスが通
知されると、クライアントは、サービスを提供するエンタプライズ・サービスの
アーキテクチャを詳細を知ることなく、分散ネットワーク環境内の他の通知され
たサービスと同様にブリッジ・サービス(およびしたがって対応するエンタプラ
イズ・サービス)にアクセスできる。
【0358】 クライアントのディスプレイ クライアントによって実行されたサービスからの結果を分散コンピューティン
グ環境内で表示する方法はいくつかある。結果を表示するデバイスとしては、コ
ンピュータのCRT、ラップトップのLCD、ノートブック・パソコンのディス
プレーなど、プリンタ、スピーカ、および視覚的、聴覚的、またはその他の知覚
可能な形式でサービスの結果を表示できるその他のデバイスがある。結果を表示
する方法にはそれに限定されないが、次のものがある。 サービスが結果をクライアントに直接、または参照により返し、クライアント
はそれらの結果の表示を処理する。 サービスが結果をクライアントに直接、または参照により返し、クライアント
はそれらの結果を表示サービスに直接、または参照により渡し、表示サービスが
それらの結果を表示する。 サービスが結果の表示を直接処理する。 サービスが結果を表示サービスに直接、または参照により渡し、表示装置はそ
れらの結果を表示する。
【0359】 結果を表示する最後の方法では、クライアントが表示サービスを指定する。た
とえば、クライアントがサービスの結果を表示するために使用することを望んで
いるクライアントが常駐するデバイスの表示サービスまたは関連する表示サービ
スがある。クライアントがサービスを実行すると、クライアントはメッセージを
サービスに送り、クライアントの表示サービスのサービス通知を指定する。その
後、サービスは、ゲートを構築し、メッセージをクライアントの表示サービスに
送ることができるようにする。したがって、結果を表示するとき、クライアント
によって呼び出されたサービスはクライアントの表示サービスのクライアントと
なり、その結果を(直接または参照により)表示のためその表示サービスに送る
。クライアント−サービス間の関係、ゲート、およびメッセージングの詳細につ
いては、本書の他の項を参照のこと。
【0360】 従来のアプリケーション・モデルは、通常、所定のおおむね静的なユーザ・イ
ンターフェースおよび/またはデータ特性に基づく。従来のアプリケーションに
変更を加えるには、コードを修正し再コンパイルする必要がある。サービスを通
知し、分散コンピューティング環境のサービスと通信するためのXMLメッセー
ジ・スキーマを指定するための記述されたメカニズムを使用して、アプリケーシ
ョン(クライアント、サービス、など)が自動的に表示オブジェクトの記述する
ためのメカニズムを提供する。動的表示オブジェクトを使用すると、新しいコー
ドをダウンロードしたり、アプリケーションを再コンパイルしたり、アプリケー
ションを再リンクすることなく、アプリケーションの動作を変更することができ
る。同じ結果を異なる形式で表示する、表示のため結果の一部を抽出する、およ
び異なる表示デバイスに結果を表示する表示スキーマを提供する。
【0361】 図31は、一実施形態による関連するディスプレイ1302および表示サービ
ス1304を備えるクライアント1300の一実施形態の図である。表示サービ
ス1304の通知1306をスペース1308に登録する。サービス1310の
通知1312をサービス1310によりスペース1314に登録する。それとは
別に、サービス通知1312および表示サービス通知1306を同じスペース上
に登録する。クライアント1300は、スペース1314上のサービス通知13
12をサーチし発見して1320、サービス1310に要求を送る(サービス1
310から結果または応答を受け取る)ためのゲートを設定する。一実施形態で
は、メッセージは通知1312の一部として受け取ったXMLスキーマで指定し
たXMLメッセージの形式である。クライアント1300は、1つまたは複数の
メッセージ(1322)をサービス1310に送る。この1つまたは複数のメッ
セージは、サービス1310を実行するメッセージと、表示のため結果を表示サ
ービス1304に送るようサービス1310に命令するメッセージを含み、表示
サービス通知1306の位置を指定する。通知の位置は、Uniform Re
source Identifier(URI)として指定する。
【0362】 クライアント1300からサービス1310にメッセージを命令として送ると
、サービス1310は表示可能な結果を出力する1つまたは複数のオペレーショ
ンを実行する。サービス1310は、クライアント1300から受け取った位置
情報に基づいてスペース1308から表示サービス通知1306を取り出す。サ
ービス通知は、XMLメッセージ・スキーマと、表示サービス1304とインタ
ーフェースするのに必要なその他の情報含む。次に、サービス1310は要求を
表示サービス1304に送る(そして表示サービス1304から結果を受け取る
)ためのゲートを設定する。他の実施形態では、クライアント1300からサー
ビス1310へのメッセージは、XMLスキーマと、サービス1310が表示サ
ービス1304へのゲートを構築するのに必要なその他の情報を含むか、または
表示サービス1304への事前に構築されたゲートを備える。
【0363】 クライアント1300によって要求されたオペレーションの実行中、または完
了した後、サービス1310は、表示サービス1304のスキーマによって指定
されている方法によりオペレーションの結果を表示サービス1304に送る(た
とえば、XMLメッセージ・スキーマでまたは表示サービスのパラメータとして
の参照により指定されたXMLメッセージ内にカプセル化される)。この点で、
サービス1310は、表示サービス1304のクライアントである。その後、表
示サービス1304は、クライアントのディスプレイ1302上にサービス13
10から受け取った、または指示された結果をフォーマットして表示する。
【0364】 いくつかの実施形態では、サービス1310は、結果スペース(図に示されて
いない)などのスペースにオペレーションの結果をポストする。その後、サービ
ス1310は、オペレーションも格納されている結果への参照を含むメッセージ
を表示サービス1304に送る。一実施形態では、参照はURIの形式である。
その後、表示サービス1304は、スペースから結果を取り出し、その結果をデ
ィスプレイ1302に表示する。
【0365】 従来のアプリケーション・モデルは、通常、所定のおおむね静的なユーザ・イ
ンターフェースおよび/またはデータ特性に基づく。従来のアプリケーションに
変更を加えるには、コードを修正し再コンパイルする必要がある。サービスを通
知し、分散コンピューティング環境のサービスと通信するためのXMLメッセー
ジ・スキーマを指定するための記述されたメカニズムを使用して、アプリケーシ
ョン(クライアント、サービス、など)が自動的に表示オブジェクトの記述する
ためのメカニズムを提供する。動的表示オブジェクトを使用すると、新しいコー
ドをダウンロードしたり、アプリケーションを再コンパイルしたり、アプリケー
ションを再リンクすることなく、アプリケーションの動作を変更することができ
る。
【0366】 動的表示オブジェクトはXMLスキーマで記述できる。これらのスキーマは、
スペース内で通知される。これらのスキーマは、表示スキーマまたは表現スキー
マと呼ぶ。その後、アプリケーション(またはアプリケーションの代わりに動作
するその他のサービス)は、サービス通知からスキーマにアクセスし、フォーマ
ット、データ型、およびスキーマに格納されているその他の情報に基づきデータ
を表示する。
【0367】 動的表示オブジェクトを含むスキーマの一例を以下に示す。 <element name="delivery" type="Space:shipto"minOccurs="0"/> <type name="TextField"> <element name="Address" type="String"/> <element name="City" type="string"/> <element name="State" type="string"/> ... ... ... </type>
【0368】 上記のスキーマは、アプリケーションを再コンパイルすることなく、次のよう
に変更できる。 <element name="delivery" type="Space:shipto" minOccurs="0"/> <type name="TextField"> <element name="Name" type="string"/> <element name="Address" type="string"/> <element name="City" type="string"/> <element name="State" type="string"/> ... ... ... </type>
【0369】 図32Aおよび図32Bは一実施形態により動的表示オブジェクトのスキーマ
を使用する例を示す図である。図32Aで、アプリケーション1320(クライ
アント、サービス、またはその他のアプリケーション)はスペース1326に格
納されている表現スキーマ通知1324で実装されている。表現スキーマ通知は
、データ型、書式指定、フォント、位置、色、およびディスプレイ1322にア
プリケーションのデータを表示するために使用されるその他の情報を記述する要
素を含む。アプリケーション1320のための複数の表現スキーマ通知がある。
たとえば、一連の表示ページ(たとえば、WebサイトのWebページ)内の表
示ページごとに1つのスキーマがある。
【0370】 一実施形態では、アプリケーション1320は、発見および/またはルックア
ップ・サービスを呼び出して、表現スキーマ通知を特定する。発見および/また
はルックアップ・サービスは、1つまたは複数の通知、およびURIの一覧を含
むXMLドキュメントを特定の表示形式などを記述するスキーマのそれぞれに返
す。その後、アプリケーション1320は、XMLドキュメントから1つまたは
複数の表現スキーマを選択する。アプリケーション1320は、続いて、そのス
キーマを解析し、スキーマ要素をユーザ・インターフェース・コンポーネントに
分解する。これらのコンポーネントは、結果データを特定し、フォーマットし、
適切なディスプレイ上に表示するために使用される。結果データは、たとえば、
サービスの実行または結果スペースから得られる。そこで、静的な表示または所
定の表示を用意するのとは反対に、アプリケーション1320は、アプリケーシ
ョンを再構築することなく動的に変更できる表現スキーマに従って結果を表示す
るように構成される。
【0371】 同じ結果を異なる形式で表示する、表示のため結果の一部を抽出する、および
異なる表示デバイスに結果を表示する表現スキーマを提供する。
【0372】 一実施形態では、1つまたは複数の表現スキーマ通知を分散コンピューティン
グ環境内の1つまたは複数のスペースに格納することができる。1つまたは複数
のデバイスでアプリケーションのコピーを呼び出すと、アプリケーションのそれ
ぞれのコピーがサービスに対するサーチを実行し、アプリケーションによって使
用される表現スキーマの通知を発見する。そこで、表示情報の中央永続的ストア
をアプリケーションの複数のインスタンス用または他のアプリケーション用に保
持することができる。表示情報は、アプリケーションを再コンパイルしたり再イ
ンストールすることなく、中央の場所で修正することができる。
【0373】 図32Bでは、クライアント1328は、スペースのサービス1330のサー
ビス通知を特定する。サービス1330を呼び出すと、クライアント1328は
スペース1326の表現スキーマ通知1324の位置をサービス1330に渡す
。サービス1330が結果をクライアント1328に送る用意が整っている場合
、表現スキーマ通知1324によって提供される表現スキーマからの表示情報を
使用してディスプレイ1322(クライアント1328が実行されているデバイ
スに結合されている)に結果を表示することができる。結果の表示方法を変更す
るには、表現スキーマ通知1324のXMLメッセージを修正するか、または異
なる表現スキーマを選択すればよく、クライアント1328またはサービス13
30で変更する必要はない。サービス1330は表示サービスでよい。
【0374】 クライアント、アプリケーション、またはサービスは、1つまたは複数のサー
ビスによって提供されるさまざまなオペレーションの結果を表示するための複数
の表示スキーマを備える。それとは別に、表示スキーマは1つまたは複数のクラ
イアントのさまざまな結果を表示するための情報を含む。そこで、クライアント
1328は、1つの表示スキーマまたは複数の表示スキーマを使用することがで
きる。異なる形式で、または異なるディスプレイに同じ結果をフォーマットして
表示する2つまたはそれ以上の表示スキーマが用意されている。たとえば、結果
セットに対しディスプレイの画面に結果を表示するための表示スキーマを1つ用
意し、結果を印刷するための表示スキーマをもう1つ用意する。また、同じアプ
リケーション、クライアント、またはサービスのコピーを表示能力の異なるデバ
イスで実行し、異なるデバイスの表示要求条件を満たす2つまたはそれ以上の表
示スキーマを提供するようにする。
【0375】 文字列管理 従来のシステムでの文字列処理は、一般に、あまり効率がよくなく、特に、可
変サイズの文字列の場合に効率がよくなく、たとえば、文字列をメモリ内でコピ
ーしたり移動したりするときにメモリ空間を浪費することになる。文字列処理が
このように不効率であることは、特に、組み込み型システムなどの省メモリ・シ
ステムでは問題になる。メモリ、特にスタック領域、および動的割り当て用の領
域のサイズが、省スペース/システムでは制限される。そこで、組み込み型シス
テムなどの省スペース・システム内で実行するプログラムでの文字列処理を効率
良く行う方法が望まれる。
【0376】 図33Aは、Cプログラミング言語による代表的文字列表現の図である。Cで
は、文字列は、文字列1452の先頭文字のメモリ位置(アドレス)を格納した
文字型ポインタ1450(string1)で表される。他の文字は、文字列1
452の中の先頭文字の後に続き、通常、メモリ内の連続するアドレス指定可能
なバイト位置に格納される。C文字列における文字は通常、8ビットである。C
文字列の文字は、ASCII文字である。C文字列は、NULLを終端文字とす
る必要がある。NULLは、プラットフォームで定義されている256個の使用
可能な8ビット値のうちの1つで、通常、2進値0b00000000である。
文字列1452は、13バイトを占有する(12個の文字と終端文字を合わせて
13個)。
【0377】 Cにおける文字列操作の一例として、strlen()関数があり、これは、
通常、標準Cライブラリの実装に付属している。strlen()関数は、入力
として文字列ポインタをとり、終端文字を含まない文字列の長さ(バイト)を返
す。たとえば、文字ポインタ1450をstrlen()関数に渡すと、長さ1
2が返される。strlen()関数は、終端文字が見つかるまで文字数を数え
ながら文字列内を端から端まで走査するという方法で実装できる。
【0378】 Cの文字列コピーは、通常、Cライブラリ関数のstrcpy()またはst
rncpy()で処理するが、これは次のように実装されている。 char *strcpy (char *dest, const char *src); char *strncpy (char *dest, const char *src, size_t n); strcpy()関数は、文字ポインタsrcが指している文字列(終端文字を
含む)を文字ポインタdestが指している文字列にコピーする。文字列は重な
ることはなく、コピー先文字列destはコピーを受け入れるだけ十分に大きく
なければならない。strncpy()関数も同様であるが、ただし、srcの
うちnバイト以下がコピーされる。したがって、srcの先頭nバイトに終端文
字がなければ、結果に終端文字は含まれない。必要ならば、strncpy()
の後のコードに、終端文字をdest文字列の終わりに追加する命令を入れるこ
とができる。srcの長さがn未満の場合、destの残り部分はNULLで埋
められる。strcpy()およびstrncpy()関数は、コピー先文字列
destへのポインタを返す。図33Bは、文字列1452に対するstrnc
py()関数の結果の一例を示しているが、これは以下のパラメータを付けてs
trncpy()を呼び出した場合である。 strncpy (string2,string+3,5); ただし、string2は文字列1452の終端文字の後の最初のバイトを指し
ている文字ポインタ1454であり、string1+3は3バイトだけインク
リメントされた文字ポインタ1450であり、5はコピー元の場所string
1+3からstring2にコピーする文字の個数(バイト数)である。コピー
した後、string1からコピーされた5個の文字の後の次の文字は、終端文
字に設定される(文字はコピーの前に終端文字に初期化されている場合がある)
。したがって、2つの文字列はメモリ内で(13+6)=19バイトを占有する
ことになる。文字ポインタ1450をコピー元文字列としてstrcpy()関
数を適用した場合、元の文字列1452と結果である新しい文字列は(13*2
)=26バイトを占有することになる。
【0379】 図33Cは、一般のシステムで、具体的には組み込み型システムなどの省スペ
ース・システムで文字列を表現し、管理する効率的な方法を示す図である。文字
列1452は、メモリ内に12バイトとして格納される(終端文字は不要である
)。文字列構造1460は、文字列1452の先頭文字と末尾文字へのポインタ
(アドレス(A)とアドレス(L))を含む。この文字列構造を使用すると、末
尾文字へのポインタから先頭文字へのポインタを引くことで、文字列の長さを効
率よく計算できる。
【0380】 文字列コピー操作strcpy()やstrncpy()などの操作も、より
効率的に処理できる。図33cに示されているようなものなどの文字列構造を使
用して、新しい文字列構造1462を作成し、先頭文字ポインタと末尾文字ポイ
ンタを文字列1452内のそれぞれの文字を指すように初期化する。したがって
、文字列1452の一部または全部をその文字列用の新しい記憶域にコピーする
必要はない。文字列は長さが数百文字あるいは数千文字にさえ達することがある
ため、文字列構造とその文字列構造を利用するように実装されている文字列メソ
ッドを使用してメモリを節約することは注目に値する。文字列の一部または全部
のコピーを処理するこのような方法のことを、「部分文字列管理」と呼び、文字
列の一部(部分文字列)を効率よく処理することができる。
【0381】 標準C文字列ライブラリの他の文字列関数を、図33Cに示されているような
文字列構造を利用する文字列関数で置き換えることができる。他のC文字列関数
の例として、それに限定されないが、strstr()、strcat()、お
よびsprintf()がある。図33Cで説明されているような文字列処理構
造および方法は、XMLドキュメントの階層構造とともに使用する際に、組み込
み型システムなどの省メモリ・システムでXMLテキスト(XMLメッセージな
ど)を効率よく処理することができる。購買発注書を定義するXMLスキーマの
簡単な例を以下に示す。 <!DOCTYPE purchase.order SYSTEM "po.dtd"> <purchase.order> <date>22 May 2000</date> <billing.address> <name>John Smith</name> <street>123 Main</street> <city>Anywhere</city> <state>MA</state> <zip>12345-6789</zip> </billing.address> <items> <item> <quantity>3</quantity> <product.number >248< /product.number> <description>Decorative Widget, Red, Large</description> <unitcost>19.95</unitcost> </item> <item> <quantity>1</quantity> <product.number>1632</product.number> <description>Battery,AA,4-pack</description> <unitcost>4.95</unitcost> </item> </items> </purchase.order>
【0382】 XMLドキュメントの階層構造により、これらを再帰的に処理することができ
、それぞれの再帰のレベルで次々にドキュメントのさらに小さな部分を処理して
ゆく。さまざまな部分への参照が再帰的に記録され、処理される。図33Cに関
して説明されているような文字列構造を使用して、さまざまな部分を記録するこ
とができる。このようにして、XMLドキュメントの最小単位が再帰的に処理さ
れる一実施形態で、特定のXMLタグの内容(上の例の1行)を効率よく決定で
きる。所定のスコープ内のタグを効率よく列挙し処理できるため、同じスコープ
内でタグが繰り返されるドキュメントもまた効率よく処理できる。
【0383】 図33Cで説明しているような文字列構造を使用してXMLドキュメントを処
理する再帰的方法では、XMLドキュメント文字列全体を表し、ドキュメント文
字列内の先頭バイトと末尾バイトを指している文字列構造を受け付けることがで
きる。この方法では、ドキュメントの次のサブセクションを特定して、そのサブ
セクションを含むドキュメント文字列全体の部分文字列を表す文字列構造をその
サブセクションの型に対応する処理関数に渡す。サブセクション自体を、サブセ
クションの型に対応する処理関数に渡される文字列構造により表されるサブセク
ションの他のレベルに分解できる。この方法は、ドキュメント全体が処理される
まで、XMLドキュメントのサブセクションを再帰的に処理し続けることができ
る。
【0384】 再帰的処理で文字列構造を使用すると、処理のためサブセクションのコピーを
作成しなくても処理を実行できる。サブセクションのコピーは、再帰が深くなる
につれ同じデータのコピーが増えてゆくため、再帰的処理では特にコストがかか
る。文字列構造を使用すると、サブセクションの中の先頭バイトと末尾バイトへ
のポインタを含む文字列構造のみを作成し、次のレベルに引き渡すだけでよい。
サブセクションの長さを決定するなどの他の操作は、文字列構造に格納されてい
るアドレス情報を使用することで効率よく実行できる。さらに、文字列構造を使
用すると、C文字列の終端に使用される文字などの終端文字は、必要なくなり、
組み込み型デバイスなど省スペース・デバイスのメモリを節約できる。
【0385】 オブジェクトのXML表現 前述のように、Jini RMIは、最小限のメモリ占有面積と最低限の帯域
幅を備えるシン・クライアントなどのいくつかのクライアントには実用的でない
と思われる。Jini RMIと関連するシリアライゼーションは、実行時間が
長く、コード・サイズが大きく、JVMリフレクションAPIを必要とし、Ja
va固有オブジェクト表現である。Javaデシリアライゼーションも実行に時
間がかかり、コード・サイズが大きく、シリアライズ・オブジェクト・パーサを
必要とする。Javaベースのシン・クライアントであっても、Jini内で要
求されたときにネットワーク経由で(必ず)返される巨大なJavaオブジェク
ト(必要なクラスに沿って)を受け入れられない場合がある。
【0386】 分散コンピューティング環境の実施形態を使用するとよりスケーラブルな分散
コンピューティング・メカニズムを実現できる。分散コンピューティング環境に
は、分散コンピューティングを容易に行えるようにするAPIレイヤが含まれる
。APIレイヤは、クライアントとサービスとの間のメッセージ発送およびメッ
セージ受取機能を備える。このメッセージングAPIは、拡張マークアップ言語
(XML)など、表現データまたはメタデータ形式による単純メッセージ用のイ
ンターフェースを提供する。実施形態はここではXMLを採用しているものにつ
いて説明しているが、他の実施形態では他のメタデータ型言語または形式を使用
することもできることに注意されたい。いくつかの実施形態では、APIレイヤ
は、さらに、Javaオブジェクトなど、オブジェクト間の通信やオブジェクト
の受け渡しのためのメッセージのインターフェースを備えることもできる。AP
Iレイヤ102を通じてアクセス可能なオブジェクトは、XMLなどの表現デー
タ形式で表現される。そのため、オブジェクト自体とは反対に、オブジェクトの
XML表現は操作が可能である。
【0387】 APIレイヤは、メッセージング・レイヤの上に置かれる。メッセージング・
レイヤは、XMLなどの表現データ形式に基づいている。一実施形態では、XM
Lメッセージは、APIレイヤの呼び出しに従って、メッセージング・レイヤに
よって生成される。メッセージング・レイヤは、クライアントとサービスとの間
で送ることができる定義済みの静的メッセージを備えることができる。メッセー
ジング・レイヤは、さらに、動的に生成されるメッセージにも対応できる。一実
施形態では、JavaオブジェクトなどのオブジェクトをXML表現に動的に変
換(コンパイル)することができる。オブジェクトは、コードおよび/またはデ
ータ部分を含む。オブジェクトのコードおよび/またはデータ部分は、XML表
現のXMLタグにより識別されるコード・セグメントとデータ・セグメントにコ
ンパイルすることができる。メッセージング・レイヤにより、XMLオブジェク
ト表現はメッセージとして送ることができる。逆に、メッセージング・レイヤは
、オブジェクトのXML表現を受け取ることができる。その後、そのメッセージ
からオブジェクトを再構成(逆コンパイル)できる。再構成では、XML表現の
コードおよび/またはデータ・セグメントを識別するタグのXML表現を調べ、
タグに格納されている情報を使用して、そのオブジェクトのコードおよび/また
はデータ部分を識別し、逆コンパイルする。
【0388】 オブジェクトのXML表現の作成と発送 図34は、一実施形態により、クライアント1500とサービス1502の間
でJavaオブジェクトを移動するプロセスを示す図である。サービス1502
は、スペース・サービスを含む、分散コンピューティング環境でサポートされて
いるサービスであればどのようなものでもよい。クライアント1500は、サー
ビス1502のサービス通知から受け取ったXMLスキーマを使用して作成した
ゲート1504を使用し、サービス1502の対応するゲート1506と通信す
る。ある時点で、クライアント1500は、Javaオブジェクト1510をサ
ービス1502に送る必要がある。Javaオブジェクト1510は、他のオブ
ジェクトを参照し、次にこのオブジェクトは他のオブジェクトを参照し、という
ように続いてゆく。Javaオブジェクト1510とその参照されているオブジ
ェクト、次に参照するオブジェクト、というように続くことを、オブジェクト・
グラフと呼ぶ。
【0389】 Javaオブジェクト1510は、Javaオブジェクト・コンパイル・プロ
セス1512に渡されてコンパイルされ、オブジェクト・グラフのXML表現を
出力する。オブジェクト・グラフのXML表現は、XMLデータ・ストリーム1
514としてゲート1504に渡される。XMLデータ・ストリーム1514は
、オブジェクト・グラフ内のすべてのオブジェクトのXML表現を含む。一実施
形態では、オブジェクト・グラフ内のオブジェクトは、XMLデータ・ストリー
ム1514内に再帰的に格納される。
【0390】 ゲート1504は、その後、XMLデータ・ストリーム1514をメッセージ
1516にパッケージして、メッセージ1516をサービス1502のゲート1
506に送る。ゲート1506は、XMLメッセージ1516からXMLデータ
・ストリーム1514を抽出して、XMLデータ・ストリーム1514をXML
データ・ストリーム逆コンパイル・プロセス1518に送り、逆コンパイルを行
い、Javaオブジェクト1510を含むオブジェクト・グラフを備えるオブジ
ェクトを出力する。一実施形態では、オブジェクト・グラフ内のオブジェクトは
、XMLデータ・ストリーム1514内に再帰的に格納され、したがって、再帰
的逆コンパイル・プロセスが使用される。
【0391】 サービス1502でJavaオブジェクトをクライアント1500に送る必要
がある場合、実質的に類似するプロセスを使用できる。Javaオブジェクト1
520は、Javaオブジェクト・コンパイル・プロセス1512に渡されてコ
ンパイルされ、オブジェクト・グラフのXML表現を出力する。オブジェクト・
グラフのXML表現は、XMLデータ・ストリーム1522としてゲート150
6に渡される。ゲート1506は、その後、XMLデータ・ストリーム1522
をメッセージ1524にパッケージして、メッセージ1524をクライアント1
500のゲート1504に送る。ゲート1504は、XMLメッセージ1524
からXMLデータ・ストリーム1522を抽出して、XMLデータ・ストリーム
1522をXMLデータ・ストリーム逆コンパイル・プロセス1518に送って
逆コンパイルを行い、Javaオブジェクト1520を含むオブジェクト・グラ
フを備えるオブジェクトを出力する。
【0392】 他の実施形態では、ゲートはJavaオブジェクトのコンパイルおよび逆コン
パイルを実行する役目を持つ。この実施形態では、Javaオブジェクト151
0はゲート1504に渡される。ゲート1504は、オブジェクト1510をJ
avaオブジェクト・コンパイル・プロセス1512に渡してコンパイルし、オ
ブジェクト・グラフのXML表現をXMLデータ・ストリーム1514に出力す
る。ゲート1504は、その後、XMLデータ・ストリーム1514をメッセー
ジ1516にパッケージして、メッセージ1516をサービス1502のゲート
1506に送る。ゲート1506は、XMLメッセージ1516からXMLデー
タ・ストリーム1514を抽出して、XMLデータ・ストリーム1514をXM
Lデータ・ストリーム逆コンパイル・プロセス1518に送って逆コンパイルを
行い、Javaオブジェクト1510を含むオブジェクト・グラフを備えるオブ
ジェクトを出力する。Javaオブジェクトをサービス1502からクライアン
ト1500に送るプロセスは、オブジェクトをクライアントからサービスに送る
プロセスと実質的に類似している。
【0393】 一実施形態では、オブジェクト・コンパイル・プロセス1512とオブジェク
ト逆コンパイル・プロセス1518は、両方とも、クライアント1500とサー
ビス1502に存在し、プログラムする際に、コンパイルと逆コンパイルを2つ
のデバイスで実質的に同じように実行できるため、一方のオブジェクト出力は他
方のオブジェクト入力と実質的に同一である。一実施形態では、Javaオブジ
ェクトの記述を含むXMLスキーマをコンパイル・プロセスや逆コンパイル・プ
ロセスにおいてクライアントおよび/またはサービスの両方で使用できる。一実
施形態では、Javaオブジェクトのコンパイルや逆コンパイルで使用するXM
Lスキーマをサービスにより、サービス通知でクライアントに渡すことができる
【0394】 XMLでは、言語独立およびプラットフォーム独立のオブジェクト表現形式を
備えている。したがって、オブジェクトをオブジェクトのXML表現にコンパイ
ルし、逆コンパイルしてオブジェクトを再現する場合に、図34に示されている
ようなプロセスは、Javaオブジェクトの移動に限られず、実施形態によって
は、ネットワーク内のエンティティ間で他の型のオブジェクトを移動するのにも
適用される。
【0395】 JVMコンパイル/逆コンパイルAPI 図35aおよび図35bは、仮想マシン(たとえば、JVM)がオブジェクト
(たとえば、Javaオブジェクト)をオブジェクトのXML表現にコンパイル
する拡張機能および(Java)オブジェクトのXML表現を(Java)オブ
ジェクトに逆コンパイルする拡張機能を含む実施形態を示すデータ流れ図である
。JVMは、コンパイル/逆コンパイル拡張機能のアプリケーション・プログラ
ミング・インターフェース(API)を備えることができる。クライアント15
00およびサービス1502は、JVM内で実行中の場合がある。JVMは、同
じデバイスまたは異なるデバイスに置くことができる。
【0396】 図35aと図35bの両方で、JVM XMLコンパイラ/逆コンパイラAP
I1530は、Javaオブジェクト1510を入力として受け付け、オブジェ
クト1510とその参照されているオブジェクト(オブジェクト1510のオブ
ジェクト・グラフ)のXML表現をXMLデータ・ストリーム1514に出力す
る。さらに、JVM XMLコンパイラ/逆コンパイラAPI 1530は、X
MLデータ・ストリーム1522を受け付けることができ、これは、オブジェク
ト1520のXML表現とその参照されているすべてのオブジェクト(オブジェ
クト1520のオブジェクト・グラフ)を含み、Javaオブジェクト1520
(およびそのオブジェクト・グラフ内のすべてのオブジェクト)を出力する。
【0397】 図35aは、Javaオブジェクト1510を送るときにクライアントがJV
M XMLコンパイラ/逆コンパイラAPI1530を呼び出す場合の一実施形
態を示している。クライアント1510は、Javaオブジェクト1510をA
PI 1530に渡し、オブジェクトをコンパイルして、XML表現を出力し、
そのXML表現をXMLデータ・ストリーム1514に格納し、XMLデータ・
ストリーム1514を出力する。その後、クライアントは、XMLデータ・スト
リーム1514をゲート1504に渡すことができる。ゲート1504は、その
後、XMLデータ・ストリーム1514をXMLメッセージ1516にパッケー
ジして、メッセージ1516をサービス1502に送る。
【0398】 XMLメッセージ1524をサービス1502から受け取った後、ゲート15
22はメッセージ1524からXMLデータ・ストリーム1522を抽出し、デ
ータ・ストリーム1522をクライアント1500に渡す。クライアント150
0は、JVM XMLコンパイラ/逆コンパイラAPI 1530を呼び出して
、API 1530にXMLデータ・ストリーム1522を渡す。その後、AP
I 1530はXMLデータ・ストリーム1522を逆コンパイルして、Jav
aオブジェクト1520およびその他のオブジェクトをそのオブジェクト・グラ
フに出力し、オブジェクトをクライアント1500に返す。
【0399】 図35bは、Javaオブジェクト1510を送るときにJVM XMLコン
パイラ/逆コンパイラAPI 1530がゲートによって呼び出される場合の他
の実施形態を示している。クライアント1510は、Javaオブジェクト15
10をゲート1504に渡す。ゲート1504は、オブジェクト1510をAP
I 1530に渡し、オブジェクトをコンパイルしてXML表現を出力し、その
XML表現をXMLデータ・ストリーム1514に格納し、XMLデータ・スト
リーム1514を出力する。ゲート1504は、その後、XMLデータ・ストリ
ーム1514をXMLメッセージ1516にパッケージして、メッセージ151
6をサービス1502に送る。
【0400】 XMLメッセージ1524をサービス1502から受け取った後、ゲート15
22はメッセージ1524からXMLデータ・ストリーム1522を抽出し、デ
ータ・ストリーム1522をJVM XMLコンパイラ/逆コンパイラAPI
1530に渡す。その後、API 1530はXMLデータ・ストリーム152
2を逆コンパイルして、Javaオブジェクト1520およびその他のオブジェ
クトをそのオブジェクト・グラフに出力する。そしてゲートは、Javaオブジ
ェクト1520とその他のオブジェクトをクライアント1500に送る。
【0401】 一実施形態では、JVM XMLコンパイラおよび逆コンパイラは、JVMの
統合された機能として実装することができる。他の実施形態では、XMLコンパ
イラおよび逆コンパイラは、JVMの標準拡張機能でのAPIメソッド呼び出し
で具現化することができ、そのため、コアJVMを修正する必要はない。JVM
は、JVM内で実行するプロセス(クライアントおよび/またはサービス)にJ
VM XMLコンパイラ/逆コンパイラAPI 1530を供給するため、プロ
セスはJVMによって提供されているJavaオブジェクト・コンパイル/逆コ
ンパイル機能にアクセスすることができる。一実施形態では、プロセスがオブジ
ェクト・コンパイル/逆コンパイルを利用するために、そのプロセスで実行され
るJVMにJVM XMLコンパイラ/逆コンパイラ機能とAPI 1530を
備える必要がある。リフレクションとシリアライゼーションを使用してオブジェ
クトを変換して送るメソッドは、通常、JVMから切り離された別のアプリケー
ションで実装される。オブジェクトの推移的閉包(trasitive closure)を動的に
解析するときに、アプリケーション側がJVMに繰り返しアクセスし、一度にフ
ィールド1つずつオブジェクトを取り出す必要がある。この作業は、遅くかつや
っかいなプロセスになりがちであり、またアプリケーションとJVMコードが大
量に必要になる。
【0402】 JVM内にJavaオブジェクト・コンパイル/逆コンパイル機能を実装する
ことが好都合なのは、JVMがすでにオブジェクト・グラフの概念、および内容
を理解しているからである。そこで、コンパイル/逆コンパイル機能で、XML
表現を出力するためのオブジェクト・グラフの解析とオブジェクト・グラフを出
力するためのXML表現の解析にJVMの知識を活用(そして、コードを再利用
し)することができる。したがって、コンパイル/逆コンパイル機能では、リフ
レクションとシリアライゼーションを使用するオブジェクト送出メソッドの場合
のように、JVMによって提供される機能を複製してはならない。これにより、
コンパイル/逆コンパイル機能のコード占有領域を、リフレクションおよびシリ
アライゼーションを使用するオブジェクト送出メソッドと比べて小さくすること
ができる。また、オブジェクトは、JVM XMLコンパイラ/逆コンパイラA
PIを1回呼び出すだけでコンパイルまたは逆コンパイルすることができる。
【0403】 さらに、オブジェクトのコンパイル逆コンパイルをJVMに統合することによ
り、オブジェクトのコンパイルおよび逆コンパイルを、リフレクションおよびシ
リアライゼーションを使用したメソッドよりも高速に実行することができる場合
があるが、それは、リフレクションおよびシリアライゼーションで実装されたオ
ブジェクト・トラバーサル・モデルでは、JVMの外部にあるコードはJava
オブジェクトの構造またはグラフを認識せず、オブジェクト・グラフをトラバー
スして、引き離し、最終的に、JVMを繰り返し呼び出してコンパイル(および
逆コンパイルのための反転プロセス)を実行する必要があるからである。このプ
ロセスは、コードの外部で、JVMの呼び出しを繰り返し実行する必要があるた
め、遅くなることがある。ここで説明したように、コンパイルおよび逆コンパイ
ル機能をJVMに統合することにより、JVMの外部のコードからJVMへ繰り
返し呼び出しを行わなくて済むようになる。一実施形態では、オブジェクトは、
JVM XMLコンパイラ/逆コンパイラAPIを1回呼び出すだけでコンパイ
ルまたは逆コンパイルすることができる。
【0404】 一実施形態では、コンパイラ/逆コンパイラ機能は分散コンピューティング環
境におけるサービスとして実装できる。サービスは、スペース内でサービス通知
をパブリッシュする。分散コンピューティング環境内のプロセスは、サーチまた
は発見サービスを使用して、コンパイル/逆コンパイル・サービスを特定するこ
とができる。このプロセス(サービスのクライアント)は、次に、XML表現に
コンパイルするJavaオブジェクトおよび/またはJavaオブジェクトに逆
コンパイルするXML表現サービスに渡すことによりそのサービスを使用できる
。Javaオブジェクトにコード(オブジェクトのメソッド)およびデータを含
めることができる。オブジェクトのコードは、非一時的でなく、オブジェクトが
作成された後このコードは変更されない。ただし、オブジェクトのデータは一時
的な場合がある。同じJavaクラスから作成された2つのオブジェクトは、同
一のコードを含んでいても、2つのオブジェクト内のデータが異なることがある
。一実施形態では、コンパイル機能はJavaオブジェクトのデータをオブジェ
クトのXML表現にコンパイルするが、XML表現の中にオブジェクトの実際の
コードが含まれない場合がある。一実施形態では、オブジェクトに関する情報を
コンパイルされたXML表現の中に挿入し、そのオブジェクトのコードの再作成
方法を受取側に通知するようにできる。XML表現をXMLデータ・ストリーム
に格納し、受け取り側プロセス(クライアントまたはサービス)に(たとえば、
メッセージで)送ることができる。受け取り側プロセスは、XMLデータ・スト
リームを逆コンパイル機能に渡すことができる。逆コンパイル機能は、XMLデ
ータ・ストリームを逆コンパイルして、そのデータを含むJavaオブジェクト
を出力することができる。一実施形態では、オブジェクトのコードは、XML表
現に含まれるオブジェクトに関する情報を使用して逆コンパイル機能により再現
することができるが、それはオブジェクトのコードが静的に定義され、そのオブ
ジェクトを受け取るJVMがオブジェクトについての情報を利用して(必要なら
ば)そのコードを再現することができるからである。
【0405】 一実施形態では、コンパイル機能によって出力されたオブジェクトのXML表
現に、にJavaオブジェクトのデータおよびそのJavaオブジェクトに関す
る情報を格納することができる。その情報は、Javaオブジェクトのクラス情
報を含むことができる。オブジェクト・シグネチャを情報に含め、そのシグネチ
ャを利用して、オブジェクトのクラスなどを識別することができる。逆コンパイ
ル機能では、Javaオブジェクトに関する情報を使用してJavaオブジェク
トのコードを再作成し、XMLデータ・ストリームからデータをJavaオブジ
ェクトに逆コンパイルすることができる。したがって、逆コンパイルされたデー
タとオブジェクトを記述している情報から受け取り側クライアントまたはサービ
スを実行しているJVM上でコードとデータを含む完全なオブジェクトを再現す
ることができる。一実施形態では、オブジェクトを記述する情報を1つまたは複
数のXMLタグの中に格納することができる。一実施形態では、XMLデータ・
ストリームを受け取るクライアントまたはサービスはオブジェクトを記述するX
MLスキーマを含むことができ、またXMLスキーマを使用して、逆コンパイル
されたデータとそのオブジェクトに関する情報からJavaオブジェクトを再構
成することができる。逆コンパイル・プロセスは、オブジェクト・グラフを再帰
的にたどり、オブジェクトによって参照されているオブジェクトを再構成するが
、この作業は、XMLデータ・ストリームから参照されているオブジェクトのデ
ータを逆コンパイルし、そのXMLデータ・ストリーム内の参照されているオブ
ジェクトに関する情報から参照されているオブジェクトのコードを再作成するこ
とで行う。
【0406】 一実施形態では、コンパイル機能によって出力されたオブジェクトのXML表
現に、オブジェクトのデータおよびオブジェクトのコードを識別する情報を格納
することができる。一実施形態では、オブジェクトのコードを記述する情報をX
MLデータ・ストリーム内の1つまたは複数のXMLタグの中に格納することが
できる。受け取ると、逆コンパイル機能はXMLデータ・ストリームからのコー
ドに関する情報を使用してJavaオブジェクトのコードを再作成し、XMLデ
ータ・ストリームからオブジェクトのデータを逆コンパイルすることができる。
したがって、逆コンパイルされたデータとオブジェクトのコードを記述している
情報から受け取り側クライアントまたはサービスを実行しているJVMでコード
とデータを含む完全なオブジェクトを再現することができる。
【0407】 オブジェクトのXML表現を使用して分散コンピューティング環境内のエンテ
ィティ(通常、クライアントとサービス)間でオブジェクトを転送するシナリオ
を説明のため取り上げる。これらのシナリオは、例であり、制限することを意図
していない。
【0408】 第1のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をクライアントに送る。クライアントは、XMLコンパイラ/逆コン
パイラを使用してXML表現を逆コンパイルし、オブジェクト内のデータに対し
操作を実行し、後でXMLコンパイラ/逆コンパイラを使用してそのオブジェク
トをオブジェクトのXML表現にコンパイルし、そのオブジェクトのXML表現
をサービスに返す。
【0409】 第2のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をクライアントに送る。次に、クライアントはXML表現を他のサー
ビスに送り、これはXMLコンパイラ/逆コンパイラを使用してXML表現を逆
コンパイルしてオブジェクトを再生成し、クライアントから(場合によってはデ
ータを修正する)要求があったときにオブジェクトに対し操作を実行し、XML
コンパイラ/逆コンパイラを使用してその修正されオブジェクトをそのXML表
現に再コンパイルし、そのオブジェクトのXML表現をクライアントに送る。
【0410】 第3のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をオブジェクト・リポジトリまたはストア・スペースに送る。サービ
スは、次に、メッセージをクライアントに送り、XML表現の位置をクライアン
トに知らせる。メッセージは、XML表現のUniversal Resour
ce Identifier(URI)を含む。その後、クライアントはストア
・スペースからオブジェクトのXML表現を取り出し、XMLコンパイラ/逆コ
ンパイラを使用してその表現を逆コンパイルしてオブジェクトを再現する。それ
とは別に、クライアントはオブジェクトのXML表現の位置を、そのオブジェク
トで実行する操作の要求とともに他のサービスに送る。その後、他のサービスは
ストア・スペースからXML表現を取り出し、XMLコンパイラ/逆コンパイラ
を使用してXML表現を逆コンパイルしオブジェクトを再現して、オブジェクト
に対し要求された操作を実行する。
【0411】 第4のシナリオでは、プロセス(クライアントまたはサービスの場合がある)
は、ストア・スペースでサービス通知をサーチして見つけることにより、分散コ
ンピューティング環境内のオブジェクト・リポジトリまたはストア・スペースを
特定することができる。プロセスは、実行時に、複数のJavaオブジェクトを
作成し、取得する。プロセスは、XMLコンパイラ/逆コンパイラを使用して、
1つまたは複数のオブジェクトをオブジェクトのXML表現にコンパイルし、ス
トア・スペース・サービスのクライアントとして、オブジェクトのXML表現を
ストア・スペースに送り、後でアクセスできるように、また他のプロセスによっ
てアクセスできるように格納する。
【0412】 オブジェクトのXML表現の逆コンパイルにおけるセキュリティ問題 スペースは、ここで説明しているように、分散コンピューティング環境でファ
イル・システムとして使用できる。システム内のファイルに対してはセキュリテ
ィをアクセス権限の形で提供する。アクセス権限は、ファイルのアクセス(開く
、読み込む、書き出すの操作)ごとにチェックされる。したがって、分散コンピ
ューティング環境でファイルのアクセス・セキュリティを実現する方法が望まれ
る。この方法はさらに、スペースに格納され、分散コンピューティング環境内の
クライアントとサービスとの間で送られるJavaオブジェクトのXML表現に
適用できる。
【0413】 一実施形態では、分散コンピューティング環境のデバイスのクライアントのユ
ーザは、最初にクライアントにアクセスしたときに識別され、認証される。一実
施形態では、ユーザは、識別と承認のためにスマート・カードなどの物理的識別
機能を提供することができる。他の実施形態では、チャレンジ応答メカニズム(
ユーザIDとパスワードなど)を使用して、識別と承認を行うことができる。さ
らに他の実施形態では、識別と承認に電子シグネチャなどの電子識別を使用する
。識別と承認に他の方法を使用することもできる。識別されて承認されると、ユ
ーザは、分散コンピューティング環境で1つまたは複数のサービスにアクセスす
ることを含む、クライアント上のさまざまな操作を実行できる。これらの操作の
ときに、上述のように、1つまたは複数のオブジェクトを作成する(ローカルで
)か、またはどこか他のところ(たとえば、サービスまたはスペース)から取得
することができる。オブジェクトは、修正して、オブジェクトのXML表現にコ
ンパイルし、ローカルで、クライアントによって格納するか、または(遷移的ま
たは永続的)ストアのためスペース・サービスに送ることができる。オブジェク
トのいくつかはサービスからオブジェクトのXML表現の形式で(サービスまた
は他のサービスで格納)受取され、これは、XMLコンパイラ/逆コンパイラに
よって逆コンパイルされ、クライアント上にオブジェクトを再作成することがで
きる。
【0414】 一実施形態では、オブジェクトのXML表現を逆コンパイルするときに、それ
ぞれのXMLメッセージをチェックし、ユーザがそのオブジェクトに対するアク
セス権限を持っていることを検証する。ユーザが適切なアクセス権限を持ってい
ない場合、XMLコンパイラ/逆コンパイラはそのユーザに対してオブジェクト
を逆コンパイルしない。一実施形態では、XMLコンパイラ/逆コンパイラによ
ってセキュリティ例外がスローされる。一実施形態では、ユーザに対しアクセス
違反が知らされる。
【0415】 オブジェクトに対し許されている作成者およびアクセス・レベル(作成者のみ
アクセス、読み取り専用、読み書き、削除、コピーなど)などのアクセス権限情
報は、オブジェクトのXML表現を含むXMLメッセージ内に埋め込むことがで
きる。アクセスの承認は、ユーザの識別と承認を行う際に決定される。たとえば
、オブジェクトは、ほとんどのユーザに対し「読み取り専用」アクセスを許可し
、オブジェクトの作成者には「読み書き」アクセスを許可する。ユーザが読み書
きアクセス権限を使用してオブジェクトにアクセスしようとし、ユーザがオブジ
ェクトを作成していなかった場合、逆コンパイル・プロセスにより、これがアク
セス違反として検出され、アクセスが不許可になり、ユーザは通知を受ける。
【0416】 一実施形態では、ユーザがクライアントを使用して完了した場合、ユーザはロ
グオフするか、またはそうでなければ、ユーザがクライアントを終了した(たと
えば、スマート・カードを削除した)ことを通知する。逆コンパイルによりクラ
イアント上に作成されたオブジェクトは、ユーザは終了したことをクライアント
が検出したときに、自動的に検出される。このため、後からのユーザが故意にま
たはうっかりそのユーザのオブジェクトにアクセスしようとしてもできない。一
実施形態では、逆コンパイルによって作成されたすべてのオブジェクトは、ユー
ザが終了したことが検出されたときに削除される。他の実施形態では、クライア
ント上に永続的に作成されたオブジェクトの少なくとも一部を格納する方法が用
意され(たとえば、アクセス権限情報を使用して)、これによりクライアントが
後でオブジェクトにアクセスしたり、オブジェクトを他のユーザに提供してアク
セスできるようにする。一実施形態では、ユーザは「スマート・カード」または
その他の物理的デバイスを使用し、クライアントへのアクセス権を取得する。ユ
ーザは、スマート・カードをクライアント・デバイスに差し込んで、セッション
を開始することができる。クライアントは、終了すると、スマート・カードを取
り出す。クライアントは、スマート・カードが取り出されたことを検出し、クラ
イアントが終了していることを検出し、その後、XML表現の逆コンパイルによ
って作成されたオブジェクトの削除へ進む。
【0417】 XMLベースのオブジェクト・リポジトリ 分散コンピューティング環境では、プロセス(サービスおよび/またはクライ
アント)には、XMLスキーマ、サービス通知、サービスによって生成された結
果、JavaオブジェクトのXML表現、および/または他の言語で実施された
オブジェクトなどの一時的および/または永続的記憶域があると望ましい場合が
ある。既存のオブジェクト記憶技術は、言語および/またはオペレーティング・
システム固有のものになりがちである。これらの記憶域システムは、また、組み
込み型システムなどの省スペース・システムで使用するには複雑すぎる傾向もあ
る。
【0418】 JiniのJavaSpacesは、既存のオブジェクト・リポジトリ・メカ
ニズムである。JavaSpacesは、Javaオブジェクトを格納すること
しかできず、メモリ容量に制限のある小型デバイスには大きすぎて実装できない
。JavaSpaceの各オブジェクトは、前記のようにシリアライズされ、そ
のため、リフレクションおよびシリアライゼーション手法について前述したのと
同じ制限がある。
【0419】 異機種混在の(言語またはオペレーティング・システム依存でない)、小型デ
バイスから大型デバイスまで拡張性のある、オブジェクトの一時的記憶域または
永続的記憶域を提供できる分散コンピューティング環境向けのストア・メカニズ
ムを提示する。一実施形態では、分散コンピューティング環境でのストア・メカ
ニズムは、XMLマークアップ言語で定義されているインターネットWebペー
ジまたはページ・セットとして実装することができる。XMLは、言語独立およ
びプラットフォーム独立のオブジェクト表現形式を用意し、Javaおよび非J
avaソフトウェアが言語独立オブジェクトを格納し、取り出すことができるよ
うにしている。ストア・メカニズムはWeb上にあるため、すべての型およびサ
イズ(小型から大型まで)のデバイスでストア・メカニズムにアクセスできる。
Webブラウザーを使用して、Webページとして実装されているストア・メカ
ニズムを表示することができる。Webサーチ・エンジンを使用して、Webペ
ージとして実装されているストア・メカニズム内のコンテンツをコンテンツする
ことができる。インターネット管理メカニズム(既存および将来の)およびXM
Lツールを使用して、XMLベースのストア・メカニズムを管理することができ
る。
【0420】 一実施形態では、ストア・メカニズムを使用して、XMLで作成され、表現さ
れ、またはカプセル化されたオブジェクトを格納することができる。ストア・メ
カニズムに格納できるオブジェクトの例として、それには限定されないが、XM
Lスキーマ、オブジェクトのXML表現(たとえば、上述のようにXML表現に
コンパイルされたJavaオブジェクト)、サービス通知、およびXMLでカプ
セル化されたサービス結果(データ)がある。一実施形態では、XMLオブジェ
クトの無許可アクセスを防止するために、電子シグネチャや証明書などの承認証
明書をXMLオブジェクトに付属させ、XMLオブジェクトにアクセスすること
を望んでいるクライアントがXMLオブジェクトにアクセスするための適切な承
認証明書を持つことを義務づける。一実施形態では、ストア・メカニズムは、「
スペース」の項で説明したようにスペースであってもよい。
【0421】 分散コンピューティング環境では、ストア・メカニズムはサービスである。サ
ービスとして実装されたストア・メカニズムは、「ストア・サービス」と呼ばれ
る。ストア・サービスは、スペース内で通知をパブリッシュする。スペース自体
はストア・サービスの一例である。一部のストア・サービスは一時的である。た
とえば、サービス通知を格納するスペース・サービスは一時的ストアである。他
のストア・サービスは永続的である。たとえば、サービスからの結果を格納する
ストア・サービスは永続的ストアである。
【0422】 図36は、一実施形態により分散コンピューティング環境でストア・メカニズ
ム1600および1602にアクセスするクライアント1604およびサービス
A 1606の図である。この図は、例示を目的としており、本発明の範囲に限
定することを求めていない。一実施形態では、ストア・メカニズム1600およ
び1602はそれぞれ、ウェブ・ブラウザおよび他のインターネット・ツールに
よってアクセス可能なインターネット・ウェブ・ページまたはXMLで定義され
るウェブ・ページの集合である。ストア・メカニズム1600は、XMLを使用
して実装されたオブジェクトを格納できる一時的ストアである。ストア・メカニ
ズム1602は、これもまたXMLを使用して実装されたオブジェクトを格納で
きる永続的ストアである。サービスA 1606は、一時的ストア1600でX
MLサービス通知1608をパブリッシュする。永続的ストアは、さらに、一時
的ストア1600に(または分散コンピューティング環境内の他の一時的ストア
に)XMLサービス通知をパブリッシュすることもできる。ある時点で、クライ
アント1604は、サービスA 1606によって提供される機能を必要とする
。クライアント1604は、発見および/またはルックアップ・サービスを使用
して、サービス通知1608を特定する。クライアント1604は、ここで説明
しているように、メッセージ・ゲートを構築し、サービスA 1606との通信
を開始する。クライアント1604は、1つまたは複数のXML要求メッセージ
をサービスA 1606に送る。サービスA 1606は、その1つまたは複数
の要求メッセージに応答して1つまたは複数の機能を実行する。サービスA 1
606によって実行される機能の1つまたは複数により、クライアント1604
に送る結果を出力する。
【0423】 一時的結果1610については、サービスA 1606は、XML通知161
2で結果をカプセル化し、通知1612を一時的ストア1600に(または分散
コンピューティング環境内の他の一時的ストアに)パブリッシュする。その後、
サービスA 1606は、結果1610が一時的ストア1600の通知1612
に格納されることをクライアント1604に通知するか、またはここで述べたよ
うに他のメカニズムによりクライアント1604に通知することができる。クラ
イアント1604は、その後、通知1612から一時的結果1610を取り出す
。通知1612は、一時的結果1610のフォーマット、コンテンツ、型などを
記述するXMLスキーマを含む。結果は、XMLでカプセル化される。たとえば
、XMLタグを使用して、次のようにデータの一部を記述することができる。 <XML tag1> <data1> <XML tag2> <data2> ....
【0424】 永続的結果1618については、サービスA 1606はサービスまたはここ
で説明されているようなその他のメカニズムを使用して、永続的ストア1602
のXMLサービス通知1616を特定し、永続的結果を格納するため永続的スト
ア1602を特定する。それとは別に、クライアント1604は、サービス通知
1616を特定することにより、すでに永続的ストア1602を特定しており、
永続的結果1618の記憶場所のUniversal Resource Id
entifier(URI)をXMLメッセージでサービスAに送る。一実施形
態では、永続的結果1618は、XMLで定義され、Webブラウザによりアク
セス可能なインターネットWebページまたはWebページ・セットに格納され
る。その後、サービスA 1606は、永続的ストア1602に永続的結果16
18を格納する。続いてサービスA 1606は、永続的結果1618のXML
通知1616を一時的ストア1600に(または分散コンピューティング環境内
の他の一時的ストアに)パブリッシュし、通知1616の位置をクライアント1
604に返す。通知1616は、永続的結果1618のフォーマット、コンテン
ツ、型などを記述するXMLスキーマを含む。結果は、前述のようにXMLでカ
プセル化される。通知はさらに、永続的結果1618のURIを含む。クライア
ント1604は、次に、通知1616を取り出し、これを使用して永続的結果1
618を特定し、取り出す。それとは別に、サービスA 1606は、永続的結
果1618の通知をパブリッシュせず、その代わりに、クライアント1604が
通知をルックアップせずに結果にアクセスできるように、永続的結果1618の
URIをクライアント1604に返す。いくつかの実施形態では、一時的ストア
1600に示されるさまざまな通知はそれぞれ、異なる一時的ストアまたはスペ
ースに格納できることに注意されたい。
【0425】 したがって、ストア・メカニズムは、分散コンピューティング環境内でXML
ベースのインターネットWebページとして実装することができる。これらのス
トア・メカニズムは、分散コンピューティング環境内のさまざまなデバイスに実
装され、クライアント(他のサービスでもよい)がストア・メカニズムを特定し
使用できるようにするサービス通知を実現する。ストア・メカニズムを管理する
ために使用できるWebおよびXMLツールは既存のものでもこれからのもので
もよい。ストア・メカニズムは、XMLで実装されたまたはカプセル化されたさ
まざまな型のオブジェクトを格納できる。クライアントは、省スペース・デバイ
スからスーパー・コンピュータに至るまで実質的にいかなるサイズのデバイスの
クライアントであっても、ストア・メカニズムにアクセスして、インターネット
上でさまざまなオブジェクトを格納し取り出すことができる。クライアントは、
XMLによって定められている言語独立の記憶形式であれば、Javaアプリケ
ーションでも非Javaアプリケーションでもよい。一時的または永続的オブジ
ェクト・リポジトリは、分散コンピューティング環境内のファイル・システムに
対応しており、ここで説明しているように、アクセス・チェックおよびその他の
セキュリティ・メカニズムの機能を備える。
【0426】 JavaオブジェクトをXMLドキュメントに動的に変換する 一実施形態では、分散コンピューティング環境はオブジェクト・クラス・イン
スタンスをXMLドキュメントに変換しそれを表現するメカニズムを備える。ク
ラス・インスタンスの表現を他のサービスに送るために、オブジェクトは変換さ
れXMLドキュメントとして表現される。一実施形態では、XMLドキュメント
を受け取ると、プログラムがドキュメントによって表現されたオブジェクトに対
応するクラス・インスタンスをインスタンス化する。一実施形態では、オブジェ
クトはJavaオブジェクトであり、プログラムはJavaプログラムである。
【0427】 一実施形態では、中間形式を使用してXMLドキュメントを表現し、この中間
形式を動的に処理して、XMLドキュメントを表現するクラス・インスタンスを
生成することができる。クラスによって、一組のインスタンス変数とインスタン
ス変数にアクセスするための「セットアンドゲット」メソッドを定義する。対応
するXMLドキュメントを一組のタグとして定義し、インスタンス変数ごとに1
つのタグを割り当てることができる。ドキュメントの解析を行うときに、ハッシ
ュ可能な表現を構築し、ハッシュ鍵にインスタンス変数名を含め、値にインスタ
ンス変数値を入れる。複合インスタンス変数が複数出現する場合、列挙型値をそ
のハッシュ・テーブルに格納することができる。一実施形態では、プロセスをイ
ンスタンス変数について複合型のうちただ1つのレベルに制限し、要素を均質的
なものとすることができる。
【0428】 一実施形態では、保護されたインスタンス変数を、対応するクラスの名前を含
めることができるクラス定義に追加することができる。XMLドキュメント表現
ではクラス名をドキュメント型として使用できる。ドキュメントにクラス名を埋
め込むと、オブジェクトを再構築するときに、正しいクラス・インスタンスのイ
ンスタンス化を動的に行うことができる。
【0429】 一実施形態では、ドキュメントを受け取った後、クラス・インスタンス・ジェ
ネレータ・メソッドを使用して、クラス型を抽出し、ドキュメントを解析して中
間ハッシュ・テーブル表現を生成することができる。ジェネレータ・メソッドは
、新しいクラス・インスタンスをインスタンス化し、セット・メソッドを使用し
てハッシュ・テーブル値からインスタンス・オブジェクトを初期化することがで
きる。一実施形態では、クラス型が定義され、ハッシュ・テーブルは汎用なので
、このプロセスは、上のクラス定義にマッチするクラスに対して実行される。一
実施形態では、反転プロセスも実行することができ、クラス・インスタンスを処
理して中間ハッシュ・テーブルの表現にし、ジェネレータ・メソッドを使用して
ハッシュ・テーブル表現からXMLドキュメントを出力することができる。この
プロセスはさらに、上の指定にマッチするXMLドキュメントについて実行でき
るように汎用なものとすることもできる。
【0430】 このメソッドは、Javaクラス・オブジェクトに制限する意図はなく、他の
プログラミング言語のクラス・オブジェクト・インスタンスを含む、他のコンピ
ュータベースのオブジェクトにも適用される。さらに、このメソッドは、オブジ
ェクト・インスタンスのXML表現に制限する意図はなく、他のデータ表現言語
(HTMLなど)など他の表現形式をXMLの代わりに使用することもできる。
【0431】 XMLベースのプロセスの移行 分散コンピューティング環境では、配布されるアプリケーションの配布および
管理を行える。たとえば、分散コンピューティング環境には、モニタ、プリンタ
、キーボード、およびPDA、携帯電話などのモバイル・デバイスには通常装備
されないさまざまなその他の入出力デバイスを備えるステーションとドッキング
可能なモバイル・クライアントが含まれる。これらのモバイル・クライアントは
、1つまたは複数のアプリケーションを実行し、分散コンピューティング環境に
おいて、一方のステーションから他方のステーションに移行することができる。
したがって、分散コンピューティング環境の一実施形態では、分散コンピューテ
ィング環境内の一方のノードのモバイル・クライアントから他方のノードの同じ
モバイル・クライアントまたは他方のモバイル・クライアントに現在状態全体を
保持したまま実行中アプリケーション(プロセス)を移行する方法を提示する。
【0432】 一実施形態では、クライアントまたはサービス上で実行しているプロセスの状
態のXML表現を作成する。一実施形態では、プロセスの状態のXML表現は、
プロセスが実行されているデバイスおよび/または仮想マシンの計算状態を含み
、デバイスおよび/または仮想マシンの計算状態はデバイスおよび/または仮想
マシン上のプロセスの実行状態に関する情報を含む。プロセス状態は、それに限
定されないが、スレッド、スレッドによって参照されているすべてのオブジェク
ト、プロセスの実行中に作成される一時的変数、オブジェクト、およびそのデー
タなどである。一実施形態では、プロセスによってスペースから得られ、プロセ
スが実行されているデバイスおよび/または仮想マシンの外部にある外部サービ
スへのアクセス権の付与を表す1つまたは複数のリースを記述するデータは、X
MLで表され、プロセス状態とともに格納される。リースについては、本書の「
リース」の項で詳述する。
【0433】 ここで説明しているようにXMLおよびメッセージング・システムを使用する
と、プロセスの状態のXML表現を分散コンピューティング環境内のノードから
ノードへ、たとえばインターネット上のノードからノードへ移動することができ
る。プロセスの状態のXML表現はさらに、上述のようにXMLベースのストア
・メカニズムによりXMLオブジェクトとして格納することができ、後から、ス
トア・メカニズムから取り出して、同じノード上、または分散コンピューティン
グ環境内の異なるノード上でプロセスの実行を再開することができる。一実施形
態では、ここで説明しているようにXMLオブジェクトのコンパイル/逆コンパ
イル・プロセスを使用して、プロセスの状態のXML表現を作成(コンパイル)
し、プロセスの状態のXML表現を逆コンパイルすることによりプロセスの状態
を再生成することができる。
【0434】 このメカニズムを使用することにより、プロセスの状態のXML表現を初期ノ
ードから、スペースなどのXMLベースのストア・メカニズムに格納することが
できる。それ以降、他のノードでプロセスの格納済みの状態を特定し、プロセス
の状態をダウンロードし、状態が格納されたときに実行されていた時点のダウン
ロードされた格納済みの状態からプロセスを再開できる。プロセス状態はXML
形式で格納されるので、ここで説明しているXMLベースのストア・メカニズム
でXMLオブジェクトを格納し、特定し、取り出すためのツールおよびサーチ機
能を使用して、プロセスの移行を可能にすることができる。プロセスの状態の格
納されているXML表現の通知をパブリッシュする際に、同じノードまたは別の
ノード上で実行されているプロセスの再開するクライアントが格納されている状
態を特定し、アクセスできるようにする。
【0435】 プロセスの状態のXML表現をXMLベースの永続的ストア・メカニズムに格
納し、プロセスの永続的スナップショットを作成できる。これは、たとえば、ノ
ードを故意にシャットダウンしたり、または故意でなくシャットダウンをしたた
めノード上のプロセスが中断した後、ノード上のプロセス実行を再開するための
方法として使用できる。プロセスの格納されている状態の通知をパブリッシュし
、クライアントが分散コンピューティング環境内の格納されている状態を特定で
きるようにする。一実施形態では、プロセスの格納されている状態のXML表現
の無許可アクセスを防止するために、電子シグネチャや証明書などの承認証明書
を格納されている状態に付属させ、格納されている状態からプロセスを再開する
ことを望んでいるクライアントが格納されている状態にアクセスするための適切
な承認証明書を持つことを義務づける。
【0436】 図37は、一実施形態によりプロセスの状態のXML表現を使用するプロセス
移行を示す図である。プロセスA 1636aが、ノード1630上で実行され
ている。プロセスA 1636aは、クライアントまたはサービスである。プロ
セスA 1636aの実行中のある時点に、プロセスA 1636aの実行の状
態を捕捉し、プロセスA 1638のXMLでカプセル化された状態で格納する
。ノード1630上のプロセスA 1636aの実行は停止させられる。後で、
ノード1632は、プロセスA 1638のXMLでカプセル化された状態を特
定し、ノード1632上でプロセスA 1636bを再開するためにそれを使用
する。プロセスAを再開するには、格納されている状態1638を使用してスレ
ッド実行を再開し、一時変数を再計算し、リースされているリソースを再確立し
、プロセス1638の格納されているXML状態で記録されているとおりに実行
を再開するのに必要な他の機能を実行する。
【0437】 分散コンピューティング環境でXMLベースのプロセス移行を使用する一例を
以下に示すが、制限することを意図していない。モバイル・クライアント・デバ
イスは、ノード1630に接続され、プロセスA 1636aを実行している。
モバイル・クライアント・デバイスのユーザは、ノード1630でプロセスA
1636aの実行を停止し、後で、別の(または同じ)ノードから実行を再開し
ようと考えている。一実施形態では、ユーザは、プロセスA 1636aの状態
を格納し、後で実行再開すること望んでいるかどうかを判別するよう求められる
ことがある。ユーザが肯定的に答えた場合、プロセスのXMLでカプセル化され
た状態を捕捉し、永続的ストア1634に格納する。後から、ユーザはノード1
632でモバイル・コンピューティング・デバイスに接続する。一実施形態では
、ユーザはプロセス1636bを実行し、[Resume from Stor
ed State]オプションを選択する。次に、ノード1632は、プロセス
A 1638のXMLでカプセル化された状態をサーチして特定し、ダウンロー
ドし、それを使用してプロセスA 1636bを再開する。それとは別に、プロ
セスはそれ自体、他のノード上で「サスペンド」していたことを認識し、ユーザ
の入力がなくても格納された状態から再開する。
【0438】 アプリケーション ユーザがリモートの場所からネットワーク・データにアクセスし、ユーザがブ
ラウザにアクセスした場合にリモート・データをユーザにローカル・データのよ
うに見せかける技術が存在する。ただし、このような技術では、クライアント・
デバイスの位置近くのネットワークにクエリを実行する自動的インフラストラク
チャが実現されない。クライアント・デバイス近くにあるネットワークおよびサ
ービスに関する情報を発見するメカニズムがあることが望ましい。たとえば、こ
のようなメカニズムを使用する際に、クライアント・デバイスの一定距離範囲(
半径)内にあるレストラン、天候、地図、交通、映画情報などに関する情報を特
定し、目的の情報をクライアント・デバイスに表示することができる。このメカ
ニズムを使用する例として、ローカル環境、たとえば映画館の中で現在上映中作
品のタイトルや上演時間を表示したり、レストランでメニュー選択と価格を表示
するために、サービスを自動的に特定することができる携帯電話が考えられる。
ここで説明しているような分散コンピューティング環境では、このようなメカニ
ズムを使用してクライアント・デバイスに近接するローカル情報および/または
サービスを含むスペースを発見することができる。このメカニズムはさらに、他
の分散コンピューティング環境、たとえば、Sun Microsystems
,Inc.のJiniシステムで応用することができる。
【0439】 一実施形態では、モバイル・クライアント・デバイスは、グローバル・ポジシ
ョニング・システム(GPS)機能と無線接続技術を備える。ローカル分散コン
ピューティング・ネットワークを実現できる。たとえば、都市に、全市内分散コ
ンピューティング環境を築くことができる。他の例としては、ローカル分散コン
ピューティング環境を備えるショッピング・モールがある。ローカル分散コンピ
ューティング・ネットワークは、クライアント・デバイスが分散コンピューティ
ング環境に接続し、ローカル環境内でサービスおよびデータを発見することがで
きる発見メカニズムを備える。たとえば、環境内の1つまたは複数のデバイスが
無線接続技術を備え、これによりモバイル・クライアント・デバイスはネットワ
ークに接続し、前述のXMLメッセージング・システムを介して発見メカニズム
にアクセスすることができる。ローカル分散コンピューティング環境は、サービ
スおよび/またはデータをモバイル・クライアントから利用できるようにするた
めの通知を使用する1つまたは複数のスペースを備える。たとえば、全市内分散
コンピューティング環境は、モール、映画館、ローカル・ニュース、ローカルの
天候、交通などのエンティティを表すスペースを含む。スペースは、スペースが
表すエンティティのサービスおよびそれに関する情報にアクセスするための個々
のサービスおよび/またはデータ通知を含む。発見メカニズムは、ローカル分散
コンピューティング環境、環境内のスペース・サービスによって表されるエンテ
ィティ、および/または環境内のスペースで通知されるさまざまなサービスの1
つまたは複数のGPS位置測定機能を含む。
【0440】 一実施形態では、ローカル分散コンピューティング・ネットワークへの有線接
続が提供される。この環境では、モバイル・クライアント・デバイスを使用する
ユーザは、有線接続の「ドッキング・ステーション」を使用してネットワークに
直接「プラグイン」することができる。有線接続の例としては、これらに限定さ
れないが、ユニバーサル・シリアル・バス(USB)、FireWire、およ
びツイストペア・インターネットなどがある。一実施形態では、トーキング・ス
テーションはさらに、モバイル・クライアント・デバイス用のキーボード、マウ
ス、およびディスプレイなどの入出力機能を備える。この実施形態では、モバイ
ル・クライアント・デバイスの位置が、ドッキング・ステーションによりルック
アップ・メカニズム又は発見メカニズムに送られる。
【0441】 一実施形態では、モバイル・クライアント・デバイスは、分散コンピューティ
ング・ネットワークに接続する。モバイル・クライアント・デバイスのユーザが
分散コンピューティング・ネットワークの無線通信到達範囲内でナビゲートする
ときに、モバイル・クライアント・デバイスは、常時、またはさまざまな間隔で
、ローカル・ルックアップ・メカニズム又は発見メカニズムへの入力として位置
ベクトルを供給する。モバイル・クライアント・デバイスは、モバイル・クライ
アントに組み込まれている、または関連付けられているGPSシステムから位置
ベクトルを取得する。一実施形態では、クライアントは位置情報を(たとえば、
XMLメッセージングを介して)ここで説明したスペース特定メカニズムなどの
ローカル・サービス発見メカニズムに送る。たとえば、クライアントは、クライ
アントの位置の特定の範囲内でサービスを提供するスペースの発見を指定するス
ペース発見プロトコルを実行するか、またはクライアントはクライアントの近傍
に対して提供されるサービスを通知するスペースをサーチするためのスペース・
サーチ・サービスをインスタンス化する。
【0442】 モバイル・クライアント・デバイスが分散コンピューティング環境内のスペー
スの指定された範囲内に移動したときに、そのスペース内に格納されているサー
ビスおよび/またはデータをモバイル・クライアント・デバイスから利用できる
ようにする。クライアント・デバイスが定期的にその位置を発見メカニズムに伝
える実施形態では、ローカル・サービスおよび/またはデータは自動的に、クラ
イアントのユーザから利用できるようになる。一実施形態では、モバイル・クラ
イアント・デバイスのユーザは、スペースの指定された範囲を調べる。たとえば
、ユーザは選択により、現在の位置から1マイルの範囲内にあるすべてのレスト
ランを表示することができる。それとは別に、ローカル分散コンピューティング
・ネットワークの構成で範囲を指定することもできる。たとえば、市境から3マ
イル以内にいるすべてのユーザにそのサービスを提供するように、全市内分散コ
ンピューティング・ネットワークを構成することができる。一実施形態では、ス
ペースによって提供されるさまざまなサービスおよび/またはデータを表す視覚
的インジケータ、たとえば、アイコンをモバイル・クライアント・デバイスに表
示することができる。そこで、クライアントは、表示されているサービスおよび
/またはデータの1つまたは複数にアクセスすることができる。一実施形態では
、2つまたはそれ以上のスペースから得た情報を同時に、モバイル・クライアン
ト・デバイスに表示することができる。一実施形態では、ユーザは検出するサー
ビスおよび/またはデータを選択することができる。たとえば、ショッピング・
モールでは、モバイル・クライアント・デバイスを携帯するユーザは選択により
、モール内のすべての靴屋を表示することができる。
【0443】 一実施形態では、コードの実行で使用される実行可能コードおよび/またはデ
ータをモバイル・クライアント・デバイスにダウンロードし、ユーザがスペース
内のサービスによって提供されるアプリケーションを実行するようにできる。た
とえば、映画を見に行く人は、モバイル・クライアント・デバイスがあれば、映
画館のスペース内のサービスから対話的な映画レビューをダウンロードし、自分
が見ている映画に関するフィードバックをリアルタイムで送り返すことができる
。一実施形態では、別のところで説明しているように、XMLオブジェクト・コ
ンパイル/逆コンパイル・メカニズムを使用し、コードおよび/またはデータを
コンパイルしてコードおよび/またはデータのXML表現を出力したり、XML
表現を逆コンパイルしてコードおよび/またはデータをモバイル・クライアント
・デバイスに再現することができる。一実施形態では、プロセスの実行可能バー
ジョンがすでにモバイル・クライアント・デバイスに存在し、プロセスの格納さ
れた状態をモバイル・クライアント・デバイスにダウンロードすることにより、
ユーザが格納されている状態を使用してプロセスを実行することができる。一実
施形態では、プロセスの実行可能バージョンがすでにモバイル・クライアント・
デバイスに存在し、プロセスのデータをモバイル・クライアント・デバイスにダ
ウンロードできる。たとえば、データをダウンロードして、モバイル・クライア
ント・デバイスのビューア・プログラムで表示することができる。一実施形態で
は、プロセスを実行するためのコードおよびデータを含むプロセスの実行可能バ
ージョンをダウンロードして、モバイル・クライアント・デバイスで実行するこ
とができる。一実施形態では、モバイル・クライアント・デバイスに代わってサ
ービスがリモートからアプリケーションを実行し、サービスとクライアントが、
データおよびオプションでデータを記述するXMLスキーマを含むXMLメッセ
ージを互いにやり取りすることができる。一実施形態では、サービス上で一部の
コードを実行し、クライアント上で一部のコードを実行することができる。たと
えば、サービスは、数値計算などのデータ・セットに対する演算を行うコードを
実行することができる。モバイル・クライアント・デバイスは、XMLメッセー
ジでサービスからクライアントに渡されたデータの一部を表示し、モバイル・ク
ライアント・デバイスのユーザがデータを入力したり選択したり、またデータを
サービスに送ってデータに対し1つまたは複数の演算を実行できるようにするコ
ードを実行する。
【0444】 一実施形態では、モバイル・クライアント・デバイスは、分散コンピューティ
ング・ネットワーク内で2つまたはそれ以上のサービスに同時に接続することが
できる。これらのサービスは、独立に使用することも、また一連のタスクを実行
するのと合わせて使用することもできる。たとえば、1つのサービスをリモート
・クライアント・デバイスが使用してデータ・セットに対する演算を特定しかつ
/または実行し、第2のサービスを使用してデータ・セットを印刷する。
【0445】 図38は、一実施形態によりローカルの分散コンピューティング・ネットワー
クでスペースにアクセスするモバイル・クライアント・デバイスの図である。G
PS対応モバイル・コンピューティング・デバイス1700のユーザは、ローカ
ル分散コンピューティング環境の近傍内に移動する。モバイル・クライアント・
デバイス1700は、GPS1702によって提供される位置をローカル分散コ
ンピューティング・ネットワーク内の1つまたは複数の発見メカニズム1706
に送る。発見メカニズム1706は、モバイル・クライアント・デバイスの提供
されたGPS位置と環境内のスペースの所定の位置を使用して、ユーザがいつ1
つまたは複数のスペースの指定された範囲内または環境内の1つまたは複数のス
ペースが対応する近傍内を移動するかを判別する。たとえば、発見メカニズム1
706は、モバイル・クライアント・デバイス1700がスペース1704の範
囲内を移動したことを判別できる。発見メカニズム1706は、そこで、スペー
ス1704からモバイル・クライアント・デバイス1700に1つまたは複数の
通知1710を送る。それとは別に、発見メカニズム1706は、スペース17
04またはスペース1704内の1つまたは複数の通知のUniversal
Resource Identifier(URI)をモバイル・クライアント
・デバイス1700に送る。サービス通知1708で通知されるさまざまなサー
ビスおよび/またはコンテンツ通知1710で表されるデータを表すアイコンを
、モバイル・クライアント・デバイス1700に表示することができる。そこで
、ユーザはモバイル・クライアント・デバイスで実行するかつ/または表示する
ため通知されたサービスおよび/またはデータのうち1つまたは複数を選択でき
る。モバイル・コンピューティング・デバイス1700は、サービスを提供する
デバイスと無線接続を確立し、そのデバイスと通信して、前述のようにXMLベ
ースのメッセージング・システムを使用してサービスを実行する。それとは別に
、モバイル・コンピューティング・デバイス1700のユーザはドッキング・ス
テーションでデバイスに接続する。ドッキング・ステーションの位置は、ユーザ
がルックアップ・メカニズムまたは発見メカニズム1706と、ドッキング・ス
テーションの通知を含むスペースを使用してユーザの指定範囲内にあるストッキ
ング・ステーションの位置を発見し利用できるかどうかを判別することにより、
発見される。発見メカニズム1706は、さらに、モバイル・クライアント・デ
バイス1700がスペース1714の選択された範囲内に移動したときにそのこ
とを検出できる。さまざまなサービス通知1718およびコンテンツ通知172
0をモバイル・クライアント・デバイス1700のユーザから利用できるように
する。モバイル・クライアント・デバイスがスペースの1つの指定範囲の外に出
たときに、そのスペースによって提供される通知はモバイル・クライアント・デ
バイス1700のディスプレイから削除される。一実施形態では、スペース上の
通知は、提供されるサービスまたはデータの位置情報を含む。したがって、発見
メカニズム1706は、モバイル・クライアント・デバイス1700がスペース
1718上で通知された特定のサービスの指定範囲内をいつ移動したかを判別し
、モバイル・クライアント・デバイス1700の位置に基づいてサービス通知を
送る(または削除する)。
【0446】 コンピューティング・デバイスは、同時にパワーと機能を獲得する一方でダウ
ンサイジングを進めている。ストレージ・デバイス、CPU、RAM、I/O
ASICS、電源など、サイズが小さくなり、小型のモバイル・クライアント・
デバイスにフルサイズのパソコンの機能の多くを搭載できる。しかし、コンピュ
ータ・システムのコンポーネントのいくつかは、人的要因およびその他の要因の
せいで簡単には縮小できない。こうしたコンポーネントとしては、それらに限定
されないが、キーボード、モニタ、スキャナ、およびプリンタがある。一部のコ
ンポーネントのサイズを縮小することに限度があるため、モバイル・クライアン
ト・デバイスはパソコンの役割を真に肩代わりすることはできない。
【0447】 一実施形態では、ユーザがモバイル・クライアント・デバイスを使い、人的要
因やその他の要因によりモバイル・クライアント・デバイスでは利用できないコ
ンポーネントに接続し使用できるようにするドッキング・ステーションが提示さ
れている。たとえば、ドッキング・ステーションは、空港や図書館などの公共の
場所に備えることができる。ドッキング・ステーションは、モニタ、キーボード
、プリンタ、またはモバイル・クライアント・デバイスを使用するユーザ用のそ
の他のデバイスを備える。一実施形態では、ドッキング・ステーションは、ユー
ザが接続しているモバイル・クライアント・デバイスなどの実際のコンピューテ
ィング・デバイスの助けがないと完全には機能しない。ドッキング・ステーショ
ンは、さまざまな入出力機能などのサービスを、モバイル・クライアント・デバ
イスの計算能力を使用するクライアントに提供する。
【0448】 ドッキング・ステーションは、1つまたは複数の接続用オプションをモバイル
・クライアント・デバイスに提供する。接続オプションには、無線接続や有線接
続がある。無線接続の例としては、それらに限定されないが、ノートブック・コ
ンピュータのネットワーク・インターフェース・カード(NIC)で提供される
ようなIrDAなどの赤外線や、無線ネットワーク接続がある。有線接続の例と
しては、それらに限定されないが、USB、FireWire、およびツイスト
ペアEthernetなどがある。
【0449】 モバイル・クライアント・デバイスは、モバイル・クライアント・デバイスに
ついて上述したものに実質的に似た方法を使用してドッキング・ステーションの
位置を発見する。ローカル分散コンピューティング・ネットワーク内の1つまた
は複数のドッキング・ステーションの位置を発見するには、発見メカニズムを使
用して、ドッキング・ステーションの通知があるスペースを発見する。モバイル
・クライアント・デバイスは、位置を発見メカニズムに送る。一実施形態では、
発見メカニズムまたはルックアップ・メカニズムは、モバイル・クライアント・
デバイスの位置に最も近い1つまたは複数のドッキング・ステーションの位置を
返す。それとは別に、発見メカニズムまたはルックアップ・メカニズムはドッキ
ング・ステーションの通知を含むスペースのURIを返し、その後、モバイル・
クライアント・デバイスはスペースに接続して、デバイスに近いところにある1
つまたは複数のドッキング・ステーションの位置を送る。一実施形態では、モバ
イル・クライアント・デバイスは、ルックアップ・メカニズム又は発見メカニズ
ムに情報を供給し、モニタの解像度、画面サイズ、グラフィック能力、プリンタ
やスキャナなどの使用可能なデバイスなどの要求条件を指定することができる。
一実施形態では、さまざまなドッキング・ステーションの使用可能性(ドッキン
グ・ステーションを使用する他のユーザから)、コンポーネント、および能力な
どの1つまたは複数のドッキング・ステーションに関する情報をモバイル・クラ
イアント・デバイスのユーザに提供する。
【0450】 ユーザがドッキング・ステーションに接近すると請求プロトコルが開始する。
ドッキング・ステーションがその請求を受理すると、セキュリティで保護された
入出力接続が、モバイル・クライアント・デバイスとドッキング・ステーション
との間で確立される。それとは別に、ユーザはモバイル・クライアント・デバイ
スに表示されるルックアップ・メカニズム又は発見メカニズムを使用して発見さ
れた1つまたは複数のドッキング・ステーションのうちからドッキング・ステー
ションを選択する。ユーザがドッキング・ステーションを選択すると請求プロト
コルが開始し請求の持続時間中、ユーザに、ドッキング・ステーションへのセキ
ュリティで保護された排他的接続が与えられる。ユーザがドッキング・ステーシ
ョン上のセッションを終了し、ドッキング・ステーションを開放して他のユーザ
が利用できるようにするドッキング・ステーションの解放方法も定める。一実施
形態では請求プロトコルは、前述のようにドッキング・ステーション・サービス
上のリースとすることができる。
【0451】 図39aは、一実施形態により、モバイル・デバイスのユーザがドッキング・
ステーションの場所を発見することを示す図である。モバイル・クライアント・
デバイス1750は、発見メカニズム1756と接続する。モバイル・クライア
ント・デバイス1750は、GPS 1752を使用して得られた位置を発見メ
カニズム1756に送る。モバイル・クライアント・デバイス1750は、さら
に、ドッキング・ステーションの要求条件を発見メカニズム1756に送る。発
見メカニズム1756は、モバイル・クライアント・デバイス1750の要求条
件を満たすドッキング・ステーション1758の通知に対して1つまたは複数の
スペース1754をサーチする。一実施形態では、ルックアップ・メカニズム又
は発見メカニズムが、通知1758に格納されている位置情報をモバイル・デバ
イス1750の与えられた位置と比較してモバイル・デバイス1750の指定範
囲内にある1つまたは複数のドッキング・ステーションを特定する。発見メカニ
ズム1756は、そこで、モバイル・クライアント・デバイス1750の指定範
囲内にある1つまたは複数のドッキング・ステーションの位置を与える。それと
は別に、発見メカニズム1756はモバイル・クライアント・デバイス1750
に最も近いドッキング・ステーションを特定し、その位置をモバイル・クライア
ント・デバイス1750に送る。
【0452】 図39bは、一実施形態によるドッキング・ステーション1760に接続する
モバイル・クライアント・デバイス1750の図である。一実施形態では、ユー
ザはモバイル・クライアント・デバイス1750をドッキング・ステーション1
760に無線で接続する。他の実施形態では、ユーザはドッキング・ステーショ
ン1760とモバイル・クライアント・デバイス1750とを1つまたは複数の
ケーブルで接続してクッキング・ステーション1760との有線接続を確立する
。一実施形態では、モバイル・クライアント・デバイス1750のユーザはドッ
キング・ステーション1760への請求を確立する。この請求により、接続時間
中、ドッキング・ステーションへのセキュリティで保護された排他的権限を確立
する。一実施形態では請求メカニズムは、前述のようにリソース(ドッキング・
ステーション)のリース・メカニズムである。一実施形態では、ユーザは、ドッ
キング・ステーションの使用に対し対価支払いを請求される。たとえば、ユーザ
は、ドッキング・ステーションを請求するプロセスの一部としてクレジット・カ
ード番号を指定する。「メッセージ・ゲート」の項の請求書ゲートの説明を参照
のこと。いったん接続されると、ユーザはキーボード、モニタ、プリンタなど、
ドッキング・ステーション1760によって提供されるさまざまな機能を使用で
きる。ドッキング・ステーション1760はさらに、ローカル分散コンピューテ
ィング・ネットワークへの接続も含み、ドッキング・ステーション1760に接
続されているモバイル・クライアント・デバイス1750のユーザに対しネット
ワーク内の他のデバイスのサービスおよびコンテンツ通知を特定する発見サービ
スを提供しているため、ユーザは前述のように、分散コンピューティング環境内
のさまざまなサービスおよびコンテンツを特定し、使用することができる。
【0453】 ユーザは、終了すると、モバイル・クライアント・デバイス1750をドッキ
ング・ステーション1760から切断する。一実施形態ではドッキング・ステー
ションの解放メカニズムは、モバイル・クライアント・デバイス1750がドッ
キング・ステーション1750から切断されると自動的に開始する。この解放メ
カニズムにより、モバイル・クライアント・デバイス1750のユーザが確立し
たドッキング・ステーション1760の請求がクリアされる。一実施形態では、
この解放メカニズムは、ドッキング・ステーションが利用できることを発見メカ
ニズムに1756および/またはドッキング・ステーション通知1758に通知
する。
【0454】 一実施形態では、ユーザは発見メカニズムを使用せずにモバイル・クライアン
ト・デバイスをドッキング・ステーションに接続することができる。たとえば、
空港内にいるユーザは、ドッキング・ステーションで目で見て見つけ、モバイル
・クライアント・デバイスを接続する。他の例としては、複数のドッキング・ス
テーションを配置したドッキング・ステーション室を備える図書館が考えられ、
ユーザはそこで利用可能なドッキング・ステーションにアクセスすることができ
る。
【0455】 省スペースおよび/または組み込み型デバイス 単純な組み込み型または省スペース・デバイスでは、プログラムの命令を格納
し実行しようにもメモリ容量が限られている場合がある。単純な組み込み型デバ
イスは、デバイスの機能を開始するための制御入力とデバイスのステータスを報
告するための出力に制限があることを認識する必要がある。単純な組み込み型デ
バイスの一例として、スイッチとそのスイッチにより制御されるデバイスを制御
するための回路を組み込んだ「スマート」スイッチ(照明スイッチなど)がある
。スマート・スイッチは、2つの制御要求(デバイスの状態を変更する、デバイ
スの状態を要求する)を認識し、1つのステータス・メッセージ(デバイスの状
態)を送るだけでよい。スマート・スイッチは、1つまたは複数の制御システム
から制御要求を受け取り、その1つまたは複数の制御システムにステータス・メ
ッセージを報告することにより、接続されているデバイスを管理することができ
る。
【0456】 一実施形態では、分散コンピューティング環境は、分散コンピューティング環
境の完全なプロトコルを実装するのに必要なリソース(メモリなど)が足りない
小型デバイスを含めるためのフレームワーク(プロトコル)を提供する。一実施
形態では、小型デバイス対応プロトコルと完全なプロトコルとの間にブリッジと
してエージェントを用意する。このエージェントは、小型デバイスのために完全
なプロトコルの発見を実行するので、デバイスは完全な発見プロトコルおよびサ
ービス・アクティブ化を実行する必要がない。一実施形態では、小型デバイスは
サービス特有のメッセージを送るだけでよい。一実施形態では、これらのメッセ
ージは、小型デバイスで事前に加工され、小型デバイスはサービス・アクティブ
化の一部であるメッセージをエージェントに送るだけである。エージェントは、
サービスに対し完全なプロトコルを介してサービス・アクティブ化を実行し、サ
ービスからサービスへ着信メッセージを転送したり、サービス化がクライアント
へ返信を転送したりすることができる。したがって、エージェントは小型クライ
アントのサービス・コネクタとして機能する。分散コンピューティング環境の一
実施形態では、特定の制御要求セットをXMLメッセージの形式で受け取り、要
求、報告ステータスなどを作成する特定のXMLメッセージ・セットを送るよう
に組み込み型デバイスを構成することができる。一実施形態では、制御システム
は、制御される各デバイスまたはデバイスのカテゴリに固有のXML要求メッセ
ージを送り、デバイスからXMLメッセージを受け取ることによりさまざまなデ
バイスを管理するように構成できる。一実施形態では、1つまたは複数のXML
スキーマを使用して、組み込み型デバイスの固有のXMLメッセージ・セットを
定義することができ、スキーマは、XMLメッセージを送受される際に組み込み
型デバイスおよび/または制御システムによって使用される。
【0457】 組み込み型デバイスは、単純な組み込み型デバイスを制御し監視するための特
定のメッセージ・セットをサポートする前述のようなXMLメッセージング・シ
ステムの「軽量(シン)」実装を含む。XMLメッセージング・システムの実装
は、省スペースの単純な組み込み型デバイスで使用できるように手直しされ、省
スペース・デバイスの限られたメモリにも適合する。一実施形態では、XMLメ
ッセージング・システムは、省スペース組み込み型デバイスをターゲットとする
仮想マシン(たとえば、KVM)を備える省スペース・デバイスに実装すること
ができる。ネットワーキング・スタック(1つまたは複数の制御システムとの通
信のためのトランスポート・プロトコルをサポートする)は、仮想マシンと関連
付けられ、XMLメッセージング・レイヤはネットワーキング・スタックの「上
に置かれる」。メッセージング・システムのこのような実装は、省スペース・デ
バイスや組み込み型デバイス以外のデバイスでも使用できることに注意されたい
【0458】 一実施形態では、静的メッセージまたは事前に生成されたメッセージを、制御
システムから組み込み型デバイスへの要求に使用する。静的メッセージは、プリ
コンパイルされ、組み込み型デバイス内に格納される。着信メッセージを格納さ
れている静的メッセージと比較し、メッセージのマッチがないか調べてメッセー
ジで要求された機能を実行するので、着信メッセージを解析するためのコードの
必要性が減じられるか、またはその必要がない。発信メッセージは、格納されて
いる静的メッセージから直接読み取られるため、発信メッセージを動的にコンパ
イル必要は少ないか、またはその必要がない。したがって、静的メッセージは、
組み込み型システムのメッセージング・レイヤのコード量を減らすために使用さ
れる。たとえば、静的なJavaオブジェクト(Java opコード)を要求
メッセージとステータス・メッセージに使用できる。
【0459】 図40aは、一実施形態により、制御システム1800により制御される組み
込み型デバイス1804aと1804bの一実施形態を示す。制御システム18
00は、そのシステムが制御するデバイス1804aおよび1804bとさまざ
まな方法でネットワークにつながっている。ネットワーク1810は有線(Et
hernet、同軸、ツイストペア、電力網など)および/または無線(IrD
A、マイクロ波など)を利用できる。一実施形態では、組み込み型デバイス18
04aおよび1804bは、ネットワーク1810上で制御システム1800と
通信するためXMLメッセージング・システムのシン実装を備える。制御システ
ム1800は、組み込み型デバイス1804aおよび1804bに要求を送り、
そこから応答を受け取るためのXMLメッセージング・システムの実装を用意す
る。一実施形態では、制御システム1800は、ユーザが組み込み型デバイス1
804aと1804bのステータスを表示し、遠隔制御するためのインターフェ
ースを備えるように構成されたソフトウェアおよびハードウェアを搭載する。一
実施形態では、制御システム1800は、組み込み型デバイス1804aおよび
1804bの自動制御を行うためのソフトウェアおよび/またはハードウェアを
備える。
【0460】 一実施形態では、組み込み型デバイス1804aと1804bは、他の環境の
一部である。それらのデバイスは、分散ネットワーク環境で実装されているメッ
セージ通信モデルをサポートしていない。たとえば、これらのデバイスは、Lo
nWorksネットワークなどのネットワークで接続されたオートメーションお
よび制御システム内のノードである。制御システム1800は、他の環境内のデ
バイスを制御するための制御システムのハードウェアおよび/またはソフトウェ
アを含む。制御システム1800は、分散コンピューティング環境と他の環境と
の間のブリッジとして使用される。分散コンピューティング環境ではさらに、分
散コンピューティング環境からアクセスするデバイスを発見するため既存のデバ
イス発見プロトコルをラップする1つまたは複数の方法も備える。ブリッジおよ
びラップを行うプロトコルについては「ブリッジ」の項で詳述する。
【0461】 制御システム1800は、リモートまたはローカルで、分散コンピューティン
グ環境内の1つまたは複数の他のシステムに接続する。図40aは、インターネ
ット1802を介してクライアント1806に接続されている制御システム18
00を示している。クライアント1806は、制御システム1800を通じて、
組み込み型デバイス1804aおよび1804bのステータスを間接的に要求し
、その制御要求を送る。したがって、制御システム1800は、組み込み型デバ
イス1804aおよび1804bのプロキシまたはブリッジとして使用される。
「ブリッジ」の項を参照されたい。クライアント1806と制御システム180
0との間の高度な通信を有効にするために、クライアントと制御システムは、組
み込み型デバイス1804aおよび1804b上のシン実装と異なるXMLメッ
セージング・システムの実装を備える。一実施形態では、クライアント1806
は、ユーザが組み込み型デバイス1804aと1804bのステータスを表示し
、遠隔制御するためのインターフェースを備えるように構成されたソフトウェア
およびハードウェアを搭載する。一実施形態では、クライアント1806は、正
しい承認証明書を制御システム1800に提示し、クライアント1806が組み
込み型デバイス1804aおよび1804bにアクセスできるようにする必要が
ある。一実施形態では、クライアント1806は、異なるレベルのアクセス権を
与えられる。たとえば、クライアント1806は、組み込み型デバイス1804
aおよび1804bのステータスを表示することしかできず、デバイスを遠隔制
御することはできない。一実施形態では、制御システム1800はサービスであ
り、分散コンピューティング環境でサービス通知がパブリッシュされ、そのため
、クライアント1806は前述のようにクライアント−サービス手法を使用して
アクセスできる。一実施形態では、クライアント1806は制御システム180
0のステータスを表示し、遠隔制御することができる。
【0462】 図40bは、一実施形態により、インターネット1802を介して組み込み型
デバイス1804cおよび1804dに接続されているクライアント制御システ
ム1808を示している。一実施形態では、組み込み型デバイス1804cおよ
び1804dは、ネットワーク1802上でクライアント制御システム1808
と通信するためXMLメッセージング・システムのシン実装を備える。クライア
ント制御システム1808は、組み込み型デバイス1804cおよび1804d
に要求を送り、そこから応答受け取るためのXMLメッセージング・システムの
実装を用意する。一実施形態では、クライアント制御システム1808は、ユー
ザが組み込み型デバイス1804cと1804dのステータスを表示し、遠隔制
御するためのインターフェースを備えるように構成されたソフトウェアおよびハ
ードウェアを搭載する。一実施形態では、クライアント制御システム1800は
、組み込み型デバイス1804cおよび1804dの自動制御を行うためのソフ
トウェアおよび/またはハードウェアを備える。
【0463】 図40aと図40bとの違いは、図40bに示されている実施形態では、組み
込み型デバイス1804cと1804dは、プロキシ(たとえば、制御システム
)なしで分散コンピューティング環境内の1つまたは複数のクライアントにより
アクセスされるという点である。組み込み型デバイス1804cおよび1804
dは、デバイスの機能にアクセスするためのサービスを備え、分散コンピューテ
ィング環境内でサービス通知をパブリッシュし、前述のようにクライアント−サ
ービス手法を介してアクセスされる。
【0464】 分散コンピューティング環境は、リソースが制限されているクライアントがU
niversal Resource Identifier(URI)アドレ
ス指定リソースを取り出すためのメカニズムを備える。たとえば、IrDA接続
を介してでないとメッセージを送受できないクライアントは、URI接続を確立
して、結果スペースから結果を取り出すことができない。一実施形態では、クラ
イアントとURIリソースとの間のブリッジとしてサービスを提供する。ブリッ
ジ・サービスは、XMLメッセージを介してクライアントと対話し、入力パラメ
ータを集める。以下に、XML入力メッセージシンタックスの一例を示したが、
何らかの形で制限することを意図していない。 <type name="HttpGet"> <element name="urlstring" type="string"/> </type>
【0465】 次に、分散コンピューティング環境の外部で、ブリッジ・サービスはURI接
続を確立し、リソースを取り出す。リソースは、1つまたは複数のXMLメッセ
ージでペイロードとしてカプセル化され、ブリッジ・サービスによってクライア
ントに送られる。
【0466】 XMLメッセージング・システムのシン実装を備える組み込み型デバイスの可
能な使い方の一例を説明のため掲載しているが、制限することを意図していない
。建物には、エネルギーを消費する複数のエレクトロニクス・デバイス(たとえ
ば、照明、空調、事務機器)が置かれているため、最適なエネルギー消費レベル
を維持するためのシステムを必要とする。このような複数のデバイスはそれぞれ
、エレクトロニクス・デバイスを制御するための組み込み型デバイスを備える。
これらの組み込み型デバイスは、XMLメッセージング・システムのシン実装を
備える。1つまたは複数の制御システムを、ネットワーク、たとえば、建物内L
ANやさらにはインターネット内のデバイスに結合する。制御システムでは、建
物管理ソフトウェア・パッケージおよびデバイスを監視し制御するためソフトウ
ェア・パッケージによって使用されるように構成されているXMLメッセージン
グ・システムの実装を格納し、実行する。制御システムは、ユーザからの入力を
受け付け、複数のデバイスのそれぞれのステータス情報はじめとする、建物内エ
ネルギー消費システムのステータス情報を表示し、他の何らかの方法で出力する
。エネルギー消費は、複数のデバイスのそれぞれからXMLステータス・メッセ
ージを受け取ることにより監視する。エネルギー消費レベルを調整する必要があ
る場合、XML制御メッセージを1つまたは複数のデバイスに送ってエネルギー
消費を変更させる。
【0467】 サービスの実装 一実施形態では、分散コンピューティング環境はサービスをサーブレットとし
て実装するためのメカニズムを備える。このメカニズムは、分散コンピューティ
ング環境向けにサービスを開発するための機能を備える。
【0468】 一実施形態では、スペース内でサービスを初期化し登録するための機能を備え
るアプリケーション・プログラミング・インターフェース(API)が提供され
る。一実施形態では、このAPIを使用して、サービスの初期化機能を呼び出し
、サービスのステータスを定義する初期化ステータス・ページ、たとえば、HT
MLページを生成することができる。ユーザは、ブラウザからステータス・ペー
ジにアクセスすることによりサービスのステータスにアクセスできる。一実施形
態では、APIを使用して、着信メッセージを処理し、そのメッセージに応答し
てドキュメントを生成する。 サーブレット・メカニズムの実施形態では、それに限定されないが、以下のよ
うな複数の機能を提供する。 サービスへのクライアント接続の管理(一意的なセッションID) 結果通知を格納するために使用されるアクティブ化スペースの管理 アクティブ化スペースの接続セッションおよび結果に対するリースの管理 セッションおよび結果のガベージ・コレクション クライアントの認証 セッションごとのクライアント機能の生成
【0469】 一実施形態では、分散コンピューティング環境は、新しい複雑なサービスを他
の既存のサービスから構築するためのサービス・カスケード接続メカニズムを備
える。たとえば、JPEG−PostScript変換サービスおよび印刷サー
ビスから、変換および印刷サービスを組み合わせることで、第3のカスケード接
続されたサービスを作成する。一実施形態では、2つまたはそれ以上のサービス
のアクセス・メソッドをカスケード接続されたサービスのアクセス・メソッドと
して定義することにより2つまたはそれ以上のサービスを組み合わせて1つの複
雑なサービスを作る。カスケード接続サービスに対する以下のサービス通知は、
説明のため掲載したものであり、いかなる形でも制限することを意図していない
。 <servrice> <name>Complex Service</name> <ID>...</ID> <description>...</description> <AccessMethod> <AccessMethod> <name>com.transcode.jpg2ps</name> <implementation>http://www.transcode.com/software/jpg2ps.jar</implementa
tion> </AccessMethod> <AccessMethod> <name>com.printer.ftpPrint</name> <implementation>http://www.printer.com/software/ftpprint.jar</implementa
tion> </AccessMethod> </AccessMethod> </Service>
【0470】 結論 さまざまな実施形態はさらに、キャリア媒体に関する前述の説明により実装さ
れた命令および/またはデータを受け取り、送り、または格納することを含む。
一般に、キャリア媒体には、磁気または光媒体などの記憶媒体やメモリ媒体、た
とえば、ディスクやCD−ROM、RAM(SDRAM、RDRAM、SRAM
など)、ROMなどの揮発性または不揮発性媒体、さらに、ネットワークおよび
/または無線リンクなどの通信媒体を介して伝達される電気信号、電磁信号、ま
たはデジタル信号などの伝送媒体または信号が含まれる。
【0471】 本開示を利用しようとする当業者には明白なように、さまざまな修正および変
更が可能である。本発明はそのような全ての修正および変更を包括的に取り入れ
ることを意図しており、したがって、明細書、付録、および図面は、制限のため
ではなく、説明のためであるとみなすべきである。
【図面の簡単な説明】
【図1】 従来の分散コンピューティング技術の積み重ねの図である。
【図2】 一実施形態による分散コンピューティング環境プログラミング・モデルの図で
ある。
【図3】 一実施形態による分散コンピューティング環境のメッセージング・レイヤおよ
びネットワーキング・レイヤの図である。
【図4】 一実施形態により分散コンピューティング環境でオブジェクトまたはサービス
を通知するスペースを見つけるための発見サービスの図である。
【図5】 一実施形態による分散コンピューティング環境の静的メッセージおよび書式付
きメッセージをサポートするクライアント・プロファイルの図である。
【図6】 一実施形態によるXMLメッセージングを採用する分散コンピューティング・
モデルの図である。
【図7】 一実施形態によるプラットフォーム独立の分散コンピューティング環境の図で
ある。
【図8】 一実施形態によりスペース内でサービスが通知される分散コンピューティング
・モデルの図である。
【図9】 一実施形態によりスペース内に結果が格納される分散コンピューティング・モ
デルの図である。
【図10】 a:一実施形態による分散コンピューティング・モデル内のメッセージング・
エンドポイントとしてのクライアントおよびサービス・ゲートの図である。 b: 一実施形態によりサービスにアクセスするためスキーマに従ってメッセ
ージ・エンドポイントを生成することを示す図である。
【図11】 a:一実施形態による分散コンピューティング環境におけるゲート作成の図で
ある。 b:一実施形態による分散コンピューティング環境におけるゲート作成とゲー
ト・ペアの図である。
【図12】 一実施形態による分散コンピューティング環境での可能なゲート構成要素の図
である。
【図13】 一実施形態による分散コンピューティング環境に参加する従来のプラウザ用の
プロキシ・クライアントの図である。
【図14】 一実施形態により分散コンピューティング環境でメソッド・ゲートを使用して
リモート・メソッド呼び出しインターフェースをサービスに提供する方法を示す
図である。
【図15】 一実施形態により分散コンピューティング環境でスペースを使用する方法を示
す図である。
【図16】 一実施形態による通知構造を示す図である。
【図17】 一実施形態により通知がその存続期間中に置かれる通知状態遷移の一例を示す
図である
【図18】 一実施形態による分散コンピューティング環境でのさまざまなスペース特定メ
カニズムの図である。
【図19】 一実施形態による分散コンピューティング環境でのスペース連合の図である。
【図20】 一実施形態により分散コンピューティング環境でクライアントがスペース・サ
ービスによりセッションを形成する方法を示す流れ図である。
【図21】 一実施形態のスペース・イベント型階層の図である。
【図22】 一実施形態による分散コンピューティング環境でのサービス・インスタンス化
を示す流れ図である。
【図23】 一実施形態による分散コンピューティング環境でのデフォルトのスペースの図
である。
【図24】 一実施形態により、近傍ベースのデバイスから提供されるサービスをデバイス
の近傍の範囲外にあるデバイスでアクセスできるようにする近傍ベースのデバイ
スを他のトランスポート・メカニズムにブリッジするデバイスの一例を示す図で
ある。
【図25】 一実施形態により分散コンピューティング環境でリース更新メッセージを使用
する方法を示す図である。
【図26】 a:一実施形態により、認証証明書をクライアントに提供する認証サービスを
示す流れ図である。 b:一実施形態により、図26aのステップ1002上で展開し、認証証明書
を生成する認証サービスを示す流れ図である。
【図27】 ブリッジ・メカニズムの一実施形態の図である。
【図28】 一実施形態により外部発見サービスにマップされるスペース発見プロトコルの
一例の図である。
【図29】 一実施形態により、分散コンピューティング環境の外部にあるクライアントを
分散コンピューティング環境内のスペースにブリッジする方法を示す図である。
【図30】 一実施形態によるプロキシ・メカニズムの図である。
【図31】 一実施形態による関連するディスプレイおよび表示サービスを備えるクライア
ントの一実施形態の図である。
【図32】 一実施形態により動的表示オブジェクトのスキーマを使用する例を示す図であ
る。
【図33】 A:Cプログラミング言語による代表的ストリング表現の図である。 B:従来のストリング関数の例を示す図である。 C:一実施形態により、一般にはストリングを、具体的には組み込み型システ
ムなどの省スペース・システムを表現し管理する効率的な方法を示す図である。
【図34】 一実施形態により、クライアントとサービスの間でオブジェクトを移動するプ
ロセスを示す図である。
【図35】 仮想マシン(たとえば、JVM)がオブジェクト(たとえば、Javaオブジ
ェクト)をオブジェクトのXML表現にコンパイルする拡張機能および(Jav
a)オブジェクトのXML表現を(Java)オブジェクトに逆コンパイルする
拡張機能を含む実施形態を示すデータ流れ図である。
【図36】 一実施形態により分散コンピューティング環境でストア・メカニズムにアクセ
スするクライアントおよびサービスの図である。
【図37】 一実施形態によりプロセスの状態のXML表現を使用するプロセス移行を示す
図である。
【図38】 一実施形態によりローカルの分散コンピューティング・ネットワークでスペー
スにアクセスするモバイル・クライアント・デバイスの図である。
【図39】 a:一実施形態により、モバイルデバイスのユーザがドッキング・ステーショ
ンの場所を発見すること示す図である。 b:一実施形態によるドッキング・ステーションに接続するモバイル・クライ
アント・デバイスの図である。
【図40】 a:一実施形態により、制御システムにより制御され、分散コンピューティング
環境内でアクセス可能な組み込み型デバイスの一実施形態を示す図である。 b:一実施形態により、ネットワーク(たとえば、インターネット)を介して
分散コンピューティング環境内でアクセス可能な組み込み型デバイスに接続する
デバイス制御システムの図である。
【図41】 一実施形態による、分散コンピューティング環境での、新しいスペースの作成
を示す流れ図である。
【図42】 一実施形態による、分散コンピューティング環境での、新しいスペースの保護
された作成を示す流れ図である。
【図43】 一実施形態による、分散コンピューティング環境での、サーチ・サービスを使
用するスペースのサーチを示す流れ図である。
【図44a】 一実施形態による、分散コンピューティング環境での、サービスの結果をスペ
ース内に格納する方法を示す流れ図である。
【図44b】 一実施形態による、分散コンピューティング環境での、サービスの結果をスペ
ース内に格納し、イベントを使用してクライアントに通報する方法を示す流れ図
である。
【図44c】 一実施形態による、分散コンピューティング環境での、サービスの結果をメッ
セージ内で送る方法を示す流れ図である。
【図44d】 一実施形態による、分散コンピューティング環境での、通知を使用してサービ
スの結果を返す方法を示す流れ図である。
【図44e】 一実施形態による、分散コンピューティング環境での、クライアントに発送さ
れる通知を使用してサービスの結果を返す方法を示す流れ図である。
【図44f】 一実施形態による、分散コンピューティング環境での、スペースに格納された
通知を使用してサービスの結果を返す方法を示す流れ図である。
【図44g】 一実施形態による、分散コンピューティング環境での、スペースに格納された
通知と、イベントを使用することによるクライアントへの通報とを使用してサー
ビスの結果を返す方法を示す流れ図である。
【図45】 一実施形態による、分散コンピューティング環境での、あるサービスの結果を
別のサービスに送る方法を示す流れ図である。
【図46a】 一実施形態による、分散コンピューティング環境での、サーチ・サービスと、
サーチ・サービスとクライアントの対話を示す図である。
【図46b】 一実施形態による、分散コンピューティング環境での、サーチ・サービスと、
サーチ・サービスとクライアントの対話を示す図である。
【図47】 一実施形態による、分散コンピューティング環境での、スペース内のドキュメ
ントのサーチを示す流れ図である。
【図48】 一実施形態による、分散コンピューティング環境での、スペース内に格納され
た通知を使用する、サービスのアドレッシングを示す流れ図である。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 60/209,430 (32)優先日 平成12年6月2日(2000.6.2) (33)優先権主張国 米国(US) (31)優先権主張番号 60/209,140 (32)優先日 平成12年6月2日(2000.6.2) (33)優先権主張国 米国(US) (31)優先権主張番号 60/209,525 (32)優先日 平成12年6月5日(2000.6.5) (33)優先権主張国 米国(US) (31)優先権主張番号 09/660,563 (32)優先日 平成12年9月12日(2000.9.12) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,UZ,VN, YU,ZA,ZW (72)発明者 ソウルパフ,トーマス・イー アメリカ合衆国・95120・カリフォルニア 州・サンノゼ・ブレット ハート ドライ ブ・6938 (72)発明者 トラバーサット,バーナード・エイ アメリカ合衆国・94109・カリフォルニア 州・サンフランシスコ・カリフォルニア ストリート・2055・アパートメント 402 (72)発明者 アブデラジス,モハメッド・エム アメリカ合衆国・95051・カリフォルニア 州・サンタ クララ・カボット アベニ ュ・78 Fターム(参考) 5B045 BB28 BB42 GG01 5B082 GA06 HA00 【要約の続き】 される。それに応答して、サービスの関数を呼び出すこ とができる。サービスは、クライアントに第2のXML メッセージ(たとえば、呼び出された関数の結果を含む メッセージ)を送ることができ、この第2のXMLメッ セージは、サービスのXMLスキーマで指定される。

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 クライアントがスペースから通知を読み取ることであって、
    スペースが、ネットワーク・アドレッシング可能な記憶場所を有し、通知が、U
    niform Resource Identifier(URI)およびスキ
    ーマを含み、URIが、サービスにアクセスできるネットワーク・アドレスを指
    定し、スキーマが、サービスの1つまたは複数の関数を呼び出すのに使用可能な
    1つまたは複数のメッセージを指定すること、および、 クライアントが、スキーマで指定される第1のメッセージをURIにあるサー
    ビスに送ること、 を含む方法。
  2. 【請求項2】 サービスが、クライアントがサービスに第1のメッセージを
    送ることに応答して、スキーマで指定される第2のメッセージをクライアントに
    送ること をさらに含む請求項1に記載の方法。
  3. 【請求項3】 クライアントがサービスに第1のメッセージを送ることに応
    答して、サービスの1つまたは複数の関数を呼び出すこと をさらに含む請求項1に記載の方法。
  4. 【請求項4】 スキーマが、データ表現言語で表現される請求項1に記載の
    方法。
  5. 【請求項5】 第1のメッセージが、データ表現言語で表現される請求項1
    に記載の方法。
  6. 【請求項6】 データ表現言語が、拡張マークアップ言語(XML)を含む
    請求項5に記載の方法。
  7. 【請求項7】 URIが、インターネット・アドレスを含む請求項1に記載
    の方法。
  8. 【請求項8】 サービスが、スペース内で通知をパブリッシュすること をさらに含む請求項1に記載の方法。
  9. 【請求項9】 クライアントが、スペース内の通知を見つけるためにルック
    アップ・サービスを使用すること をさらに含む請求項1に記載の方法。
  10. 【請求項10】 クライアントが、サービスにアクセスするためのゲートを
    構築するために、通知内のURIおよびスキーマを使用すること をさらに含む請求項1に記載の方法。
  11. 【請求項11】 クライアントと、 クライアントに通信可能に結合されたサービスと、 クライアントに通信可能に結合されたスペースであって、スペースが、ネット
    ワーク・アドレッシング可能な記憶場所を含み、スペースに、サービスに関する
    通知が格納され、通知が、Uniform Resource Identif
    ier(URI)およびスキーマを含み、URIが、サービスにアクセスできる
    ネットワーク・アドレスを指定し、スキーマが、サービスの1つまたは複数の関
    数を呼び出すのに使用可能な1つまたは複数のメッセージを指定する、スペース
    とを含むシステムであって、 クライアントが、 スペースから通知を読み取り、 URIにあるサービスに、スキーマで指定された第1のメッセージを送る ように動作可能であるシステム。
  12. 【請求項12】 サービスが、第1のメッセージに応答してスキーマで指定
    される第2のメッセージをクライアントに送るように動作可能である請求項11
    に記載のシステム。
  13. 【請求項13】 サービスの1つまたは複数の関数が、第1のメッセージに
    応答して呼び出される請求項11に記載のシステム。
  14. 【請求項14】 スキーマが、データ表現言語で表現される請求項11に記
    載のシステム。
  15. 【請求項15】 第1のメッセージが、データ表現言語で表現される請求項
    11に記載のシステム。
  16. 【請求項16】 データ表現言語が、拡張マークアップ言語(XML)を含
    む請求項15に記載のシステム。
  17. 【請求項17】 URIが、インターネット・アドレスを含む請求項11に
    記載のシステム。
  18. 【請求項18】 サービスが、スペース内で通知をパブリッシュするように
    動作可能である請求項11に記載のシステム。
  19. 【請求項19】 クライアントが、スペース内で通知を見つけるためにルッ
    クアップサービスを使用するように動作可能である請求項11に記載のシステム
  20. 【請求項20】 クライアントが、サービスにアクセスするためのゲートを
    構築するために、通知内のURIおよびスキーマを使用するように動作可能であ
    る請求項11に記載のシステム。
  21. 【請求項21】 クライアントがスペースから通知を読み取ることであって
    、スペースが、ネットワーク・アドレッシング可能な記憶場所を有し、通知が、
    Uniform Resource Identifier(URI)およびス
    キーマを含み、URIが、サービスにアクセスできるネットワーク・アドレスを
    指定し、スキーマが、サービスの1つまたは複数の関数を呼び出すのに使用可能
    な1つまたは複数のメッセージを指定すること、および、 クライアントが、スキーマで指定される第1のメッセージをURIにあるサー
    ビスに送ること を実施するためにコンピュータ実行可能であるプログラム命令を含む担体媒体
  22. 【請求項22】 プログラム命令が、さらに、 サービスが、クライアントがサービスに第1のメッセージを送ることに応答し
    て、スキーマで指定される第2のメッセージをクライアントに送ること を実施するためにコンピュータ実行可能である請求項21に記載の担体媒体。
  23. 【請求項23】 プログラム命令が、さらに、 クライアントがサービスに第1のメッセージを送ることに応答して、サービス
    の1つまたは複数の関数を呼び出すこと を実施するためにコンピュータ実行可能である請求項21に記載の担体媒体。
  24. 【請求項24】 スキーマが、データ表現言語で表現される請求項21に記
    載の担体媒体。
  25. 【請求項25】 第1のメッセージが、データ表現言語で表現される請求項
    21に記載の担体媒体。
  26. 【請求項26】 データ表現言語が、拡張マークアップ言語(XML)を含
    む請求項25に記載の担体媒体。
  27. 【請求項27】 URIが、インターネット・アドレスを含む請求項21に
    記載の担体媒体。
  28. 【請求項28】 プログラム命令が、さらに、 サービスが、スペース内で通知をパブリッシュすること を実施するためにコンピュータ実行可能である請求項21に記載の担体媒体。
  29. 【請求項29】 プログラム命令が、さらに、 クライアントが、スペース内の通知を見つけるためにルックアップ・サービス
    を使用すること を実施するためにコンピュータ実行可能である請求項21に記載の担体媒体。
  30. 【請求項30】 プログラム命令が、さらに、 クライアントが、サービスにアクセスするためのゲートを構築するために、通
    知内のURIおよびスキーマを使用すること を実施するためにコンピュータ実行可能である請求項21に記載の担体媒体。
JP2001583302A 2000-05-09 2001-05-09 分散コンピューティング環境でサービスにアクセスし、アドレッシングする機構および装置 Pending JP2003533766A (ja)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US20297500P 2000-05-09 2000-05-09
US60/202,975 2000-05-09
US20801100P 2000-05-26 2000-05-26
US60/208,011 2000-05-26
US20914000P 2000-06-02 2000-06-02
US20943000P 2000-06-02 2000-06-02
US60/209,430 2000-06-02
US60/209,140 2000-06-02
US20952500P 2000-06-05 2000-06-05
US60/209,525 2000-06-05
US09/660,563 2000-09-12
US09/660,563 US8135796B1 (en) 2000-05-09 2000-09-12 Mechanism and apparatus for accessing and addressing services in a distributed computing environment
PCT/US2001/015044 WO2001086420A2 (en) 2000-05-09 2001-05-09 Mechanism and apparatus for accessing and addressing services in a distributed computing environment

Publications (1)

Publication Number Publication Date
JP2003533766A true JP2003533766A (ja) 2003-11-11

Family

ID=27558949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001583302A Pending JP2003533766A (ja) 2000-05-09 2001-05-09 分散コンピューティング環境でサービスにアクセスし、アドレッシングする機構および装置

Country Status (7)

Country Link
US (1) US8135796B1 (ja)
EP (1) EP1285334B1 (ja)
JP (1) JP2003533766A (ja)
AT (1) ATE258695T1 (ja)
AU (1) AU2001264577A1 (ja)
DE (1) DE60101911T2 (ja)
WO (1) WO2001086420A2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007538313A (ja) * 2004-04-29 2007-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散ネットワーキング・アーキテクチャ内にサービスをモデル化し、動的にデプロイするためのシステムおよび方法
JP2011530759A (ja) * 2008-08-14 2011-12-22 サムスン エレクトロニクス カンパニー リミテッド UPnPを用いたホームネットワークにおける入力を提供する方法及びシステム
WO2013106256A1 (en) * 2012-01-09 2013-07-18 Microsoft Corporation Decoupling paas resources, jobs, and scheduling
KR20140019485A (ko) * 2010-11-19 2014-02-14 인터디지탈 패튼 홀딩스, 인크 자원의 공지 및 비공지를 위한 기계대 기계(m2m) 인터페이스 절차
US8904008B2 (en) 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
WO2015163396A1 (ja) * 2014-04-23 2015-10-29 株式会社リコー アクセス管理システム、通信システム、記録媒体、及びアクセス管理方法
US9372735B2 (en) 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020002039A1 (en) * 1998-06-12 2002-01-03 Safi Qureshey Network-enabled audio device
US20010032126A1 (en) * 1999-12-17 2001-10-18 Macartney-Filgate Bruce C. System and method for tracking web campaign effectiveness
US11204729B2 (en) 2000-11-01 2021-12-21 Flexiworld Technologies, Inc. Internet based digital content services for pervasively providing protected digital content to smart devices based on having subscribed to the digital content service
US7266591B1 (en) * 2001-12-17 2007-09-04 Verizon Business Global Llc Providing content delivery during a call hold condition
US7809843B1 (en) * 2003-09-18 2010-10-05 Intel Corporation Globally unique identification in communications protocols and databases
US7818759B2 (en) * 2003-11-24 2010-10-19 Ebay Inc. API and business language schema design framework for message exchanges
US7698383B2 (en) * 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
FI20045162A0 (fi) * 2004-04-30 2004-04-30 Nokia Corp Ryhmäviestintä viestinjärjestelmässä
US8028323B2 (en) 2004-05-05 2011-09-27 Dryden Enterprises, Llc Method and system for employing a first device to direct a networked audio device to obtain a media item
US8028038B2 (en) 2004-05-05 2011-09-27 Dryden Enterprises, Llc Obtaining a playlist based on user profile matching
US20060153346A1 (en) * 2005-01-11 2006-07-13 Metro Enterprises, Inc. On-line authentication registration system
US8452236B2 (en) 2005-03-01 2013-05-28 Nokia Corporation Electronic device and a method for transfer of data
US8543999B2 (en) * 2005-03-30 2013-09-24 Welch Allyn, Inc. Communication of information between a plurality of network elements
US7836439B2 (en) 2006-02-03 2010-11-16 Research In Motion Limited System and method for extending a component-based application platform with custom services
KR20080112914A (ko) * 2007-06-22 2008-12-26 삼성전자주식회사 이벤트 메시지 수신 방법, 이벤트 메시지 전송 방법,피제어 장치 및 제어 포인트
US9116593B2 (en) * 2007-07-06 2015-08-25 Qualcomm Incorporated Single-axis window manager
US8266187B2 (en) 2008-02-19 2012-09-11 Hewlett-Packard Development Company, L.P. Integration of static and dynamic data for database entities and the unified presentation thereof
US8621010B2 (en) * 2008-03-17 2013-12-31 International Business Machines Corporation Method and system for protecting messaging consumers
US8898257B1 (en) * 2008-10-20 2014-11-25 At&T Intellectual Property I, L.P. Multi-device complexity broker
US10671698B2 (en) * 2009-05-26 2020-06-02 Microsoft Technology Licensing, Llc Language translation using embeddable component
US8898287B2 (en) * 2010-02-24 2014-11-25 Salesforce.Com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8495176B2 (en) * 2010-08-18 2013-07-23 International Business Machines Corporation Tiered XML services in a content management system
US8996749B2 (en) 2011-05-26 2015-03-31 Candi Controls, Inc. Achieving a uniform device abstraction layer
US20120303750A1 (en) * 2011-05-26 2012-11-29 Mike Anderson Cloud-assisted network device integration
US9183001B2 (en) * 2011-09-12 2015-11-10 Microsoft Technology Licensing, Llc Simulation of static members and parameterized constructors on an interface-based API
US9491620B2 (en) 2012-02-10 2016-11-08 Qualcomm Incorporated Enabling secure access to a discovered location server for a mobile device
JP6008617B2 (ja) * 2012-06-29 2016-10-19 キヤノン株式会社 通信装置およびその制御方法、並びにプログラム
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
GB2509723A (en) * 2013-01-10 2014-07-16 Ibm Invoking web services that are determined at the time of execution
US9215075B1 (en) 2013-03-15 2015-12-15 Poltorak Technologies Llc System and method for secure relayed communications from an implantable medical device
US9529344B1 (en) 2013-03-15 2016-12-27 SmartThings, Inc. Device-type handlers for remote control and monitoring of devices through a data network
US9275211B2 (en) 2013-03-15 2016-03-01 Telesign Corporation System and method for utilizing behavioral characteristics in authentication and fraud prevention
US9462041B1 (en) 2013-03-15 2016-10-04 SmartThings, Inc. Distributed control scheme for remote control and monitoring of devices through a data network
US9531559B1 (en) * 2013-03-15 2016-12-27 SmartThings, Inc. Secured device access in a device automation system
US20140304607A1 (en) * 2013-04-05 2014-10-09 Michael Lyle Eglington Monitoring System
CN104717152B (zh) * 2013-12-17 2019-07-19 深圳市中兴微电子技术有限公司 一种实现接口缓存动态分配的方法和装置
US9483997B2 (en) 2014-03-10 2016-11-01 Sony Corporation Proximity detection of candidate companion display device in same room as primary display using infrared signaling
US9696414B2 (en) 2014-05-15 2017-07-04 Sony Corporation Proximity detection of candidate companion display device in same room as primary display using sonic signaling
US10070291B2 (en) 2014-05-19 2018-09-04 Sony Corporation Proximity detection of candidate companion display device in same room as primary display using low energy bluetooth
US9672122B1 (en) 2014-09-29 2017-06-06 Amazon Technologies, Inc. Fault tolerant distributed tasks using distributed file systems
US10142368B2 (en) * 2015-09-01 2018-11-27 United Parcel Service Of America, Inc. Facilitating remote access of devices in a secure environment
FR3043814B1 (fr) * 2015-11-18 2020-01-10 Bull Sas Procede de generation d'un ensemble de donnees definissant un message pour une application contrainte
US10762559B2 (en) * 2016-04-15 2020-09-01 Adp, Llc Management of payroll lending within an enterprise system
US11195336B2 (en) 2018-06-08 2021-12-07 Vulcan Inc. Framework for augmented reality applications
DE102019214590A1 (de) * 2019-09-24 2021-03-25 Siemens Aktiengesellschaft Verfahren und Autorisierungseinrichtung zur zertifikatbasierten Autorisierung eines Leistungsbeziehers an einer Abgabestation
EP4349120A1 (en) * 2020-12-18 2024-04-10 Nokia Technologies Oy Processing a request in a mobile communication system for a service of an access node

Family Cites Families (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491946A (en) 1981-03-09 1985-01-01 Gould Inc. Multi-station token pass communication system
JPH0640302B2 (ja) 1984-01-30 1994-05-25 株式会社日立製作所 図式・ソ−スプログラム自動生成方法
US4823122A (en) 1984-06-01 1989-04-18 Digital Equipment Corporation Local area network for digital data processing system
US4809160A (en) 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US4713806A (en) 1986-03-14 1987-12-15 American Telephone And Telegraph Company, At&T Bell Laboratories Communication system control arrangement
US4939638A (en) 1988-02-23 1990-07-03 Stellar Computer Inc. Time sliced vector processing
US5287511A (en) 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
US5133075A (en) 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5109486A (en) 1989-01-06 1992-04-28 Motorola, Inc. Distributed computer system with network and resource status monitoring
US5088036A (en) 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5297283A (en) 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5187787B1 (en) 1989-07-27 1996-05-07 Teknekron Software Systems Inc Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5257369A (en) 1990-10-22 1993-10-26 Skeen Marion D Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5218699A (en) 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
EP0463172A1 (en) 1989-12-26 1992-01-02 Fujitsu Limited Object oriented distributed processing system
GB2242293A (en) 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
AU628753B2 (en) 1990-08-14 1992-09-17 Digital Equipment Corporation Method and apparatus for implementing server functions in a distributed heterogeneous environment
DE69126666T2 (de) 1990-09-17 1998-02-12 Cabletron Systems Inc Netzwerkverwaltungssystem mit modellbasierter intelligenz
JPH0799497B2 (ja) 1990-12-14 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション ソフトウェアの使用を管理するための装置及び方法
IE910553A1 (en) 1991-02-19 1992-08-26 Tolsys Ltd Improvements in and relating to stable memory circuits
EP0501610B1 (en) 1991-02-25 1999-03-17 Hewlett-Packard Company Object oriented distributed computing system
EP0501613A3 (en) 1991-02-28 1993-09-01 Hewlett-Packard Company Heterogeneous software configuration management apparatus
US5293614A (en) 1991-04-08 1994-03-08 Texas Instruments Incorporated System and method for hard real-time garbage collection requiring a write barrier but no read barrier
US5481721A (en) 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
DE4131380A1 (de) 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
US5319751A (en) 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5390328A (en) 1992-03-30 1995-02-14 International Business Machines Corporation Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
EP0930566A3 (en) 1992-07-06 2006-07-05 Microsoft Corporation Method and system for composing objects
US5307490A (en) 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
JP2524472B2 (ja) 1992-09-21 1996-08-14 インターナショナル・ビジネス・マシーンズ・コーポレイション 電話回線利用の音声認識システムを訓練する方法
US5423042A (en) 1992-10-23 1995-06-06 International Business Machines Corporation Remote procedure execution
US5561785A (en) 1992-10-29 1996-10-01 International Business Machines Corporation System for allocating and returning storage and collecting garbage using subpool of available blocks
US5515536A (en) 1992-11-13 1996-05-07 Microsoft Corporation Method and system for invoking methods of an object through a dispatching interface
EP0669020B1 (en) 1992-11-13 1997-04-02 Microsoft Corporation Methods for marshalling interface pointers for remote procedure calls
US5386568A (en) 1992-12-01 1995-01-31 Yamaha Corporation Apparatus and method for linking software modules
EP0602263A1 (en) 1992-12-15 1994-06-22 International Business Machines Corporation User interface program generator
US5560003A (en) 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5452459A (en) 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
DE69429686T2 (de) 1993-02-25 2003-04-30 Sun Microsystems Inc Transaktionsverwaltung in objektorientiertem System
US5832593A (en) 1993-04-14 1998-11-10 Minnesota Mining And Manufacturing Company Splice head for insulated telecommunication wires
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
US5617537A (en) 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5455952A (en) 1993-11-03 1995-10-03 Cardinal Vision, Inc. Method of computing based on networks of dependent objects
US5742848A (en) 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
US5581704A (en) 1993-12-06 1996-12-03 Panasonic Technologies, Inc. System for maintaining data coherency in cache memory by periodically broadcasting invalidation reports from server to client
AU6702594A (en) 1993-12-17 1995-07-03 Taligent, Inc. Object-oriented distributed communications directory service
US5594921A (en) 1993-12-17 1997-01-14 Object Technology Licensing Corp. Authentication of users with dynamically configurable protocol stack
WO1995019008A1 (en) 1994-01-05 1995-07-13 Covey Peter J Dynamic-state, multi-dimensional, multi-media database
US5832219A (en) 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
US5675796A (en) 1994-04-08 1997-10-07 Microsoft Corporation Concurrency management component for use by a computer program during the transfer of a message
US5680617A (en) 1994-05-16 1997-10-21 Apple Computer, Inc. Computer-human interface which provides for user customization of object behavior
DE69533148T2 (de) 1994-05-26 2005-08-25 Sun Microsystems, Inc., Santa Clara Verfahren und Gerät zur Erzeugung und Verwendung kurzer Operationsidentifizierer in objektorientierten Systemen
US5655148A (en) 1994-05-27 1997-08-05 Microsoft Corporation Method for automatically configuring devices including a network adapter without manual intervention and without prior configuration information
US5680573A (en) 1994-07-12 1997-10-21 Sybase, Inc. Method of buffering data objects in a database
US5778228A (en) 1994-08-16 1998-07-07 International Business Machines Corporation Method and system for transferring remote procedure calls and responses over a network
US5555367A (en) 1994-09-30 1996-09-10 General Electric Company Method and system for generating computer programs for queries formed by manipulating object-oriented diagrams
JP4058118B2 (ja) 1994-11-15 2008-03-05 株式会社日立製作所 プログラム生成システム及び方法
US5577231A (en) 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5553282A (en) 1994-12-09 1996-09-03 Taligent, Inc. Software project history database and method of operation
US5644768A (en) 1994-12-09 1997-07-01 Borland International, Inc. Systems and methods for sharing resources in a multi-user environment
EP0717337B1 (en) 1994-12-13 2001-08-01 International Business Machines Corporation Method and system for the secured distribution of programs
US5872928A (en) 1995-02-24 1999-02-16 Cabletron Systems, Inc. Method and apparatus for defining and enforcing policies for configuration management in communications networks
US5727203A (en) 1995-03-31 1998-03-10 Sun Microsystems, Inc. Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache
EP0735472A3 (en) 1995-03-31 2000-01-19 Sun Microsystems, Inc. Method and apparatus for conspiracy among objects
US5628005A (en) 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US5761656A (en) 1995-06-26 1998-06-02 Netdynamics, Inc. Interaction between databases and graphical user interfaces
US5802367A (en) 1995-07-07 1998-09-01 Microsoft Corporation Method and system for transparently executing code using a surrogate process
US5745703A (en) 1995-07-18 1998-04-28 Nec Research Institute, Inc. Transmission of higher-order objects across a network of heterogeneous machines
US5774551A (en) 1995-08-07 1998-06-30 Sun Microsystems, Inc. Pluggable account management interface with unified login and logout and multiple user authentication services
US5649186A (en) 1995-08-07 1997-07-15 Silicon Graphics Incorporated System and method for a computer-based dynamic information clipping service
JPH0962526A (ja) 1995-08-28 1997-03-07 Fujitsu Ltd 耐故障型rpcシステムおよび方法
JP2964926B2 (ja) 1995-08-29 1999-10-18 富士ゼロックス株式会社 データベース管理装置及び方法
US5671225A (en) 1995-09-01 1997-09-23 Digital Equipment Corporation Distributed interactive multimedia service system
US5737607A (en) 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5864862A (en) 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US5872973A (en) 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US5860153A (en) 1995-11-22 1999-01-12 Sun Microsystems, Inc. Memory efficient directory coherency maintenance
US6003763A (en) 1995-12-29 1999-12-21 Visa International Service Method and apparatus for recording magnetic information on traveler's checks
US5745695A (en) 1996-01-16 1998-04-28 Motorola Inc. Radio system with suspension of packet data service during non-data service connection
US5754849A (en) 1996-01-30 1998-05-19 Wayfarer Communications, Inc. Self-describing object providing dynamic manipulation of heterogeneous data values and semantic identity between memory and transmission representations
US5946485A (en) 1996-02-09 1999-08-31 Intervoice Limited Partnership Enhanced graphical development environment for controlling program flow
FI102869B (fi) * 1996-02-26 1999-02-26 Nokia Mobile Phones Ltd Laite, menetelmä ja järjestelmä eri sovelluksiin liittyvien tietojen l ähettämiseksi ja vastaanottamiseksi
US20020049832A1 (en) 1996-03-08 2002-04-25 Craig Ullman Enhanced video programming system and method for incorporating and displaying retrieved integrated internet information segments
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US5706502A (en) 1996-03-25 1998-01-06 Sun Microsystems, Inc. Internet-enabled portfolio manager system and method
US5790548A (en) 1996-04-18 1998-08-04 Bell Atlantic Network Services, Inc. Universal access multimedia data network
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US5815709A (en) 1996-04-23 1998-09-29 San Microsystems, Inc. System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like
US5778368A (en) 1996-05-03 1998-07-07 Telogy Networks, Inc. Real-time embedded software respository with attribute searching apparatus and method
US5778187A (en) 1996-05-09 1998-07-07 Netcast Communications Corp. Multicasting method and apparatus
US5835737A (en) 1996-05-10 1998-11-10 Apple Computer, Inc. Method and apparatus for arbitrating access to selected computer system devices
US5813013A (en) 1996-06-06 1998-09-22 Microsoft Corporation Representing recurring events
US5768532A (en) 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
JP3488019B2 (ja) 1996-06-17 2004-01-19 株式会社山武 制御設計用コンフィギュレーション・ツールの部品再利用方法
US5727145A (en) 1996-06-26 1998-03-10 Sun Microsystems, Inc. Mechanism for locating objects in a secure fashion
US5809507A (en) 1996-07-01 1998-09-15 Sun Microsystems, Inc. Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US5818448A (en) 1996-07-02 1998-10-06 Sun Microsystems, Inc. Apparatus and method for identifying server computer aggregation topologies
US5748897A (en) 1996-07-02 1998-05-05 Sun Microsystems, Inc. Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer
US5860004A (en) 1996-07-03 1999-01-12 Sun Microsystems, Inc. Code generator for applications in distributed object systems
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5875335A (en) 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
US5787425A (en) 1996-10-01 1998-07-28 International Business Machines Corporation Object-oriented data mining framework mechanism
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5915001A (en) 1996-11-14 1999-06-22 Vois Corporation System and method for providing and using universally accessible voice and speech data files
US5944793A (en) 1996-11-21 1999-08-31 International Business Machines Corporation Computerized resource name resolution mechanism
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5892904A (en) 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5884024A (en) 1996-12-09 1999-03-16 Sun Microsystems, Inc. Secure DHCP server
US5787431A (en) 1996-12-16 1998-07-28 Borland International, Inc. Database development system with methods for java-string reference lookups of column names
US6285987B1 (en) * 1997-01-22 2001-09-04 Engage, Inc. Internet advertising system
US6301661B1 (en) 1997-02-12 2001-10-09 Verizon Labortories Inc. Enhanced security for applications employing downloadable executable content
US5815149A (en) 1997-02-19 1998-09-29 Unisys Corp. Method for generating code for modifying existing event routines for controls on a form
US5935249A (en) 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
US6061713A (en) 1997-03-12 2000-05-09 Fujitsu Limited Communications system for client-server data processing systems
US5864866A (en) 1997-03-26 1999-01-26 International Business Machines Corporation Apparatus and method for providing externalization in an object-oriented environment
US5890158A (en) 1997-03-31 1999-03-30 International Business Machines Corporation Method, apparatus, and program storage device for sharing objects with a network server and a database server using a common object model
US5808911A (en) 1997-06-19 1998-09-15 Sun Microsystems, Inc. System and method for remote object resource management
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6446108B1 (en) * 1997-07-18 2002-09-03 Lucent Technologies Inc. Method for wide area network service location
US5946694A (en) 1997-09-29 1999-08-31 International Business Machines Corporation Apparatus and method for transparent application of service to business objects
US6061699A (en) 1997-11-03 2000-05-09 International Business Machines Corporation Method and computer program product for extracting translatable material from browser program function codes using variables for displaying MRI
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6016496A (en) 1997-11-20 2000-01-18 International Business Machines Corporation Method and apparatus for an object-oriented object for retrieving information from local and remote databases
US6009103A (en) 1997-12-23 1999-12-28 Mediaone Group, Inc. Method and system for automatic allocation of resources in a network
CN1298503A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 分布式系统中的动态查找服务
US6026414A (en) 1998-03-05 2000-02-15 International Business Machines Corporation System including a proxy client to backup files in a distributed computing environment
US7043532B1 (en) * 1998-05-07 2006-05-09 Samsung Electronics Co., Ltd. Method and apparatus for universally accessible command and control information in a network
CN1115824C (zh) * 1998-05-07 2003-07-23 三星电子株式会社 网络中的装置对装置命令与控制的方法和系统
US6212522B1 (en) 1998-05-15 2001-04-03 International Business Machines Corporation Searching and conditionally serving bookmark sets based on keywords
US6494562B1 (en) 1998-09-03 2002-12-17 Hewlett-Packard Company Method and apparatus for identifying a sales channel
US6216158B1 (en) * 1999-01-25 2001-04-10 3Com Corporation System and method using a palm sized computer to control network devices
AU2883000A (en) * 1999-02-17 2000-09-04 Diebold Incorporated Method and system for connecting services to an automated transaction machine
US6604140B1 (en) * 1999-03-31 2003-08-05 International Business Machines Corporation Service framework for computing devices
US7472349B1 (en) * 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6560633B1 (en) 1999-06-10 2003-05-06 Bow Street Software, Inc. Method for creating network services by transforming an XML runtime model in response to an iterative input process
US6792605B1 (en) * 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data
WO2000078001A2 (en) * 1999-06-11 2000-12-21 Microsoft Corporation General api for remote control of devices
US6910068B2 (en) * 1999-06-11 2005-06-21 Microsoft Corporation XML-based template language for devices and services
US6892230B1 (en) * 1999-06-11 2005-05-10 Microsoft Corporation Dynamic self-configuration for ad hoc peer networking using mark-up language formated description messages
US6725281B1 (en) * 1999-06-11 2004-04-20 Microsoft Corporation Synchronization of controlled device state using state table and eventing in data-driven remote device control model
US6594700B1 (en) * 1999-06-14 2003-07-15 International Business Machines Corporation System and method for implementing a universal service broker interchange mechanism
JP4058845B2 (ja) * 1999-06-24 2008-03-12 松下電器産業株式会社 ゲートウェイ装置
US6405175B1 (en) 1999-07-27 2002-06-11 David Way Ng Shopping scouts web site for rewarding customer referrals on product and price information with rewards scaled by the number of shoppers using the information
US6775783B1 (en) 1999-08-13 2004-08-10 Cisco Technology, Inc. Client security for networked applications
JP2003527627A (ja) 1999-12-02 2003-09-16 ゼド インコーポレイテッド 目標設定された内容のためのデータ処理システム
US20020010757A1 (en) 1999-12-03 2002-01-24 Joel Granik Method and apparatus for replacement of on-line advertisements
EP1264258A2 (en) 2000-01-06 2002-12-11 Anthony R. Rothschild System and method for adding an advertisement to a personal communication
US6496857B1 (en) * 2000-02-08 2002-12-17 Mirror Worlds Technologies, Inc. Delivering targeted, enhanced advertisements across electronic networks
US20020032677A1 (en) 2000-03-01 2002-03-14 Jeff Morgenthaler Methods for creating, editing, and updating searchable graphical database and databases of graphical images and information and displaying graphical images from a searchable graphical database or databases in a sequential or slide show format
US20010054001A1 (en) 2000-03-10 2001-12-20 Robinson Gary B. System and method for advertising
US6604099B1 (en) * 2000-03-20 2003-08-05 International Business Machines Corporation Majority schema in semi-structured data
US6658415B1 (en) * 2000-04-28 2003-12-02 International Business Machines Corporation Monitoring and managing user access to content via a universally accessible database
AU2001264569A1 (en) 2000-05-05 2001-11-20 L90, Inc. Method and apparatus for transaction tracking over a computer network
US6789126B1 (en) * 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6862594B1 (en) * 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
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
US7246145B1 (en) * 2000-08-08 2007-07-17 Cisco Technology, Inc. Fully distributed, scalable infrastructure, communication system

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007538313A (ja) * 2004-04-29 2007-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散ネットワーキング・アーキテクチャ内にサービスをモデル化し、動的にデプロイするためのシステムおよび方法
JP2011530759A (ja) * 2008-08-14 2011-12-22 サムスン エレクトロニクス カンパニー リミテッド UPnPを用いたホームネットワークにおける入力を提供する方法及びシステム
US8429309B2 (en) 2008-08-14 2013-04-23 Samsung Electronics Co., Ltd. Method and system for providing input in home network using UPnP
KR101591967B1 (ko) * 2010-11-19 2016-02-04 인터디지탈 패튼 홀딩스, 인크 자원의 공지 및 비공지를 위한 기계대 기계(m2m) 인터페이스 절차
US11234213B2 (en) 2010-11-19 2022-01-25 Iot Holdings, Inc. Machine-to-machine (M2M) interface procedures for announce and de-announce of resources
KR20140019485A (ko) * 2010-11-19 2014-02-14 인터디지탈 패튼 홀딩스, 인크 자원의 공지 및 비공지를 위한 기계대 기계(m2m) 인터페이스 절차
JP2014505382A (ja) * 2010-11-19 2014-02-27 インターデイジタル パテント ホールディングス インコーポレイテッド リソースの公表および公表取消しのためのマシン間(m2m)インタフェース手順
KR101908756B1 (ko) * 2010-11-19 2018-10-16 아이오티 홀딩스, 인크. 자원의 공지 및 비공지를 위한 기계대 기계(m2m) 인터페이스 절차
JP2018098815A (ja) * 2010-11-19 2018-06-21 インターデイジタル パテント ホールディングス インコーポレイテッド リソースの公表および公表取消しのためのマシン間(m2m)インタフェース手順
US9170849B2 (en) 2012-01-09 2015-10-27 Microsoft Technology Licensing, Llc Migration of task to different pool of resources based on task retry count during task lease
US9372735B2 (en) 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US8904008B2 (en) 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
KR20140109939A (ko) * 2012-01-09 2014-09-16 마이크로소프트 코포레이션 Paas 자원들, 작업들 및 스케줄링의 분리 기법
KR101994506B1 (ko) 2012-01-09 2019-06-28 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Paas 자원들, 작업들 및 스케줄링의 분리 기법
WO2013106256A1 (en) * 2012-01-09 2013-07-18 Microsoft Corporation Decoupling paas resources, jobs, and scheduling
WO2015163396A1 (ja) * 2014-04-23 2015-10-29 株式会社リコー アクセス管理システム、通信システム、記録媒体、及びアクセス管理方法
JPWO2015163396A1 (ja) * 2014-04-23 2017-04-20 株式会社リコー アクセス管理システム、通信システム、記録媒体、及びアクセス管理方法

Also Published As

Publication number Publication date
DE60101911T2 (de) 2004-11-04
WO2001086420A3 (en) 2002-11-28
EP1285334B1 (en) 2004-01-28
DE60101911D1 (de) 2004-03-04
WO2001086420A2 (en) 2001-11-15
EP1285334A2 (en) 2003-02-26
US8135796B1 (en) 2012-03-13
AU2001264577A1 (en) 2001-11-20
ATE258695T1 (de) 2004-02-15

Similar Documents

Publication Publication Date Title
US7016966B1 (en) Generating results gates in a distributed computing environment
US7200848B1 (en) Migrating processes using data representation language representations of the processes in a distributed computing environment
EP1285334B1 (en) Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US7398533B1 (en) Remote function invocation with messaging in a distributed computing environment
US6789126B1 (en) Addressing message gates in a distributed computing environment
EP1281119B1 (en) Mechanism and apparatus for returning results of services in a distributed computing environment
US9110711B2 (en) Dynamic displays in a distributed computing environment
US7243356B1 (en) Remote method invocation with secure messaging in a distributed computing environment
US6898618B1 (en) Client-specified display services in a distributed computing environment
US6850979B1 (en) Message gates in a distributed computing environment
US7010573B1 (en) Message gates using a shared transport in a distributed computing environment
US7065574B1 (en) Messaging system using pairs of message gates in a distributed computing environment
JP2004501428A (ja) サービスの近接発見の方法および装置
WO2001086419A2 (en) Method and apparatus to discover services using flexible search criteria
WO2001086487A2 (en) Mechanism and apparatus for web-based searching of uri-addressable repositories in a distributed computing environment
WO2001086428A2 (en) Mechanism and apparatus for uri-addressable repositories of service advertisements and other content in a distributed computing environment
EP1287423A2 (en) Method and apparatus to obtain service capability credentials
EP1380941A2 (en) Tranformation of objects between a computer programming language and data representation language
EP1290547B1 (en) Transformation of objects between a computer programming language and a data representation language
EP1314085B1 (en) Remote function invocation with messaging in a distributed computing environment
EP1384142B1 (en) Bridging between a data representation language message-based distributed computing environment and other environments
JP2003533767A (ja) コンピュータ・プログラミング言語とデータ表現言語との間のオブジェクトの変換