JP2003533767A - Transform objects between computer programming languages and data representation languages - Google Patents

Transform objects between computer programming languages and data representation languages

Info

Publication number
JP2003533767A
JP2003533767A JP2001583309A JP2001583309A JP2003533767A JP 2003533767 A JP2003533767 A JP 2003533767A JP 2001583309 A JP2001583309 A JP 2001583309A JP 2001583309 A JP2001583309 A JP 2001583309A JP 2003533767 A JP2003533767 A JP 2003533767A
Authority
JP
Japan
Prior art keywords
representation
service
language
client
virtual machine
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
JP2001583309A
Other languages
Japanese (ja)
Inventor
スロウター,グレゴリイ・エル
ソウルパフ,トーマス・イー
トラバーサット,バーナード・エイ
アブデラジス,モハメッド・エム
ドゥイゴウ,マイケル・ジェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Priority claimed from US09/663,563 external-priority patent/US7426721B1/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority claimed from PCT/US2001/015276 external-priority patent/WO2001086427A2/en
Publication of JP2003533767A publication Critical patent/JP2003533767A/en
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 オブジェクトをオブジェクトの表現にコンパイルするメカニズムおよびオブジェクトの表現をオブジェクトのコピーに逆コンパイルするメカニズムについてを説明する。仮想マシン(たとえば、Java仮想マシン(JVM))は、オブジェクト(たとえば、Javaオブジェクト)をオブジェクトのデータ表現言語(たとえば、XML)の表現にコンパイルする拡張機能およびオブジェクトの表現をオブジェクトに逆コンパイルする拡張機能を含むことができる。仮想マシンは、コンパイル/逆コンパイル拡張機能のアプリケーション・プログラミング・インターフェース(API)を備えることができる。クライアントおよびサービスは、仮想マシン内で実行中の場合がある。仮想マシンは、同じデバイスまたは異なるデバイスに置くことができる。コンパイラ/逆コンパイラAPIは、オブジェクトを入力として受け付け、オブジェクトのデータ表現言語表現とその参照されているすべてのオブジェクト(オブジェクト・グラフ)をデータ・ストリーム内に出力することができる。さらに、コンパイラ/逆コンパイラAPIは、データ・ストリームを受け付けることができ、これは、オブジェクトの表現とその参照されているすべてのオブジェクト(オブジェクト・グラフ)を含み、オブジェクト(およびそのオブジェクト・グラフ内のすべてのオブジェクト)を出力する。一実施形態では、中間形式を使用してデータ表現言語ドキュメントを表し、この中間形式を動的に処理し、データ表現言語ドキュメントからクラス・インスタンスを生成することができる。 (57) [Summary] A mechanism for compiling an object into an object representation and a mechanism for decompiling the object representation into a copy of the object will be described. A virtual machine (eg, a Java virtual machine (JVM)) is an extension that compiles an object (eg, a Java object) into a representation of a data representation language (eg, XML) of the object and an extension that decompiles the representation of the object into an object. Features can be included. The virtual machine can include an application programming interface (API) for a compile / decompile extension. Clients and services may be running within a virtual machine. The virtual machines can be on the same device or different devices. The compiler / decompiler API can accept an object as input and output a data representation language representation of the object and all referenced objects (object graphs) in a data stream. In addition, the compiler / decompiler API can accept a data stream, which includes a representation of an object and all its referenced objects (object graphs), and objects (and the objects in that object graph). Output all objects). In one embodiment, an intermediate format may be used to represent a data representation language document, and the intermediate format may be dynamically processed to generate class instances from the data representation language document.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】 (発明の背景) (1.発明の分野) 本発明は、仮想マシンに関し、より詳細には、コンピュータ・プログラミング
言語オブジェクトとオブジェクトのデータ表現言語表現との間の変換に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to virtual machines, and more particularly to conversion between computer programming language objects and data representation language representations of objects.

【0002】 (2.関連技術の説明) インテリジェント型デバイスの普及が進んでいる。このようなデバイスとして
は、スマート・アプライアンス、パーソナル・デジタル・アシスタント(PDA
)、携帯電話、ラップ・トップ・コンピュータ、デスクトップ・コンピュータ、
ワークステーション、メインフレーム、さらにはスーパー・コンピュータなども
ある。ネットワークも、次第に、互いに通信できるインテリジェント型デバイス
を相互接続する一般的な方法となってきている。ただし、さまざまなインテリジ
ェント型デバイスの計算能力と記憶能力には大きな違いがある。能力が制限され
ているデバイスは、省スペース・デバイスまたは「シン(thin)」デバイス呼ばれ
ることがある。シン・デバイスは、より能力の高いデバイスを相互接続するネッ
トワークに参加することができない場合がある。しかし、さまざまな異なる種類
のインテリジェント型デバイスを相互接続することが望ましいと考えられる。
(2. Description of Related Art) Intelligent devices are becoming widespread. Such devices include smart appliances, personal digital assistants (PDAs)
), Mobile phones, laptop computers, desktop computers,
There are workstations, mainframes, and even supercomputers. Networks are also becoming a common way of interconnecting intelligent devices that can communicate with each other. However, there are significant differences in the computational and memory capacities of various intelligent devices. Devices with limited capabilities are sometimes referred to as space-saving devices or "thin" devices. Thin devices may not be able to join the network interconnecting the more powerful devices. However, it may be desirable to interconnect a variety of different types of intelligent devices.

【0003】 ネットワーキング能力の向上はなおいっそう望まれている。ビジネス用ネット
ワークは、仕入れ先と顧客との相互の直接的なやり取りを取り込むように拡大を
続けている。携帯電話、パーソナル・デジタル・アシスタント、およびインター
ネット対応コンピュータは、企業においても家庭においても当たり前のものにな
っている。ホーム・ネットワークは、テレビやステレオ機器などのオーディオ/
ビジュアル機器を家庭用コンピュータ、およびセキュリティ・システムや温度制
御サーモスタットなどのインテリジェント型システムを制御するその他のデバイ
スに相互接続するために使用することができる。ケーブルやASDLなどの高帯
域幅メディアを使用すると、インターネット・アクセス・ビデオ・オンデマンド
、電子商取引などのサービスを向上させることができる。ネットワーク・システ
ムは普及途上にある。正式なネットワークがなくても、インテリジェント型デバ
イスで互いに通信し、またリソースを共有できることが望ましい。
There is an ever-increasing desire for improved networking capabilities. Business networks continue to expand to capture the direct interaction between suppliers and customers. Mobile phones, personal digital assistants, and Internet-enabled computers have become commonplace in the enterprise and at home. Home networks are audio / video devices such as TVs and stereo devices.
Visual equipment can be used to interconnect home computers and other devices that control intelligent systems such as security systems and temperature controlled thermostats. High bandwidth media such as cable and ASDL can be used to enhance services such as internet access video on demand, e-commerce. Network systems are in widespread use. It is desirable for intelligent devices to be able to communicate with each other and share resources without a formal network.

【0004】 現在、従来のネットワークのセットアップ、拡張および管理は複雑な作業であ
る。たとえば、ハードウェアまたはソフトウェアをネットワークに追加するには
、多くの場合、ネットワーク管理者がドライバをロードをし、システムを設定す
る必要がある。ネットワーク構成に小さな変更を加えるにしても、ネットワーク
全体を一定期間停止することが必要になる場合がある。さらに、所定のネットワ
ークで通信するのに必要なインターフェースをサポートしていないインテリジェ
ント型デバイスもある。
Currently, setting up, scaling and managing a traditional network is a complex task. For example, adding hardware or software to a network often requires a network administrator to load drivers and configure the system. Even minor changes to the network configuration may require the entire network to be down for a period of time. In addition, some intelligent devices do not support the interfaces required to communicate on a given network.

【0005】 必要なのは、各種のインテリジェント型デバイスを接続し、通信およびリソー
スの共有を可能にしながら、従来のネットワークに存在する相互運用性と複雑な
構成という問題を回避できる単純な方法である。ネットワークにデバイスを追加
する機能を改善する技術はさまざまなものが存在する。たとえば、ユニバーサル
・シリアル・バス、1394、およびPCIなどの多くの現代的な入出力バスで
は、プラグ&プレイや動的ディスカバリ・プロトコルをサポートしており、新し
いデバイスをバス上に追加する作業が簡単に行える。しかし、これらの解決方法
は、特定の周辺機器バスに制限されており、一般的なネットワークには適してい
ない。
What is needed is a simple way to connect a variety of intelligent devices, enable communication and resource sharing, while avoiding the interoperability and complex configuration problems that exist in traditional networks. There are various technologies that improve the ability to add devices to a network. For example, many modern I / O buses such as Universal Serial Bus, 1394, and PCI support plug-and-play and dynamic discovery protocols, making it easy to add new devices to the bus. You can do it. However, these solutions are limited to specific peripheral buses and are not suitable for general networks.

【0006】 最近の技術である、Sun Microsystems,Inc.のJini
では、プリンタおよびディスク・ドライブなどのデバイスをネットワーク上で簡
単に接続し共有できるようにすることを追求している。Jiniを組み込んだデ
バイスは、ネットワークへアナウンスを行い、自デバイスの能力に関する詳細を
知らせ、直ちにネットワーク上の他のデバイスからアクセスできる状態に入る。
Jiniでは、さまざまなデバイスの機能をネットワーク上で共有する分散コン
ピューティングが可能になっている。Jini技術は、ユーザがネットワーク上
でサービスおよびリソースを共有できるようにすることを目指している。Jin
i技術の他の目標は、たとえユーザのネットワーク・ロケーションが変化しても
ユーザはネットワーク上の任意の場所のリソースに簡単にアクセスすることがで
きるようにすることである。Jiniではさらに、デバイス、ソフトウェア、お
よびユーザのネットワークを構築し、保守し、変更するタスクを簡素化すること
も追及している。
A recent technology, Sun Microsystems, Inc. Jini
Seeks to make devices such as printers and disk drives easy to connect and share over the network. A device incorporating Jini announces to the network, informs about the details of its own capability, and immediately enters a state where it can be accessed by other devices on the network.
Jini enables distributed computing in which the functions of various devices are shared on a network. Jini technology aims to allow users to share services and resources over a network. Jin
Another goal of i-technology is to allow users to easily access resources anywhere on the network, even if their network location changes. Jini is also seeking to simplify the task of building, maintaining, and modifying networks of devices, software, and users.

【0007】 Jiniでは、各Jini対応デバイスに特定の容量のメモリと処理能力が必
要である。通常、Jini対応デバイスはJava仮想マシン(JVM)を備え
ている。そのため、JiniシステムはJava技術を中核とする。Javaは
、Sun Microsystems,Inc.が開発した高水準オブジェクト
指向プログラミング言語である。Javaソース・コードをバイトコードと呼ば
れる形式にコンパイルし、これをJava仮想マシンで実行することができる。
In Jini, each Jini-compatible device requires a specific capacity of memory and processing capacity. Usually, a Jini-compatible device includes a Java virtual machine (JVM). Therefore, the Jini system has Java technology at its core. Java is available from Sun Microsystems, Inc. Is a high-level object-oriented programming language developed by. You can compile Java source code into a format called bytecode and run it in a Java virtual machine.

【0008】 バイトコードは、「実際の」コンピュータ・マシンであるハードウェア・プロ
セッサではなく、仮想マシンにより処理されるコンピュータ・ソース・コードで
ある。仮想マシンは、一般化された機械語命令(バイトコード)を特定の機械語
命令(コンピュータのプロセッサが理解する命令)に変換する。各プラットフォ
ームの仮想マシンに付属する言語を使用し、ソース言語ステートメントを1回だ
けコンパイルして、その仮想マシンをサポートするプラットフォーム上で実行す
ることができる。Javaプログラミング言語は、このような言語の一例であり
、Java仮想マシン(JVM)は、Javaプログラミング言語で書かれたプ
ログラムをサポートする仮想マシン・プラットフォームの一例である。Java
仮想マシンは、ほとんどのコンピューティング・プラットフォームに用意されて
いるため、JavaしたがってJiniは一定のプラットフォーム独立性を実現
している。Jiniアーキテクチャでは、Javaプログラミング言語がJin
iシステムのコンポーネントの実装言語であるという想定を活用している。Ja
vaコードを動的にダウンロードして実行できることが、Jiniアーキテクチ
ャの多くの機能の中心となっている。
Bytecode is computer source code that is processed by a virtual machine rather than the hardware processor that is the “real” computer machine. The virtual machine translates generalized machine language instructions (bytecodes) into specific machine language instructions (instructions understood by a computer processor). Using the language that ships with the virtual machine for each platform, the source language statements can be compiled only once and run on the platform that supports the virtual machine. The Java programming language is an example of such a language, and the Java Virtual Machine (JVM) is an example of a virtual machine platform that supports programs written in the Java programming language. Java
Virtual machines are available on most computing platforms, so Java and hence Jini achieves some platform independence. In the Jini architecture, the Java programming language is Jin.
It makes use of the assumption that it is the implementation language of the components of the i system. Ja
The ability to dynamically download and execute va code is central to many features of the Jini architecture.

【0009】 Jiniアーキテクチャの目的は、デバイスとソフトウェア・コンポーネント
からなる複数のグループを単一の動的分散システムとして連合させることである
。Jiniアーキテクチャの概念で重要なのは、サービスという概念である。サ
ービスは、人、プログラム、または他のサービスが使用できるエンティティであ
る。サービスの例としては、文書を印刷するサービスと、一方のワードプロセッ
サ形式から他方の形式に変換するサービスの2つがある。Jiniを使用すると
、Jiniシステムのメンバがサービスへのアクセスを共有することができる。
Jiniシステム内のサービスは、Javaプログラミング言語で書かれた一組
のインターフェースである、サービス・プロトコルを使用することにより互いに
通信する。サービスの探索およびソリューションは、Jiniシステム内でルッ
クアップ・サービスを使用して行う。ルックアップ・サービスにより、サービス
によって提供される機能を示すインターフェースを、そのサービスを実装するオ
ブジェクト群にマッピングする。
The purpose of the Jini architecture is to unify multiple groups of devices and software components into a single dynamic distributed system. An important concept in the Jini architecture is the concept of service. A service is an entity that can be used by people, programs, or other services. Two examples of services are a service for printing a document and a service for converting from one word processor format to the other. Jini allows members of the Jini system to share access to services.
Services within the Jini system communicate with each other by using a service protocol, which is a set of interfaces written in the Java programming language. Service discovery and solutions are done using lookup services within the Jini system. The lookup service maps the interfaces that represent the functionality provided by the service to the objects that implement the service.

【0010】 記述エントリもサービスに関連付けることができる。デバイスとアプリケーシ
ョンは、発見(discovery)と呼ばれるプロセスを使用してJiniネットワーク
に登録する。デバイスまたはアプリケーションは、いったん登録されると、ルッ
クアップ・サービス内に入る。ルックアップ・サービスでは、ネットワーク上の
これらのサービスへのポインタを格納するだけでなく、これらのサービスにアク
セスするためのコードも格納する。たとえば、プリンタはルックアップ・サービ
スに登録されると、そのプリンタ・ドライバおよび/またはドライバとのインタ
ーフェースをルックアップ・サービスにロードする。クライアントがプリンタの
使用を要求すると、そのドライバおよびドライバ・インターフェースはルックア
ップ・サービスからそのクライアントにダウンロードされる。このようにコード
を移動できることは、クライアント側で、ドライバやその他のソフトウェアをプ
リインストールしたりロードをすることなく、ネットワークからのサービスを利
用することができることを意味する。
Description entries can also be associated with services. Devices and applications register with the Jini network using a process called discovery. Once registered, the device or application enters the lookup service. Lookup services not only store pointers to these services on the network, but also the code to access these services. For example, when a printer is registered with a lookup service, it loads the printer driver and / or its interface with the driver into the lookup service. When a client requests the use of a printer, its driver and driver interface are downloaded to the client from a lookup service. This move of code means that clients can use services from the network without pre-installing or loading drivers or other software.

【0011】 Jiniシステム内のサービス間の通信は、Java Remote Met
hod Invocation(RMI)を使用してを行う。RMIは、従来の
リモート・プロシージャ・コールのメカニズムに対するJavaプログラミング
言語対応の拡張機能である。RMIでは、Jiniネットワーク内でオブジェク
トからオブジェクトへデータを渡すことができるだけでなく、コードを含む完全
なオブジェクトも渡すことができる。Jiniシステムは、コードがJavaオ
ブジェクトとしてカプセル化された形式でネットワーク内を移動できることに依
存している。
Communication between services in the Jini system is performed by Java Remote Met.
This is done using hod Invocation (RMI). RMI is a Java programming language extension to the conventional remote procedure call mechanism. In RMI, not only can data be passed from object to object within the Jini network, but also complete objects, including code, can be passed. The Jini system relies on the code being able to move around the network in a form encapsulated as Java objects.

【0012】 Jiniシステム内のサービスへのアクセスはリースに基づく。リースとは、
一定期間保証されたアクセスを許可することである。各リースはサービスの利用
者とサービスの提供者との間で、サービス・プロトコルの一環として交渉される
。ある期間サービスが要求されると、ある期間、たぶん要求期間と考えられるが
、アクセスを許可できる。サービスがJiniシステムの一部としてとどまるた
めにはリースを更新する必要がある。
Access to services within the Jini system is based on leases. What is a lease?
It is to allow guaranteed access for a certain period of time. Each lease is negotiated between the service consumer and the service provider as part of a service protocol. If service is requested for a period of time, access can be granted for a period of time, perhaps the requested period. Leases need to be renewed in order for the service to remain part of the Jini system.

【0013】 図1は、Jiniの基本的な技術の積み重ねを示している。Jini技術では
、分散プログラミング・モデル12(JavaSpaces、リース、およびオ
ブジェクト・テンプレートによってサポートされている)を定義する。Jini
のオブジェクト通信は、TCP/IP対応ネットワーキング・レイヤ16上のR
MIレイヤ14に基づいている。
FIG. 1 shows a stack of Jini's basic techniques. The Jini technology defines a distributed programming model 12 (supported by JavaSpaces, leases, and object templates). Jini
Object communication is performed by R on the TCP / IP compatible networking layer 16.
It is based on the MI layer 14.

【0014】 Jiniは、分散コンピューティングを簡素化するための有望な技術である。
ただし、デバイスの種類によっては、Jiniが適さない場合もある。コンピュ
ーティング技術の流れは、分散Web中心サービスおよびコンテンツ・モデルに
向かっており、クライアント・サービスとコンテンツの内容は急激に変化してい
る。将来のクライアントは、ユーザがどこへでも持ち運べるコンパニオン・タイ
プのデバイスになると思われる。このようなデバイスとしては、たとえば、携帯
電話とPDAとの組み合わせが考えられる。このようなデバイスがより強力なデ
バイスとだけでなく、より軽量なシン・デバイスまたは非力なデバイスとも通信
し、リソースを共有できることが望ましい。
Jini is a promising technology for simplifying distributed computing.
However, Jini may not be suitable depending on the type of device. The flow of computing technology is toward distributed Web-centric services and content models, and the content of client services and content is changing rapidly. Future clients will be companion-type devices that users can take with them wherever they go. As such a device, for example, a combination of a mobile phone and a PDA can be considered. It would be desirable for such devices to be able to communicate and share resources not only with more powerful devices, but also with lighter thin or powerless devices.

【0015】 さらに、インターネットが出現し、その結果ネットに接続したデバイスが爆発
的に増え、こうした現象を活用するように設計された分散プログラミング・モデ
ルが必要になった。クライアントが信頼できる、セキュリティで保護され安全な
方法でサービスに接続するための実現技術が要求される。シック(thick)・クラ
イアントからシン・クライアントに至るさまざまなクライアントとサービスをイ
ンターネット、企業内イントラネット、またさらには単一コンピュータ内で接続
する必要がある。クライアントとサービスの両方から距離、待ち時間、実装を抽
象化(abstract)することが望ましい。
In addition, the advent of the Internet, resulting in an explosive increase in devices connected to the net, necessitated a distributed programming model designed to take advantage of these phenomena. Enabling technologies are required for clients to connect to services in a reliable, secure and secure manner. Various clients and services, from thick clients to thin clients, need to be connected within the Internet, corporate intranet, or even a single computer. It is desirable to abstract distance, latency, and implementation from both clients and services.

【0016】 分散コンピューティング技術で重要な課題は、パワーのあるシック・クライア
ントから組み込み型モバイル・デバイスなどの非常に軽量なシン・クライアント
に至るまでスケーラブルにすることである。Jiniなどの現在の分散コンピュ
ーティング技術は、あらゆる種類のクライアントのニーズに応じられるほどスケ
ーラブルでないといえる。省スペース・デバイスや組み込み型デバイスなどの一
部のデバイスでは、メモリリソースが十分でなかったり、十分なネットワーキン
グの帯域幅を欠いていたりして、現在の分散コンピューティング技術に十分に参
加できない。組み込み型モバイル・デバイスなどのクライアント製品群のローエ
ンドは、多くの場合、コード実行環境が限られていたり固定されている。これら
のデバイスもまた、ストレージ能力が最低限であったりあるいは全く永続性がな
い場合がある。大半の小型組み込み型モバイル・デバイスは、Java仮想マシ
ンをサポートしていない。ほとんどのコード実行可能小型クライアントはネイテ
ィブ・コードのみを実行する。さらに、ほとんどの小型デバイスは、その単独の
永続的ストレージ・メディアとしてせいぜいフラッシュ・メモリーやバッテリ・
バックアップRAMを備えているぐらいである。ストレージの容量は非常に小さ
く、時には本質的に読み取り専用であることが多い。さらに、このタイプのスト
レージ・メディアのアクセス・タイムは、より強力なクライアントのハード・デ
ィスクのアクセス・タイムに比べて1桁以上遅いことが多い。
A key challenge in distributed computing technology is to scale from powerful thick clients to very lightweight thin clients such as embedded mobile devices. Current distributed computing technologies such as Jini are not scalable enough to meet the needs of clients of all kinds. Some devices, such as space-saving devices and embedded devices, do not fully participate in current distributed computing technology due to insufficient memory resources or lack of sufficient networking bandwidth. The low end of client products such as embedded mobile devices often have a limited or fixed code execution environment. These devices may also have minimal storage capacity or no persistence at all. Most small embedded mobile devices do not support Java virtual machines. Most code-executable small clients execute only native code. In addition, most small devices use at most flash memory or battery storage as their sole persistent storage medium.
It only has a backup RAM. The storage capacity is very small and often read-only in nature. Moreover, the access time of this type of storage medium is often more than an order of magnitude slower than the access time of the hard disk of the more powerful client.

【0017】 Jiniなどの既存の接続技術は、サイズが大きいことから、望んでいるほど
はスケーラブルでありえない。たとえば、Jiniでは、すべての参加者がJa
vaをサポートする必要があるが、小さなクライアントの多くはJava仮想マ
シン用にリソースを確保することはできない。さらに、JiniではRMIを使
用するため、クライアント側でコードとコンテンツをダウンロードできる必要が
ある。Jiniは、新しいクラスをダウンロードすることにより既存のクライア
ント・プラットフォームを補強しているので、組み込む型デバイスなどの小型デ
バイスにセキュリティおよびサイズの面で問題が生じることがある。Jiniは
、コードとデータを渡すことによりクライアントとリソースが通信するという形
で動作する。クライアントがJiniサービスをアクティブにすると、このサー
ビスは結果をクライアントに返すが、これには大量のコードまたはコンテンツが
含まれる場合がある。Jiniでは、クライアントはメソッドを呼び出し、大き
なオブジェクトが返され、それをダウンロードすることがある。クライアントは
、返されたオブジェクトを受け入れるだけのリソースを持たないことがある。さ
らに、RMIとJava自体が大量のメモリを必要とする。多くの省スペース・
デバイスは、現在の分散コンピューティング技術に事実上または少しでも加わる
だけのリソースを持たないことがある。
Existing connection technologies such as Jini may not be as scalable as desired due to their large size. For example, in Jini, all participants have Ja
Although it needs to support va, many small clients cannot reserve resources for the Java virtual machine. Furthermore, since Jini uses RMI, it is necessary that the code and contents can be downloaded on the client side. As Jini augments existing client platforms by downloading new classes, small devices such as embedded devices may have security and size issues. Jini operates in such a way that a resource communicates with a client by passing code and data. When a client activates a Jini service, the service returns a result to the client, which may contain a large amount of code or content. In Jini, the client may call a method, which may return a large object and download it. The client may not have the resources to accept the returned object. Furthermore, RMI and Java itself require a large amount of memory. A lot of space saving
A device may not have the resources to effectively or even add to current distributed computing technology.

【0018】 既存の分散コンピューティング技術の問題としては他に、多くの場合、複数の
レベルの接続能力およびプロトコルを必要とするという点があげられる。たとえ
ば、Jiniでは、コンピュータとデバイスを接続するための妥当な速度のネッ
トワークが存在していることを想定している。またJiniでは、TCP/IP
ネットワーク・トランスポート・プロトコルをサポートするデバイスも必要とす
る。しかし、多くの小型デバイスは接続能力が限られている。小型デバイスは、
ネットワーク接続の待ち時間が長かったり、または低速であったりし、TCP/
IPをサポートしない場合もある。
Another problem with existing distributed computing technologies is that they often require multiple levels of connectivity and protocols. For example, Jini assumes that there is a reasonably fast network for connecting computers and devices. In Jini, TCP / IP
You also need a device that supports the network transport protocol. However, many small devices have limited connectivity. Small devices
Long or slow network connection latency, TCP /
It may not support IP.

【0019】 上述のように、Jiniでは、JavaをサポートするJava仮想マシンを
備えるデバイスを必要とし、そのため、多くの小型デバイスには備えられないよ
うな処理能力およびストレージ機能を必要とする。このこともまた、Java対
応でないデバイスはJiniシステムに直接参加できないという点でJiniの
柔軟性を制約している。JiniはJavaを必要とするため、均質的な環境と
みなすことができる。ただし、非常に小型の組み込み型デバイスからPDA、携
帯電話、さらにラップトップおよび最強のコンピュータに至るまでの異機種分散
コンピューティングに対応する分散コンピューティング機能を備えることが望ま
しい。コモン・オブジェクト・リクエスト・ブローカ・アーキテクチャ(COR
BA)など他の異機種ソリューションも存在する。CORBAは、プログラム・
オブジェクトが、作成に使用されたプログラミング言語に関係なく、またはその
オブジェクトが実行されるオペレーティング・システムに関係なく互いに通信で
きるようにするアーキテクチャである。しかし、CORBAはJiniで取り扱
われている接続問題をすべて取り扱えるわけではない。さらに、CORBAには
Jiniと似たスケーラビリティの問題もある。
As mentioned above, Jini requires a device with a Java virtual machine that supports Java, and thus requires processing power and storage capabilities that many smaller devices do not have. This also limits Jini's flexibility in that non-Java enabled devices cannot directly participate in the Jini system. Since Jini requires Java, it can be regarded as a homogeneous environment. However, it is desirable to have distributed computing capabilities for heterogeneous distributed computing, from very small embedded devices to PDAs, cell phones to laptops and even the most powerful computers. Common Object Request Broker Architecture (COR
There are other heterogeneous solutions such as BA). CORBA is a program
An architecture that allows objects to communicate with each other regardless of the programming language used to create them or the operating system on which they are executed. However, CORBA cannot handle all the connection problems handled by Jini. In addition, CORBA has the same scalability problem as Jini.

【0020】 JiniやCORBAなどの技術では、コード中心のプログラミング・モデル
を使用して、リモート・コンピュータ間のインターフェースを定義している。コ
ード中心プログラミング・モデルでは、リモート・クライアントまたはコンポー
ネント間の通信にプログラム・インターフェースまたはAPIを定義する。AP
Iは、特定のプログラミング言語で定義することができる。APIは、適切な相
互運用性を確実なものとするために、すべてのソフトウェア・コンポーネントで
矛盾がないようになっていなければならない。コンポーネントに対するアクセス
はすべてこれらの標準APIを通じて行うため、これらのAPIを実装するコー
ドがクライアント・プラットフォーム内に存在している必要がある。コードは、
プラットフォームに静的にリンクすることも、また必要に応じて動的にダウンロ
ードすることもできる。多くの組み込み型またはモバイル・デバイスは、単に、
品質管理問題がかかわっているだけでなく、単一の言語およびプログラム実行環
境に依存しているということから、コードをネットワークから動的に受け入れる
ことができないのである。ネットワーキング・プロトコルなどのデータ中心モデ
ルは、コードの移動に依存することを避けているが、このようなプロトコルは簡
単に分散コンピューティングに対応できるほど機能豊富でなく、型安全性などコ
ードやその他のプログラミング機能によるプログラミングを簡単に行うことがで
きない。
Technologies such as Jini and CORBA use a code-centric programming model to define the interface between remote computers. The code-centric programming model defines a program interface or API for communication between remote clients or components. AP
I can be defined in a particular programming language. The API must be consistent with all software components to ensure proper interoperability. All access to components is through these standard APIs, so the code that implements these APIs must reside in the client platform. The code is
It can be statically linked to the platform or dynamically downloaded as needed. Many embedded or mobile devices simply
Not only is the quality control problem involved, but it also depends on a single language and program execution environment, so that the code cannot be dynamically accepted from the network. Data-centric models, such as networking protocols, avoid relying on code movement, but such protocols are not feature rich enough to easily accommodate distributed computing, and code and other types such as type safety. Programming by programming function cannot be done easily.

【0021】 従来の分散コンピューティング・システムは、第1のデバイスで実行されるプ
ログラムが第2のデバイスのプログラムをリモート・コールできるということに
依存しており、結果は第1のデバイスに返される。リモート・プロシージャ・コ
ール(RPC)は、プログラムまたはプロシージャのリモート・コールを行うた
めの基本的メカニズムである。CORBAとJiniは両方とも、プログラム・
メソッドをリモートから呼び出す機能に基づいている。ただし、JiniやCO
RBAなどのコードまたはオブジェクトを渡すことで通信を行うのは幾分複雑に
なることがある。たとえば、上述のように、JiniではJava Remot
e Method Invocation(RMI)を使用してサービス間の通
信を行う。クライアントがJavaオブジェクトをリモート・ロケーションとの
間で移動するには、シリアライゼーション/デシリアライゼーションの何らかの
手段が必要になる。Java開発キット(JDK)におけるこのような現在の機
能は、Javaオブジェクトの内容を判別するためにリフレクションAPIに依
存しており、最終的にはそのコードが仮想マシンに問い合わせを行う必要がある
。このコードはかなり大きく、非効率である。
A conventional distributed computing system relies on a program executing on a first device being able to remotely call a program on a second device, the results being returned to the first device. . Remote Procedure Call (RPC) is the basic mechanism for making remote calls to programs or procedures. Both CORBA and Jini
Based on the ability to call methods remotely. However, Jini and CO
Communicating by passing code or objects such as RBA can be somewhat complicated. For example, as mentioned above, in Jini Java Remote
Communication between services is performed using e Method Invocation (RMI). Some means of serialization / deserialization is required for the client to move Java objects to and from remote locations. Such current functionality in the Java Development Kit (JDK) relies on the reflection API to determine the contents of Java objects, which ultimately requires that code to query the virtual machine. This code is quite large and inefficient.

【0022】 シリアライゼーション/デシリアライゼーションを行うための現在の方法には
、サイズ、速度、およびオブジェクト・トラバーサル・モデルに関する基本的な
問題がある。JVMの外部のコードは、Javaオブジェクトの構造またはグラ
フを認識しないため、オブジェクト・グラフをトラバースし、引き離して、最終
的にJVMを呼び出す必要がある。Javaオブジェクトの格納および移動を行
う従来のシリアライゼーションおよびリフレクション・メカニズムは、すべての
種類のデバイス、特により軽量のシン・デバイスについては実用的でない。Ja
vaリフレクションおよびシリアライゼーションの問題点として、オブジェクト
のグラフ(オブジェクトの推移的閉包(transitive closure))リフレクションが
JVMの外部で実行することが困難であるという点があげられる。シリアライゼ
ーションは、大量のコードを必要とし、大きすぎる。さらに、シリアライゼーシ
ョンはJava固有のオブジェクト交換形式であり、Java非対応のデバイス
では使用できない。
Current methods for doing serialization / deserialization have basic problems with size, speed, and object traversal models. Code outside the JVM is unaware of the Java object's structure or graph, so it must traverse the object graph, disassociate, and eventually call the JVM. Traditional serialization and reflection mechanisms for storing and moving Java objects are not practical for all types of devices, especially the lighter weight thin devices. Ja
A problem with va reflection and serialization is that graph (transitive closure of objects) reflection of objects is difficult to perform outside of the JVM. Serialization requires a lot of code and is too big. Furthermore, serialization is a Java-specific object exchange format, and cannot be used on a device that does not support Java.

【0023】 Jini分散コンピューティング・モデルでは、Javaデバイス間でJav
aオブジェクトを移動する必要がある。そのため、Java対応でないプラット
フォーム側でオブジェクトの発送および受取に使用することができないためシリ
アライゼーション・メカニズム自体はプラットフォーム独立ではない。シリアラ
イゼーションは、均質的なオブジェクト形式であり、Javaプラットフォーム
でのみ動作する。シリアライゼーションでは、リフレクションAPIを使用する
ため、セキュリティ関連の制限を受ける場合があり、しばしば、ネイティブのJ
VM依存メソッドを使用して対処する必要がある。リフレクションAPIは、オ
ブジェクトのグラフを提供できるが、JVMとリフレクション・メソッドを呼び
出すコードとの間で何回も呼び出しが行われるため非効率である。
In the Jini distributed computing model, Java devices are
You need to move the a object. As a result, the serialization mechanism itself is not platform independent as it cannot be used to send and receive objects on a non-Java compliant platform. Serialization is a homogeneous object format and works only on the Java platform. Because serialization uses the reflection API, it may be subject to security-related restrictions, often with native J
You have to deal with this using VM dependent methods. The reflection API can provide a graph of objects, but it is inefficient because it is called many times between the JVM and the code that calls the reflection method.

【0024】 Javaリフレクションを使用してオブジェクトをシリアライズするには、オ
ブジェクトの推移的閉包を動的に解析するときに、アプリケーション側がJVM
とピンポンのようにやり取りし、一度にフィールド1つずつオブジェクトを取り
出す必要がある。Javaデシリアライゼーションを使用してオブジェクトをデ
シリアライズするには、オブジェクトの推移的閉包を動的に解析するときに、ア
プリケーション側がJVMと緊密に連携し、一度にフィールド1つずつオブジェ
クトを再構成する必要がある。そのため、Javaシリアライゼーション/デシ
リアライゼーションは時間がかかり、扱いにくく、しかも、アプリケーションと
JVMのコードを大量に書く必要があるだけでなく、永続的な記憶領域も必要で
ある。
To serialize an object using Java reflection, the application side needs a JVM when dynamically parsing the transitive closure of the object.
You need to interact with ping-pong and retrieve objects one field at a time. To deserialize an object using Java deserialization, the application side needs to work closely with the JVM to reconstruct the object one field at a time when dynamically parsing the transitive closure of the object. There is. As a result, Java serialization / deserialization is time consuming, cumbersome, and requires not only a large amount of application and JVM code to be written, but also a persistent storage area.

【0025】 Javaをサポートするシン・クライアントの場合も、Jini RMIは、
最小限のメモリ専有面積と最低限の帯域幅を備えるシン・クライアントの場合に
は実用的でないと思われる。Jini RMIと関連するシリアライゼーション
は、実行時間が長く、コード・サイズが大きく、JVMリフレクションAPIを
必要とし、Java固有オブジェクトの表現である。Javaデシリアライゼー
ションも実行に時間がかかり、コード・サイズが大きく、シリアライズ・オブジ
ェクト・パーサを必要とする。Javaベースのシン・クライアントであっても
、Jini内で要求されたときにクライアントへネットワーク経由で(必ず)返
される巨大なJavaオブジェクト(必要なクラスに沿って)を受け入れられな
い場合がある。さらにスケーラブルな分散コンピューティング・メカニズムが必
要である。よりスケーラブルな分散コンピューティング・メカニズムでセキュリ
ティ問題に対処すること、またJavaオブジェクトなどのオブジェクトの受け
渡しを可能にし、さらに一方のネットワーク・モードから他方のネットワーク・
モードにプロセスを移行できるように、拡張可能であることが望ましい。
Even for thin clients that support Java, Jini RMI
It seems impractical for thin clients with minimal memory footprint and minimal bandwidth. Serialization associated with Jini RMI is long-running, large in code size, requires the JVM reflection API, and is a representation of Java-specific objects. Java deserialization is also time consuming to execute, has a large code size and requires a serialized object parser. Even Java-based thin clients may not be able to accept large Java objects (along with the required classes) that are (always) returned to the client over the network when requested in Jini. There is a need for more scalable distributed computing mechanisms. Addressing security issues with a more scalable distributed computing mechanism, and allowing the passing of objects such as Java objects, and from one network mode to another.
It is desirable to be extensible so that the process can be put into a mode.

【0026】 オブジェクト・ベースの分散コンピューティング・システムでは永続的記憶領
域が必要である。ただし、上述のように、オブジェクト記憶領域での試みは多く
の場合言語とオペレーティング・システムに特有のものである。さらに、これら
のオブジェクト・ストレージ・システムは、複雑すぎて、多くの小さな組み込み
型システムでは使用できない。たとえば、Jini技術では、JavaSpac
esを永続的オブジェクト・コンテナとして使用する。しかし、JavaSpa
ceは、Javaオブジェクトを格納するだけであり、小型デバイスに実装でき
ない。JavaSpace内の各オブジェクトは。シリアライズ化され、Jav
aシリアライゼーションと関連する上述のペナルティを払う。小型デバイスから
大型デバイスに至るまでの分散コンピューティング用に異機種オブジェクト・リ
ポジトリを備えることが望ましいと考えられる。
Persistent storage is required in object-based distributed computing systems. However, as mentioned above, attempts at object storage are often language and operating system specific. Moreover, these object storage systems are too complex to be used in many small embedded systems. For example, in Jini technology, Java Spac
Use es as persistent object container. However, Java Spa
ce only stores Java objects and cannot be mounted on a small device. Each object in JavaSpace is: Serialized and Java
Pay the above penalties associated with serialization. It would be desirable to have a heterogeneous object repository for distributed computing, from small devices to large devices.

【0027】 Sun Microsystems,Inc.のJavaSpacesは、エ
ール大学コンピュータ・サイエンス学部のDavid Gelernter教授
の並列処理の成果を利用している。Gelernter教授の「Linda」と
いう名前の機能セットでは、TupleSpaceと呼ばれる共有メモリ空間を
作成し、コンピュータのプロセスの結果またはそれらのプロセス自体を格納し、
複数のCPUでアクセスできるようにする。Lindaは、したがって複数のプ
ロセッサ用にグローバルな共有メモリを備える。
Sun Microsystems, Inc. JavaSpaces uses the results of parallel processing by Professor David Gelernter of the Department of Computer Science at Yale University. In a feature set named "Linda" by Prof. Gerernter, a shared memory space called TupleSpace is created to store the results of computer processes or those processes themselves,
Allow access by multiple CPUs. Linda thus comprises global shared memory for multiple processors.

【0028】 Lindaを拡張するもう1つの技術がIBM CorporationのT
Spaceである。TSpaceは、基本的なLinda TupleSpac
eフレームワークを拡張し、実データ管理を行い、新しいデータ型および新しい
セマンティック機能をダウンロードできるようにしている。TSpaceは、一
組のネットワーク通信バッファとこれらのバッファにアクセスするための一組の
APIを備えている。したがって、上述の多くのソリューションのように、TS
paceはコード中心プログラミング・モデルを使用しており、そのようなモデ
ルの欠点も共有している。さらに、TSpaceは、Javaプログラミング言
語で実装されているため、Java仮想マシンやJavaバイトコードを実行す
る、Java実行可能マイクロプロセッサなどの他の手段を必要とする。したが
って、TSpaceは、十分なリソースをJavaバイトコードの実行専用に割
り当てることができない省スペース・デバイスには不適切と思われる。
Another technology for extending Linda is T from IBM Corporation.
Space. TSpace is the basic Linda TupleSpace
It extends the e-framework to provide real data management and download of new data types and new semantic features. TSpace comprises a set of network communication buffers and a set of APIs for accessing these buffers. Therefore, as with many solutions above, TS
Pace uses a code-centric programming model and shares the drawbacks of such a model. Moreover, since TSpace is implemented in the Java programming language, it requires other means, such as a Java executable microprocessor, to execute Java virtual machines and Java bytecodes. Therefore, TSpace appears to be unsuitable for space-saving devices that cannot dedicate sufficient resources to executing Java bytecode.

【0029】 オブジェクト指向分散システムでは、オブジェクト・リポジトリを特定し、そ
れらのリポジトリ内で特定のオブジェクトを見つけることができることが望まし
い。供述のように、Jiniルックアップ・サーバはメモリ専有面積の小さな小
型デバイスには実用的でないと思われる。オブジェクト・ストアを特定するより
効率的なメカニズムがあることが望ましい。
In object-oriented distributed systems, it is desirable to be able to identify object repositories and find particular objects within those repositories. As mentioned, the Jini lookup server seems impractical for small devices with small memory footprints. It would be desirable to have a more efficient mechanism for identifying object stores.

【0030】 分散ネットワーク・コンピューティング・モデルでは、クライアントがサービ
スを特定する機能を備えることが望ましい。現在のネットワーク・プロトコルは
、ネットワーク・サービスにアクセスするときにセキュリティを一切持たない単
一の標準サービス・アクセス・インターフェースのみを提供するか、または管理
者もしくは特権のある機能も含めて、サービスの全機能に対する「オール・オア
・ナッシング」アクセス機能を提供する。また、サービスを特定する現在のネッ
トワーク・プロトコルでは、サービスを見つける柔軟なメカニズムを提供してい
ない。現在のプロトコルは、選択的サーチ機能をまったく備えていないか(たと
えば、UPnP)、またはプリミティブ・キーワードおよび属性文法メカニズム
のみを備える(たとえば、SLP)。そのため、現在のサービス発見メカニズム
(service discovery mechanism)はセキュリティおよびサーチ基準メカニズム(se
arch criteria mechanism)に関してあまりにも柔軟性が不足していると考えられ
る。
In the distributed network computing model, it is desirable for the client to have the ability to specify services. Current network protocols either provide only a single standard service access interface with no security when accessing network services, or all services, including administrators or privileged functions. Provides "all or nothing" access to features. Also, current network protocols that specify services do not provide a flexible mechanism for finding services. Current protocols do not have any selective search capabilities (eg UPnP) or only primitive keyword and attribute grammar mechanisms (eg SLP). Therefore, the current service discovery mechanism
(service discovery mechanism) is a security and search criteria mechanism (se
It seems that the arch criteria mechanism) is too inflexible.

【0031】 さらに、現在のサービス発見モデルは、サービスを特定するために対称モデル
を使用している。ただし、近さに基づく機能を使用できるデバイスなどある種の
サービス・デバイスが発見モデルをサポートするのはリソースの無駄と考えられ
る。これは、このようなデバイスが近いところにあるためすでに特定されている
ためである(たとえば、他方のデバイスを物理的にポイントしている一方のデバ
イス)。そのため、代替えとなる軽量発見メカニズムもこのようなデバイスに対
して望ましいと考えられる。
Furthermore, current service discovery models use a symmetric model to identify services. However, it is considered a waste of resources for some service devices, such as devices that can use proximity-based features, to support discovery models. This is because such devices have already been identified due to their proximity (eg, one device physically pointing to the other device). Therefore, an alternative lightweight discovery mechanism would also be desirable for such devices.

【0032】 分散オブジェクト・アクセスにも、偏りのない効率のよい共有メカニズムを必
要とする。上述のように、Jiniは今のところ、リース・メカニズムを使用し
てオブジェクトを共有している。ただし、Jiniのリースは時間に基づいてい
るため、さまざまな問題が発生しうる。たとえば、現在のオブジェクト・ホルダ
は、オブジェクトをどれだけの期間リースするかという考え方がなく、保持期間
が長くなりすぎる場合がある。さらに、時間に基づくリースを使用するには、複
数のマシンの間で時間が同期している必要がある。さらに、時間に基づくリース
には、オペレーティング・システムのサポートも必要と考えられる。さらに、J
iniのリースは、RMI経由で確立され、解放される。そのため、Jiniの
リース・メカニズムには、RMIを使用する上述の問題が発生する。さらに、J
iniのリース・メカニズムは、リースの確立、更新、および取り消しのための
セキュリティ・メカニズムを備えていない。他のリース・メカニズムも望ましい
と考えられる。
Distributed object access also requires an unbiased and efficient sharing mechanism. As mentioned above, Jini currently uses the leasing mechanism to share objects. However, because Jini's lease is time-based, various problems can occur. For example, current object holders may not have an idea of how long to lease an object and the retention period may be too long. In addition, time-based leases require time synchronization between multiple machines. In addition, time-based leasing may also require operating system support. Furthermore, J
The ini lease is established and released via RMI. As a result, Jini's leasing mechanism suffers from the above-mentioned problems of using RMI. Furthermore, J
The ini lease mechanism does not provide a security mechanism for lease establishment, renewal, and cancellation. Other lease mechanisms may also be desirable.

【0033】 一般的に、メモリ専有面積の小さなモバイル・クライアント・デバイスは分散
環境でさまざまなサービス、つまりレガシサービスと新サービスの両方を実行で
きることが望ましい。小型クライアントとしては、携帯電話およびPDAがあり
、通常は低帯域幅のさまざまなネットワーキング・インターフェースを備える。
これらのデバイスは多くの場合、グラフィック機能が限られた非常に小さなディ
スプレイを備えているが、大画面のディスプレイを備え、グラフィック機能も高
度なものを使用するラップトップやノートブック・コンピュータもある。サービ
スは、さまざまなアプリケーションだけでなくプリンタなどのデバイス用の制御
プログラムもある。モバイル・クライアントは、使用できる場所であればどこで
もこれらのサービスを使用できることが望ましい。
In general, it is desirable for a mobile client device with a small memory footprint to be able to perform various services in a distributed environment, both legacy services and new services. Small clients include cell phones and PDAs, which typically include various low bandwidth networking interfaces.
These devices often have very small displays with limited graphics capabilities, but some laptops and notebook computers have large screen displays and advanced graphics capabilities. Services include not only various applications, but also control programs for devices such as printers. Mobile clients should be able to use these services wherever they are available.

【0034】 モバイル・クライアントは、多くの場合、一時的な動的ネットワーク・アドレ
スが割り当てられ、このクライアントが送るネットワーキング・メッセージはそ
のネットワーキング・インターフェースを超えて配信することはできない(そう
でないと、異なるネットワーク上の2つの異なるクライアントが同じ動的アドレ
スを持つときに競合が発生することがある)。モバイル・クライアントは、多く
の場合、全機能搭載のブラウザやその他の高度なソフトアウェア用の機能を持た
ない。ディスプレイが制限となって、クライアントが一部のアプリケーションを
実行できない場合もある。従来のアプリケーション・モデルは、所定のユーザ・
インターフェースまたはデータ特性に基づいている。アプリケーションに変更を
加えると再コンパイルが必要になる。
Mobile clients are often assigned temporary dynamic network addresses, and the networking messages they send cannot be delivered across their networking interface (otherwise it is different). Conflicts can occur when two different clients on the network have the same dynamic address). Mobile clients often do not have the functionality for a full-featured browser or other advanced software awareness. In some cases, the display may be restricted and the client may not be able to run some applications. The traditional application model is for a given user
Based on interface or data characteristics. Changes to the application require recompilation.

【0035】 このようなクライアントは分散アプリケーションまたはサービスを見つけて呼
び出すメカニズムを備えることが望ましい場合がある。クライアントは、クライ
アントのメモリ専有面積に収まり切らない可能性のある一層大きなレガシ・アプ
リケーションを実行する必要がある場合もある。上述のように、Jiniなどの
現在の技術は、省スペース・デバイスには実用的でない場合がある。また、モバ
イル・シン・クライアントが普及することでさらにニーズも高まる可能性がある
。たとえば、ユーザとそのユーザのモバイル・クライアントの物理的な場所に基
づいてサービスを特定することが望ましい場合がある。たとえば、現地のレスト
ラン、天候、道路交通現況図、および映画情報など現地周辺のサービスに関する
情報が非常に役立つことがある。それと同様に、特定の場所にあるプリンタなど
計算リソースに関する情報が役立つ。現行技術では、クライアントの物理的場所
に基づいてサービスを特定する自動的なメカニズムを備えていない。シン・モバ
イル・クライアントによって生じるニーズとしては、他に、人的要因を取り扱う
ものがある。シン・モバイル・クライアントは、通常、エルゴノミック・キーボ
ードおよびモニタを備えない。このような人的要因サービスを提供することおよ
び/または分散コンピューティング環境でこのようなサービスを特定する機能が
あると望ましい。分散コンピューティング・モデルは、クライアントは一時的ド
キュメントおよびサービスを見つける手段を備える必要がある。ドキュメントが
拡張マークアップ言語(XML)によって提供されるものなどプラットフォーム
独立および言語独立の型で表される汎用ドキュメント(サービスおよび/または
サービス通知を含む)を見つけるメカニズムを備えることが望ましい場合がある
。Jini、Universal Plug and Play(UPnP)、
およびService Location Protocol(SLP)のルッ
クアップ・メカニズムを含む現在のアプローチでは、このような汎用ドキュメン
トルックアップ・メカニズムをサポートしていない。たとえば、Jiniルック
アップ・メカニズムは、Java言語型付けに限定されており、したがって、言
語独立ではない。UPnPおよびSLPは、サービスのみについて発見プロトコ
ルをサポートしており、汎用ドキュメントについては発見プロトコルをサポート
していない。
It may be desirable for such clients to have a mechanism for finding and invoking distributed applications or services. The client may also need to run larger legacy applications that may not fit into the client's memory footprint. As mentioned above, current technologies such as Jini may not be practical for space saving devices. Further, the spread of mobile thin clients may further increase the needs. For example, it may be desirable to identify services based on the physical location of the user and his mobile client. Information about local services such as local restaurants, weather, road traffic maps, and movie information, for example, can be very helpful. Similarly, information about computing resources such as printers at a particular location is useful. Current technology does not provide an automatic mechanism for identifying services based on the physical location of the client. Another need generated by thin mobile clients is to deal with human factors. Thin mobile clients typically do not include an ergonomic keyboard and monitor. It would be desirable to have the ability to provide such human-factor services and / or identify such services in a distributed computing environment. The distributed computing model requires clients to have a means of finding temporary documents and services. It may be desirable to have a mechanism to find generic documents (including services and / or service notifications) that are represented in platform-independent and language-independent types, such as those provided by Extensible Markup Language (XML). Jini, Universal Plug and Play (UPnP),
Current approaches, including the Service Location Protocol (SLP) lookup mechanism and the Service Location Protocol (SLP) lookup mechanism, do not support such a generic document lookup mechanism. For example, the Jini lookup mechanism is limited to Java language typing and is therefore not language independent. UPnP and SLP support the discovery protocol for services only and not for generic documents.

【0036】 (発明の要旨) オブジェクトをオブジェクトの表現にコンパイルするメカニズムおよびオブジ
ェクトの表現をオブジェクトのコピーに逆コンパイルするメカニズムについてを
説明する。仮想マシン(たとえば、Java仮想マシン(JVM))は、オブジ
ェクト(たとえば、Javaオブジェクト)をオブジェクトのデータ表現言語(
たとえば、XML)の表現にコンパイルする拡張機能およびオブジェクトの表現
をオブジェクトに逆コンパイルする拡張機能を含むことができる。仮想マシンは
、コンパイル/逆コンパイル拡張機能のアプリケーション・プログラミング・イ
ンターフェース(API)を備えることができる。クライアントおよびサービス
は、仮想マシン内で実行中の場合がある。仮想マシンは、同じデバイスまたは異
なるデバイスに置くことができる。
SUMMARY OF THE INVENTION A mechanism for compiling an object into an object representation and a mechanism for decompiling an object representation into a copy of the object will be described. A virtual machine (eg, Java Virtual Machine (JVM)) translates an object (eg, Java object) into an object data representation language (
For example, it can include extensions that compile into XML representations and decompile representations of objects into objects. The virtual machine may include an application programming interface (API) for compile / decompile extensions. Clients and services may be running inside virtual machines. Virtual machines can be on the same device or different devices.

【0037】 コンパイラ/逆コンパイラAPIは、オブジェクトを入力として受け付け、オ
ブジェクトのデータ表現言語表現とその参照されているすべてのオブジェクト(
オブジェクト・グラフ)をデータ・ストリーム内に出力することができる。さら
に、コンパイラ/逆コンパイラAPIは、データ・ストリームを受け付けること
ができ、これは、オブジェクトの表現とその参照されているすべてのオブジェク
ト(オブジェクト・グラフ)を含み、Javaオブジェクト(およびそのオブジ
ェクト・グラフ内のすべてのオブジェクト)を出力する。
The compiler / decompiler API accepts an object as an input and represents the data representation language representation of the object and all its referenced objects (
Object graph) can be output in the data stream. In addition, the compiler / decompiler API can accept a data stream, which contains a representation of an object and all its referenced objects (object graphs), including Java objects (and within its object graph). Output all objects).

【0038】 一実施態様では、コンパイラおよび逆コンパイラは、仮想マシンの統合された
機能として実装することができる。他の実施態様では、コンパイラおよび逆コン
パイラは、仮想マシンの標準拡張機能でのAPIメソッド呼び出しで具現化する
ことができ、そのため、コア仮想マシンを修正する必要はない。仮想マシンは、
仮想マシン内で実行するプロセス(クライアントおよび/またはサービス)に対
するコンパイラ/逆コンパイラAPIを備えているため、プロセスは仮想マシン
によって提供されているオブジェクト・コンパイル/逆コンパイル機能にアクセ
スすることができる。一実施態様では、プロセスがオブジェクト・コンパイル/
逆コンパイルを利用するために、そのプロセスで実行される仮想マシンにコンパ
イラ/逆コンパイラ機能とAPIを備える必要がある。
In one implementation, the compiler and decompiler may be implemented as integrated functions of a virtual machine. In other implementations, the compiler and decompiler can be implemented with API method calls in standard extensions of the virtual machine, so that the core virtual machine does not need to be modified. The virtual machine is
Having a compiler / decompiler API for processes (clients and / or services) executing within the virtual machine allows the process to access the object compiling / decompiling functions provided by the virtual machine. In one embodiment, the process is object compile /
In order to take advantage of decompilation, the virtual machine running in that process must have compiler / decompiler functionality and APIs.

【0039】 仮想マシン内にオブジェクト・コンパイル/逆コンパイル機能を実装すること
が好都合なのは、仮想マシンがすでにオブジェクト・グラフの概念、および内容
を理解しているからである。そこで、コンパイル/逆コンパイル機能で、表現を
出力するためのオブジェクト・グラフの解析とオブジェクト・グラフを出力する
ための表現の解析に仮想マシンの知識を活用(そして、コードを再利用し)する
ことができる。したがって、コンパイル/逆コンパイル機能では、リフレクショ
ンとシリアライゼーションを使用するオブジェクト送出メソッドの場合のように
、仮想マシンによって提供される機能を複製してはならない。これにより、コン
パイル/逆コンパイル機能のコード占有領域を、リフレクションおよびシリアラ
イゼーションを使用するオブジェクト送出メソッドと比べて小さくすることがで
きる。また、オブジェクトは、コンパイラ/逆コンパイラAPIを1回呼び出す
だけでコンパイルまたは逆コンパイルすることができる。
Implementing the object compile / decompile functionality within a virtual machine is convenient because the virtual machine already understands the concept and content of an object graph. Therefore, by using the compile / decompile function, the knowledge of the virtual machine is utilized (and the code is reused) for the analysis of the object graph for outputting the expression and the analysis of the expression for outputting the object graph. You can Therefore, the compile / decompile function should not duplicate the functionality provided by the virtual machine, as is the case with object dispatching methods that use reflection and serialization. This allows the code occupancy area of the compile / decompile function to be smaller than the object dispatching method that uses reflection and serialization. Also, objects can be compiled or decompiled with a single call to the compiler / decompiler API.

【0040】 さらに、オブジェクトのコンパイル/逆コンパイルを仮想マシンに統合するこ
とにより、オブジェクトのコンパイルおよび逆コンパイルを、リフレクションお
よびシリアライゼーションを使用したメソッドよりも高速に実行することができ
る場合があるが、それは、リフレクションおよびシリアライゼーションで実装さ
れたオブジェクト・トラバーサル・モデルでは、仮想マシンの外部にあるコード
はそのオブジェクトの構造またはグラフを認識せず、オブジェクト・グラフをト
ラバースして、引き離し、最終的に、仮想マシンを繰り返し呼び出してコンパイ
ル(および逆コンパイルのための反転プロセス)を実行する必要があるからであ
る。このプロセスは、コードの外部で、仮想マシンの呼び出しを繰り返し実行す
る必要があるため、遅くなることがある。コンパイルおよび逆コンパイル機能を
仮想マシンに統合することにより、仮想マシンの外部のコードから仮想マシンへ
繰り返し呼び出しを行わなくて済むようになる。一実施態様では、オブジェクト
は、コンパイラ/逆コンパイラAPIを1回呼び出すだけでコンパイルまたは逆
コンパイルすることができる。
Furthermore, by integrating the compilation / decompilation of objects into the virtual machine, it may be possible to compile and decompile objects faster than methods using reflection and serialization. In the object traversal model implemented with reflection and serialization, code outside the virtual machine is unaware of the structure or graph of that object, traversing the object graph, pulling away, and finally the virtual machine. Because it must be called repeatedly to perform compilation (and the inversion process for decompilation). This process can be slow because it requires repeated calls to the virtual machine outside of the code. By integrating the compile and decompile functions into the virtual machine, code outside the virtual machine avoids repeated calls to the virtual machine. In one implementation, an object can be compiled or decompiled with a single call to the compiler / decompiler API.

【0041】 オブジェクトにコード(オブジェクトのメソッド)およびデータを含めること
ができる。オブジェクトのコードは、非一時的でなく、オブジェクトが作成され
た後このコードは変更されない。ただし、オブジェクトのデータは一時的な場合
がある。同じクラスから作成された2つのオブジェクトは、同一のコードを含ん
でいても、2つのオブジェクト内のデータが異なることがある。一実施態様では
、コンパイル機能はJavaオブジェクトのデータをオブジェクトの表現にコン
パイルするが、表現の中にオブジェクトの実際のコードが含まなくてもよい。一
実施態様では、オブジェクトに関する情報をコンパイルされた表現の中に挿入し
、そのオブジェクトのコードの再作成方法を受取側に通知する。この表現をデー
タ・ストリームに格納し、受け取りがプロセス(クライアントまたはサービス)
に(たとえば、メッセージで)送ることができる。受け取り側プロセスは、その
データ・ストリームを逆コンパイル機能に渡すことができる。逆コンパイル機能
は、データ・ストリームを逆コンパイルして、そのデータを含むオブジェクトを
出力することができる。一実施態様では、オブジェクトのコードは、表現に含ま
れるオブジェクトに関する情報を使用して逆コンパイル機能により再現すること
ができるが、それはオブジェクトのコードが静的に定義され、そのオブジェクト
を受け取る仮想マシンがオブジェクトについての情報を利用して(必要ならば)
そのコードを再現することができるからである。
An object can include code (methods of the object) and data. The code of the object is not non-transitory and this code does not change after the object is created. However, the object data may be temporary. Two objects created from the same class may have different data in the two objects even though they contain the same code. In one embodiment, the compile function compiles Java object data into a representation of the object, but the representation need not include the actual code for the object. In one embodiment, information about the object is inserted into the compiled representation and the recipient is informed how to recreate the code for the object. Store this representation in a data stream and receive it as a process (client or service)
Can be sent to (for example, in a message). The receiving process can pass the data stream to the decompile function. The decompile function can decompile a data stream and output an object containing that data. In one implementation, the code of an object can be recreated by a decompile function using information about the object contained in the representation, which means that the code of the object is statically defined and the virtual machine receiving the object is Use information about object (if needed)
This is because the code can be reproduced.

【0042】 一実施態様では、コンパイル機能によって出力されたオブジェクトのデータ表
現言語表現に、オブジェクトのデータおよびそのオブジェクトに関する情報を含
むことができる。その情報は、オブジェクトのクラス情報を含むことができる。
オブジェクト・シグネチャを情報に含め、そのシグネチャを利用して、オブジェ
クトのクラスなどを識別することができる。逆コンパイル機能では、オブジェク
トに関する情報を使用してオブジェクトのコードを再作成し、データ表現言語デ
ータ・ストリームからデータをオブジェクトに逆コンパイルすることができる。
したがって、逆コンパイルされたデータとオブジェクトを記述している情報から
受け取り側クライアントまたはサービスを実行している仮想マシン上でコードと
データを含む完全なオブジェクトを再現することができる。一実施態様では、オ
ブジェクトを記述する情報を1つまたは複数のデータ表現言語タグの中に格納す
ることができる。一実施態様では、データ表現言語データ・ストリームを受け取
るクライアントまたはサービスはオブジェクトを記述するデータ表現言語スキー
マを含むことができ、またデータ表現言語スキーマを使用して、逆コンパイルさ
れたデータとそのオブジェクトに関する情報からオブジェクトを再構成すること
ができる。逆コンパイル・プロセスは、オブジェクト・グラフを再帰的にたどり
、オブジェクトによって参照されているオブジェクト再構成するが、この作業は
、データ表現言語データ・ストリームから参照されているオブジェクトのデータ
を逆コンパイルし、そのデータ表現言語データ・ストリーム内の参照されている
オブジェクトに関する情報から参照されているオブジェクトのコードを再作成す
ることで行う。
In one implementation, the data representation language representation of the object output by the compiling function may include the data of the object and information about the object. The information can include class information for the object.
The object signature can be included in the information, and the class of the object can be identified using the signature. The decompile feature can use information about the object to recode the object's code and decompile data from the data representation language data stream into the object.
Thus, the decompiled data and the information describing the object can be used to recreate the complete object containing the code and data on the receiving client or virtual machine running the service. In one implementation, information describing an object can be stored in one or more data representation language tags. In one embodiment, a client or service that receives a data representation language data stream may include a data representation language schema that describes an object, and uses the data representation language schema to relate decompiled data and its objects. Objects can be reconstructed from the information. The decompilation process recursively traverses the object graph and reconstructs the objects referenced by the object, which decompiles the data for the objects referenced from the data representation language data stream, By recreating the code of the referenced object from information about the referenced object in the data representation language data stream.

【0043】 一実施態様では、コンパイル機能によって出力されたオブジェクトのデータ表
現言語表現に、オブジェクトのデータおよびオブジェクトのコードを識別する情
報を格納することができる。一実施態様では、オブジェクトのコードを記述する
情報をデータ表現言語データ・ストリーム内の1つまたは複数のデータ表現言語
タグの中に含むことができる。受け取ると、逆コンパイル機能はデータ表現言語
データ・ストリームからのコードに関する情報を使用してオブジェクトのコード
を再作成し、データ表現言語データ・ストリームからオブジェクトのデータを逆
コンパイルすることができる。したがって、逆コンパイルされたデータとオブジ
ェクトのコードを記述している情報から受け取り側クライアントまたはサービス
を実行している仮想マシン上でコードとデータを含む完全なオブジェクトを再現
することができる。
In one embodiment, the data representation language representation of the object output by the compile function may store information identifying the data of the object and the code of the object. In one implementation, information describing the code of the object can be included in one or more data representation language tags in the data representation language data stream. Upon receipt, the decompile function can use information about the code from the data representation language data stream to recreate the code for the object and decompile the object's data from the data representation language data stream. Thus, the information describing the decompiled data and the code of the object can reproduce the complete object containing the code and data on the receiving client or virtual machine running the service.

【0044】 一実施態様では、中間形式を使用してデータ表現言語ドキュメントを表し、こ
の中間形式を動的に処理し、データ表現言語ドキュメントからクラス・インスタ
ンスを生成することができる。クラスによって、一組のインスタンス変数とイン
スタンス変数にアクセスするための「セットアンドゲット(set and get)」メソ
ッドを定義する。対応するデータ表現言語ドキュメントを一組のタグとして定義
し、インスタンス変数ごとに1つのタグを割り当てることができる。ドキュメン
トを解析する場合、中間表現(たとえば、ハッシュ・テーブルなどのテーブル)
を構築し、そのテーブルの中のエントリにインスタンス変数名をキーとして、イ
ンスタンス変数値を値として格納できる。複合インスタンス変数が複数出現する
場合、列挙型値をその中間表現に含むことができる。一実施態様では、プロセス
をインスタンス変数について複合型のうちただ1つのレベルに制限し、複合型の
要素を均質的なものとすることができる。
In one implementation, an intermediate form can be used to represent a data representation language document, and the intermediate form can be dynamically processed to generate class instances from the data representation language document. A class defines a set of instance variables and a "set and get" method for accessing the instance variables. The corresponding data representation language document can be defined as a set of tags, one tag for each instance variable. An intermediate representation (for example, a table such as a hash table) when parsing a document
Can be stored, and the instance variable name can be stored as the value and the instance variable value can be stored as the value in the entry in the table. If more than one compound instance variable occurs, enumerated values can be included in its intermediate representation. In one implementation, the process can be restricted to only one level of the complex type for instance variables, and the elements of the complex type can be homogeneous.

【0045】 一実施態様では、保護されたインスタンス変数を、対応するクラスの名前を含
めることができるクラス定義に追加することができる。データ表現言語ドキュメ
ント表現ではクラス名をドキュメント型として使用できる。ドキュメントにクラ
ス名を埋め込むと、オブジェクトを再構築するときに、正しいクラス・インスタ
ンスのインスタンス化を動的に行うことができる。
In one implementation, protected instance variables can be added to a class definition that can include the name of the corresponding class. Data representation language Class names can be used as document types in document representations. Embedding the class name in the document allows you to dynamically instantiate the correct class instance when reconstructing the object.

【0046】 一実施態様では、ドキュメントを受け取った後、クラス・インスタンス・ジェ
ネレータ・メソッドを使用して、クラス型を抽出し、ドキュメントを解析して中
間ハッシュ・テーブル表現を生成することができる。ジェネレータ・メソッドは
、新しいクラス・インスタンスをインスタンス化し、セット・メソッドを使用し
てハッシュ・テーブル値からインスタンス・オブジェクトを初期化することがで
きる。一実施態様では、反転プロセスも実行することができ、クラス・インスタ
ンスを処理して中間ハッシュ・テーブルの表現にし、ジェネレータ・メソッドを
使用してハッシュ・テーブル表現からデータ表現言語ドキュメントを出力するこ
とができる。
In one implementation, after receiving the document, the class instance generator method can be used to extract the class type and parse the document to generate an intermediate hash table representation. The generator method can instantiate a new class instance and use the set method to initialize the instance object from the hash table values. In one embodiment, an inversion process may also be performed, processing the class instances into an intermediate hash table representation and using a generator method to output the data representation language document from the hash table representation. it can.

【0047】 本発明はさまざまな修正を加えることができ、また他の形態も可能であるが、
特定の実施形態を図面の例を用いて示しており、これらについて以下で詳述する
。ただし、図面および詳細な説明は本発明を開示されている特定の形態に制限す
る意図はなく、むしろその反対に、発明は本発明の精神と範囲にあるすべての修
正、等価物、および代替え物を対象とすることは理解されるであろう。
While the invention is susceptible to various modifications and other forms,
Specific embodiments are illustrated using the examples in the drawings, which are described in detail below. It should be noted, however, that the drawings and detailed description are not intended to limit the invention to the particular forms disclosed, but to the contrary, the invention is intended to include all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. It will be understood that this is intended for.

【0048】 (発明の実施形態の詳細な説明) 分散コンピューティングの実施形態の概要 図2には、分散コンピューティング環境のプログラミング・モデルが示されて
いる。このモデルには、分散コンピューティングを使いやすくするAPIレイヤ
102が含まれている。APIレイヤ102は、クライアントとサービスとの接
続を容易にするインターフェースを備えている。APIレイヤ102は、クライ
アントおよびサービスの発見(discovery)および接続に関係する。APIレイヤ
102は、メッセージ発送およびメッセージ受取機能を備える。このメッセージ
ングAPIは、拡張マークアップ言語(XML)など、表現データまたはメタデ
ータ形式による単純メッセージ用のインターフェースを提供する。実施形態はこ
こではXMLを採用しているものについて説明しているが、他の実施形態では他
のメタデータ型言語または形式を使用することもできることに注意されたい。い
くつかの実施形態では、APIレイヤは、さらに、Javaオブジェクトなど、
オブジェクト間の通信やオブジェクトの受け渡しのためのメッセージのインター
フェースを備えることもできる。オブジェクト・リポジトリまたは「スペース」
を発見し、特定のオブジェクトを見つけ、オブジェクトの要求および解放を行い
、オブジェクトをオブジェクト・リポジトリに書き込んだり、オブジェクト・リ
ポジトリからオブジェクト取り出したりするAPIが用意される場合もある。A
PIレイヤ102を通じてアクセス可能なオブジェクトは、XMLなどの表現デ
ータ形式で表現することができる。そのため、オブジェクト自体とは反対に、オ
ブジェクトのXML表現は操作が可能である。
Detailed Description of Embodiments of the Invention Overview of Distributed Computing Embodiments FIG. 2 illustrates a programming model for a distributed computing environment. The model includes an API layer 102 that facilitates distributed computing. The API layer 102 has an interface that facilitates connection between a client and a service. The API layer 102 is concerned with the discovery and connection of clients and services. The API layer 102 has a message sending function and a message receiving function. This messaging API provides an interface for simple messages in a representational data or metadata format, such as Extensible Markup Language (XML). It should be noted that although the embodiments are described herein as employing XML, other embodiments may use other metadata type languages or formats. In some embodiments, the API layer further comprises a Java object, etc.
It is also possible to provide a message interface for communication between objects and passing of objects. Object repository or "space"
There may be an API that discovers a specific object, requests and releases the object, writes the object to the object repository, and retrieves the object from the object repository. A
Objects accessible through the PI layer 102 can be represented in a representation data format such as XML. Therefore, contrary to the object itself, the XML representation of the object can be manipulated.

【0049】 APIレイヤ102は、メッセージング・レイヤ104の上にある。メッセー
ジング・レイヤ104は、XMLなどの表現データ形式に基づいている。一実施
形態では、XMLメッセージは、APIレイヤ102の呼び出しに従って、メッ
セージング・レイヤ104によって生成される。メッセージング・レイヤ104
は、クライアントとサービスとの間で送ることができる定義済みの静的メッセー
ジを備えている。メッセージング・レイヤ104は、さらに、動的に生成される
メッセージにも対応している。一実施形態では、Javaオブジェクトなどのオ
ブジェクトをXML表現に動的に変換することができる。メッセージング・レイ
ヤ104により、XMLオブジェクト表現はメッセージとして送ることができる
。逆に、メッセージング・レイヤ104は、オブジェクトのXML表現を受け取
ることができる。その後、そのメッセージからオブジェクトは再構成できる。一
実施形態では、メッセージング・レイヤ104によって送られるメッセージは、
アドレス、認証証明書、セキュリティ・トークン、およびメッセージ本体など、
複数の基本要素を含むことができる。メッセージ・システムの発送および受取メ
カニズムは、完全に状態を保持しないようにできる。状態という概念を、発送側
と受取側との間のメッセージ・ストリームに埋め込むことができる。そのため、
メッセージ発送は非同期に行われる。好ましい実施形態では、接続モデルは課さ
れていない。したがって、TCPなどのトランスポートは不要である。また、エ
ラー条件は不達またはセキュリティ例外に限られる。
The API layer 102 is above the messaging layer 104. The messaging layer 104 is based on a representational data format such as XML. In one embodiment, the XML message is generated by the messaging layer 104 according to a call to the API layer 102. Messaging layer 104
Provides predefined static messages that can be sent between clients and services. The messaging layer 104 also supports dynamically generated messages. In one embodiment, an object such as a Java object can be dynamically converted into an XML representation. The messaging layer 104 allows the XML object representation to be sent as a message. Conversely, the messaging layer 104 can receive an XML representation of the object. The object can then be reconstructed from the message. In one embodiment, the message sent by the messaging layer 104 is
Address, authentication certificate, security token, and message body, etc.
It can include multiple primitives. The messaging system's shipping and receiving mechanism can be completely stateless. The concept of state can be embedded in the message stream between sender and receiver. for that reason,
Message delivery is asynchronous. In the preferred embodiment, no connection model is imposed. Therefore, transport such as TCP is unnecessary. Also, error conditions are limited to non-delivery or security exceptions.

【0050】 メッセージング・レイヤ104は、メッセージ対応ネットワーキング・レイヤ
106の上にある。好ましい実施形態では、メッセージング・レイヤ104は、
特定のネットワーキング・プロトコルを使用する必要がない。TCP/IPおよ
びUDP/IPは、メッセージ対応ネットワーキング・レイヤ106に使用でき
るメッセージ対応プロトコルの例である。ただし、ワイヤレス・アプリケーショ
ン・プロトコル(WAP)などの他の専用プロトコルも使用できる。他にも、ト
ランスポート・レイヤの下のIrDAやBluetoothネットワーク・ドラ
イバのメッセージ・プロトコルも考えられる。ネットワーキング・レイヤ106
は、TCP/IPなどの単一の信頼できる接続プロトコルに限られない。したが
って、さまざまなデバイスとの接続が可能である。
The messaging layer 104 is on top of the message-enabled networking layer 106. In the preferred embodiment, the messaging layer 104 is
No need to use a specific networking protocol. TCP / IP and UDP / IP are examples of message-enabled protocols that can be used for message-enabled networking layer 106. However, other proprietary protocols such as Wireless Application Protocol (WAP) can also be used. Other conceivable message protocols are IrDA and Bluetooth network driver below the transport layer. Networking layer 106
Is not limited to a single reliable connection protocol such as TCP / IP. Therefore, connection with various devices is possible.

【0051】 一実施形態では、メッセージ対応ネットワーク・レイヤ106は、Java2
Micro Edition(J2ME)プラットフォームが提供するネット
ワーキング・クラスから実装することができる。Java2 Micro Ed
itionプラットフォームは、完全なJavaプラットフォーム用のリソース
を持たないまたは完全なJavaプラットフォームを実行するのは効率的でない
省スペース・デバイスに適している。J2MEがすでにネットワーキング・プロ
トコルのメッセージ対応ファミリ(ソケットをサポートする)を備えているため
、メッセージング・レイヤ104を追加した場合の省スペース・コストについて
、分散コンピューティング機能をすでにJ2MEを含んでいる小型デバイス用に
提供することができる。
In one embodiment, the message-enabled network layer 106 is a Java 2
It can be implemented from the networking classes provided by the Micro Edition (J2ME) platform. Java2 Micro Ed
The Iition platform is suitable for space-saving devices that do not have the resources for a full Java platform or are inefficient to run a full Java platform. The space-saving cost of adding the messaging layer 104, as the J2ME already has a message-enabled family of networking protocols (supporting sockets), a small device that already includes J2ME with distributed computing capabilities. Can be provided for.

【0052】 メッセージ対応ネットワーキング・レイヤ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ベー
スのメッセージング・レイヤを追加する際に、デバイスは分散コンピューティン
グ環境に参加できる。
The message-enabled networking layer 106 further includes Java Development Kit (JDK) Java. Also available in the net networking class. Alternatively, message-aware networking functionality may be used for message-aware networking layer 106. In the preferred embodiment, no reliable transport is required, so embedded devices that support unreliable datagram transports such as UDP / IP can also support the messaging layer. Therefore, a thin client may simply use the thin messaging layer 104 as a base networking protocol.
You can join a distributed computing environment simply by adding it on top of the stack. As shown in FIG. 3, the basic system is a networking layer 1
A messaging layer 104 is provided on top of 06. The networking layer is responsible for reliable messages, eg TCP, or untrusted messages,
For example, it can support UDP. Internet Protocol (IP) is shown in FIG. 3 as an example of a protocol that can be used at the networking layer 106. However, no IP is required in the distributed computing environment. In addition to IP, other protocols can be used in a distributed computing environment. Eth
Network drivers such as ernet®, Token Ring, Bluetooth, etc. can also be part of the networking layer. Many small clients are already equipped with network drivers and transport protocols such as UDP / IP. Thus, when adding a thin XML-based messaging layer, devices can participate in the distributed computing environment.

【0053】 そこで、分散コンピューティング環境の基礎は、信頼できる接続および/また
は信頼できないデータグラムの上に実装された単純なメッセージ通信レイヤであ
る。このメッセージング技術は、Javaリモート・メソッド呼び出し(RMI
)を採用するJiniなどの他の分散コンピューティング・システムで採用され
ている通信技術とはかなり異なる。メッセージ通信レイヤ104は、RMIで記
述される状態を保持する同期スタイルではなく、状態を保持しない非同期スタイ
ルの分散プログラミングをサポートしている。さらに、メッセージ通信レイヤ1
04は、XMLなどのデータ表現言語に基づいており、そのため、RMIと異な
り、コピー元からコピー先へデータをコピーするが、コードはコピーしない。J
avaコードはメッセージの発送側または受取側に想定されていないため、XM
Lなどの表現データ言語を使用することにより、メッセージング・レイヤ104
は非Javaおよび非Jiniプラットフォームとの相互運用性をシームレスに
実現できる。さらに、RMIとは異なり、メッセージング・レイヤ104は、T
CP/IPなどの信頼できるトランスポート・メカニズムを必要としない。
Thus, the basis of a distributed computing environment is a simple messaging layer implemented over trusted connections and / or untrusted datagrams. This messaging technology uses Java remote method invocation (RMI
), Which is quite different from the communication technology employed in other distributed computing systems such as Jini. The message communication layer 104 supports distributed programming in a stateless asynchronous style rather than stateless synchronous style described in RMI. Furthermore, message communication layer 1
04 is based on a data expression language such as XML and therefore, unlike RMI, data is copied from the copy source to the copy destination, but the code is not copied. J
The ava code is not expected by the sender or receiver of the message, so XM
By using a representational data language such as L, the messaging layer 104
Can seamlessly interoperate with non-Java and non-Jini platforms. Moreover, unlike RMI, the messaging layer 104
Does not require a reliable transport mechanism such as CP / IP.

【0054】 メッセージ通信レイヤは、たとえば、バイトの配列またはバイト列として指定
されたメッセージを送るために単純なsend()およびreceive()メ
ソッドを提供することができる。send()メソッドは即座に戻り、データ転
送を非同期に実行することができる。フロー制御のため、send()メソッド
がsend()リクエストを処理できないことを示す例外をスローした場合に呼
び出されるコールバック・メソッドを提供できる。receive()メソッド
は同期メソッドで、次に使用可能なメッセージを返す。
The messaging layer may provide simple send () and receive () methods to send a message, specified as an array of bytes or a sequence of bytes, for example. The send () method returns immediately and the data transfer can be performed asynchronously. For flow control, you can provide a callback method that is called when the send () method throws an exception indicating that it cannot process the send () request. The receive () method is a synchronous method and returns the next available message.

【0055】 このメッセージ通信レイヤは、さらに、「スペース」内にオブジェクト、サー
ビス、およびコンテンツのXML表現を格納するメソッドを備えることもできる
。スペースは、URI(Uniform Resource Identifi
er)を使用してネットワーク上で名前が指定されアクセスされる。URIは、
URL(Uniform Resource Locator)またはURLの
簡易版でもよい。いくつかの実施形態では、URLクラスは大きすぎる場合があ
る。このような実施形態では、より単純なリソース・ロケータを使用し、クライ
アントとサーバとの間のメッセージの移動に使用するプロトコル、プロトコル依
存ホストID、プロトコル依存ポートID、スペース名を指定する。
The messaging layer may also include methods for storing XML representations of objects, services, and content in “space”. The space is a URI (Uniform Resource Identity)
er) is used to name and access over the network. The URI is
It may be a URL (Uniform Resource Locator) or a simplified version of the URL. In some embodiments, the URL class may be too large. In such an embodiment, a simpler resource locator is used to specify the protocol, protocol dependent host ID, protocol dependent port ID, space name used to move messages between the client and server.

【0056】 メッセージング・レイヤで提供しているwrite()メソッドを使用してオ
ブジェクトのXML表現をスペースに追加することができる。一実施形態では、
クライアント指定名とオブジェクトをパラメータとして与えることができる。一
実施形態では、writeメソッドは、オブジェクトをそのXML表現に変換す
る。オブジェクトを返し、スペースから削除するためにtake()メソッドを
用意することができる。スペース内のXML表現から指定されたオブジェクト返
すためにfind()メソッドを用意することができる。find()メソッド
もまた、クラスが与えられた場合にスペース内のマッチするオブジェクトの配列
を返すのに使用できる。これらのスペース・メソッドはそれぞれ、メッセージ通
信レイヤを使用して実装される。リース・メカニズムも、後述のように提供する
ことができる。
An XML representation of an object can be added to the space using the write () method provided by the messaging layer. In one embodiment,
Client specified name and object can be given as parameters. In one embodiment, the write method transforms the object into its XML representation. You can provide a take () method to return the object and remove it from the space. A find () method can be provided to return the specified object from the XML representation in space. The find () method can also be used to return an array of matching objects in space given the class. Each of these space methods is implemented using the messaging layer. A leasing mechanism can also be provided as described below.

【0057】 発見サービスを、特定のスペースを見つけるためにクライアントが使用できる
一般的なサーチ機能としてクライアントに提供することができる。シン・クライ
アントが実装することができないと思われる複雑なサーチ・プロトコルを定義し
ようとするのではなく、発見サービスが実際のサーチをXMLベースのサーチ機
能にオフロードし、発見サービスがインターフェース機能をクライアントに簡単
に提供できるようにする。このアプローチは図4に示されている。一実施形態で
は、発見サービスは特定するものを指定する文字列を受け取り、XMLメッセー
ジを既知の発見フロント・エンド(たぶん、デフォルトのスペースで見つかる)
に送り、その後、文字列を解析し、サーチ機能に対し対応するXMLクエリを実
行する(これは、インターネットサーチ機能でもよい)。発見フロント・エンド
は、サーチ機能から受け取ったものを解析し、文字列の配列(各文字列は見つか
ったそれぞれのスペースのURI)としてそれを再パッケージし、XMLメッセ
ージでクライアントに送ることができる。発見サービスでは、メッセージングが
接続指向トランスポートの上にあることを要求していないことに注意されたい。
したがって、TCPを持たない非常に軽量のシン・クライアントであってもこの
ような発見サービスを使用できる。発見フロント・エンドでは、クライアントが
クライアント上にブラウザまたはサーチ機能なしでスペースを発見することが可
能である。クライアントは、キーワードを指定する文字列を、サーチ機能とイン
ターフェースするフロント・エンドに送る単純な機能だけあればよい。
The discovery service can be provided to clients as a general search function that clients can use to find a particular space. Rather than trying to define a complex search protocol that a thin client may not be able to implement, the discovery service offloads the actual search to an XML-based search function and the discovery service does the interface function to the client. Easy to provide. This approach is shown in FIG. In one embodiment, the discovery service receives a string that specifies what to identify and retrieves XML messages from a known discovery front end (perhaps found in the default space).
, Then parses the string and executes the corresponding XML query for the search function (which may be the Internet search function). The discovery front end can parse what it receives from the search function, repackage it as an array of strings (each string is a URI for each space found) and send it to the client in an XML message. Note that the discovery service does not require messaging to be on a connection-oriented transport.
Therefore, even a very lightweight thin client without TCP can use such discovery services. The discovery front end allows the client to discover spaces on the client without a browser or search function. The client need only have a simple function to send a string specifying a keyword to the front end that interfaces with the search function.

【0058】 クライアントは、少なくともAPIとメッセージング・レイヤのサブセットを
使用してメッセージを送ることができるプラットフォームであれば何でもよい。
一実施形態では、APIレイヤは、静的(またはraw)および書式付き(また
はcooked)メッセージの両方に対応できる。サーバは、メッセージ要求を
受け取り、遂行できるプラットフォームであれば何でもよい。クライアントから
サーバへ、または他のクライアントへバイト列を移動する明示的rawメッセー
ジを送ることができる。メッセージ・タイプは、信頼できるメッセージ(たとえ
ばTCP)、または信頼できないメッセージ(たとえばUDP)として指定でき
る。デバイスのうち最も小さいものは、rawの信頼できないメッセージ通信を
、分散コンピューティング環境に参加する単独の手段として使用する。デバイス
は、これらのメッセージを使用してその存在と状況をアナウンスする。このよう
な小さなデバイスは、さらに、rawメッセージを受け取りて、機能のオン/オ
フなどのいくつかの機能を実行できる。
The client can be any platform capable of sending messages using at least a subset of APIs and messaging layers.
In one embodiment, the API layer can support both static (or raw) and formatted (or cooked) messages. The server can be any platform capable of receiving and fulfilling message requests. Explicit raw messages can be sent that move bytes from the client to the server or to other clients. The message type can be specified as reliable message (eg TCP) or untrusted message (eg UDP). The smallest of the devices use raw untrusted messaging as a sole means of participating in a distributed computing environment. The device uses these messages to announce its presence and status. Such small devices can also receive raw messages to perform some functions such as turning features on and off.

【0059】 スペースなどのメッセージベースのサービスでは、信頼できる書式付きメッセ
ージを送受取できる。スペース・メッセージは、きちんと定義されたヘッダーを
備える形式とし、XMLを使用する。一実施形態では、書式付きメッセージは、
クライアントがスペース・メソッドを使用して、スペースにオブジェクトを要求
したり、スペースにオブジェクトを書き込んだり、スペースからオブジェクトを
取り出したりする。メッセージ・コンテンツは、動的にXML形式にすることが
でき、きちんと定義されたヘッダを備える。図5は、書式付きの静的メッセージ
をサポートするクライアント・プロファイルを示している。静的メッセージを使
用することにより、小さなデバイスはコードのさらに小さなプロファイルを使用
して、分散コンピューティング環境に参加することができる。たとえば、小さな
デバイスは基本的なあらかじめ定められたメッセージだけを送ることができる。
クライアントにもよるが、静的なあらかじめ定義されたメッセージが占有するメ
モリは少ないと考えられる(たとえば、200バイト未満)。静的メッセージは
、さらに、大きなデバイスにあってはオプションとしてもよい。他方、動的XM
Lメッセージは、オブジェクト値がコンパイル時にわかっていないときに役立つ
Message-based services, such as spaces, can send and receive reliable, formatted messages. Space messages are formatted with well-defined headers and use XML. In one embodiment, the formatted message is
Clients use the space methods to request, write objects to, and retrieve objects from the space. The message content can be dynamically XML-formatted, with well-defined headers. FIG. 5 shows a client profile that supports formatted static messages. By using static messages, small devices can use smaller profiles of code to participate in a distributed computing environment. For example, a small device can only send basic predetermined messages.
Depending on the client, static predefined messages may occupy less memory (eg less than 200 bytes). Static messages may also be optional on larger devices. On the other hand, dynamic XM
The L message is useful when the object value is not known at compile time.

【0060】 図6には、メッセージング・システムとXMLメッセージおよびXMLオブジ
ェクト表現とを組み合わせた分散コンピューティング・モデルが示されている。
プラットフォームがXMLから独立していることを利用すると、システムを異機
種分散コンピューティング環境に対応させることができる。したがって、クライ
アント110は、Javaなどの特定のプラットフォームではなくほとんどどの
ようなプラットフォームにでも実装することができる。メッセージング・システ
ムは、インターネット・プロトコル(たとえば、TCP/IPやUDP/IP)
などのネットワーク対応メッセージング・レイヤに実装することができる。その
ため、コンピューティング環境をインターネットに分散させることができる。一
実施形態では、メッセージング・システムはさらに、クライアントおよび/また
はスペース・サーバおよび/またはサービスが同じコンピュータ・システムにあ
るときに、共有メモリを高速なプロセス間メッセージ・パッシング・メカニズム
として使用することもできる。図6の分散コンピューティング・モデルは、さら
に、ほとんどどのような規模のクライアントであってもXMLメッセージの発送
および/または受取を行えるように設定できるため、非常にスケーラブルである
FIG. 6 illustrates a distributed computing model that combines a messaging system with XML messages and XML object representations.
Utilizing the fact that the platform is independent of XML enables the system to support a heterogeneous distributed computing environment. Thus, the client 110 can be implemented on almost any platform rather than a particular platform such as Java. The messaging system is an internet protocol (eg TCP / IP or UDP / IP)
Can be implemented in a network-enabled messaging layer such as. Therefore, the computing environment can be distributed over the Internet. In one embodiment, the messaging system may also use shared memory as a fast interprocess message passing mechanism when the clients and / or space servers and / or services are on the same computer system. .. The distributed computing model of FIG. 6 is also highly scalable as it can be configured to allow almost any size client to send and / or receive XML messages.

【0061】 図6に示されているように、分散コンピューティング・モデルで、サービス1
12およびクライアント110の2種類のソフトウェア・プログラムを実行する
ことができる。サービス112は、サービスの使用を望んでいるクライアントに
機能を通知することができる。サービス112は、スペース114で機能を通知
する。図7に示されているように、クライアント110およびサービス112は
同じネットワーク・デバイス内に常駐することもまた常駐しないこともある。た
とえば、デバイス120および124はそれぞれ、1つのクライアントをサポー
トするが、サービス112aおよびクライアント110bは同じデバイス122
内に実装される。また、図7に示されているように、デバイスがクライアントと
サービスをサポートするのに特定のプラットフォームを必要としない。たとえば
、デバイス120は、Javaベースとし、デバイス124はネイティブ・コー
ドのランタイム環境を備える。
As shown in FIG. 6, in the distributed computing model, service 1
Two types of software programs, 12 and client 110, can be executed. The service 112 can notify the client to the client who wants to use the service. The service 112 announces the function in space 114. As shown in FIG. 7, client 110 and service 112 may or may not reside within the same network device. For example, devices 120 and 124 each support one client, while service 112a and client 110b are the same device 122.
Will be implemented in. Also, as shown in FIG. 7, the device does not require a particular platform to support clients and services. For example, device 120 is Java based and device 124 comprises a native code runtime environment.

【0062】 デバイスは、ネットワーキング・トランスポートでアドレス指定可能なユニッ
トである。デバイスの例としては、それらに限定はされないが、PDA、携帯電
話、ノートパソコン、ラップトップ、デスクトップ・コンピュータ、より強力な
コンピュータ・システム、さらにはスーパー・コンピュータもある。クライアン
トとサービスは両方とも、デバイスで実行されるソフトウェア(またはファーム
ウェア)のURIアドレス指定可能なインスタンスとすることができる。クライ
アントは、分散コンピューティング環境アーキテクチャを使用してサービスを実
行する。スペースとは、XMLドキュメントのリポジトリを管理するサービスで
ある。これが冗長であっても、読みやすさのために、ここではスペース・サービ
スという用語を使用する。ソフトウェア・コンポーネントは、別々の時にクライ
アントでかつサービスであってもよい。たとえば、サービスがスペースを使用す
るときに(たとえば、自分を通知するために)、そのサービスはスペースのクラ
イアントとなる。
A device is a unit that can be addressed by a networking transport. Examples of devices include, but are not limited to, PDAs, cell phones, laptops, laptops, desktop computers, more powerful computer systems, and even supercomputers. Both the client and the service can be URI addressable instances of software (or firmware) running on the device. The client executes the service using the distributed computing environment architecture. A space is a service that manages a repository of XML documents. Even though this is redundant, for readability we will use the term space service. Software components may be clients and services at different times. For example, when a service uses a space (eg, to notify itself), the service becomes a client of the space.

【0063】 図8は、一実施形態における分散コンピューティング環境の基本モデルを示し
ている。この分散コンピューティング環境は、ネットワーク全体を通してクライ
アント110をサービス112に接続する。ネットワークは、インターネットな
どのワイド・エリア・ネットワークでよい。また、ネットワークは、インターネ
ットで無線ネットワークに接続されたローカル・エリア・ネットワーク(LAN
)などのネットワークの組み合わせとすることもできる。図8に示されているよ
うに、サービス112は、スペース114内で自分自身に対し通知132をパブ
リッシュする(XMLで表される)。通知132で、サービスのXMLスキーマ
とURIアドレスを指定する。その後、クライアント110は、通知132をル
ックアップする。クライアント110は、通知132を使用して、ゲート130
をインスタンス化する。ゲート130により、クライアント110はサービス1
12を実行するが、その際に、XMLメッセージをサービス112に(から)発
送(し、そして受取)する。
FIG. 8 illustrates a basic model of a distributed computing environment in one embodiment. This distributed computing environment connects clients 110 to services 112 throughout a network. The network may be a wide area network such as the Internet. Also, the network is a local area network (LAN) connected to a wireless network by the Internet.
) And other network combinations. As shown in FIG. 8, the service 112 publishes a notification 132 to itself within the space 114 (represented in XML). The notification 132 specifies the XML schema and URI address of the service. The client 110 then looks up the notification 132. The client 110 uses the notification 132 to use the gate 130.
Instantiate. The gate 130 allows the client 110 to provide the service 1
12 is executed, at which time an XML message is sent to (and received from) service 112.

【0064】 サービスを実行した結果は一部、XMLメッセージでクライアントに返すこと
ができる。ただし、小さなクライアントでは他の結果が大きすぎ一度に受け取り
て消費することができないため、サービス112は、図9に示されているように
、それらの結果または結果134のXML表現をスペース114に入れ、値で返
すのではなく、(XMLメッセージによる)参照でクライアント110に返す。
結果への参照を返す方法の例として、それらに限定されないがスペース内の結果
を参照しているURIをメッセージで返す方法や、結果のURIを含むXMLド
キュメントをメッセージで返す方法がある。後で、クライアント110は、結果
にアクセスするか、または結果を参照で他のサービスに受け渡すことができる。
結果を格納するスペースはサービスが通知されるスペースと異なっていてもよい
A part of the result of executing the service can be returned to the client by an XML message. However, since smaller results cannot be received and consumed at one time by other clients that are too large, service 112 places the XML representation of those results or results 134 in space 114, as shown in FIG. , But not by value, but by reference (via an XML message) to the client 110.
Examples of ways to return a reference to a result include, but are not limited to, returning a URI that references a result in a space in a message, or returning an XML document containing the resulting URI in a message. Later, the client 110 can access the results or pass the results by reference to other services.
The space for storing the result may be different from the space for which the service is notified.

【0065】 一実施形態では、分散コンピューティング環境はコンテンツの定義、通知、お
よび記述にXMLを使用する。分散コンピューティング環境の新しいコンテンツ
(たとえば、メッセージおよび通知)はXMLで定義される。既存のコンテンツ
・タイプ(たとえば、他の環境用に開発されたもの)も、XMLを使用して、あ
るレベルの間接化(メタデータ)として記述することができる。XMLは、Ja
vaがユニバーサル・コードを提供するのと似た方法で、ユニバーサル・データ
を提供するため、分散システム全体を通じてデータを表現する強力な手段となっ
ている。XMLは、言語にとらわれない手段であり、自己記述的である。XML
コンテンツは、強い型付けで、スキーマを使用して妥当性を確認できる。システ
ムは、用意されたXMLスキーマを使用する際に、有効なXMLコンテンツのみ
がメッセージで確実に渡されるようにできる。XMLコンテンツはさらに、HT
MLやWMLなどの他のコンテンツ・タイプに変換することもできる。したがっ
て、XMLを認識しないクライアントでも、そのまま、分散コンピューティング
環境のサービスを使用できる。
In one embodiment, the distributed computing environment uses XML for content definition, notification, and description. New content (eg, messages and notifications) in a distributed computing environment is defined in XML. Existing content types (eg, those developed for other environments) can also be described as some level of indirection (metadata) using XML. XML is Ja
Providing universal data in a manner similar to that of va providing universal code makes it a powerful means of representing data throughout a distributed system. XML is a language agnostic tool and is self-describing. XML
The content is strongly typed and can be validated using a schema. The system can ensure that only valid XML content is passed in the message when using the prepared XML schema. XML content is also HT
It can also be converted to other content types such as ML and WML. Therefore, even a client that does not recognize XML can use the service of the distributed computing environment as it is.

【0066】 一実施形態では、分散コンピューティング環境のメッセージで、クライアント
をサービスと接続し、スペースおよびストア内のコンテンツを取り扱うために使
用されるプロトコルを定義することができる。メッセージを使用してプロトコル
を定義すると、さまざまな種類のデバイスをプロトコルに参加させることができ
る。各デバイスは、その能力と役割に最適の方法でプロトコルを自由に実装する
ことができる。たとえば、すべてのデバイスがJavaランタイム環境をサポー
トできるわけではない。分散コンピューティング環境のプロトコル定義では、デ
バイスでJavaを使用する必要もなければ使用することを暗示してもいない。
また除外することもない。
In one embodiment, messages in a distributed computing environment may define the protocols used to connect clients with services and to handle content in spaces and stores. Defining the protocol using messages allows different types of devices to participate in the protocol. Each device is free to implement the protocol in a way that best suits its capabilities and roles. For example, not all devices can support the Java Runtime Environment. The distributed computing environment's protocol definition does not imply or require the use of Java on the device.
There is no exclusion.

【0067】 サービスの機能は、そのサービスが受け入れるメッセージに関して表すことが
できる。サービスのメッセージ・セットは、XMLスキーマを使用して定義する
ことができる。XMLメッセージ・スキーマにより、XML型付きタグを使用し
て各メッセージ形式を定義する。タグの使用規則もまた、スキーマで定義できる
。メッセージ・スキーマは、メッセージを受け取るために使用するサービスのメ
ッセージ・エンドポイントとともにXML通知の一コンポーネントであってよい
。分散コンピューティング環境では、クライアントがサービスの機能のすべての
サブセットまたは一部のサブセットを使用することができる。クライアントに与
えられた機能セットを強制するためにセキュリティ・ポリシーを採用する。たと
えば、一組の機能をクライアントに与えた後、クライアントは適切な承認がない
とそのセットを変更することはできない。この機能定義のモデルにより、基本機
能セットから拡張機能セットまでのサービス・レベルに対応できる。認識された
メッセージの数に加えることにより、拡張機能をサービスに追加することができ
る。
The capabilities of a service can be expressed in terms of the messages it accepts. A service's message set can be defined using an XML schema. The XML message schema defines each message format using XML typed tags. The usage rules for tags can also be defined in the schema. The message schema may be a component of the XML notification along with the message endpoint of the service used to receive the message. In a distributed computing environment, clients may use all or some subset of the functionality of a service. Adopt a security policy to enforce a given feature set on the client. For example, after giving a set of features to a client, the client cannot change that set without proper authorization. This model of function definition allows for service levels from the basic feature set to the extended feature set. Extensions can be added to the service by adding to the number of recognized messages.

【0068】 一実施形態では、分散コンピューティング環境内のすべてのオペレーションは
、クライアントとサービスとの間で送られるXMLメッセージとして実現される
。ストレージ(一時的記憶と継続的記憶の両方)プロバイダは、クライアントと
サービスがコンテンツを格納し、通知し、アドレス指定できるようにするサービ
スの例である。クライアントおよびサービスは、一時的ストレージ・スペースを
使用して互いを見つけまたブローカ・コンテンツを見つけることができる。サー
ビスは、コンテンツまたはサービス通知をスペース内に配置する。通知を使って
、コンテンツ・タイプまたはサービスの機能を記述することができる。クライア
ントは、その後、スペースをブラウズして、目的の機能セットとマッチする通知
を探す。クライアントがマッチする通知を見つけると、通信チャネルを確立し、
その通知を裏付けるサービスとの間で双方向メッセージ通信を行えるようにする
。一実施形態では、通信チャネルは認証される。サービスのオペレーションの結
果(もう1つのコンテンツ・タイプにすぎない)は、応答メッセージでクライア
ントに直接返され、スペース内で通知され格納されるか、またはスペース内で通
知されるが永続的に格納される。格納されている結果は、URI(たとえば、応
答メッセージで返される)を使用して取り扱われ、関連する認証証明書が割り当
てられる。
In one embodiment, all operations within the distributed computing environment are implemented as XML messages sent between clients and services. A storage (both temporary and continuous storage) provider is an example of a service that allows clients and services to store, notify, and address content. Clients and services can use temporary storage space to find each other and to find broker content. The service places content or service notifications in the space. Notifications can be used to describe the content type or capabilities of a service. The client then browses the space for notifications that match the desired feature set. When the client finds a matching notification, it establishes a communication channel,
Allow two-way message communication with the service supporting the notification. In one embodiment, the communication channel is authenticated. The result of the operation of the service, which is just another content type, is returned directly to the client in the response message and is either posted and stored in the space, or is posted in the space but is stored persistently. It The stored results are handled using the URI (eg returned in the response message) and assigned the associated authentication certificate.

【0069】 メッセージ・ゲート 上述のように、分散コンピューティング環境では、XMLなどのデータ記述言
語を使用する。XMLを使用してターゲット・エンティティ(たとえば、ドキュ
メント、サービス、またはクライアント)を記述し、そのエンティティにアクセ
スするためのコードを生成することができる。ターゲット・エンティティにアク
セスするため生成されるコードは、メッセージ・ゲートと呼ばれる。したがって
、一実施形態では、この分散コンピューティング環境は、他のオブジェクトにア
クセスするために必要なオブジェクト間の必要なコードを受け渡す代わりに、こ
の分散コンピューティング環境ではオブジェクトまたはターゲットXML記述に
アクセスできるようにしてターゲットにアクセスするためXML記述に基づいて
コードを生成するという点で、他の分散コンピューティング環境とは異なる。分
散コンピューティング環境では、XMLスキーマを使用して、言語固有のAPI
に依存することなくXMLスキーマだけで型安全性とともにプログラミング・モ
デル(たとえば、サポートされているメッセージ)を確実なものにすることがで
きる。XMLスキーマから生成されたコードはさらに、ローカル・プラットフォ
ームの言語、セキュリティ、型安全性、および実行環境の特性を組み込むことも
できる。したがって、ローカル・プラットフォームでは、バグが入り込まないよ
うに、またスキーマに従って有効なデータのみが生成されるように、生成される
コードを制御する。生成されるコードは、クライアントのコード実行環境(たと
えば、Java、C++、Smalltalk)だけでなく、その管理およびセ
キュリティ・フレームワーク(Webサーバおよび/またはオペレーティング・
システム)に適合する。
Message Gate As mentioned above, the distributed computing environment uses a data description language such as XML. XML can be used to describe a target entity (eg, document, service, or client) and generate code to access that entity. The code generated to access the target entity is called the MessageGate. Thus, in one embodiment, the distributed computing environment may access an object or target XML description in the distributed computing environment instead of passing the required code between the objects needed to access other objects. It differs from other distributed computing environments in that it generates code based on an XML description to access the target in this manner. Distributed computing environments use XML schemas to support language-specific APIs.
The XML schema alone can ensure the programming model (e.g., supported messages) with type safety without depending on. Code generated from the XML Schema may also incorporate local platform language, security, type safety, and execution environment characteristics. Therefore, on the local platform, the generated code is controlled so that bugs are not introduced and only valid data is generated according to the schema. The generated code is not only the client's code execution environment (eg, Java, C ++, Smalltalk), but also its management and security framework (Web server and / or operating system).
System).

【0070】 分散コンピューティング環境では、XMLスキーマから生成されるコードが実
行時に「オンザフライで」生成されることを要求していないことに注意されたい
。その代わりに、コードの一部または全部をサービスのカテゴリ(またはクラス
)に合わせて事前に生成し、その後、プラットフォームのビルド・プロセスでリ
ンクする。コードの事前生成は、いくつかのXMLスキーマがすでに知られてい
る組み込みデバイスなどのある種のクライアントに対し有用である。一実施形態
では、コードの一部または全部が実際に、全く生成されなくてもよい。一実施形
態では、プライベート・コード・ロード方式(クライアント内の)を使用して生
成プロセスを補強することができる。さらに、いくつかの実施形態では、分散コ
ンピューティング環境でサービスにアクセスする際に追加機能のコードをダウン
ロードするためのインターフェースを指定することができる(たとえば、後述の
メッセージ・コンダクタを参照)。通常、ダウンロードされるこのようなコード
は小さく、クライアントにはコードをダウンロードするかしないかのオプション
が用意される。
Note that the distributed computing environment does not require that code generated from XML schemas be generated "on the fly" at run time. Instead, some or all of the code is pre-generated for the category (or class) of service and then linked in the platform build process. Pre-generation of code is useful for certain clients, such as embedded devices where some XML schemas are already known. In one embodiment, some or all of the code may actually not be generated at all. In one embodiment, a private code loading scheme (in the client) may be used to augment the generation process. Further, some embodiments may specify an interface for downloading code for additional functionality when accessing a service in a distributed computing environment (see, eg, Message Conductor below). Usually such downloaded code is small, and the client has the option of downloading or not downloading the code.

【0071】 「生成されるコード」というフレーズは、クライアント・コード実行環境の制
御のもとでクライアント内で起動されるコードまたは別のところで(サービス・
システムまたはスペース・サービス・システム上で)生成され、生成後クライア
ント・システムにダウンロードできるコードを指す。ただし、バインド時は実行
時となる。実行時に、生成されたコードは、サービス・アドレス(URI)にバ
インドされ、メッセージがそのサービスのインスタンスに送られる。
The phrase “generated code” refers to code that is invoked within the client under the control of the client code execution environment or elsewhere (service
Code that is generated (on a system or space services system) and that can be downloaded to a client system after it is generated. However, the binding time is the runtime. At run time, the generated code is bound to a service address (URI) and the message is sent to an instance of that service.

【0072】 上述のように、分散コンピューティング環境のサービスとのインターフェース
をXMLスキーマで指定し、クライアントがそのサービスに送る(そしてそのサ
ービスから受け取る)メッセージの集まりを定義することができる。図10に示
されているように、クライアント110およびサービス112は、それぞれ、メ
ッセージ・ゲート130を構築し、指定されたXMLスキーマに従って通信する
。サービス112について通知されたXMLスキーマ(および場合によってはサ
ービス通知の他の情報)から、クライアント110aまたは110bがそれぞれ
メッセージ・ゲート130aまたは130bを構築できる。同じXMLスキーマ
から生成される対応するメッセージ・ゲート130cも、サービス112a上に
存在する。ゲート130は、型安全なXMLメッセージの発送および/または受
取を行え、またメッセージの発送および/または受取のときにXMLメッセージ
の型の正しさを検証できるメッセージ・エンドポイントである。メッセージ・ゲ
ートはさらに、メッセージ・エンドポイントがセキュリティで保護されているこ
とを確認する認証および/またはその他のセキュリティ・メカニズムにも対応す
る。一実施形態では、メッセージ・ゲートは常にセキュリティで保護されている
As mentioned above, an interface with a service in a distributed computing environment can be specified in an XML schema and a collection of messages that a client can send to (and receive from) that service can be defined. As shown in FIG. 10, the client 110 and the service 112 each construct a message gate 130 and communicate according to the specified XML schema. From the XML schema advertised for the service 112 (and possibly other information in the service advertisement), the client 110a or 110b can construct a message gate 130a or 130b, respectively. A corresponding message gate 130c generated from the same XML schema also exists on the service 112a. The gate 130 is a message endpoint that can send and / or receive type-safe XML messages and can verify the correctness of the XML message type when sending and / or receiving messages. MessageGate also supports authentication and / or other security mechanisms to ensure that message endpoints are secure. In one embodiment, the Message Gate is always secure.

【0073】 上記の分散コンピューティング環境のメッセージング・レイヤをゲートに結合
するか、またはゲートの一部とすることができる。メッセージング・レイヤは、
非同期にネットワーキング・トランスポートを使用し、バイトの順序列を発送側
から受取側へ送り、発送側と受取側の両方でこのバイト列が1つのアトミック・
ユニット、つまりメッセージであるという概念を維持する。分散コンピューティ
ング環境では、ネットワーキング・トランスポートがIPベースであるという仮
定を置かない。その代わりに、メッセージング・レイヤは、デバイスによってど
のようなネットワーキング・トランスポート・レイヤがサポートされていようと
一番上に置かれる。
The messaging layer of the distributed computing environment described above can be coupled to or part of a gate. The messaging layer is
It uses a networking transport asynchronously to send a sequence of bytes from the sender to the receiver, with both the sender and the receiver having a single atomic sequence of these bytes.
Maintain the concept of a unit, or message. In a distributed computing environment, no assumption is made that networking transports are IP-based. Instead, the messaging layer is put on top of whatever networking transport layer is supported by the device.

【0074】 メッセージ・ゲートは、クライアントとサービスとの間でXMLメッセージを
送り受け取るメカニズムを備えることができる。XMLメッセージは、「型付け
する」ことができる。たとえば、メッセージに、メッセージ・データ・フィール
ドが、たとえば整数、浮動小数点、テキスト・データなどであるかどうかを示す
タグを入れることができる。メッセージ・ゲートは、発送または受け取ったメッ
セージの型の正しさを検証するように構築することができる。メッセージ・ゲー
トはさらに、受け取ったメッセージの発送側を認証(たとえば、セキュリティ保
護機能を使用して識別)することもできる。サービスによって受け入れられるか
つ/またはサービスによって送られるメッセージ・セットを記述するXMLスキ
ーマをサービスに対し提供することができる。メッセージ・ゲートは、そのゲー
トが構築されたXMLスキーマに従って発送または受け取ったメッセージの正し
さを検証する。
The Message Gate may provide a mechanism for sending and receiving XML messages between clients and services. XML messages can be "typed". For example, the message can include a tag that indicates whether the message data field is, for example, integer, floating point, text data, and so on. The Message Gate can be constructed to verify the correctness of the type of message sent or received. Message Gate can also authenticate (e.g., use security features to identify) the sender of the received message. An XML schema may be provided for a service that describes the set of messages accepted by and / or sent by the service. The message gate verifies the correctness of the message sent or received according to the XML schema in which it was built.

【0075】 ゲートは、分散コンピューティング環境で、型検証および/またはメッセージ
の正しさの検証および/またはクライアントとサービスとの間のメッセージに対
する発送側識別を実行するコードおよびデータの単一のアトミック・ユニットと
して構築することができる。一実施形態では、メッセージ・ゲートに対するコー
ドおよびデータのアトミック・ユニットが作成されると、これはその型付け、メ
ッセージ記述子、および発送側識別に関して変更することはできない。他の実施
形態では、ゲートは、作成後、メッセージ・スキーマ内のメッセージの削除、追
加、または修正を含めて、メッセージ・スキーマのコンテンツに関して修正する
ことができる。
A gate is a single atomic code and data atomic element that performs type validation and / or message correctness validation and / or sender identification for a message between a client and a service in a distributed computing environment. Can be built as a unit. In one embodiment, once the atomic unit of code and data for a Message Gate is created, it cannot be modified with respect to its typing, message descriptor, and sender identification. In other embodiments, a gate may be modified after its creation with respect to the contents of the message schema, including the deletion, addition, or modification of messages in the message schema.

【0076】 メッセージ・ゲートは、分散コンピューティング環境におけるクライアントま
たはサービスのメッセージ・エンドポイントである。メッセージ・ゲートは、型
安全なXMLメッセージを送り受け取るセキュリティで保護されたメッセージ・
エンドポイントを備える。メッセージ・ゲートを使用すると、クライアントとサ
ービスは、適当なメッセージ・トランスポート(たとえば、HTTP)で、セキ
ュリティで保護され信頼できる方法により、XMLメッセージを交換することが
できる。クライアントでは、メッセージ・ゲートは、サービスの機能の一部また
は全部を使用する権限を表す。各機能は、サービスに送ることができるメッセー
ジによって表すことができる。このようなメッセージはそれぞれ、メッセージの
正しさを検証するクライアント・メッセージ・ゲートを通じて送ることができる
。メッセージを受け取るには、メッセージを認証し、その正しさを検証するサー
ビス・メッセージ・ゲートを使用する。
Message Gates are message endpoints for clients or services in a distributed computing environment. Message Gate is a secure message gateway that sends and receives type-safe XML messages.
With endpoints. Message Gates allow clients and services to exchange XML messages over a suitable message transport (eg, HTTP) in a secure and reliable manner. At the client, the MessageGate represents the authority to use some or all of the service's functionality. Each function can be represented by a message that can be sent to the service. Each such message can be sent through a client message gate that verifies the message for correctness. To receive the message, use the Service Message Gate to authenticate the message and verify its correctness.

【0077】 メッセージ・ゲートは、XMLメッセージの型検査を行うセキュリティで保護
された通信エンドポイントを備えることができる。後述するように、メッセージ
・ゲートはさらに、クライアントとサービスとの間のメッセージの流れを制限す
るメカニズムを備えることができる。一実施形態では、クライアントがサービス
にアクセスしようとする場合、クライアントとサービスのメッセージ・ゲートの
ペアが、すでに存在しているのでなければ、作成される。一実施形態では、サー
ビス・メッセージ・ゲートは、サービスがクライアント・メッセージ・ゲートか
ら第1のメッセージを受け取ったときに作成される。一実施形態では、1つまた
は複数のサービス・メッセージ・ゲートをサービスの初期化時に作成し、これを
使用して、作成の際にクライアント・メッセージ・ゲートとペアを組むようにで
きる。メッセージ・ゲートを作成する場合、目的のレベルのセキュリティを交渉
する認証サービスおよびクライアントとサービスとの間で受け渡すことができる
メッセージ・セットが必要になることがある。一実施形態では、認証サービスは
クライアントIDトークン(クライアント・トークンともいう)、サービスID
トークン(サービス・トークンともいう)、およびサービスに発送またはサービ
スから受け取ることができるデータ表現言語メッセージ・セットを記述するデー
タ表現言語メッセージ・スキーマを受け付けることができる。たとえば、サービ
スを呼び出す、またはサービスのいくつかの一部を呼び出すために、クライアン
トからサービスに送られるメッセージを記述できる。また、応答メッセージやイ
ベント通知メッセージなど、サービスから送るメッセージも記述できる。メッセ
ージ・ゲートの構築および使用での認証サービスの使用方法の詳細については、
以下の「認証とセキュリティ」の項を参照のこと。
The Message Gate may comprise a secure communication endpoint that does type checking of XML messages. As will be described below, the Message Gate may further comprise a mechanism to limit the flow of messages between clients and services. In one embodiment, when a client attempts to access a service, a client-service MessageGate pair is created, if it does not already exist. In one embodiment, the Service Message Gate is created when the service receives the first message from the Client Message Gate. In one embodiment, one or more Service Message Gates may be created during service initialization and used to pair with a Client Message Gate during creation. Creating a MessageGate may require an authentication service that negotiates a desired level of security and a set of messages that can be passed between the client and the service. In one embodiment, the authentication service is a client ID token (also called client token), service ID
A token (also referred to as a service token) and a data representation language message schema that describes a data representation language message set that can be shipped to or received from the service can be accepted. For example, a message can be written that is sent from a client to a service to call the service or to call some part of the service. Also, a message sent from the service such as a response message or an event notification message can be described. For more information on how to use authentication services to build and use MessageGate,
See the "Authentication and Security" section below.

【0078】 クライアント・メッセージ・ゲートとサービス・メッセージ・ゲートのペアに
より、クライアントとサービスとの間でメッセージを送ることができる。一実施
形態では、サービスのメッセージ・スキーマに記述されているとおり全メッセー
ジ・セットのサブセットを発送かつまたは受け取るだけのメッセージ・ゲートを
作成することができる。分散コンピューティング環境でこのような制限されたア
クセスを利用することにより、セキュリティ・ポリシーに基づいて特定の個別メ
ッセージ・タイプへのアクセスのみをクライアントに許可する最低限の特権のポ
リシーを実施することができる。ゲートの使用法およびゲートの作成方法の詳細
については、以下の「認証とセキュリティ」の項を参照のこと。
A client message gate and service message gate pair allows messages to be sent between a client and a service. In one embodiment, a MessageGate may be created that only ships and / or receives a subset of the total message set as described in the service's message schema. By leveraging such restricted access in a distributed computing environment, it is possible to enforce a least privileged policy that only allows clients to access specific individual message types based on their security policies. it can. See the Authentication and Security section below for more information on using gates and creating gates.

【0079】 クライアント・ゲートとサービス・ゲートは、サービス通知(サービス通知内
のサービスのURI)で指定されたプロトコルを使用して、クライアントからサ
ービスへのメッセージの実際の発送(および受取)を実行する。クライアントは
、このメッセージ・パッシングでサービスを実行する。メッセージ・ゲートは、
クライアントとサービスとの間の抽象(abstraction)のレベルを与える。クライ
アントは、サービス・オブジェクトに直接アクセスする代わりにメッセージ・ゲ
ートを通じてサービス・オブジェクトにアクセスすることができる。ゲートはク
ライアントからのサービスを抽象化しているので、クライアントが最初にサービ
スを使用するまで、サービスのコードをロードして開始する必要はない。
The client gate and the service gate perform the actual sending (and receiving) of the message from the client to the service using the protocol specified in the service notification (URI of the service in the service notification). . The client executes the service with this message passing. Message Gate
It provides a level of abstraction between the client and the service. The client can access the service object through the MessageGate instead of directly accessing the service object. The gate abstracts the service from the client, so it is not necessary to load and start the service's code until the client first uses the service.

【0080】 クライアント・ゲートも、XMLスキーマと突き合わせてメッセージの検証を
実行するか、または、たとえば、メッセージがまだ検証されていないことをクラ
イアントが示した場合に、XMLスキーマと突き合わせてメッセージの検証をサ
ービス・ゲートによって実行することができる。いくつかの実施形態では、単純
なクライアントの場合に検証は実用的でなく、クライアント側に必要ない場合が
ある。いくつかの実施形態では、サービス側で検証を実行できる。ゲートではさ
らに、認証有効化および/またはセキュリティ方式を実行することもできる。一
実施形態では、クライアントがサービス通知で指定されたプロトコルをサポート
しない場合、正しいゲートを構築できないことがある。この問題を避けるために
、サービス通知(ゲート構築に使用される)はサービスに使用可能なURIのリ
ストを含め、さまざまなクライアントをサポートできるようにする。
The client gate also performs validation of the message against the XML schema, or, for example, if the client indicates that the message has not yet been validated against the XML schema. It can be performed by the service gate. In some embodiments, validation is not practical for simple clients and may not be needed on the client side. In some embodiments, verification can be performed on the service side. The gate may also carry out authentication validation and / or security schemes. In one embodiment, the correct gate may not be constructed if the client does not support the protocol specified in the service notification. To avoid this problem, service notifications (used for gate construction) allow various clients to be supported, including a list of URIs available for the service.

【0081】 基本メッセージ・ゲートは、メッセージを発送および受け取るためのAPIを
実装できる。このAPIは、ゲートとの間でデータ(たとえば、XMLメッセー
ジ)を出し入れし、送る前および/または受取後のメッセージの妥当性を確認す
る。一実施形態では、メッセージ・ゲートは、メッセージを発送および受け取る
ための定められた最低限のAPIをサポートできる。後述のように、このAPI
は他の機能に拡張することができる。図10bに示されているように、ゲート1
30は、XMLスキーマ132に従って生成することができる。生成されたゲー
ト・コードは、XMLスキーマに基づいてメッセージを検証する。このゲートは
、メッセージAPIを通じてメッセージ・タイプおよび/またはコンテンツが正
しいかどうかを検証する。図10bに示されているように、検証されたメッセー
ジは、メッセージAPIを通じて、サービスに送られる。このメッセージを、サ
ービス側の対応するゲートで受け取る。このメッセージへの応答として、サービ
スは結果180を生成することができる。サービスは、そのゲートを通じて結果
データ182を返す。結果データは、それ自体結果であるか、または、スペース
に格納されている結果へのURIなど結果に対する参照である。さまざまな実施
形態において、メッセージAPIは、たとえば、同期メッセージ(要求応答)、
非同期メッセージ(応答は要求から切断される)、ユニキャスト・メッセージ(
2地点間)、マルチキャスト・メッセージ(ブロードキャスト)、およびパブリ
ッシュとサブスクライブ(イベント・メッセージ)をサポートできる。リモート
・メソッド呼び出しメッセージなどの他のタイプのメッセージもサポートできる
The Basic Message Gate can implement APIs for sending and receiving messages. This API puts data (eg, XML messages) in and out of gates to validate messages before sending and / or after receiving. In one embodiment, the MessageGate can support a defined minimum API for sending and receiving messages. As described below, this API
Can be extended to other functions. Gate 1 as shown in FIG.
30 can be generated according to the XML schema 132. The generated gate code validates the message based on the XML schema. This gate verifies that the message type and / or content is correct through the message API. As shown in Figure 10b, the validated message is sent to the service via the message API. This message is received by the corresponding gate on the service side. In response to this message, the service can generate a result 180. The service returns result data 182 through its gate. The result data may be the result itself or a reference to the result, such as a URI to the result stored in the space. In various embodiments, the message API may be, for example, a synchronization message (request response),
Asynchronous message (response is disconnected from request), unicast message (
It can support point-to-point), multicast messages (broadcast), and publish and subscribe (event message). It can also support other types of messages such as remote method invocation messages.

【0082】 ゲートによって送られた各メッセージは、受取ゲートがメッセージを認証する
ための認証証明書を含むことができる。各メッセージは、さらに、メッセージが
損なわれていないあるいは改変されていないことを受取ゲートが検証するための
情報を含むトークンも含む。たとえば、発送側は、受取側が検証するメッセージ
のハッシュまたはチェックサムを計算することができる。発送側はさらに、発送
側の秘密鍵を使用してこのトークンおよび/またはメッセージ全体を暗号化し、
暗号化されたメッセージに対応する公開鍵を含め、トークンが変更されていない
ことを受取側が検証できるようにする。詳細については、以下の「認証とセキュ
リティ」の項を参照のこと。
Each message sent by the gate may include an authentication certificate for the receiving gate to authenticate the message. Each message also includes a token that contains information for the receiving gate to verify that the message is intact or tampered with. For example, the sender can calculate a hash or checksum of the message that the recipient verifies. The sender further uses the sender's private key to encrypt this token and / or the entire message,
Allows the recipient to verify that the token has not been modified, including the public key that corresponds to the encrypted message. See the Authentication and Security section below for more information.

【0083】 メッセージ・ゲートのペアは、クライアントからサービスへの要求およびサー
ビスからクライアントへの応答を伝達するメカニズムを備える。2つの関連する
メッセージ・ゲート・エンドポイントを使用して、要求応答メッセージ通信用の
セキュリティで保護された双方向アトミック・メッセージ・チャネルを作成する
ことができる。そこで、分散コンピューティング環境では、メッセージ・ゲート
がクライアントとサービスの両方の側に存在するメッセージ・トランスポートを
採用する。この2つのゲートは連携して、セキュリティで保護され信頼できるメ
ッセージ・チャネルを実現する。
Message Gate pairs provide a mechanism to convey client-to-service requests and service-to-client responses. Two related Message Gate endpoints can be used to create a secure bidirectional atomic message channel for request response message communication. Therefore, in a distributed computing environment, MessageGate employs a message transport that resides on both the client and service sides. The two gates work together to provide a secure and reliable message channel.

【0084】 図11aには、サービス通知またはその他のサービス記述132からクライア
ント110内にゲート130aを構築することを示す一実施形態の図が示されて
いる。クライアントは、XMLサービス記述に基づいてゲートを生成するクライ
アント上の信頼できるコードであるゲート・ファクトリ140を備える。ゲート
・ファクトリ140を使用すると、生成されるゲートが信頼できるコードでもあ
ること、またそのコードがサービス通知に関して正しいものであることを確認す
ることができる。図11bに示されているように、ゲート130cはさらに、サ
ービス112に構築することもできる。クライアント・ゲート130aおよびサ
ービス・ゲート130cは、クライアントとサービスとの間の通信を行うための
メッセージ・エンドポイントを提供する。一実施形態では、ゲート・ファクトリ
がゲート130を構築するために必要とする断片はサービス(サービス通知から
)のXMLスキーマとサービス(サービス通知から)のURIである。他の実施
形態では、さらに、サービスを通知で指定された認証サービスを実行することに
より、認証証明書を取得し、ゲート構築で使用することができる。
FIG. 11 a shows a diagram of one embodiment showing building a gate 130 a in the client 110 from a service notification or other service description 132. The client comprises a gate factory 140, which is trusted code on the client that creates a gate based on an XML service description. The gate factory 140 can be used to ensure that the generated gate is also trusted code, and that the code is correct for service notifications. Gate 130c may also be built into service 112, as shown in FIG. 11b. Client gate 130a and service gate 130c provide message endpoints for communication between clients and services. In one embodiment, the pieces that the gate factory needs to build the gate 130 are the XML schema of the service (from the service notification) and the URI of the service (from the service notification). In another embodiment, an authentication certificate can be obtained by using the authentication service specified in the notification service, and can be used in the gate construction.

【0085】 ゲート・ファクトリは、メッセージ・ゲートを作成するための信頼できるメカ
ニズムを備える。いくつかの実施形態では、メッセージ・ゲートが信頼できるメ
ッセージ・エンドポイントであることを確実なものとするために、ゲートを作成
するために使用されるコードは信頼できるコードである必要がある。ゲート・フ
ァクトリ140は、ゲートを作成するために使用されるコードの信頼できるパッ
ケージとすることができる。一実施形態では、分散コンピューティング環境でメ
ッセージの発送および受取を望む各クライアントおよびサービス・デバイス・プ
ラットフォームはゲート・ファクトリを備える。いくつかの実施形態では、別の
ゲート・ファクトリによりゲートをあらかじめ構築して、あらかじめ構築された
ゲートを備えたデバイスで完全なゲート・ファクトリを必要としなくて済むよう
にするか、またはゲートは、サービスURIおよび/または認証証明書の実行時
に(たとえば、メッセージ通信が必要なときに)あらかじめ構築されたゲートに
バインドする部分ゲート・ファクトリを備えることができる。
The Gate Factory provides a reliable mechanism for creating Message Gates. In some embodiments, the code used to create the gate needs to be trusted code to ensure that the message gate is a trusted message endpoint. The gate factory 140 can be a trusted package of code used to create gates. In one embodiment, each client and service device platform that wishes to send and receive messages in a distributed computing environment comprises a gate factory. In some embodiments, the gate is pre-built by another gate factory so that devices with pre-built gates do not require a complete gate factory, or the gate is A partial gate factory may be provided that binds to a pre-built gate when executing a service URI and / or authentication certificate (eg, when messaging is required).

【0086】 デバイス用のゲート・ファクトリは、ローカル・デバイス・プラットフォーム
の言語、セキュリティ、型安全性、および/または実行環境の特性を組み込むゲ
ート・コードを生成できる。デバイスは、ゲート自体を構築することにより、生
成されたゲート・コードにバグがないこと、有効なデータのみを生成すること、
型安全であることを確認することができる。サービスにアクセスするためコード
をダウンロードするのではなく自分のゲート・コードをデバイスで生成する利点
は、クライアント・コード管理環境に制御権があるという点である。生成される
コードは、クライアントのコード実行環境(たとえば、Java、C++、Sm
alltalk)だけでなく、その管理およびセキュリティ・フレームワーク(
Webサーバおよび/またはオペレーティング・システム)に適合する。生成さ
れたコードは、クライアントの実行時環境がコード作成に関わっていたため信頼
できるコードでもある。したがって、信頼できる生成されたコードにより信頼で
きるセキュリティ情報も追加できる。そのため、デバイスはサービスに対するX
MLメッセージ・スキーマを受け取りてから、その後デバイスにアクセスするた
めにそのスキーマに基づいてゲートを構築することができる。XMLスキーマは
、サービスとの契約を定義することとみなすことができ、生成されたゲート・コ
ードは、その契約を実行するセキュリティで保護された手段を提供することとみ
なすことができる。信頼できない(たとえば、ダウンロードされた)コードが実
行される開いているデバイスは、信頼できるコードでのみゲートを生成できるよ
うに設定できることに注意されたい。開いているデバイスは、ゲートの実装、特
にゲート認証証明書を発見することができるデバッガなど、ゲートがツールから
アクセスできない保護され分離されているコード・コンテナに封じ込められてい
るプロセス・モデルを採用することができる。
A gate factory for a device can generate gate code that incorporates the language, security, type safety, and / or execution environment characteristics of the local device platform. By building the gate itself, the device is bug-free in the generated gate code, only produces valid data,
You can confirm that it is type-safe. The advantage of generating your own gate code on the device rather than downloading the code to access the service is that you have control over the client code management environment. The generated code depends on the client code execution environment (for example, Java, C ++, Sm
alltalk) as well as its management and security framework (
Web server and / or operating system). The generated code is also reliable because the client runtime environment was involved in the code generation. Therefore, trusted security information can also be added by the trusted generated code. Therefore, the device has X for the service.
After receiving the ML message schema, a gate can be built based on that schema for subsequent access to the device. The XML schema can be viewed as defining a contract with the service, and the generated gate code can be viewed as providing a secure means of implementing that contract. Note that an open device that runs untrusted (eg, downloaded) code can be configured to only generate gates with trusted code. The open device adopts a process model that is contained in a protected and isolated code container where the gate is inaccessible to tools, such as a debugger that can discover the gate's implementation, especially the gate authentication certificate. be able to.

【0087】 ゲート・ファクトリ140は、クライアントのためにサービスと交渉し、メッ
セージをサービスに送るためのゲートを作成する。同様に、ゲートをサービスで
構築し、クライアント・ゲートからメッセージを受け取り、メッセージをクライ
アント・ゲートに送るようにできる。それとともに、クライアントとサービス・
ゲートは、セキュリティで保護された双方向通信チャネルを形成できる。
The gate factory 140 negotiates with the service on behalf of the client and creates a gate for sending messages to the service. Similarly, a gate can be built with a service to receive messages from client gates and send messages to client gates. Along with that, clients and services
The gate can form a secure two-way communication channel.

【0088】 ゲート・ファクトリは、ゲートを作成する際にあるレベルの抽象化を行う。た
とえば、クライアントがサービスを使用することを望んでいる場合、クライアン
トが直接サービスにアクセスするゲートを作成する代わりに、サービスをインス
タンス化する一環としてゲート・ファクトリによりゲートを作成できる。
Gate factories provide some level of abstraction in creating gates. For example, if a client wants to use a service, instead of creating a gate where the client directly accesses the service, the gate can be created by the gate factory as part of instantiating the service.

【0089】 ゲート・ファクトリは、構築するゲートの認証証明書を受け取るため認証サー
ビス(たとえば、サービス通知により指定された)と通信するために使用される
信頼できる独自のメッセージ・ゲートを作成または備えることができる。アクセ
スが制限されているサービスでは、認証証明書なしでゲートを構築することがで
きる。サービスではアクセスを制限しないので、このようなサービスのゲートは
、各メッセージを有する認証証明書を送る必要がない場合がある。認証サービス
は、一実施形態では、アクセスを制限しないサービスの一例である。したがって
、サービスでアクセスを制限するかどうかをチェックすることによりゲート構築
を最適化するようにゲート・ファクトリを設定できる。サービスがアクセスを制
限しない場合、ゲート・ファクトリはゲート構築の一環として認証サービスの実
行を回避することができ、また構築されたゲートの一部として認証証明書に対す
る取り込まれた規定を回避できる。ゲート・ファクトリはさらに、XMLメッセ
ージ・スキーマ(たとえば、サービス通知によって指定される)を受取またはダ
ウンロードし、そのスキーマとマッチするゲートを作成することもできる。ゲー
ト・ファクトリはさらに、URIと通信するクライアント・メッセージ・ゲート
の作成に使用するサービスおよび/またはサービス・メッセージ・ゲート用にU
RIを受取またはダウンロードすることもできる。
The Gate Factory creates or comprises its own trusted message gate used to communicate with the Authentication Service (eg, specified by the service notification) to receive the authentication credentials of the Gate to build. You can For services with restricted access, gates can be built without authentication credentials. Since services do not limit access, gates of such services may not need to send an authentication certificate with each message. The authentication service, in one embodiment, is an example of a service that does not limit access. Therefore, the gate factory can be configured to optimize gate construction by checking if the service restricts access. If the service does not restrict access, the gate factory can avoid running the authentication service as part of building the gate, and can bypass the implied provision for authentication certificates as part of the built gate. The gate factory can also receive or download an XML message schema (eg, specified by a service notification) and create a gate that matches that schema. The gate factory also provides a U for the service and / or service message gate used to create the client message gate that communicates with the URI.
The RI can also be received or downloaded.

【0090】 さらに、サービスのXMLスキーマと突き合わせてメッセージのチェックを実
行することを望んでいないいくつかのクライアントに対して別のゲート構築最適
化を採用することができる。クライアントは、軽量過ぎてチェックを実行できな
かったり、チェックを実行するのにサービス・ゲートに依存していたり、単にチ
ェックの実行を選択しなかったりする(たとえば、ゲート・メモリ占有面積を減
らすため)。提供されるXMLスキーマと突き合わせてメッセージを検証するた
めにゲートを構築するかどうかの表示を受け取るようにゲート・ファクトリを設
定できる。いくつかの実施形態では、いくつかのクライアントが、構築されたゲ
ートのスキーマと突き合わせてメッセージの検証を行う機能を備えていないゲー
ト・ファクトリを備えることができる。いくつかの実施形態では、メッセージを
検証しないようにゲートを事前に構築する。いくつかの実施形態では、送出メッ
セージのみを検証するか、または受け取ったメッセージのみを検証するように、
ゲートを構築することができる。したがって、いくつかの実施形態では、クライ
アントは、XMLスキーマと突き合わせてメッセージをチェックするゲート・コ
ードの一部または全部の構築を回避するか、または回避することを選択できる。
Further, another gate building optimization can be employed for some clients that do not want to perform message checking against the XML schema of the service. The client may be too lightweight to perform the check, rely on a service gate to perform the check, or simply choose not to perform the check (for example, to reduce gate memory footprint). . The gate factory can be configured to receive an indication of whether to build the gate to validate the message against the XML schema provided. In some embodiments, some clients may have a gate factory that does not have the ability to perform message validation against the schema of the constructed gate. In some embodiments, the gate is pre-built to not validate the message. In some embodiments, only outgoing messages are validated or only received messages are validated,
Gates can be built. Thus, in some embodiments, the client may choose to avoid or avoid building some or all of the gate code that checks the message against the XML schema.

【0091】 いくつかの実施形態では、デバイスは、同じサービスが実行されるごとに構築
するのを回避するためにゲートのキャッシュを維持することができる。たとえば
、新しいゲートがゲート・ファクトリにより構築されるときに、ゲートをゲート
・キャッシュ内に維持することができる。ゲートが使用されなくなったら、削除
する代わりに、ゲート・キャッシュ内に保持する。ゲート・キャッシュがいっぱ
いになったら、最近最も使用されていないデータを追い出すアルゴリズムなどの
キャッシュ置換アルゴリズムに従って1つまたは複数のゲートをゲート・キャッ
シュから削除することができる。ゲートを構築するためゲート・ファクトリが呼
び出された場合、ゲート・ファクトリはまず、新しいゲートの構築を回避できる
ようにゲート・キャッシュをチェックしてマッチするゲートがすでに存在してい
ないか調べる。
In some embodiments, a device may maintain a cache of gates to avoid building each time the same service is executed. For example, a gate may be maintained in the gate cache when a new gate is built by the gate factory. If the gate is no longer used, keep it in the gate cache instead of deleting it. Once the gate cache is full, one or more gates can be removed from the gate cache according to a cache replacement algorithm, such as an algorithm to flush the least recently used data. When a gate factory is called to build a gate, the gate factory first checks the gate cache to avoid building a new gate to see if a matching gate already exists.

【0092】 他のゲートを構築するのに使用した断片を適切に再利用することによりゲート
の構築を軽量化することができる。各ゲートのいくつかの部分は同じでよいため
、メッセージ検証コードの一部など、ゲートからゲートへ再利用することができ
る。さらに、いくつかのデバイスについては、共通ゲート・コードをデバイスの
システム・ソフトウェアに組み込み、そのデバイスのすべてのゲートと共有する
ことができる。したがって、ゲート・ファクトリは、ゲートごとにこの共通コー
ドを再構築することを回避することができる。その代わりに、ゲート・ファクト
リは、単に、ゲートをこのシステム・ソフトウェア部分にバインドすることがで
きる。たとえば、デバイスにどのようなトランスポートが提供されていようとメ
ッセージ・レイヤを取り扱えるシステム・ソフトウェア部分を用意することがで
きる。
The gate construction can be made lighter by appropriately reusing the fragments used to construct the other gates. Since some parts of each gate may be the same, they can be reused from gate to gate, such as part of the message verification code. Further, for some devices, a common gate code can be embedded in the device's system software and shared with all the gates for that device. Therefore, the gate factory can avoid rebuilding this common code for each gate. Instead, the gate factory can simply bind the gate to this system software part. For example, the system software portion can be provided to handle the message layer regardless of the transport provided to the device.

【0093】 特に、スペース・サービスは、スペース・サービスに対して構築されたサービ
ス・ゲートがそのスペース・サービスの他のサービス・ゲートと同じ多くの機能
を実行できるため、上述のゲート構築最適化の多くに対して適切な候補といえる
。スペース・サービスの詳細については、以下の「スペース」のセクションを参
照のこと。
In particular, the space service is a service of the gate construction optimization described above because a service gate built for the space service can perform many of the same functions as other service gates of the space service. A good candidate for many. For more information on Space Services, see the Space section below.

【0094】 いくつかの場合において、より効率的なメソッド呼び出し形式が存在すること
がある。たとえば、ターゲット・サービスがクライアント・アプリケーションと
同じJava仮想マシンで実行される場合、より効率的なメソッド呼び出し形式
は、サービスに対しJava Dynamic Proxy Classを作成
することである。このような場合、java.lang.reflect.Me
thod呼び出しは、メッセージの発送よりも高速なことがある。ゲート・バイ
ンド時間プロシージャは、このような最適化をチェックし、ゲート・ファクトリ
を実行する代わりにそれを使用して、ゲートを作成するか、または既存のゲート
をバインドする。
In some cases, there may be more efficient method invocation formats. For example, if the target service runs in the same Java virtual machine as the client application, a more efficient method invocation format is to create a Java Dynamic Proxy Class for the service. In such a case, Java. Lang. reflect. Me
A call to thod may be faster than sending a message. The gate bind time procedure checks for such optimization and uses it instead of executing the gate factory to create a gate or bind an existing gate.

【0095】 一実施形態では、専用クライアントや小型埋め込み型デバイスの場合などで、
実行時のゲート・コードの生成は、メモリの消費とコード生成時間の観点から、
望ましくないことがある。したがって、実行時にゲートを生成するゲート・ファ
クトリを用意する代わりに、いくつかの実施形態では、ゲートを事前に生成し、
デバイスに組み込む。たとえば、埋め込み型ソフトウェアのビルド時に、実行時
に構築しなくてよい組み込みのセキュリティで保護されたメッセージ・エンドポ
イントを含める手段としてメッセージ・ゲートを生成することができる。したが
って、組み込み型ゲートを持つクライアントは、完全なゲート・ファクトリを必
要としないか、またはURIおよび/または認証証明書など、組み込みゲートへ
のある種の実行時バインドを実行するために部分的ゲート・ファクトリのみあれ
ばよい。
In one embodiment, such as with a dedicated client or small embedded device,
Generating gate code at run time is in terms of memory consumption and code generation time.
It may not be desirable. Therefore, instead of having a gate factory that creates the gate at runtime, in some embodiments the gate is pre-created,
Build it into the device. For example, when building embedded software, a MessageGate can be created as a means of including a built-in secure message endpoint that does not have to be built at run time. Therefore, a client with a built-in gate does not need a full gate factory, or a partial gate All you need is a factory.

【0096】 ゲートの事前構築用に生成ツールを用意することができる。そのゲート生成ツ
ールは、XMLパーサ、コード・ジェネレータ、およびコード・コンパイラを備
える。一実施形態では、コード・ジェネレータはJavaソース・コード・ジェ
ネレータであり、コード・コンパイラはJavaコード・コンパイラである。組
み込みメッセージ・ゲートが望まれるソフトウェアのビルド時に、ゲートが望ま
れる関連するすべてのXMLスキーマからの入力とともに生成ツールが実行され
る。
A generation tool can be prepared for pre-building the gate. The gate generation tool comprises an XML parser, a code generator, and a code compiler. In one embodiment, the code generator is a Java source code generator and the code compiler is a Java code compiler. When the software is built where a built-in message gate is desired, the generation tool is run with inputs from all relevant XML schemas for which the gate is desired.

【0097】 たとえば、デバイスがデジタル・カメラとの間でメッセージを送受取できる組
み込みメッセージ・ゲートを備えることが望ましい場合、デバイス・ソフトウェ
アのビルドは、カメラのXMLメッセージ・スキーマを入力としてゲート生成ツ
ールを実行する作業を含む。XMLスキーマは、XMLスキーマをメッセージ検
証プロセスで高速アクセスするのに適している内部形式に変換するXMLパーサ
により解析することができる。ツールのコード・ジェネレータは、カメラのスキ
ーマに対応するゲートのソース・コードを提供することができる。いくつかの実
施形態では、生成ツールはさらにソース・コードをコンパイルし、ゲート・コー
ドはデバイスのソフトウェア・パッケージにリンクすることができる。実行時に
、分散コンピューティング環境でカメラ・サービスを発見することができる。カ
メラ・サービスのメッセージURIをデバイス内でカメラの組み込みゲートにバ
インドすることができる。事前に構築されたゲートへのURIのバインドは、デ
バイス内のゲート・コンストラクタによって実行される。このゲート・コンスト
ラクタは、かなり小さく、単純なゲート・ファクトリである。カメラ・サービス
がインスタンス化されると、カメラ・サービスのURIがXMLメッセージとし
てゲート・コンストラクタに渡される。その後、ゲート・コンストラクタはUR
Iを事前構築されたゲートにバインドする。
For example, if it is desirable for a device to have a built-in message gate that can send and receive messages to and from a digital camera, then the device software build can use a gate generation tool with the camera's XML message schema as input. Includes work to be performed. The XML schema can be parsed by an XML parser that transforms the XML schema into an internal format suitable for fast access in the message validation process. The tool's code generator can provide the gate source code corresponding to the camera's schema. In some embodiments, the generation tool may further compile the source code and the gate code may be linked into the device's software package. At runtime, camera services can be discovered in a distributed computing environment. The camera service message URI can be bound to the camera's built-in gate within the device. Binding the URI to the pre-built gate is done by the gate constructor in the device. This gate constructor is a fairly small and simple gate factory. When the camera service is instantiated, the camera service URI is passed to the gate constructor as an XML message. After that, the gate constructor is UR
Bind I to a prebuilt gate.

【0098】 したがって、ゲートは、実行時に部分的にまたは完全に生成されるか、または
ゲートは、実行時に実行されるバインド・プロセス(たとえば、URIまたは証
明書の)で実行時の前に事前生成される。一実施形態では、ゲート・ファクトリ
などのゲート生成ツールまたは事前構築されたゲートの生成ツールを、あるレベ
ルのプラットフォーム独立性を実現するJavaベースのツールとすることがで
きる。それとは別に、ゲート生成ツールは、分散コンピューティング環境では特
定のデバイスのネイティブ・コードなど任意の言語のものが提供できる。分散コ
ンピューティング環境では、デバイスがゲートのコードの一部または全部をダウ
ンロードできないことはないことに注意されたい。たとえば、いくつかの実施形
態では、サービスは、そのサービスへのアクセスを望むクライアントによってダ
ウンロードできるゲート・コードを提供する。ただし、ダウンロードされたコー
ドは、サイズ、セキュリティ、および/または安全に関する危険性を示す場合が
ある。
Thus, a gate may be partially or fully generated at runtime, or a gate may be pre-generated at runtime with a binding process (eg, URI or certificate) that is performed at runtime. To be done. In one embodiment, a gate generation tool such as a gate factory or a prebuilt gate generation tool may be a Java-based tool that provides some level of platform independence. Alternatively, the gate generation tool can be provided in any language, such as native code for a particular device in a distributed computing environment. Note that in a distributed computing environment, a device may not be able to download some or all of Gate's code. For example, in some embodiments, a service provides gating code that can be downloaded by a client wishing to access the service. However, the downloaded code may present a size, security, and / or safety risk.

【0099】 一実施形態の考えられるゲート・コンポーネントの詳細な図を図12に示す。
ゲートは、そのアドレス(または名前)150、デスティネーション・ゲート・
アドレス152、有効なXMLスキーマ(または内部形式)154、およびトラ
ンスポートURI 153を備えることができる。他の実施形態では、ゲートに
認証証明書156を含むことができる。一部のゲートは、さらに、リース158
および/またはメッセージ・コンダクタ160を備え、メッセージ順序付けを検
証することができる。ゲートの名前150は、そのゲートを参照するだけの一意
的なIDでよい(そのゲートの存続期間中)。ゲートは、ゲート名150を使用
してアドレス指定することができる。一実施形態では、ゲート名はXMLスキー
マの文字列(たとえば、サービス通知からの文字列)と128ビット乱数などの
乱数の組み合わせとして生成することができる。名前150を使用する際に、ク
ライアントおよびサービスはネットワークに関して移行することができ、またそ
のまま協調動作する。好ましい実施形態では、ゲート・アドレスは、物理的メッ
セージ・トランスポート・アドレスおよび/またはソケット・レイヤと独立であ
る。したがって、ゲート名はメッセージ・トランスポート・アドレスに対するバ
インドおよびバインド解除できる仮想メッセージ・エンドポイント・アドレスを
与えることができる。一実施形態では、ゲートの名前は、そのゲートの存続期間
中、そのゲートを参照するだけのUniversal Unique Iden
tifier(UUID)でよい。
A detailed view of a possible gate component of one embodiment is shown in FIG.
The gate is its address (or name) 150, the destination gate,
It may comprise an address 152, a valid XML Schema (or internal format) 154, and a transport URI 153. In other embodiments, the gate may include an authentication certificate 156. Some gates are also lease 158
A message conductor 160 may be included and / or message ordering may be verified. The gate's name 150 may be a unique ID that only refers to that gate (during its lifetime). Gates can be addressed using the gate name 150. In one embodiment, the gate name may be generated as a combination of an XML Schema string (eg, a string from the service notification) and a random number such as a 128-bit random number. When using the name 150, clients and services can migrate and co-operate with respect to the network. In the preferred embodiment, the gate address is independent of the physical message transport address and / or socket layer. Thus, the gate name can provide a virtual message endpoint address that can be bound and unbound to the message transport address. In one embodiment, the name of the gate is the Universal Unique Iden that only refers to the gate for the life of the gate.
Tiffier (UUID) may be used.

【0100】 ゲート名は、ゲートは存続している限り存続するため、同じデバイス内で実行
する異なるアプリケーションとクライアントは特定のゲートを繰り返し見つけて
、使用することができる。たとえば、サービスにアクセスするためデバイス内で
実行している第1のクライアント・プロセスについてゲートを作成することがで
きる。第1のクライアント・プロセスがそのサービスに対する活動を完了した後
、ゲートを解放する。ゲートを解放する作業では、ゲートの第1のクライアント
・プロセスのメッセージ・トランスポート・アドレス(たとえば、IPおよび/
またはポート・アドレス)へのバインドを解除する必要がある。ゲートは、ゲー
ト・キャッシュまたはリポジトリに格納することができる。同じサービスを実行
する必要がある同じデバイス内で実行している第2のクライアント・プロセスは
、そのゲートを名前で特定し、そのゲートを使用してサービスにアクセスする。
ゲートを使用するために、第2のクライアント・プロセスはゲートをそのメッセ
ージ・トランスポート・アドレスにバインドし、第2のクライアント・プロセス
に対するメッセージ・エンドポイントがゲート名と第2のクライアント・プロセ
スのトランスポート・アドレスとの組み合わせになるようにする。他の実施例で
は、クライアントは動的IPアドレスを受け取ることができる(たとえば、モバ
イル・クライアント)。クライアントのトランスポート・アドレスが変更される
と、(1つまたは複数の)ゲート名がクライアントの新しいトランスポート・ア
ドレスに再バインドされ、クライアントがそのまま、サービスを再配置しゲート
を再作成せずにすでにアクセスしているサービスにアクセスできる。ゲート名は
、プロセスの移行にも使用できる。プロセスおよび関連するゲートを、分散コン
ピューティング環境の一ノードにチェックポイント化するかまたは保存して、他
のノードに移動することができる。プロセスを新しいノードで再起動し、関連す
るゲートをその新しいノードのトランスポート・アドレスにバインドすると、プ
ロセスは、移行前のアクセス先であった外部サービスにそのままアクセスするこ
とができる。ゲートは、ペアの相手である他のゲートの現在の場所を追跡するこ
とができる。したがって、サービスまたはクライアントを移行しても、そのまま
アクセス可能である。たとえば、複製または負荷バランスをとったサービス実装
をゲートによってサービスのクライアントから抽象することができる。そこで、
ゲート名150は、分散コンピューティング環境でメッセージ・エンドポイント
のアドレス指定を行う柔軟性の高いメカニズムを提供する。ゲート名を使用して
、ローカル・ネットワークからインターネットにいたるさまざまなネットワーク
上でゲートを特定および/またはアドレス指定することができる。ゲート名は、
メッセージ・トランスポートとは無関係で、メッセージ・エンドポイント(ゲー
ト)を基礎となる異なるトランスポート・アドレス(たとえば、IP/ポート・
アドレス・ペア)へのバインド解除および再バインドによりトランスポートから
トランスポートへ移動することができる。
The gate name lasts as long as the gate lives, so different applications and clients running within the same device can repeatedly find and use a particular gate. For example, a gate can be created for a first client process running in a device to access a service. The gate is released after the first client process completes its activity for the service. The task of releasing the gate involves the message transport address of the first client process of the gate (eg IP and / or
Or unbind to port address). Gates can be stored in a gate cache or repository. A second client process running in the same device that needs to run the same service identifies the gate by name and uses the gate to access the service.
To use the gate, the second client process binds the gate to its message transport address, and the message endpoint for the second client process is the gate name and the transport of the second client process. It should be combined with the port address. In other embodiments, the client may receive a dynamic IP address (eg, mobile client). When the client's transport address changes, the gate name (s) is rebound to the client's new transport address, leaving the client as is, without relocating the service and recreating the gate. You can access the services you are already accessing. The gate name can also be used for process migration. The process and associated gates can be checkpointed or stored in one node of the distributed computing environment and moved to another node. Restarting the process on the new node and binding the associated gate to the new node's transport address allows the process to continue to access the external service it was accessing before the migration. Gates can track the current location of other gates with whom they are paired. Therefore, even if the service or the client is migrated, it can be accessed as it is. For example, a duplicate or load balanced service implementation can be abstracted from the clients of the service by a gate. Therefore,
Gatename 150 provides a flexible mechanism for addressing message endpoints in a distributed computing environment. Gate names can be used to identify and / or address gates on various networks, from the local network to the Internet. The gate name is
It is independent of the message transport and has a different underlying transport address (eg IP / port.
You can move from transport to transport by unbinding and rebinding to (address pair).

【0101】 一実施形態では、ゲートをさらにサービスから分離し、同じゲートを使用して
時間がたつうちに要求を異なるサービスに送ることができる。この作業には、ゲ
ートのデスティネーション・ゲート・アドレス152のバインドを解除し、新し
いデスティネーション・ゲート・アドレスをゲートにバインドする作業が必要で
ある。
In one embodiment, the gates may be further separated from the services and the same gate may be used to send requests to different services over time. This task involves unbinding the gate's destination gate address 152 and binding the new destination gate address to the gate.

【0102】 ゲートは、デバイスのトランスポート・レイヤの上のレイヤとして実装するこ
とができる(たとえば、ネットワーキング・ソケット)。各ゲートは、トランス
ポート参照153を含む。ゲート名150は、上述のようにトランスポート参照
153にバインドされる。複数のゲートが、同じメッセージ・トランスポートを
共有することができる。たとえば、複数のゲートが同じTGP/IPソケットへ
のトランスポート参照153を持つことができる。同じメッセージ・トランスポ
ートを共有することにより、各ゲートのサイズおよび複雑さを低減することがで
きる。分散コンピューティング環境内のデバイスは、メッセージの送受取に必要
なゲートの数が増える場合がある。複数のゲートに対するメッセージ処理の複雑
さは、共通メッセージ・トランスポートを共有することにより低減される。トラ
ンスポート参照153は、トランスポートURI(たとえば、URL)またはソ
ケット参照であり、基礎のトランスポートに名前を付け、そのトランスポートを
他のゲートと共有するメカニズムを提供することができる。複数のローカル・ゲ
ートは、同じトランスポートへの参照153を含むが、各ローカル・ゲートは、
ペアのリモート・ゲートとの間でメッセージの送受取を行う他のローカルゲート
とは無関係に動作する。
The gate can be implemented as a layer above the transport layer of the device (eg, networking socket). Each gate includes a transport reference 153. Gate name 150 is bound to transport reference 153 as described above. Multiple gates can share the same message transport. For example, multiple gates can have a transport reference 153 to the same TGP / IP socket. By sharing the same message transport, the size and complexity of each gate can be reduced. Devices in a distributed computing environment may require more gates to send and receive messages. The message processing complexity for multiple gates is reduced by sharing a common message transport. Transport reference 153 is a transport URI (eg, URL) or socket reference that can provide a mechanism for naming the underlying transport and sharing it with other gates. Multiple local gates include a reference 153 to the same transport, but each local gate
It operates independently of other local gates that send and receive messages to and from the remote gates of the pair.

【0103】 スキーマ154は、ゲート・ファクトリによってスペースからゲート内にダウ
ンロードすることができる。スキーマを、メッセージ検証プロセス中に素早くア
クセスするのに適している内部形式にコンパイルすることができる。一実施形態
では、スキーマは、クライアント・サービス・メッセージおよびプロバイダ・サ
ービス・メッセージという2つのメッセージのグループを指定できる。クライア
ント・サービス・メッセージ・グループは、クライアントが送ることができるす
べてのメッセージの記述(プロバイダがサポートする)を含み、プロバイダ・サ
ービス・メッセージ・グループは、プロバイダが送ることができる(クライアン
トが受け取る)すべてのメッセージの記述を含む。一実施形態では、クライアン
トまたはプロバイダのいずれかがスペース・サービスに対し特定の要求を送り、
クライアント・サービス・メッセージ全体、プロバイダ・サービス・メッセージ
全体、クライアントおよびプロバイダ・サービス・メッセージ全体、またはクラ
イアント・サービス・メッセージまたはプロバイダ・サービス・メッセージのい
ずれかの特定のメッセージのいずれかのメッセージとともに応答メッセージを取
得する。さらに、ゲートが構築された後、クライアントは、ゲートが実際にメッ
セージを送りなくても、ただし、その代わりに、ゲートのメッセージ群を検査す
ることにより、サービスの機能に関してクエリを実行することができる。
The schema 154 can be downloaded into the gate from space by the gate factory. The schema can be compiled into an internal format suitable for quick access during the message validation process. In one embodiment, the schema can specify two groups of messages: client service messages and provider service messages. The client service message group contains a description (supported by the provider) of all messages that the client can send, and the provider service message group contains all that the provider can send (received by the client). Including message description of. In one embodiment, either the client or the provider sends a specific request to the space service,
A reply message with a message that is either an entire client service message, an entire provider service message, an entire client and provider service message, or a specific message, either a client service message or a provider service message To get. Furthermore, after the gate is constructed, the client can query for the service's capabilities without actually sending the message, but instead by examining the gate's messages. .

【0104】 上述のように、メッセージ・ゲートは、認証証明書を使用するメッセージの発
送側、型安全性に対するメッセージ・コンテンツをXMLスキーマに従って検証
することができる。ただし、クライアントとサービスとの間でメッセージが正し
い順序で送られることを検証することが望ましい。クライアント上のアプリケー
ションに関係する既存の特定の機能なしで(たとえば、クライアント上のアプリ
ケーションにGUIがない場合)実行するクライアント用のアプリケーション(
サービス)を提供できることが望ましい。たとえば、クライアント上でWebブ
ラウザをサービスのGUIとして使用し、アプリケーション固有のGUIを使用
しないようにできる。XMLスキーマ内の可能なメッセージのうち、クライアン
トは次にサービスに送るメッセージを知る必要がある。クライアントはサービス
に関する特定の情報がないまま次に送るメッセージを判別できることが望ましい
。一実施形態では、サービスは必要な次の入力を示す応答メッセージを継続的に
送ることができる。サービスは、その後、要求入力が指定されているクライアン
トから対応するメッセージのみを受け入れる。メッセージ順序付けに対する他の
アドホックな方式も採用できる。
As mentioned above, the MessageGate can validate the message content for message sender, type safety, using the authentication certificate according to the XML schema. However, it is desirable to verify that the messages are sent in the correct order between the client and the service. An application for a client that runs without any existing specific functionality related to the application on the client (for example, if the application on the client does not have a GUI) (
Service) is desirable. For example, the Web browser can be used as the GUI of the service on the client, and the application-specific GUI can be prevented from being used. Of the possible messages in the XML schema, the client needs to know the next message to send to the service. Clients should be able to determine the next message to send without specific information about the service. In one embodiment, the service may continuously send a response message indicating the next input required. The service then accepts only the corresponding message from the client for which the request input is specified. Other ad hoc schemes for message ordering can also be employed.

【0105】 他の実施形態では、各メッセージのシンタックスを検証する(スキーマに従っ
てゲート内ですでに実行されている可能性がある)のとは反対に、メッセージ・
コンダクタ160をゲート内で採用するか、またはゲートに関連付け、メッセー
ジの正しい順序を検証することができる。メッセージ・コンダクタ160は、ア
プリケーションの準備のためのより一般的なアプローチをとることができる。メ
ッセージ・コンダクタ160は、サービスの通知で指定できる。スキーマ内のメ
ッセージ・コンダクタ指示により、ゲート構築中に、クライアント上に生成する
か、またはクライアントにダウンロードすることができ、次にサービスに送るメ
ッセージを決定するのに必要なコレオグラフを提供できる。メッセージ・コンダ
クタは、Javaアプリケーション、Java Script、およびWMLス
クリプトとして、または他のプログラミングまたはスクリプティング言語で実装
できる。
In another embodiment, as opposed to validating the syntax of each message (which may have already been done in the gate according to the schema)
The conductor 160 can be employed in or associated with the gate to verify the correct order of the messages. Message conductor 160 can take a more general approach to application preparation. The message conductor 160 can be specified in the notification of the service. The message conductor directives in the schema can provide the choreograph that can be generated on the client or downloaded to the client during gate construction and then needed to determine the message to send to the service. Message conductors can be implemented as Java applications, Java Script, and WML scripts, or in other programming or scripting languages.

【0106】 一実施形態では、メッセージ・コンダクタは入力を、クライアントとサービス
の間で送ることができるメッセージの有効な順序またはコレオグラフを表示する
XML文書(たとえば、サービス通知からの)として受け入れることができる。
このXML文書はさらに、ユーザ・インターフェース情報とその他の規則を指定
することもできる。コンダクタは、このXML文書を解析して、内部形式にし、
囲まれている順序付け情報に従ってメッセージ順序付け(および/またはその他
の規則)を強制する。コンダクタは、メッセージの発送の順序が狂うのを防ぐこ
とができる。または、メッセージの発送の順序が狂った場合、発送デバイス内に
例外を発生させることができる。メッセージの受取順序が狂った場合、コンダク
タは順序付けエラーを宣言する自動応答メッセージを送る。これで、発送側はメ
ッセージを正しい順序で再送することができる。いくつかの実施形態では、コン
ダクタの一部または全部を複数のゲートで共有することができることに注意され
たい。そのため、コンダクタを複数のゲートにリンクすることができる。
In one embodiment, the message conductor can accept input as an XML document (eg, from a service notification) displaying a valid sequence or choreograph of messages that can be sent between the client and the service. ..
The XML document may also specify user interface information and other rules. Conductor parses this XML document into an internal format,
Enforce message ordering (and / or other rules) according to the enclosed ordering information. The conductor can prevent out-of-order delivery of messages. Alternatively, an exception can be raised in the shipping device if the messages are shipped out of order. If the messages are received out of order, the conductor sends an auto-reply message declaring an ordering error. The sender can then resend the messages in the correct order. Note that in some embodiments some or all of the conductors may be shared by multiple gates. Therefore, the conductor can be linked to multiple gates.

【0107】 分散コンピューティング環境の一実施形態では、サービスのフロント・エンド
(サービス・インターフェース)をクライアントに組み込むことができる。一実
施形態では、サービス・インターフェースを、サービスによってクライアントに
提供される事前構築ユーザ・インターフェースとすることができる。一実施形態
では、サービス・インターフェースを、サービス通知でクライアントに提供する
ことができる。サービス・インターフェースは、クライアント上でサービスのユ
ーザと対話し、サービスを実行するための入力を取得し、サービスを実行した結
果をクライアントに表示することができる。「ユーザ」は、人間でも、組み込み
システムでも、他のクライアントまたはサービスなどでもよい。一実施形態では
、クライアント・デバイスは、フロント・エンドを組み込んでいるサービスを実
行できるだけなので、任意のサービスを用意することができない場合がある。一
実施形態では、サービスのサービス・インターフェースは、クライアント上のW
ebブラウザに実装することができる。
In one embodiment of a distributed computing environment, the front end of a service (service interface) may be embedded in the client. In one embodiment, the service interface may be a prebuilt user interface provided by the service to the client. In one embodiment, the service interface may be provided to the client with a service notification. The service interface can interact with the user of the service on the client, obtain input for executing the service, and display the result of executing the service on the client. A "user" may be a human, an embedded system, another client or service, etc. In one embodiment, the client device may not be able to provide any services, as it can only perform services that incorporate the front end. In one embodiment, the service interface of the service is the W on the client.
It can be implemented in the eb browser.

【0108】 一実施形態では、メッセージ・コンダクタおよび/またはサービス・インター
フェースはゲートの外部にあってもよく、したがって、ゲートとクライアントか
ら抽象することができる。抽象されたメッセージ・コンダクタは、任意のクライ
アント・デバイスに対し任意のサービスを提供することができる。一実施形態で
は、メッセージ・コンダクタを、実質的にどのようなプラットフォームでも実行
できるコードで書くことができる。一実施形態では、メッセージ・コンダクタは
、Java言語で書く。一実施形態では、メッセージ・コンダクタは、クライア
ント・デバイスに返される、オブジェクト、たとえば、Javaオブジェクトの
任意のダウンロードを必要としない。たとえば、非常に大きなオブジェクトを返
す場合、メッセージ・コンダクタは、そのような非常に大きなオブジェクトをダ
ウンロードしないことを選択できる。一実施形態では、メッセージ・コンダクタ
は、クライアントのために、XMLメッセージをクライアント・デバイスからサ
ービスに送ることができる。メッセージ・コンダクタは、サービスのユーザと対
話して、入力を受け取り、結果を表示することができる。
In one embodiment, the message conductor and / or service interface may be external to the gate and thus abstract from the gate and the client. The abstracted message conductor can provide any service to any client device. In one embodiment, the message conductor can be written in code that can be executed on virtually any platform. In one embodiment, the message conductor is written in the Java language. In one embodiment, the message conductor does not require any download of objects, eg Java objects, returned to the client device. For example, if returning a very large object, the message conductor may choose not to download such a very large object. In one embodiment, the message conductor can send XML messages from the client device to the service on behalf of the client. The message conductor can interact with the user of the service to receive input and display the results.

【0109】 一実施形態では、クライアントと対話し(たとえば、ユーザ・インターフェー
スを介して)、サービスを実行するためのすべての情報を取得するサービス・イ
ンターフェースを提供し、これにより、サービスを実行した結果または結果の場
所に関する情報のいずれかを適宜表示することができる。サービス・インターフ
ェースは、メッセージ・コンダクタ160の一部でもよく、またはメッセージ・
コンダクタ160に加えてそれと連携することもできる。サービス・インターフ
ェースは以下のいずれかである。 1.クライアント・デバイスに組み込まれ、クライアント上で実行される。 2.スペース・サーバからクライアント・デバイスにダウンロードされる。 3.スペース・サーバ上で実行される。 4.サービス・プロバイダ上で実行される。
In one embodiment, a service interface is provided that interacts with the client (eg, via a user interface) and obtains all information for performing the service, thereby resulting in the execution of the service. Alternatively, any of the information about the location of the result can be displayed as appropriate. The service interface may be part of the message conductor 160, or the message interface
In addition to the conductor 160, it can be associated therewith. The service interface is one of the following: 1. It is embedded in the client device and runs on the client. 2. Downloaded from space server to client device. 3. It runs on the space server. 4. It runs on a service provider.

【0110】 一実施形態では、クライアントに対して、分散コンピューティング環境のスペ
ース・サーバは#1を常にサポートし、#2がサポートされていればそのことを
示し(スペース内の通知で)、#3と#4のうち少なくとも1つがサポートされ
ていればそのことを示す必要がある。#4をサポートしているかどうかは、サー
ビス・プロバイダが#4をサポートしているかどうかにかかっていることに注意
されたい。一実施形態では、サービス・プロバイダに対し、分散コンピューティ
ング環境のスペース・サーバは#4を常にサポートし、#3をサポートしていれ
ばそのことを示す必要がある。
In one embodiment, to the client, the space server in the distributed computing environment always supports # 1 and indicates # 2 if supported (in the notification in space), If at least one of 3 and # 4 is supported, it needs to be indicated. Note that supporting # 4 depends on whether the service provider supports # 4. In one embodiment, the space server in a distributed computing environment should always indicate to the service provider that # 4 is supported and, if so, so.

【0111】 サービス・インターフェースがどこで実行されようと、サービスがアクティブ
化された後、サービス・インターフェースはクライアントと対話し、クライアン
トの表示装置に入力に対する要求を(リモートから)表示し、サービスの実行結
果を(リモートから)表示することができる。クライアントとのこのような対話
は、XMLメッセージとして実装される。このようなサービス・インターフェー
スおよび/またはメッセージ・コンダクタは、サービスを発見したけれども、ふ
つうサービスの使い方を知るために大部で無味乾燥のコンピュータ・マニュアル
を読みたくないクライアント・ユーザのニーズに応えられる。サービス・インタ
ーフェースおよび/またはメッセージ・コンダクタがユーザと対話して、サービ
スが必要とするすべての入力を要求するときに、ユーザが要求した場合に、要求
された入力の短い説明を用意することさえできる。サービス・インターフェース
がクライアントから必要な情報を取得した後、XMLメッセージを、そのサービ
スを実行するサービス・プロバイダに送る。メッセージの順序は、ゲート内のメ
ッセージ・コンダクタ160によって検証される。
Wherever the service interface is executed, after the service is activated, the service interface interacts with the client, displaying the request for input (remotely) on the client's display device, and the result of the execution of the service. Can be displayed (remotely). Such interactions with the client are implemented as XML messages. Such service interfaces and / or message conductors serve the needs of client users who have discovered a service but do not want to read a largely dry computer manual to know how to use the service. When the service interface and / or message conductor interacts with the user to request all the input required by the service, they can even provide a short description of the requested input when the user requests it. . After the service interface has obtained the required information from the client, it sends an XML message to the service provider executing the service. The order of the messages is verified by the message conductor 160 in the gate.

【0112】 好ましい実施形態では、すべてのメッセージはゲート内を流れる。ゲートは、
フロー制御メカニズムを提供するように構成することができる。たとえば、サー
ビスが大量の着信メッセージおよび発送メッセージを処理する必要がある。フロ
ー制御により、サービスは高トラフィック・ボリュームに追随することができる
。フロー制御タグについてメッセージを監視するようにゲートを構成することが
できる。ゲートがメッセージを受け取ると、ゲートはそのメッセージに対するフ
ロー制御タグを調べる。フロー制御タグはXMLタグとすることができる。たと
えば、メッセージには、OFFタグまたはONタグのいずれかを記述できる。受
け取ったメッセージにOFFタグが含まれる場合、受取ゲートはペアのデスティ
ネーション・ゲートへの発送メッセージを停止する。ゲートは、ONタグを含む
メッセージを受け取ると、メッセージの発送を再開する。
In the preferred embodiment, all messages flow in the gate. The gate is
It can be configured to provide a flow control mechanism. For example, a service needs to handle a large number of incoming and outgoing messages. Flow control allows services to keep up with high traffic volumes. The gate can be configured to monitor messages for flow control tags. When the gate receives a message, it looks at the flow control tag for that message. The flow control tag can be an XML tag. For example, either an OFF tag or an ON tag can be described in the message. If the received message contains an OFF tag, the receiving gate stops sending messages to the destination gate of the pair. When the gate receives the message including the ON tag, the gate resumes sending the message.

【0113】 そこで、サービス側ゲートはそのリソースの使用を監視し、そのリソースの使
用がしきい値を超えた場合にフロー制御を起動する。たとえば、サービスが、O
FFタグを含むメッセージを1つまたは複数のクライアント・ゲートに送ること
により負荷を低減することができる。OFFタグを含むメッセージを受け取った
クライアント・ゲートは、サービスへのメッセージ発送を停止する。クライアン
ト内の保留メッセージは、バッファリングするか、または内部フロー制御メカニ
ズムによって処理することができる。サービスがさらに要求を処理できるように
なると、ONタグを含む1つまたは複数のクライアントにメッセージを送り、ク
ライアントはメッセージ発送を再開する。他の実施形態では、ONおよびOFF
に加えて、またはONおよびOFFの代わりに、他のフロー制御タグをサポート
することができる。他のフロー制御タグはメッセージ・フローの低減を示すか、
またはそのメッセージ・フローを高くすることができる。
Therefore, the service side gate monitors the use of the resource and activates the flow control when the use of the resource exceeds a threshold value. For example, if the service is O
The load can be reduced by sending a message containing an FF tag to one or more client gates. Upon receiving the message containing the OFF tag, the client gate stops sending the message to the service. Pending messages in the client can be buffered or processed by an internal flow control mechanism. When the service is able to further process the request, it sends a message to one or more clients that include an ON tag, and the client resumes message delivery. In other embodiments, ON and OFF
In addition to or instead of ON and OFF, other flow control tags can be supported. Other flow control tags indicate a reduction in message flow, or
Or the message flow can be high.

【0114】 メッセージ・ゲートはリソース監視を実行するように構成することができる。
たとえば、すべてのメッセージはゲート内を流れるため、ゲートはクライアント
がサービス(および場合によっては、メモリーやスレッドなどの関連するリソー
ス)を使用する状況を管理しかつ/または追跡するように構成することができる
。ゲートは、サービスなどのリソースがどれだけ使用されているか、またどのサ
ービス・リソースをどれだけ使用しているかを監視することにより、クライアン
トなどのソフトウェア・プログラムの活動を追跡するように構成できる。一実施
形態では、ゲートはクライアント活動ログを生成するか、またはクライアント活
動ログの生成を簡単に行えるようにする。各メッセージおよびその宛先または発
送側をログに記録することができる。
The Message Gate can be configured to perform resource monitoring.
For example, all messages flow through the gate, and the gate may be configured to manage and / or track how clients use services (and in some cases, related resources such as memory and threads). it can. The gate can be configured to track the activity of a software program, such as a client, by monitoring how many resources, such as services, are being used and which service resources are being used. In one embodiment, the gate creates a client activity log or facilitates the creation of a client activity log. Each message and its destination or sender can be logged.

【0115】 さらにゲートは、ゲート・ペアのローカル(発送)側からフロー制御に関する
リソース監視を実行するように構成することもできる。クライアントが、割り当
てられたサービス(またはリソース)使用の帯域幅を超えた場合、たとえば、ゲ
ートは自動的にメッセージの流れを絞る。したがって、クライアント側メッセー
ジ・ゲートは、発送メッセージの流れを監視することにより異なるフロー制御モ
ードを自動的に起動することができる。発送メッセージ・フローがしきい値を超
えた場合、ゲートは発送メッセージの流れを減らすかまたは遮断する。サービス
のXMLスキーマまたは通知でしきい値を指定することができる。いくつかの実
施形態では、しきい値は特定のサービス・リソースを使用するメッセージのみま
たはすべてのメッセージについて指定することができる。
The gate may also be configured to perform resource monitoring for flow control from the local (shipping) side of the gate pair. If the client exceeds the bandwidth of the allocated service (or resource) usage, for example, the gate will automatically throttle the message flow. Thus, the client-side Message Gate can automatically activate different flow control modes by monitoring the flow of outgoing messages. If the shipping message flow exceeds the threshold, the gate reduces or blocks the shipping message flow. The threshold can be specified in the service's XML schema or notification. In some embodiments, thresholds may be specified for only messages or all messages that use a particular service resource.

【0116】 ゲートは、さらに、メッセージ・フローが増えるか、または再開するのを判別
するように構成することもできる。一実施形態では、ゲートは、マッチする返信
(応答)を受け取ることなく、送られた発送メッセージのカウントを保持するこ
とができる。マッチする応答がクライアント側ゲートに届いたら、未処理の要求
メッセージのカウントを減らす。このカウントが未処理要求メッセージの指定さ
れたしきい値以下に減ったら、ゲートは新しい要求メッセージを増やすか、また
はその発送を再開することができる。
The gate may also be configured to determine if message flow increases or resumes. In one embodiment, the gate may maintain a count of dispatch messages sent without receiving a matching reply. When a matching response arrives at the client-side gate, it decrements the outstanding request message count. When this count falls below the specified threshold of outstanding request messages, the gate can either increment a new request message or resume its delivery.

【0117】 ゲートは、メッセージ・ベースの課金請求機能をサポートするように構成でき
る。請求システムは、メッセージ・ゲートで発送および/または受け取ったメッ
セージの個数および/または種類に基づいて実装することができる。クライアン
トとの間でやり取りされるすべてのメッセージはゲートを通過するので、たとえ
ば、1メッセージごとにまたは「即金で支払う」方式でサービス使用料金を簡単
にクライアントに請求できるようにゲートを構成することができる。したがって
、たとえば、ユーザの代わりに実行されているソフトウェアがメッセージを発送
および/または受け取るごとにユーザに課金できる請求システムを分散コンピュ
ーティング環境内に実装することができる。
The gate can be configured to support message-based billing functionality. The billing system may be implemented based on the number and / or type of messages sent and / or received at Message Gate. All messages to and from the client pass through the gate, so you can configure the gate to easily charge clients for service usage on a message-by-message or "pay now" basis, for example. it can. Thus, for example, a billing system may be implemented in a distributed computing environment that allows software running on behalf of a user to charge the user each time a message is sent and / or received.

【0118】 一実施形態では、メッセージ・ゲートは、たとえば、サービスに関してXML
スキーマから請求情報を受け取る。請求情報は請求ポリシーとチャージ・バック
URIを表すことができる。チャージバックURIは、メッセージ・ゲートがユ
ーザの代わりに時間課金または使用度課金する場合に使用する。メッセージ・ゲ
ートは、課金メッセージをXMLスキーマで指定したチャージバックURIに送
ることによりチャージバックを実行する。このように構成されたゲートは請求ゲ
ートと呼ばれる。請求ポリシーは、1メッセージ当たりの課金金額または累積メ
ッセージ合計に対する課金金額などを示す。請求ポリシーは、ユーザに対しどれ
だけおよび/またはどのような頻度で(たとえば、x個のメッセージを発送およ
び/または受け取った後)課金するかを示す。このポリシーはある種のメッセー
ジのみが課金を発生させ、このようなメッセージにより指定されたサービス・リ
ソースが要求されることを示す。請求ポリシーはさらに、異なるクライアントま
たはクライアントのクラスに対して異なる請求モデルを示す場合もある。たとえ
ば、いくつかのクライアントがサービスにアクセスするためゲートを作成すると
きに一度限りの課金の対価を支払うように請求ポリシーを(たとえば、サービス
のXMLスキーマで)構成することができる。ポリシーは、即金で(たとえば、
メッセージごとに)支払うクライアントを示す場合もあれば、または全く課金さ
れないクライアントを示す場合もある。
In one embodiment, the MessageGate may, for example, service XML
Receive billing information from the schema. The billing information can represent a billing policy and a charge back URI. Chargeback URIs are used when the Message Gate charges on an hourly or usage basis on behalf of the user. The Message Gate performs chargeback by sending a billing message to the Chargeback URI specified in the XML Schema. The gate thus constructed is called a billing gate. The billing policy indicates a billing amount per message or a billing amount for a cumulative total of messages. The billing policy indicates how and / or how often (eg, after sending and / or receiving x messages) a user is charged. This policy indicates that only certain messages incur charges and that the service resources specified by such messages are required. Billing policies may also indicate different billing models for different clients or classes of clients. For example, a billing policy (eg, in the service's XML schema) can be configured to pay a one-time charge for some clients when creating a gate to access the service. Policies can be paid immediately (for example,
It may refer to clients paying (per message), or to clients that are not charged at all.

【0119】 いくつかの実施形態では、クライアントは軽量すぎて完全なゲートをサポート
できなかったり、クライアントに、直接分散コンピューティング環境に参加する
ためのソフトウェアを組み込めない場合がある。このような実施形態では、サー
バ(サービスが通知されるスペース・サーバや他のサーバなど)はそのクライア
ントに対して完全または部分的なプロキシ・ゲートとすることができる。サーバ
は、クライアントで使用するサービスごとにサービス・エージェント(ゲートを
含むことがある)をインスタンス化する。サービス・エージェントは、メッセー
ジを送る許可を確認し、メッセージをプロバイダに送り、その際、場合によって
はプロバイダが次のメッセージを受け付けるようになるまでキューに入れておき
、メッセージをクライアントに送り、その際、場合によってはクライアントが次
のメッセージを受け付けるようになるまでキューに入れておき、結果またはアク
ティブ・スペースに結果を格納する作業を管理するという操作を行うことができ
る。「ブリッジ」のセクションを参照されたい。たとえば、図13に示されてい
るように、クライアントは、ゲートが上述のメッセージング方式に直接参加する
ことをサポートしていない従来のブラウザ400とすることができる。ブラウザ
400は、プロキシ・サーブレット(エージェント)402によって補助される
。ブラウザのユーザは、サーチ・エンジンを使用して、分散コンピューティング
環境内のスペース通知サービスの前面に置かれる(その内容を表示する)Web
ページを見つけることができる。ユーザは、スペースのWebページをポイント
してクリックし、サーブレットの助けを借りて、サービスにアクセスすることが
できる。Webページには、スクリプト、たとえば、JavaやWMLスクリプ
トを含むことができ、これを使用して、ブラウザをプロキシ・サーブレットに接
続する。また、スクリプトを使用して、メッセージをプロキシ・サーブレットに
送ることもできる。サーブレット・エージェントは、ブラウザ・クライアントに
代わってWebページ・アクションをメッセージに翻訳する。これらのはアクシ
ョンは、スペースのナビゲート、サービスの起動、および結果の返却を含む。結
果ページURI(XMLを含むページを参照する)は、直接(または必要ならば
HTMLまたはWAPに変換されて)ブラウザに返され、ユーザに対し表示され
る。したがって、ブラウザ・ベースのクライアントは、サービスの起動方法を知
る必要がなく、またサービス使用セッションで送るメッセージを知る必要もない
。たとえば、WAPブラウザのユーザ(たとえば、携帯電話の)は、スペース・
ページに接続し、そのコンテンツ(サービス)を参照し、サービスを起動するが
、すべてポイントしてクリックする操作により行える。エージェント402は、
従来のクライアントと分散コンピューティング環境との間のクライアント・イン
ターフェースを備える。
In some embodiments, the client may be too lightweight to support full gates, or the client may not be equipped with software to participate directly in the distributed computing environment. In such an embodiment, a server (such as a space server or other server advertised for services) may be a full or partial proxy gate for its clients. The server instantiates a service agent (which may include a gate) for each service used by the client. The Service Agent confirms the permission to send the message, sends the message to the provider, possibly queuing until the provider accepts the next message, then sends the message to the client, In some cases, the client may queue the next message until it accepts the next message and manage the work of storing the result in the results or active space. See the "Bridge" section. For example, as shown in FIG. 13, the client can be a conventional browser 400 that does not support the gate directly participating in the messaging scheme described above. The browser 400 is assisted by a proxy servlet (agent) 402. A browser user uses a search engine to bring (display) its contents to the front of the space notification service in a distributed computing environment.
You can find the page. The user can access the service with the help of a servlet by pointing and clicking on the web page of the space. Web pages can include scripts, such as Java or WML scripts, which are used to connect the browser to the proxy servlet. You can also use a script to send a message to a proxy servlet. The servlet agent translates web page actions into messages on behalf of the browser client. These actions include navigating spaces, invoking services, and returning results. The resulting page URI (which refers to the page containing XML) is returned directly to the browser (or converted to HTML or WAP if necessary) and displayed to the user. Thus, browser-based clients do not need to know how to invoke a service, nor do they need to know the messages to send in a service-using session. For example, a user of a WAP browser (eg on a mobile phone) may
You can connect to a page, browse its contents (service), and start the service, but you can do it by pointing and clicking. Agent 402
It provides a client interface between a conventional client and a distributed computing environment.

【0120】 分散コンピューティング環境は、異なる機能をサポートするクライアントとサ
ービスとの間の通信を行うための数種類のメッセージ・ゲートを備えることがで
きる。たとえば、上述のように、いくつかのゲートは、フロー制御または請求機
能をサポートする。他の種類のメッセージ・ゲートでは、特定の形式のリモート
・メソッド呼び出しをサポートする。このタイプのゲートは、メソッド・ゲート
と呼ばれる。
A distributed computing environment can include several types of message gates for communicating between clients and services that support different functions. For example, as mentioned above, some gates support flow control or billing functions. Other types of Message Gates support certain forms of remote method invocation. This type of gate is called a method gate.

【0121】 ゲートは、型安全なメッセージ、たとえばXMLメッセージを送り受け取るセ
キュリティで保護されたメッセージ・エンドポイントである。リモート・メソッ
ド呼び出し(RMI)スタイルのゲートは、メソッド・ゲートと呼ばれる。直接
データ中心ゲートは、メッセージ・ゲートと呼ばれる。メソッド・ゲートは、メ
ッセージ・ゲートの上の「レイヤ」として実装することができる。正確な実装は
、プラットフォームのバインドで定義することができる。
A Gate is a secure message endpoint that sends and receives type-safe messages, for example XML messages. Remote method invocation (RMI) style gates are called method gates. Direct data centric gates are called message gates. Method gates can be implemented as a "layer" on top of message gates. The exact implementation can be defined in the platform bindings.

【0122】 図14は、メソッド・ゲートを使用してリモート・メソッド呼び出しインター
フェースをサービスに提供する方法を示す。メソッド・ゲートは、クライアント
とサービスとの間のメソッド・インターフェースを提供する。メソッド・ゲート
は双方向にすることができ、クライアントからサービスへ、またサービスからク
ライアントへのリモート・メソッドを呼び出しが可能である。XMLスキーマ情
報170から(たとえば、スペース内のサービス通知から)メソッド・ゲート1
72を生成することができる。XMLスキーマ情報170は、メソッド・インタ
ーフェースを定義するXMLを含む。この情報から、1つまたは複数のメソッド
とのインターフェースのコードをゲートの一部として生成することができる。生
成されたコード内の各メソッドを呼び出し(たとえば、クライアント・アプリケ
ーション176からの)により、マーシャリングされたメソッド・パラメータを
含むメッセージをサービスに送ることができる。含まれるメッセージのシンタッ
クスおよびパラメータをXMLスキーマで指定する。したがって、メソッド・ゲ
ート172は、サービス・メソッドをリモートから呼び出すXMLメッセージ・
インターフェースを備える。メソッド・ゲートは、クライアント上に生成するか
、またはサービス・メソッドが通知されたスペース・サーバまたは特別ゲートウ
ェイ・サーバなどのサーバをプロキシとすることができる。
FIG. 14 shows how a method gate is used to provide a remote method invocation interface to a service. Method gates provide the method interface between the client and the service. Method gates can be bidirectional and can call remote methods from the client to the service and from the service to the client. Method gate 1 from XML schema information 170 (eg, from service notification in space)
72 can be generated. XML schema information 170 includes XML that defines a method interface. From this information, code for interfacing with one or more methods can be generated as part of the gate. Invoking each method in the generated code (eg, from client application 176) can send a message containing the marshaled method parameters to the service. Specify the syntax and parameters of the included message in the XML schema. Therefore, the method gate 172 will use the XML message
It has an interface. Method gates can be spawned on the client or proxied to a server such as a space server or a special gateway server to which the service method has been advertised.

【0123】 サービスは、サービスのXMLスキーマで定義されたメソッド・メッセージ・
セットに対応するオブジェクト・メソッド・セットを実装するかまたは、それに
リンクされている対応するメソッド・ゲートを備えることができる。サービスの
メソッド・ゲートよって実装された、またはそれにリンクされているオブジェク
ト・メソッドとサービスのXMLスキーマによって定義されたメソッド・メッセ
ージとの間に一対一の対応関係がある。サービスの対応するメソッドがクライア
ントからメッセージを受け取りサービスのメソッドの1つを呼び出すと、サービ
スのメソッド・ゲートはメッセージ呼び出しのパラメータのアンマーシャリング
またはアンパックを行い、受け取ったメッセージによって示されるメソッドを呼
び出し、アンマーシャリングされたパラメータを渡す。
A service is a method message defined in the service XML schema.
The set of object methods corresponding to the set can be implemented or have corresponding method gates linked to it. There is a one-to-one correspondence between object methods implemented by or linked to the method gates of a service and method messages defined by the service's XML schema. When the corresponding method of the service receives the message from the client and calls one of the methods of the service, the method gate of the service unmarshalls or unpacks the parameters of the message call and calls the method indicated by the received message to Pass the marshaled parameters.

【0124】 メソッド・ゲートは、同期要求応答メッセージ・インターフェースを備え、ク
ライアントがこれを使用してリモートからメソッドを呼び出し、サービスが結果
を返すようにする。基礎のメッセージ・パッシング・メカニズムは、クライアン
トから完全に隠されている。この形式のリモート・メソッド呼び出しでは、メソ
ッドの結果を次のように処理することができる。一実施形態では、結果オブジェ
クト(および関連するクラス)をクライアントにダウンロードする代わりに、結
果の参照のみをXMLメッセージで返す。オブジェクト参照178は実際のオブ
ジェクト結果180(たとえば、ネット上にそのまま格納)を表す生成されたコ
ード・プロキシ(たとえば、結果ゲート)である。他の実施形態では、クライア
ントは実際の結果オブジェクトを受け取ることを選択できる。さらに、クライア
ントが結果オブジェクト参照を受け取った後、クライアントはこの参照を使用し
て実際の結果オブジェクトを受け取ったり操作したりできる。一実施形態では、
結果参照に実際の結果への1つまたは複数のURIを含める。
The method gate provides a synchronous request response message interface that the client uses to call the method remotely and the service to return the result. The underlying message passing mechanism is completely hidden from the client. With this form of remote method invocation, the result of the method can be processed as follows: In one embodiment, instead of downloading the result object (and associated class) to the client, only the result reference is returned in the XML message. Object reference 178 is a generated code proxy (eg, result gate) that represents the actual object result 180 (eg, stored on the net as is). In other embodiments, the client may choose to receive the actual result object. Further, after the client receives the result object reference, the client can use this reference to receive and manipulate the actual result object. In one embodiment,
Include one or more URIs to the actual result in the result reference.

【0125】 実際の結果オブジェクトは、サービス結果スペース内に格納される(これは、
たとえば、サーブレットにより動的に作成できる)。この一時的結果スペースは
、クエリ結果キャッシュとして機能することができる。古い結果領域をクリーン
アップするサーバ・ソフトウェア(ガベージ・コレクタ)が結果キャッシュ(ス
ペース)内を巡回する。メソッドを呼び出しごとに返される結果は、結果スペー
ス内に通知される。クライアントがリモートから結果自体をインスタンス化し、
その固有のメソッド・ゲートを生成できるメソッドである場合もあれば、そのよ
うなメソッドを含む場合もある。したがって、分散コンピューティング環境では
再帰的リモート・メソッドを呼び出しサポートすることができる。
The actual result object is stored in the service result space (which is
For example, it can be created dynamically by a servlet). This temporary result space can act as a query result cache. Server software (garbage collector) that cleans up the old result area crawls in the result cache (space). The result returned by each invocation of the method is posted in the result space. The client remotely instantiates the result itself,
It may be a method that can generate its own method gate, or it may include such a method. Thus, a distributed computing environment can support invoking recursive remote methods.

【0126】 上述のように、クライアントはメソッド・ゲートを使用してリモートからサー
ビス・メソッドを呼び出すと、サービス・メソッド・ゲートから実際の結果では
なくメソッド結果への参照が返される。この参照から、結果ゲートを生成して実
際の結果にアクセスする。したがって、クライアントまたはクライアント・メソ
ッド・ゲートは結果URI、それとたぶん、結果XMLスキーマおよび/または
認証証明書を受け取り、これを使用してゲートを構築しリモート・メソッド結果
にアクセスする。
As mentioned above, when a client remotely invokes a service method using a method gate, the service method gate returns a reference to the method result rather than the actual result. From this reference, we generate a result gate to access the actual result. Thus, the client or client method gate receives the result URI, and possibly the result XML schema and / or authentication certificate, which is used to build the gate and access the remote method result.

【0127】 一実施形態では、サービス・ゲートは結果に対する「子ゲート」を作成する。
この子結果ゲートは、親ゲートと同じ認証証明書を共有することができる。いく
つかの実施形態では、結果は異なるアクセス権限セットを備え、したがって、そ
の親と同じ認証証明書を共有しない。たとえば、給料支払い簿サービスではユー
ザの異なる集まりが給料支払い簿サービスの結果(給与)を読み取るためにそれ
を起動することができる。
In one embodiment, the service gate creates a “child gate” for the result.
This child result gate can share the same authentication certificate as the parent gate. In some embodiments, the result comprises a different set of permissions and thus does not share the same authentication certificate as its parent. For example, in a payroll service, different groups of users can activate it to read the results (salary) of the payroll service.

【0128】 サービス・メソッド・ゲートは、子結果ゲートをメソッドの結果としてクライ
アント・ゲートに返す。クライアントは、その結果ゲートを使用して実際の結果
にアクセスする。一実施形態では、結果ゲートを受け取るソフトウェア・プログ
ラム(クライアント)は結果ゲートと結果自体とを区別することはできず、その
場合、結果ゲートは実際の結果オブジェクトのオブジェクト・プロキシとなる。
結果ゲートはさらに、結果オブジェクトへのリモート・メソッド呼び出しをサポ
ートするメソッド・ゲートとすることもできる。このようにして、親と子のメソ
ッド/結果ゲートのチェーンを作成できる。
The service method gate returns the child result gate to the client gate as the result of the method. The client uses the result gate to access the actual result. In one embodiment, the software program that receives the result gate (the client) cannot distinguish between the result gate and the result itself, in which case the result gate is an object proxy for the actual result object.
The result gate can also be a method gate that supports remote method invocation on the result object. In this way, you can create a chain of parent and child method / result gates.

【0129】 一実施形態では、メッセージ・ゲートおよびリモート・メソッドは、Java
で書れている。この実施形態では、Java入力システムに従ってメソッド結果
が正しく入力される。上述のようにJavaメソッドをリモートから呼び出した
場合、結果ゲートは結果の型とマッチするJavaの型にキャストすることがで
きる。この実施形態では、分散コンピューティング環境でメソッド・ゲートを使
用して、リモートJavaオブジェクトがローカルJavaオブジェクトとして
動作するようにできる。メソッド呼び出しおよび結果は、実際のオブジェクトが
ローカルであるかリモートであるかに関係なくJavaソフトウェア・プログラ
ムと同じように表示される。結果に対するスペースの使用の詳細については、以
下の「スペース」セクションを参照のこと。
In one embodiment, MessageGate and remote methods are Java
It is written in. In this embodiment, the method result is correctly entered according to the Java input system. When a Java method is called remotely as described above, the result gate can be cast to a Java type that matches the result type. In this embodiment, method gates may be used in a distributed computing environment to allow a remote Java object to act as a local Java object. The method calls and results are displayed just like a Java software program, regardless of whether the actual object is local or remote. See the "Spaces" section below for more information on using spaces for results.

【0130】 メソッド・ゲートは、単に未処理メッセージ・インターフェースではなく、ク
ライアントへのメソッド・インターフェースを提供する。一実施形態では、メソ
ッド・ゲートは、メッセージ・ゲートの上に実装することができる。メッセージ
・ゲートは、トランスポート・アクセス、メッセージ・コンテンツ妥当性確認、
およびメッセージ・コンテンツ・アクセスを使用するメソッド・ゲートを提供す
る(ゲットアンドセット(get & set)コンテンツ・メソッド)。一実施形態では
、生成されたコード内(つまり、メソッド・ゲート)の各メソッド呼び出しによ
り、マーシャリングされたメソッド・パラメータを含む単一の同期メッセージが
サービスに送られる。その後、メソッド・ゲートにより、現在のスレッドはブロ
ックし、サービスから応答メッセージが返るのを待つ。
Method gates provide a method interface to the client, rather than just a raw message interface. In one embodiment, the method gate may be implemented on top of the message gate. Message Gate can be used for transport access, message content validation,
And provide method gates that use message content access (get & set content methods). In one embodiment, each method invocation in the generated code (ie, the method gate) sends a single synchronization message to the service containing the marshaled method parameters. Then the method gate blocks the current thread and waits for a reply message from the service.

【0131】 一実施形態では、サービスによって出力されたいくつかの結果がスペース内で
通知され、最終的に結果ゲートを使用してアクセスされる。結果ゲートは、結果
を生成するために使用するを入力ゲートと同じセキュリティ証明書を含む場合も
あれば含まない場合もある。サービスへの入力は出力(結果)と非同期であるた
め、結果は、異なるアクセス権限セットが関連付けられる場合がある。B2Bシ
ナリオを使用すると、給料支払い簿サービスについては、ユーザの異なる集まり
が給料支払い簿サービスの結果(給与)を読み取るために給料支払い簿サービス
を起動することができる。
In one embodiment, some results output by the service are posted in space and finally accessed using a results gate. The result gate may or may not include the same security certificate as the input gate used to generate the result. Since the inputs to the service are asynchronous with the outputs (results), the results may be associated with different permission sets. Using the B2B scenario, for a payroll service, different groups of users can invoke the payroll service to read the payroll service results (salary).

【0132】 一実施形態では、メッセージ・ゲートの結果に対する結果ゲート生成を手動で
開始できる。インライン結果(たとえば、サービスから応答として送られたXM
Lドキュメント)にアクセスするには、メッセージ・ゲートに用意されているメ
ッセージ・コンテンツ・アクセス(たとえば、ゲットアンドセット)メソッドを
使用する。メソッド結果のゲート生成は自動的に開始する。プログラミングのメ
ソッド・ゲート・モデルは、結果ゲート生成を隠し、クラス・ロードのオーバー
ヘッドのない、またはアプリケーション・プログラマが手動で結果ゲートを生成
する必要のない、シームレスなリモート・メソッド呼び出しプログラミング・モ
デルを作成する。
In one embodiment, result gate generation for Message Gate results can be manually initiated. Inline results (eg XM sent in response from service)
To access the L document), use the message content access (eg, get and set) methods provided by MessageGate. Gate generation of method results starts automatically. The programming method gate model hides result gate generation, creating a seamless remote method invocation programming model with no class loading overhead or the need for the application programmer to manually generate result gates. To do.

【0133】 図45a〜図45dは、メソッド・ゲートを使用する分散コンピューティング
環境のクライアントとサービスの間の通信のメカニズムのさまざまな実施形態を
示す流れ図である。図45aでは、クライアント・デバイス内で実行するクライ
アント・プロセスは、ステップ2100でメソッド・コールを実行する(つまり
、メソッドを呼び出す)。一実施形態では、メソッド・コールは、Javaメソ
ッドへのコールである。一実施形態では、呼び出されたメソッドはクライアント
・デバイスのローカルに実装できないが、そのクライアント・デバイスの外部に
あるサービス・デバイスには実装される。ステップ2102で、クライアント・
デバイスのクライアント・メソッド・ゲートがメソッド・コールを受け取る。ク
ライアント・メソッド・ゲートは、メソッド・コールをデータ表現言語メッセー
ジにマーシャリングする。一実施形態では、データ表現言語はXMLである。メ
ッセージには、メソッドの識別子とメソッドの1つまたは複数のパラメータ値が
含まれる。識別子は、名前、数値、またはメッセージの受取側に対してメソッド
を識別するのに使用するその他の値でよい。メソッド・コールは、1つまたは複
数のパラメータを含み、呼び出されると、呼び出す側がそれらのパラメータの値
を指定する。一実施形態では、複数のメソッド・コールが同じ識別子を共有し、
そのメソッドのパラメータで区別することができる。
45a-45d are flow diagrams illustrating various embodiments of a mechanism for communication between a client and a service in a distributed computing environment that uses method gates. In FIG. 45a, the client process executing in the client device makes a method call (ie, invokes a method) at step 2100. In one embodiment, the method call is a call to a Java method. In one embodiment, the invoked method cannot be implemented locally on the client device, but is implemented on a service device external to the client device. In step 2102, the client
The device client method gate receives the method call. The client method gate marshals the method call into a data representation language message. In one embodiment, the data representation language is XML. The message includes a method identifier and one or more parameter values for the method. The identifier may be a name, number, or other value used to identify the method to the recipient of the message. A method call contains one or more parameters, and when called, the caller specifies the values for those parameters. In one embodiment, multiple method calls share the same identifier,
It can be distinguished by the parameters of the method.

【0134】 ステップ2104で、クライアント・メソッド・ゲートは、メッセージをサー
ビス・デバイスに送る。一実施形態では、クライアント・メソッド・ゲートは、
メッセージを直接サービス・メソッド・ゲートに送ることができる。図45bに
示されている他の実施形態では、ステップ2120で、クライアント・メソッド
・ゲートはメッセージをクライアント・メッセージ・ゲートに送る。ステップ2
122で、クライアント・メッセージ・ゲートは、そのメッセージをサービス・
メッセージ・ゲートに送る。ステップ2124で、サービス・メッセージ・ゲー
トは、そのメッセージをサービス・メッセージ・ゲートに送る。図45bに示さ
れている実施形態を使用すると、メソッド・ゲートはメッセージの送受取を処理
する必要がなくなり、またRMI機能およびメッセージ処理機能を区切ることに
より、分散コンピューティング環境のプログラミング・モデルが簡素化される。
At step 2104, the client method gate sends a message to the service device. In one embodiment, the client method gate is
You can send the message directly to the service method gate. In another embodiment, shown in Figure 45b, at step 2120, the client method gate sends a message to the client message gate. Step two
At 122, the client message gate services the message.
Send to Message Gate In step 2124, the Service Message Gate sends the message to the Service Message Gate. Using the embodiment shown in FIG. 45b, the method gate does not need to handle sending and receiving messages, and delimiting RMI and message handling functions simplifies the programming model of the distributed computing environment. Be converted.

【0135】 図45aに戻ると、ステップ2106で、サービス・メソッド・ゲートは、受
け取ったメッセージからメソッド・コールをアンマーシャリングまたはアンパッ
クしてメッセージ呼び出しのパラメータにし、その後、受け取ったメッセージに
より示されているメソッドを呼び出して、アンマーシャリングされたパラメータ
値を呼び出されたメソッドに受け渡す。サービス・メソッド・ゲートは、メッセ
ージに含まれる識別子を使用して、メソッド・コールのテンプレートを配置する
。サービス・メソッド・ゲートは、サービスのXMLスキーマで定義されたメソ
ッド・メッセージ・セットに対応するメソッド・セットを実装するかまたは、そ
れにリンクすることができる。サービスのメソッド・ゲートよって実装された、
またはそれにリンクされているオブジェクト・メソッドとサービスのXMLスキ
ーマによって定義されたメソッド・メッセージとの間に一対一の対応関係がある
Returning to FIG. 45a, in step 2106, the service method gate unmarshalls or unpacks the method call from the received message into a parameter of the message call, then indicated by the received message. Call the method and pass the unmarshalled parameter value to the called method. The service method gate uses the identifier contained in the message to locate the method call template. The service method gate may implement or link to a method set corresponding to the method message set defined in the service's XML schema. Implemented by the service method gate,
Or there is a one-to-one correspondence between the object method linked to it and the method message defined by the XML schema of the service.

【0136】 ステップ2108で、呼び出されたメソッドはサービス上で実装または実行さ
れる。ステップ2110で、呼び出されたメソッドはメソッドを呼び出しで受け
取ったパラメータ値に従って、呼び出しから結果出力を生成する。ステップ21
12で、メソッド呼び出しの結果を、そのメソッドを最初に呼び出したクライア
ント・プロセスに渡す。一実施形態では、サービスは、直接、結果を1つまたは
複数の結果メッセージでクライアントに渡すことができる。他の実施形態では、
サービスは結果をスペース内に置き、結果通知をクライアントに送り、結果にア
クセスできるようにする。図45cおよび45dは、結果にアクセスするために
結果ゲートをクライアントに提供する他の実施形態を示している。
In step 2108, the called method is implemented or executed on the service. In step 2110, the invoked method produces a result output from the invocation according to the parameter values received in the invocation of the method. Step 21
At 12, the result of the method call is passed to the client process that originally called the method. In one embodiment, the service may directly pass the results to the client in one or more result messages. In other embodiments,
The service places the result in the space and sends a result notification to the client so that the result can be accessed. 45c and 45d illustrate another embodiment of providing a result gate to a client to access the results.

【0137】 図45cで、サービス・メソッド・ゲートは、結果参照をサービス・メソッド
・ゲートに送ることができる。一実施形態では、結果参照は、結果への通知とす
ることができる。他の実施形態では、結果参照は結果に対するアドレス、たとえ
ばURIとすることができる。ステップ2132で、サービス・メッセージ・ゲ
ートは、結果参照をメッセージでクライアント・メッセージ・ゲートに送る。ス
テップ2134で、クライアントは、メッセージを受け取った後、結果参照メッ
セージから結果ゲートを作成する。たとえば、結果通知をメッセージで送り、ク
ライアントは別のところで説明しているように通知からメッセージ・ゲートを作
成するのと同様の方法で結果通知に従って結果ゲートを作成することができる。
ステップ2136で、クライアントは、その結果ゲートを使用して結果にアクセ
スする。たとえば、結果がサービス・デバイスにあり、サービスがサービス結果
ゲートを生成する。サービス結果ゲートと通信するためにクライアント結果ゲー
トを生成することができ、たとえば、サービス結果ゲートのURIを結果通知に
含めることができる。それとは別に、サービスは分散コンピューティング環境で
別の場所に結果を保存し、クライアント結果ゲートは、結果に対してセットアッ
プされた結果ゲートと通信するように構成することができる。たとえば、結果が
スペースにあり、クライアント結果ゲートはスペースで結果ゲートと通信するこ
とができる。
In FIG. 45c, the service method gate can send a result reference to the service method gate. In one embodiment, the result reference can be a notification to the result. In other embodiments, the result reference can be an address to the result, for example a URI. In step 2132, the Service Message Gate sends the result reference in a message to the Client Message Gate. In step 2134, the client creates a result gate from the result reference message after receiving the message. For example, a result notification can be messaged and the client can create a result gate according to the result notification in a manner similar to creating a message gate from a notification as described elsewhere.
At step 2136, the client uses the result gate to access the results. For example, the result is on the service device and the service generates a service result gate. A client result gate can be created to communicate with the service result gate, eg, the URI of the service result gate can be included in the result notification. Alternatively, the service stores the results elsewhere in the distributed computing environment and the client result gate can be configured to communicate with the result gate set up for the results. For example, the result is in space and the client result gate can communicate with the result gate in space.

【0138】 図45dで、サービスはステップ2140で結果ゲートを作成する。ステップ
2142で、サービスは、結果ゲートをクライアントに(メッセージで)送る。
クライアントは、受け取った結果ゲートを使用して、結果にアクセスする。この
実施形態では、クライアントは、結果ゲートをセットアップする必要がなくなる
In FIG. 45d, the service creates a result gate at step 2140. In step 2142, the service sends the result gate (in a message) to the client.
The client uses the received result gate to access the results. In this embodiment, the client does not have to set up a result gate.

【0139】 最初にメソッドを呼び出したクライアント・プロセスからは、ここで説明して
いるRMIのプロセスは透過的である。クライアント・プロセスからは、メソッ
ドがローカルで呼び出されているかのように見え、また結果がローカルで送られ
ているように見える。したがって、メソッド・ゲートをメッセージ通信メカニズ
ムに組み合わせることにより、組み合わせないと大きくなりすぎたり複雑すぎた
りしてクライアント上で実行できないプロセスを「シン」クライアントが実行で
きるようなる。
The RMI process described here is transparent to the client process that originally invoked the method. From the perspective of the client process, the method appears to be called locally, and the results appear to be sent locally. Therefore, the combination of method gates with the message communication mechanism allows a "thin" client to perform processes that otherwise would be too large or too complex to run on the client.

【0140】 可能なJavaプラットフォーム・メソッド・ゲートの実装例を以下に示す。
Javaプラットフォームに対する実際のJavaメソッド・ゲートの実装は、
分散コンピューティング環境のプラットフォーム・バインドで定義される。結果
へのアクセスを許可する各Javaメソッド・ゲートは、実際には、結果のイン
ターフェースを実装するJavaクラス・インスタンス(オブジェクト)である
。たとえば、結果がテーブル型のオブジェクトの場合、結果メソッド・ゲート・
クラスは以下のように定義できる。 public class TableMethodGate implements Table{ public Cell getNextCell(); }
An example implementation of a possible Java platform method gate is shown below.
The actual Java method gate implementation for the Java platform is
Defined in the platform bindings of a distributed computing environment. Each Java method gate that allows access to the result is actually a Java class instance (object) that implements the resulting interface. For example, if the result is a table type object, the result method gate
The class can be defined as follows. public class TableMethodGate implements Table {public Cell getNextCell ();}

【0141】 TableMethodGateオブジェクトは、テーブル型にキャストされ
てから、メソッド呼び出し結果として返される。このプロセスは再帰的である。
つまり、getNextCellメソッドを呼び出すと、CellMethod
Gateクラスおよびオブジェクト・インスタンスが生成され、getNext
Cell結果を表す。 public class CellMethodGate implements Cell{}
The TableMethodGate object is cast as a table type and then returned as a method call result. This process is recursive.
In other words, if you call the getNextCell method, CellMethod
The Gate class and object instance are created and getNext
A Cell result is shown. public class CellMethodGate implements Cell {}

【0142】 特定のサービスでどのゲート・タイプ(メッセージまたはメソッド)を使用す
るかの選択は、プラットフォームのバインドと各サービス通知により組み合わせ
て処理される。いくつかのプラットフォームでは、メソッド・ゲートをサポート
していない場合がある。プラットフォームでメソッド・ゲートをサポートしてい
る場合、バインドで正確な実装を定義することができる。第二に、サービス通知
のインターフェースは、RMIスタイルのプログラミングに役立つ場合もあれば
役立たない場合もある。RMIスタイルのプログラミング・モデルをサポートす
るサービス・インターフェースは、以下のXML属性でをフラグが立てられる。
<MethodGateInterface=true>
The choice of which gate type (message or method) to use for a particular service is handled in combination with platform bindings and each service notification. Some platforms may not support method gates. If your platform supports method gates, the binding can define the exact implementation. Second, the service notification interface may or may not be useful for RMI style programming. Service interfaces that support the RMI style programming model are flagged with the following XML attributes.
<MethodGateInterface = true>

【0143】 メッセージ・ゲートは、さらに、イベントのパブリッシュおよびサブスクライ
ブ・メッセージ通信もサポートする。イベント・サポートのあるメッセージ・ゲ
ートは、イベント・ゲートと呼ぶ。サービスのXMLスキーマは、サービスによ
ってパブリッシュされる1つまたは複数のイベントの集まりを示す。イベント・
ゲートは、XMLスキーマから構築できる。イベント・ゲートは、サービスによ
ってパブリッシュされたイベントの集まりの一部または全部を認識し、それらの
イベントにサブスクライブし、各イベントを、サービスによって生成されるのと
いっしょに配布するように構成できる。
MessageGate also supports event publishing and subscribing messaging. A message gate with event support is called an event gate. A service's XML schema indicates a collection of one or more events published by the service. Event
Gates can be constructed from XML schema. The event gate can be configured to recognize some or all of the collection of events published by the service, subscribe to those events, and deliver each event along with the events generated by the service.

【0144】 サービスに対するイベントの集まりは、サービスのXMLメッセージ・スキー
マで記述することができる。XMLスキーマのイベント・メッセージごとに、イ
ベント・ゲートはそのイベントの消費者としてサブスクライブする。一実施形態
では、イベント・ゲートはXMLスキーマで示されるすべてのイベントにサブス
クライブする。XMLタグを使用してそれぞれのイベント・メッセージに名前を
付ける。イベント・ゲートは、サブスクライブ先のイベントのXMLタグを含む
サブスクライブ・メッセージを送ることによりサブスクライブすることができる
A collection of events for a service can be described in the service's XML message schema. For each event message in the XML Schema, the event gate subscribes as the consumer of that event. In one embodiment, the event gate subscribes to all the events shown in the XML schema. Name each event message using XML tags. The event gate can subscribe by sending a subscribe message containing the XML tag of the subscribed event.

【0145】 サービスで対応するイベントが発生した場合、そのサービスはイベント・メッ
セージをサブスクライバに送り、そのイベントの発生を知らせる。イベント・メ
ッセージは、XMLイベント・ドキュメントを含み、このメッセージはそれぞれ
のサブスクライブされたゲートに送られる。サブスクライブされたゲートがイベ
ント・メッセージを受け取ると、XMLイベント・ドキュメントがそのメッセー
ジから削除され、配布プロセスが開始する。イベント配布は、クライアント・プ
ラットフォーム内のイベント・ドキュメントを配るプロセスである。クライアン
ト・プラットフォーム内の各イベント消費者は、各タイプのイベントのイベント
・ゲートにサブスクライブすることができる。Javaプラットフォームで、入
力システムはJavaである(XMLイベント型から変換される)。イベント消
費者は、イベント・ハンドラ・コールバック・メソッドをイベント・ゲートに供
給する。イベント・ゲートは、これらのサブスクライブのリストを保存する。各
イベント・メッセージがゲートに届くと(イベントを発生したサービスから)、
ゲートはクライアント消費者のリストをトラバースし、各ハンドラ・メソッドを
呼び出して、XMLイベント・ドキュメントをパラメータとして渡す。一実施形
態では、XMLイベント・ドキュメントはハンドラ・コールバック・メソッドに
渡される唯一のパラメータである。
When a corresponding event occurs in a service, the service sends an event message to the subscriber to notify it of the event. The event message contains an XML event document, which is sent to each subscribed gate. When the subscribed gate receives the event message, the XML event document is removed from the message and the distribution process begins. Event distribution is the process of distributing event documents within the client platform. Each event consumer within the client platform can subscribe to the event gate for each type of event. On the Java platform, the input system is Java (translated from XML event type). Event consumers supply event handler callback methods to event gates. The Event Gate keeps a list of these subscribes. When each event message arrives at the gate (from the service that raised the event),
The gate traverses the list of client consumers, calls each handler method, and passes the XML event document as a parameter. In one embodiment, the XML event document is the only parameter passed to the handler callback method.

【0146】 一実施形態では、イベント・ゲートはローカルの消費者クライアントのために
イベントに関して自動的にサブスクライブする。クライアントがインタレストを
ゲートに登録すると、ゲートはインタレストをイベント・プロデューサ・サービ
スに登録する。クライアントはさらに、インタレストのサブスクライブ解除も行
い、これにより、ゲートはそのイベントを生成するサービスから登録を解除する
In one embodiment, the Event Gate automatically subscribes to events for local consumer clients. When the client registers an interest with the gate, the gate registers the interest with the event producer service. The client also unsubscribes from the interest, which causes the gate to unsubscribe from the service that generated the event.

【0147】 イベント・ゲートは、上述の標準要求応答メッセージ通信スタイルで通常のメ
ッセージ・ゲートが行うのと全く同じようにしてXMLスキーマを使用しイベン
ト・ドキュメントの型検査を行う。イベント・ゲートは、さらに、送られたメッ
セージ内の認証証明書を含み、受け取ったイベント・メッセージの認証証明書を
検証することができる。
The Event Gate uses the XML Schema to type-check event documents in exactly the same way that a normal Message Gate does in the standard request-response messaging style described above. The event gate may further include the authentication certificate in the sent message and verify the authentication certificate of the received event message.

【0148】 上述のゲート機能の組み合わせは単一のゲートでサポートされることに注意さ
れたい。それぞれのタイプは、分かりやすくするため、別々に説明した。たとえ
ば、ゲートは、メッセージ・ゲート、メソッド・ゲート、およびイベント・ゲー
トであって、フロー制御とリソース監視をサポートする。
Note that the combination of gating functions described above is supported by a single gate. Each type is described separately for clarity. For example, gates are message gates, method gates, and event gates that support flow control and resource monitoring.

【0149】 サービス発見メカニズム 一実施形態では、分散コンピューティング環境は、クライアントがサービスを
見つけだし、サービスの機能の一部または全部を使用する権限を交渉するための
手段を提供するサービス発見メカニズムを備える。スペースはサービスの一例で
あることに注意されたい。サービス発見メカニズムは、セキュリティで保護され
、発送クライアント要求を追跡し、着信サービス応答とマッチングを行うことが
できる。
Service Discovery Mechanism In one embodiment, the distributed computing environment comprises a service discovery mechanism that provides a means for clients to discover services and negotiate the authority to use some or all of the service's capabilities. Note that spaces are an example of services. The service discovery mechanism is secure and can track outgoing client requests and match incoming service responses.

【0150】 サービス発見メカニズムは、それらに限定されないが、以下のようなさまざま
な機能を提供することができる。柔軟なサーチ基準を使用してサービスを見つけ
る機能、サービスの機能セット全体またはそのサブセットを使用する権限をクラ
イアントに伝達することができる、承認メカニズム、たとえば認証証明書を要求
する機能、クライアントにサービスのインターフェースを伝達するための証明書
、ドキュメント、またはその他のオブジェクトを要求する機能などがある。一実
施形態では、サービスのインターフェースは、サービスの機能の要求されたセッ
トとのインターフェースを含むことができる。
The service discovery mechanism can provide various functions such as, but not limited to: The ability to find services using flexible search criteria, authorization mechanisms that can convey to a client the right to use the service's entire feature set or a subset thereof, such as the ability to request an authentication certificate, the client's ability to These include the ability to request a certificate, document, or other object to convey an interface. In one embodiment, the interface of the service may include the interface with the requested set of features of the service.

【0151】 発見の追跡が最初の要求に応答する。一実施形態では、各クライアント要求は
、マッチする応答で返されるデータの集合を含み、要求と応答の相関を求めるこ
とができる。
Discovery tracking responds to the initial request. In one embodiment, each client request may include a set of data returned in a matching response to correlate the request with the response.

【0152】 分散コンピューティング環境の一実施形態では、サービス発見メカニズムは拡
張可能文法に基づいて柔軟なサーチ基準を提供することができる。一実施形態で
は、サーチ対象のサービス名、サービス・タイプ、およびもしあればその他の要
素とXMLドキュメント内の要素とをマッチングすることができる。一実施形態
では、XMLドキュメントはサービスに対するサービス通知である。XMLは、
サーチのための柔軟で拡張可能な文法を提供する。XMLはさらに、マッチする
要素について型安全であるという特徴も備える。一実施形態では、サービス名お
よびサービス・タイプは、XMLサービス通知の要素タイプと突き合わせて型検
査を行うことができる。
In one embodiment of the distributed computing environment, the service discovery mechanism can provide flexible search criteria based on an extensible grammar. In one embodiment, the service name, service type, and other elements, if any, to be searched can be matched with elements in the XML document. In one embodiment, the XML document is a service notification for the service. XML is
Provides a flexible and extensible grammar for searching. XML also has the feature of being type safe for matching elements. In one embodiment, the service name and service type may be type checked against the element type of the XML service notification.

【0153】 一実施形態では、分散コンピューティング環境はクライアントがサービス・ア
クセス権を交渉するためのメカニズムを備えることができる。一実施形態では、
このメカニズムを使用して、サービスの全機能のサブセットについて交渉するこ
とができる。交渉の結果は、クライアントにサービスの機能の要求されたサブセ
ットを使用する権限を伝達する認証証明書などの承認である。
In one embodiment, the distributed computing environment may comprise a mechanism for clients to negotiate service access rights. In one embodiment,
This mechanism can be used to negotiate a subset of the full capabilities of the service. The result of the negotiation is an authorization, such as an authentication certificate, that conveys to the client the right to use the requested subset of service features.

【0154】 一実施形態では、サービス発見メカニズムを使用する際に、クライアントはサ
ービスにセキュリティ能力証明書を要求することができる。一実施形態では、ク
ライアントはサービスに対し、保護された(セキュア)通知の形で望む機能群を
示すことができる。それに対してサービスは、クライアントに保護された通知で
記述されている要求された機能を使用する権限を伝達することができる能力証明
書で応答することができる。
In one embodiment, when using the service discovery mechanism, a client may request a security capability certificate for a service. In one embodiment, the client may indicate to the service the desired functionality in the form of secure notifications. In response, the service can respond to the client with a capability certificate that can convey the authority to use the requested function described in the protected notification.

【0155】 一実施形態では、分散コンピューティング環境は、クライアントがサービス・
アクセス権限を交渉し、その後、サービスのアクセス・インターフェースをクラ
イアントによって要求されたサービスの機能のセットまたはサブセットに提示す
るために使用できるセキュリティ証明書またはドキュメントを取得するためのメ
カニズムを備えることができる。
In one embodiment, the distributed computing environment comprises a client
A mechanism can be provided for negotiating access rights and then obtaining a security certificate or document that can be used to present the access interface of the service to the set or subset of the service's capabilities requested by the client.

【0156】 一実施形態では、サービスから能力証明書を受け取ったクライアントは、「完
全通知」と呼ばれるカスタム・サービス・アクセス・インターフェース・ドキュ
メントを生成することができる。一実施形態では、完全通知はXMLドキュメン
トである。生成された通知を利用し、受け取った能力証明書によってクライアン
トに対し許可されるサービス機能にアクセスすることができる。一実施形態では
、通知により、クライアントが能力証明書によりアクセスを許可されたサービス
機能のみのインターフェースが提供される。一実施形態では、クライアントに対
し、必要な機能に限りクライアントがアクセス特権を持つアクセスを許可するこ
とができる。
In one embodiment, a client that receives a capability certificate from a service can generate a custom service access interface document called a "full notification." In one embodiment, the full notification is an XML document. The generated notification can be used to access the service functions permitted to the client by the received capability certificate. In one embodiment, the notification provides an interface of only those service functions that the client is allowed to access with the capability certificate. In one embodiment, a client may be granted access for which the client has access privileges only for the functions that it requires.

【0157】 一実施形態では、分散コンピューティング環境はクライアントがサービスと機
能を交渉するためのメカニズムを備えることができる。一実施形態では、クライ
アントはサービスに対する機能を交渉することができる。サービスはその後、ク
ライアントと交渉したパラメータに基づいて結果をカスタマイズする。たとえば
、160×200の解像度で1ビット表示が可能なクライアントは、サービスに
対しそれらのパラメータを交渉し、それにより、サービスはクライアントに対し
結果をカスタマイズできる。
In one embodiment, the distributed computing environment may include a mechanism for clients to negotiate services and capabilities. In one embodiment, clients can negotiate capabilities for services. The service then customizes the results based on the parameters negotiated with the client. For example, a client capable of 1-bit display at a resolution of 160x200 negotiates those parameters to the service, which allows the service to customize the results to the client.

【0158】 以下に、XML機能メッセージの一例を示したが、何らかの形で制限すること
を意図していない。 <type name="Capabilities"> <element name="display"type="string"/> <element name="memory"type="string"/> <element name="mime"type="string"/> .... </type>
An example of an XML function message is shown below, but is not intended to be limited in any way. <type name = "Capabilities"><element name = "display" type = "string"/><element name = "memory" type = "string"/><element name = "mime" type = "string"/> .... </ type>

【0159】 分散コンピューティング環境は、サービスがサービス呼び出しの結果を返す方
法をクライアントが交渉できるようにするメカニズムを備える。一実施形態では
、能力証明要求時に、結果返却方法の1つを選択する手段をサービスに伝達する
ことができる。その後、サービスはクライアントに、使用する結果メカニズム、
さらにサービス・インターフェースを伝達することができるカスタム・サービス
通知を生成する。
The distributed computing environment provides a mechanism that allows clients to negotiate how a service returns the result of a service call. In one embodiment, the service may be provided with a means for selecting one of the result return methods when requesting a proof of capability. The service will then tell the client which outcome mechanism to use,
It also generates custom service notifications that can carry the service interface.

【0160】 一実施形態では、分散コンピューティング環境はサービス発見サーチ要求およ
び要求への応答を追跡するメカニズムを備える。一実施形態では、サーチ要求お
よび応答メッセージは、フィールドを備え、このフィールドを使用して文字列ま
たはXMLドキュメントを含むことができる。一実施形態では、要求メッセージ
のフィールドに含まれる文字列またはXMLドキュメントはさらに、応答メッセ
ージでも返される。一実施形態では、文字列またはXMLドキュメントは応答メ
ッセージで返す必要がある。一実施形態では、文字列またはXMLドキュメント
は、応答メッセージで返すときに文字列またはドキュメント内に挿入または付加
される追加情報を含むことができる。一実施形態では、このメカニズムを複雑な
システムのデバッグに使用することができる。一実施形態では、このメカニズム
はさらに、クライアントに対し、文字列またはXMLドキュメントを使用して、
クライアントとサービスのみが理解できるクライアントとサービスとの間のカス
タムサーチ情報を渡すことによりアクセスするサービスを選択するためのメソッ
ドを提供することができる。
In one embodiment, the distributed computing environment comprises a mechanism for tracking service discovery search requests and responses to requests. In one embodiment, the search request and response messages comprise a field, which can be used to include a string or XML document. In one embodiment, the strings or XML documents contained in the fields of the request message are also returned in the response message. In one embodiment, the string or XML document should be returned in the response message. In one embodiment, the string or XML document may include additional information inserted or added within the string or document when returned in a response message. In one embodiment, this mechanism can be used to debug complex systems. In one embodiment, the mechanism further provides the client with a string or XML document,
Methods can be provided to select a service to access by passing custom search information between the client and service that only the client and service understand.

【0161】 コンポーネント(サービス)インターフェースのマッチング 分散コンピューティング環境は、コンポーネント(たとえば、サービス)仕様
インターフェースと要求されたインターフェースとのマッチングを行うメカニズ
ムを備えることができる。たとえば、クライアント(サービスでもよい)は、一
組のインターフェース要求条件を満たすサービスを必要とすることがある。各コ
ンポーネントは、それが適合するインターフェースの記述を含む。仕様インター
フェース・マッチング・メカニズムを使用すると、リクエスタのインターフェー
ス要求条件と最もよくマッチするコンポーネントを配置することができる。仕様
インターフェース・マッチング・メカニズムではさらに、インターフェース要求
条件の「ファジー」マッチングを実行できる。つまり、このメカニズムを使用す
ると、インターフェースのすべての側面を正確に指定しなくてもマッチングを実
行でき、最近マッチング(ファジー)メカニズムを実現できる。一実施形態では
、仕様インターフェース・マッチング・メカニズムを、単一のインターレス・レ
ベルで仕様を要求しないマルチレベル・サブクラス化モデルとして実装できる。
Component (Service) Interface Matching A distributed computing environment may include a mechanism for matching a component (eg, service) specification interface with a requested interface. For example, a client (which may be a service) may need a service that meets a set of interface requirements. Each component contains a description of the interface to which it conforms. The specification interface matching mechanism allows you to place the components that best match the requester's interface requirements. The specification interface matching mechanism can also perform "fuzzy" matching of interface requirements. In other words, this mechanism allows you to perform matching without having to specify exactly all aspects of the interface, and implement a recent matching (fuzzy) mechanism. In one embodiment, the specification interface matching mechanism can be implemented as a multi-level subclassing model that does not require specifications at a single interlace level.

【0162】 一実施形態では、コンポーネントは、XMLスキーマ定義言語(XSDL)を
使用してそのインターフェースを記述することができる。XSDLでは、インタ
ーフェースを記述する人間が解釈可能な言語を実現し、デバッグなど人間の介入
を必要とする活動を簡素化することができる。一実施形態では、インターフェー
ス記述を本書の別のところで説明しているように通知の一部(たとえば、サービ
ス通知)として提供することができる。
In one embodiment, a component can describe its interface using XML Schema Definition Language (XSDL). XSDL provides a human-readable language for describing interfaces and can simplify activities that require human intervention, such as debugging. In one embodiment, the interface description may be provided as part of the notification (eg, service notification) as described elsewhere in this document.

【0163】 仕様インターフェース・マッチング・メカニズムを使用すると基本的な望まし
いインターフェースとコンポーネントの一組のインターフェース記述とを比較す
ることができる。基本的な望ましいインターフェースとマッチする1つまたは複
数のコンポーネントが識別される。インターフェース記述は、コンポーネントに
よって提供されるインターフェースをより具体的に記述するサブクラス記述を含
む。サーチ・プロセスで、クラス・タイプ階層を調べて、所定のクラスがサーチ
・タイプのサブクラスであるかどうかを判別することができる。一実施形態では
、サブクラスは基本クラスのプロパティーを継承する。このフェーズではサブク
ラス特有の情報は調べることができない。そのため、サーチは一般的に実行する
ということができる。識別されたコンポーネントは、次の(サブクラス)レベル
でサーチできる。サーチは、サブクラスに特有なものとなり、インターフェース
記述に含まれるサブクラス情報を解釈することにより実行できる。サーチは、リ
クエスタの望むインターフェースとの最近マッチのある1つまたは複数のコンポ
ーネントが判別されるまで1つまたは複数のサブクラスについて続けられる。
The specification interface matching mechanism can be used to compare a basic desired interface with a set of interface descriptions for a component. One or more components are identified that match the underlying desired interface. The interface description includes subclass descriptions that more specifically describe the interfaces provided by the component. The search process can examine the class type hierarchy to determine if a given class is a subclass of the search type. In one embodiment, the subclass inherits the properties of the base class. Subclass-specific information cannot be examined during this phase. Therefore, it can be said that the search is generally executed. The identified component can be searched at the next (subclass) level. The search will be specific to the subclass and can be performed by interpreting the subclass information contained in the interface description. The search continues for one or more subclasses until one or more components that most recently match the requester's desired interface are determined.

【0164】 一実施形態では、インターフェース・マッチング・メカニズムは、類似のイン
ターフェースを実装する2つまたはそれ以上のコンポーネントを区別する機能を
備える。一実施形態では、インターフェース・マッチング・メカニズムは、同じ
コンポーネントの異なるリビジョンを区別する機能を備える。
In one embodiment, the interface matching mechanism provides the ability to distinguish between two or more components that implement similar interfaces. In one embodiment, the interface matching mechanism provides the ability to distinguish different revisions of the same component.

【0165】 一実施形態では、コンポーネントが適用するインターフェースの仕様を含むコ
ンポーネント記述を提示することができる。コンポーネント記述にさらに、コン
ポーネント自体に関する情報を含めることができる。インターフェース記述およ
び/またはコンポーネント情報を使用して、所定のインターフェースの異なる実
装を区別することができる。コンポーネント記述には、標準識別子とバージョン
情報を入れることができる。バージョン情報を使用すると、コンポーネントのリ
ビジョンを区別することができる。一実施形態では、コンポーネント記述を本書
の別のところで説明しているように通知の一部(たとえば、サービス通知)とし
て提供することができる。
In one embodiment, a component description may be presented that includes a specification of the interface to which the component applies. The component description can also include information about the component itself. The interface description and / or component information can be used to distinguish between different implementations of a given interface. The component description can include standard identifiers and version information. Version information can be used to distinguish between component revisions. In one embodiment, the component description may be provided as part of a notification (eg, service notification) as described elsewhere in this document.

【0166】 一実施形態では、特定の標準識別子についてコンポーネントをサーチする。マ
ッチする標準識別子を持つ2つまたはそれ以上のコンポーネントを識別すること
ができる。マッチする標準識別子を持つコンポーネントのうちから1つまたは複
数のコンポーネントを選択することができる。選択手順では、インターフェース
仕様バージョン、コンポーネント実装仕様、コンポーネント実装仕様バージョン
、コンポーネント記述からのその他の情報または情報の組み合わせを使用して、
リクエスタの要求条件に最もよくマッチする1つまたは複数のコンポーネントの
集まりを出力することができる。
In one embodiment, a component is searched for a particular standard identifier. Two or more components with matching standard identifiers can be identified. One or more components may be selected from those with matching standard identifiers. The selection procedure uses interface specification version, component implementation specification, component implementation specification version, other information or combination of information from the component description,
A collection of one or more components that best match the requester's requirements can be output.

【0167】 スペース 上述のように、分散コンピューティング環境はスペースに依存し、サービスま
たはコンテンツをクライアントに仲介するランデブー・メカニズムを備える。図
15は、スペース114の基本的な使用法を示している。サービス・プロバイダ
は、スペース114でサービスを通知することができる。クライアント110は
、スペース114で通知を見つけ、通知からの情報を使用し、分散コンピューテ
ィング環境のXMLメッセージング・メカニズムを利用してサービスにアクセス
する。多くのスペースが存在し、それぞれサービスまたはコンテンツを記述する
XML通知を含む。したがって、スペースは、サービスおよび/またはXMLデ
ータのXML通知のリポジトリと考えることができ、これは結果などの未処理デ
ータまたはデータの通知とすることができる。
Space As mentioned above, the distributed computing environment is space dependent and provides a rendezvous mechanism that mediates services or content to clients. FIG. 15 shows the basic usage of the space 114. The service provider can advertise the service in space 114. Client 110 finds the notification in space 114 and uses the information from the notification to access the service utilizing the XML messaging mechanism of the distributed computing environment. There are many spaces, each containing an XML notification that describes a service or content. Thus, a space can be considered a repository of XML notifications of services and / or XML data, which can be raw data or notifications of data such as results.

【0168】 スペース自体はサービスである。サービスのように、スペースには通知があり
、スペースのクライアントはまず、そのスペース・サービスを実行するためにそ
れを取得する必要がある。スペースの自通知は、XMLスキーマ、1つまたは複
数の証明書、およびスペースにアクセスする方法を示すURIを含むことができ
る。クライアントは、スペースにアクセスするためにスペース・サービスの通知
からゲートを構築することができる。スペースのクライアントはそれ自体、その
スペース内で通知するまたは既存の通知を修正することを求めるサービス・プロ
バイダである。または、スペースのクライアントはスペースによってリストに入
れられたサービスまたはコンテンツにアクセスすることを求めるアプリケーショ
ンである。したがって、スペースは分散コンピューティング環境においてクライ
アントとサービスとの間の対話に対する触媒の働きをする。
The space itself is a service. Like services, spaces have notifications, and the space's clients must first get them to perform their space services. The space's self-notification can include an XML schema, one or more certificates, and a URI that indicates how to access the space. The client can build a gate from the space service's notification to access the space. The space's clients are themselves service providers seeking notifications within the space or modifying existing notifications. Alternatively, the space's clients are applications that seek to access the services or content listed by the space. Thus, space acts as a catalyst for interactions between clients and services in a distributed computing environment.

【0169】 スペースは、名前付きの通知の集合といえる。一実施形態では、通知に名前を
付ける作業は、名前文字列を通知に関連付けるプロセスである。この関連付けは
、スペースに通知を格納した後発生する。スペースから通知を取り除くと、名前
と通知との関連付けが解除される。スペースは、スペース自体を記述する単一の
ルート通知で作成できる。追加通知をスペースに加えることができる。通知の名
前で、スペース内の通知を特定できるが、これは、名前の階層など必要なグラフ
化情報を指定する操作を含む。好ましい実施形態では、分散コンピューティング
環境はスペースの構造を規定しない。つまり、たとえば、スペースをフラットな
関係付けのない通知の集まりまたは関係付けのされている通知のグラフ(たとえ
ば、商用データベース)として構造化される。好ましい実施形態では、分散コン
ピューティング環境はスペースに実際にその内容を格納する方法を規定しないの
で、小さなデバイスから大きなデバイスまでスペースをサポートすることができ
。たとえば、単純なスペースは、PDAなどの小さなデバイスに収まるように手
直しすることができる。より高度なスペースは、大規模な商用データベースを採
用している大規模なサーバー上に実装することができる。
A space can be said to be a collection of named notifications. In one embodiment, the task of naming a notification is the process of associating a name string with the notification. This association occurs after storing the notification in the space. Removing the notification from the space disassociates the name from the notification. Spaces can be created with a single route announcement that describes the space itself. Additional notifications can be added to the space. The name of the notification can identify the notification in the space, including operations that specify the necessary graphing information, such as the name hierarchy. In the preferred embodiment, the distributed computing environment does not define the structure of space. That is, for example, a space is structured as a flat collection of unrelated notifications or a graph of related notifications (eg, a commercial database). In the preferred embodiment, the distributed computing environment does not specify how to actually store its contents in a space, so that space can be supported from small devices to large devices. For example, a simple space can be tailored to fit in a small device such as a PDA. Higher space can be implemented on large servers that employ large commercial databases.

【0170】 上述のように、スペースは分散コンピューティング環境でサービスの通知を含
むことができる。通知は、分散コンピューティング環境内でサービスおよび/ま
たはコンテンツのアドレスを指定し、アクセスするためのメカニズムを提供する
。通知により、サービスのURIを指定することができる。いくつかの実施形態
では、URIを使用すると、インターネット上でサービスにアクセスすることが
できる。また、通知はサービスのXMLスキーマも含む場合がある。XMLスキ
ーマにより、サービスのクライアントがそのサービスの機能を呼び出すためにサ
ービスに送る一組のメッセージを指定することができる。XMLスキーマでは、
クライアント・サービス・インターフェースを定義する。それとともに、URI
および通知で指定されたXMLは、サービスのアドレスを指定し、サービスにア
クセスする方法を指示する。URIとスキーマは両方とも、XMLで、スペース
内の通知として用意される。そのため、分散コンピューティング環境でサービス
のアドレスを指定し、サービスにアクセスするメカニズムをスペース内の通知と
して公開することができる。クライアントは、スペースを発見し、サービスまた
はコンテンツについて個々の通知をルックアップする。
As mentioned above, spaces may include notifications of services in a distributed computing environment. Notifications provide a mechanism for addressing and accessing services and / or content within a distributed computing environment. The notification can specify the URI of the service. In some embodiments, a URI can be used to access services over the internet. The notification may also include the XML schema of the service. The XML schema allows a client of a service to specify a set of messages to send to the service to invoke the service's functionality. In the XML schema,
Define the client service interface. With that, URI
And the XML specified in the notification specifies the address of the service and indicates how to access the service. Both the URI and the schema are XML and are prepared as notifications in the space. As such, it is possible to address a service in a distributed computing environment and expose the mechanism to access the service as a notification in space. The client discovers the space and looks up individual notifications for services or content.

【0171】 図16は、一実施形態による通知構造を示す。通知500は、他のXMLドキ
ュメントのように、階層状に配列された一連の要素502を含むことができる。
各要素502は、データまたは追加要素を含む。要素はさらに属性504を持つ
。属性は、名前−値文字列のペアである。属性は、メタデータを格納し、これに
より、要素内のデータを記述することが簡単になる。
FIG. 16 illustrates a notification structure according to one embodiment. The notification 500 can include a series of elements 502 arranged in a hierarchy, like any other XML document.
Each element 502 contains data or additional elements. The element further has an attribute 504. Attributes are name-value string pairs. Attributes store metadata, which makes it easy to describe the data within an element.

【0172】 いくつかの実施形態では、通知は異なる状態で存在してもい。このような状態
の1つにドラフト状態がある。一実施形態では、スペースの範囲外に存在するド
ラフト状態で通知を最初に構築する。通知の作成者は、XMLエディタを使用す
るなどさまざまな方法で構築することができる。ドラフト状態の要素および属性
へのアクセスは、適当な手段を使用して未処理データおよびメタデータ・レベル
で行われる。通常、ドラフト状態で通知に加えられた変更についてはイベントを
発生しない。したがって、通知の作成者は、自由に、要素を追加、変更、または
削除できるだけでなく、目的の属性セットを用意し、確認する分散コンピューテ
ィング環境の残り部分に対する通知をパブリッシュすることができる。
In some embodiments, notifications may exist in different states. One of such states is the draft state. In one embodiment, the notification is first constructed in a draft state that lies outside of the space. Notification authors can be constructed in various ways, such as using an XML editor. Access to drafted elements and attributes is done at the raw data and metadata level using appropriate means. Normally, you don't fire events for changes made to notifications in draft state. Thus, notification authors are free to add, modify, or delete elements, as well as publish the notifications to the rest of the distributed computing environment that have the desired set of attributes to validate.

【0173】 一実施形態では、通知に対する可能な状態としてほかに、パブリッシュ状態が
ある。通知は、スペースに挿入されるとパブリッシュ状態に移行する。通知がス
ペース内に入ると、関連するクライアントおよびサービスが、たとえば、名前お
よび/またはその要素をサーチ基準として使用してそれを特定することができる
。たとえば、サーチ基準は、スペース内の通知と(たとえば、スペース・サービ
スにより)比較できるXMLテンプレート・ドキュメントとして指定できる。パ
ブリッシュされた通知は、クライアントが使用できる状態にある「オンライン」
サービスを表す。サービスのメッセージ・アドレス(URI)は、通知内に要素
として格納できる。スペースから削除される通知は、破棄されるかまたは保持さ
れるドラフト状態に遷移して戻る。削除により、イベントが発生し、関連するリ
スナーが変更に気づく。メッセージ・ゲートは通常、パブリッシュされた通知か
ら作成される。
In one embodiment, another possible state for notification is a publish state. Notifications transition to the published state when inserted into a space. Once the notification is in space, the associated clients and services can identify it using, for example, the name and / or its elements as search criteria. For example, the search criteria can be specified as an XML template document that can be compared (eg, by the space service) to notifications in the space. Published notifications are "online" ready for clients to use
Represents a service. The message address (URI) of the service can be stored as an element in the notification. Notifications that are deleted from the space transition back to the draft state where they are either discarded or retained. The deletion raises an event and the associated listener notices the change. Message Gates are typically created from published notifications.

【0174】 一実施形態では、通知に対する可能な状態としてほかに、永続的アーカイブ状
態がある。アーカイブ・プロシージャは、ライブ・パブリッシュ通知を、後で再
構成するため永続的に格納できるバイトのストリームに変換する。アーカイブ通
知が、スペースからアーカイブ・サービスに送られる(たとえば、raw XM
L形式で)。通知のアーカイブ・サービスのURIは、通知内に要素として格納
できる。XMLは、通知の格納および取り出しを行い、通知オブジェクトを再構
成するのに十分な通知要素の状態を表す形式を用意できる。通知は、アーカイブ
・サービスの実装に応じて、他の形式でも格納できる。パブリッシュされた通知
を永続的にするプロセスでは、永続的アーカイブ状態の通知を準備する。将来使
用するため永続的通知を(たとえば、アーカイブ・サービスにより)、ファイル
やデータベースなどの永続的記憶場所に格納できる。スペースは、アーカイブ・
プロシージャを介して、通知を格納できるが、スペースは必ずしも、永続通知エ
ントリを実際に格納する際に重要な役割を果たすわけではない。永続通知を格納
する方法は、通知のアーカイブ・サービスにより決定される。通常、アーカイブ
通知の代わりに生成されるイベントはない。また、永続的アーカイブ状態での通
知に対し変更が許されない場合がある。通知は、アーカイブと削除、またはアー
カイブだけが許される。通知が、スペースから削除することなくアーカイブされ
ると、スペースはシャドウ・バージョンの通知を格納する。アーカイブされたサ
ービスにアクセスすると、通知がオンデマンドで永続的バッキング・ストアから
「フォールトイン」する。この機能を使用すると、たとえば、オンデマンドで、
LDAP(ライトウェイト・ディレクトリ・アクセス・プロトコル)エントリか
ら通知に入力することができる。
In one embodiment, another possible state for notifications is persistent archive state. The archive procedure converts the live publish notification into a stream of bytes that can be stored persistently for later reconstruction. Archive notifications are sent from the space to the archive service (eg raw XM
In L format). The notification archive service URI can be stored as an element within the notification. XML can provide formats for storing and retrieving notifications and for representing the state of notification elements sufficient to reconstruct a notification object. Notifications can also be stored in other formats, depending on the implementation of the archive service. The process of making published notifications persistent prepares for persistent archive state notifications. Persistent notifications (for example, by an archive service) can be stored in a persistent storage location such as a file or database for future use. Space is archive
Although notifications can be stored via procedures, space does not necessarily play a significant role in actually storing persistent notification entries. The method of storing persistent notifications is determined by the notification archiving service. Normally, there are no events generated in place of archive notifications. Also, there may be cases where changes to notifications in the persistent archive state are not allowed. Notifications may be archived and deleted, or archived only. If a notification is archived without deleting it from the space, the space stores the shadow version of the notification. Notifications "fault in" from a persistent backing store on demand when accessing an archived service. With this feature, for example, on demand,
Notifications can be populated from LDAP (Lightweight Directory Access Protocol) entries.

【0175】 図17は、通知がその存続期間中に置かれる通知状態遷移の一例を示す図であ
る。まず、1に示されているように、通知を構築することができる。構築のとき
に、通知はドラフト状態にある。その後、2に示されているように、通知がスペ
ースの中に挿入される。通知は、パブリッシュされた親として挿入できる。通知
は、スペースに挿入された後、パブリッシュ状態にある。イベント(たとえば、
AdvInsertEvent)は、通知がスペース内に挿入されたときに生成
される。イベントについては以下で詳述する。通知は、3に示されているように
、アーカイブされ、永続的にされ、これにより、通知が永続的アーカイブ状態に
遷移する。通知はさらに、4に示されているように、永続的アーカイブ状態から
パブリッシュすることもできる。通知は、スペースから除去され、5に示されて
いるように、ドラフト状態に遷移し戻される。イベント(たとえば、AdvRe
moveEvent)は、通知が削除されたときに生成される。
FIG. 17 is a diagram showing an example of a notification state transition in which a notification is placed during its lifetime. First, a notification can be constructed, as shown in 1. At build time, the notification is in draft state. The notification is then inserted into the space, as shown at 2. Notifications can be inserted as published parents. The notification is in published state after being inserted into the space. Event (for example,
AdvInsertEvent) is generated when a notification is inserted into the space. The events are detailed below. The notification is archived and made persistent, as shown at 3, which transitions the notification to the persistent archive state. Notifications can also be published from the persistent archive state, as shown at 4. The notification is removed from the space and transitioned back to the draft state as shown in 5. Event (eg AdvRe
moveEvent) is generated when the notification is deleted.

【0176】 一実施形態では、アーカイブされた永続的状態は使用されない。この実施形態
では、状態変化3および4も使用されない。この実施形態では、通知はドラフト
状態またはパブリッシュ状態のいずれかである。
In one embodiment, archived persistent state is not used. State changes 3 and 4 are also not used in this embodiment. In this embodiment, the notification is either in draft or published state.

【0177】 スペース内に格納された通知は、バージョン(要素の場合もある)、作成日(
属性の場合もある)、変更日(属性の場合もある)、実装サービスURI(要素
の場合もある)、および/または永続的アーカイブ・サービスURI(要素の場
合もある)などの標準化された要素および/または属性を備える。
The notifications stored in the space are version (may be an element), creation date (
A standardized element such as an attribute (which may be an attribute), a modification date (which may be an attribute), an implementation service URI (which may be an element), and / or a persistent archive service URI (which may be an element). And / or attributes.

【0178】 スペース自体は通常サービスである。スペース・サービスは、スペース内の通
知をサーチする機能を備え、これは、通知のタイプによるスペースのサーチを含
む。スペース・サービスはさらに、通知を読み込み、通知を書き込み(パブリッ
シュする)、通知を取る(削除する)機能も提供することができる。スペースは
さらに、スペース・イベント通知メッセージのサブスクライブを行う機能も備え
る。スペースには、位置によりスペース関係グラフをナビゲートする機能、通知
要素の読み込み、書き込み、または取り出しの機能、通知属性の読み込み、書き
込み、または取り出しの機能、および通知イベントの通知メッセージのサブスク
ライブの機能など、拡張機能を備えるものもある。スペースの機能については、
以下で詳述する。スペースの機能は、スペース通知のメッセージ・スキーマで具
現化される。メッセージ・スキーマ、スペース・アドレス、および認証証明書か
ら、クライアント・メッセージ・ゲートを作成し、スペースとその機能にアクセ
スできる。
The space itself is usually a service. Space services provide the ability to search for notifications within a space, which includes searching for spaces by type of notification. Space services can also provide the ability to read notifications, write (publish) notifications, and take (delete) notifications. Spaces also have the ability to subscribe to space event notification messages. Spaces have the ability to navigate the space relationship graph by location, the ability to read, write, or retrieve notification elements, the ability to read, write, or retrieve notification attributes, and the ability to subscribe to notification messages for notification events. For example, some have extended functions. For space features,
The details will be described below. Space functions are embodied in the space notification message schema. From the message schema, space address, and authentication certificate, you can create a client message gate to access the space and its features.

【0179】 スペースおよびスペース内のすべての通知は、URIを使用してアドレス指定
できる。一実施形態では、スペースおよび通知名は、URL命名規則に従う。い
くつかの実施形態では、スペースのアドレス指定にURI、たとえばURLを使
用すると、インターネット全体からスペースにアクセス可能になる。スペース・
メッセージ受取側(スペース・サービス)を指定するには、そのスペースについ
てサービス通知で受け取ったURIを使用する。URIには、プロトコル、ホス
ト、ポート番号、および名前を含めることができる。プロトコルでは、クライア
ントとスペースの間でメッセージを移動するために使用できるプロトコルに名前
を付ける(たとえば、信頼できるソケットまたは信頼できないソケット)。ホス
トおよびポート番号は、プロトコル依存のIDである。名前は、スペース名の後
に通知、要素、および/または属性名を続けたものである。一実施形態では、パ
ス名を使用して、スペース内の通知を識別することができる。パス名は絶対パス
または相対パスのいずれかである。絶対パス名では、スペースだけでなく、通知
も指定できる。相対パス名は、想定されるスペース内で指定通知に相対的である
。一実施形態では、パス名の作成に適用されるシンタックスは、URI(統一リ
ソース識別子)のシンタックスである。したがって、その実施形態では、通知お
よびスペース名はURI予約語文字または一連の文字を含むことができない。要
素および属性へのパス名も、URIを使用して指定できる。一般に、要素名およ
び属性名は、http://java.sun.com/spacename/advertisement/element/attribut
eなど通知のパス名に付加することができる。
Spaces and all notifications within spaces can be addressed using URIs. In one embodiment, spaces and notification names follow URL naming conventions. In some embodiments, using a URI, such as a URL, to address the space makes the space accessible to the entire Internet. space·
To specify the message recipient (space service), use the URI received in the service notification for that space. The URI can include the protocol, host, port number, and name. A protocol names a protocol that can be used to move messages between clients and spaces (for example, trusted or untrusted sockets). The host and port numbers are protocol-dependent IDs. The name is the space name followed by the notification, element, and / or attribute name. In one embodiment, the path name may be used to identify the notification within the space. Pathnames are either absolute or relative. Absolute pathnames can specify notifications as well as spaces. Relative pathnames are relative to the specified notification within the expected space. In one embodiment, the syntax applied to create the pathname is the URI (Uniform Resource Identifier) syntax. Therefore, in that embodiment, notifications and space names cannot include URI reserved word characters or sequences of characters. Pathnames to elements and attributes can also be specified using URIs. In general, element and attribute names are found at http://java.sun.com/spacename/advertisement/element/attribut
It can be added to the notification path name such as e.

【0180】 一実施形態では、分散コンピューティング環境は、クライアントがスペースの
URIを発見できるようにするが、そのスペースに対するサービス通知へのアク
セスを制限するメカニズムを備える。一実施形態では、完全通知をスペースに戻
すのではなく、スペースのURIとスペースに対する認証サービスのURIを返
す。クライアントは、スペース内で通知されたドキュメントまたはサービスにア
クセスするために、まず、リターン・メッセージで与えられるURIで認証サー
ビスに対し自己認証を実行する。認証サービスは、認証証明書を返し、これを使
用して、クライアントはスペースに対する部分的または完全アクセスを実行でき
る。クライアントは、認証証明書を受け取ると、スペースに接続し、スペース内
のドキュメントまたはサービス通知にアクセスしようとする。
In one embodiment, the distributed computing environment provides a mechanism that allows a client to discover the URI of a space, but limits access to service notifications for that space. In one embodiment, instead of returning the full notification to the space, it returns the URI of the space and the URI of the authentication service for the space. To access the advertised document or service in the space, the client first performs self-authentication to the authentication service with the URI given in the return message. The authentication service returns an authentication certificate that the client can use to provide partial or full access to the space. When the client receives the authentication certificate, it connects to the space and tries to access the document or service notification in the space.

【0181】 分散コンピューティング環境は、クライアントをスペースに接続できるように
するメカニズムを備える。接続メカニズムの実施形態は、クライアント−スペー
ス・アドレス指定、クライアント承認、セキュリティ、リース、クライアント能
力判別、およびクライアント−スペース接続管理に対応している。クライアント
−スペース接続をセッションと呼ぶ。一実施形態では、セッションに一意的なセ
ッション識別番号(セッションID)を割り当てることができる。セッションI
Dにより、クライアント−スペース接続を一意に識別することができる。一実施
形態では、クライアントがリースを更新しない場合にセッション・リース・メカ
ニズムを使用してセッションの透過的ガベージ・コレクションを実行する。
The distributed computing environment comprises mechanisms that allow clients to connect to a space. Embodiments of the connection mechanism support client-space addressing, client authorization, security, leasing, client capability determination, and client-space connection management. A client-space connection is called a session. In one embodiment, a session may be assigned a unique session identification number (session ID). Session I
D allows the client-space connection to be uniquely identified. In one embodiment, the session lease mechanism is used to perform transparent garbage collection of sessions when the client does not renew the lease.

【0182】 一実施形態によるこのような接続メカニズムの使用例を以下に示す。クライア
ントは、認証証明書を取得する。一実施形態では、スペースでは、クライアント
がスペースへのアクセスを要求したことに応答して行う認証サービスを提供する
。クライアントは、認証サービスを通じて認証証明書を取得することができる。
クライアントは、認証証明書を受け取ると、接続要求メッセージを送ることによ
りスペースとの接続を開始できる。一実施形態では、接続要求メッセージに、ス
ペース・サービスのURIアドレス、クライアントの認証証明書、およびクライ
アントが要求している接続リースに関する情報を含めることができる。スペース
は、接続要求メッセージを受け取った後、そのメッセージの妥当性を確認する。
一実施形態はXMLスキーマを使用してメッセージの妥当性を確認できる。クラ
イアントは認証証明書を使用して認証を受けることができる。一実施形態では、
接続要求メッセージで受け取った情報を使用してスペースを使用するクライアン
トの能力を判別することができる。一実施形態では、スペースの各クライアント
にスペースを使用するそれぞれの能力の集まりを割り当てることができる。一実
施形態では、スペースの1つまたは複数のクライアントに関する能力情報を含む
アクセス制御リスト(ACL)をクライアント能力判別で使用することができる
。一実施形態では、接続要求メッセージで受け取った情報を使用してACL内の
クライアントの能力をルックアップすることができる。
An example of the use of such a connection mechanism according to one embodiment is given below. The client acquires an authentication certificate. In one embodiment, the space provides an authentication service in response to a client requesting access to the space. The client can obtain the authentication certificate through the authentication service.
Upon receiving the authentication certificate, the client can initiate a connection with the space by sending a connection request message. In one embodiment, the connection request message may include information about the space service URI address, the client's authentication certificate, and the connection lease the client is requesting. After receiving the connection request message, the space validates the message.
One embodiment can use XML schema to validate messages. The client can be authenticated using the authentication certificate. In one embodiment,
The information received in the connect request message can be used to determine the client's ability to use the space. In one embodiment, each client of the space may be assigned a respective set of abilities to use the space. In one embodiment, an access control list (ACL) containing capability information about one or more clients in the space can be used in the client capability determination. In one embodiment, the information received in the connect request message can be used to look up the capabilities of the client in the ACL.

【0183】 クライアントを認証し、クライアントの能力を判別した後、クライアントを許
可する接続リースを判別できる。リースが判別された後、クライアント−スペー
ス間接続を維持する構造を生成できる。接続に対するセッションIDを生成する
。一実施形態では、各クライアント−スペース間接続に一意的セッションIDを
割り当てる。一実施形態では、アクティブ化スペースを作成し、クライアント−
スペース間セッションに割り当てるか、またはそれとは別に、既存のアクティブ
化スペースをクライアント−スペース間セッションに割り当てることができる。
一実施形態では、アクティブ化スペースを使用すると、スペースを使用したとき
にクライアントのサービスの結果を格納することができる。一実施形態では、ク
ライアントの能力を使用して、アクティブ化スペースがクライアントに対し作成
されるかどうかを判別する。たとえば、クライアントは、結果を格納し取り出す
アクティブ化スペースにアクセスする能力を持たないことがある。1つまたは複
数のメッセージをクライアントに送り、接続が確立されたことをクライアントに
通知することができる。その1つまたは複数のメッセージに、セッションIDと
リースに関する情報を入れることができる。その後、クライアントでは、それら
に限定されないが、通知ルックアップ、通知登録、および通知取り出しなどのス
ペースを使用できる。一実施形態では、割り当てられたリースの有効期限が切れ
るか、またはクライアントがスペースにリース取り消しを要求するメッセージを
送るまで接続は開いたままである。一実施形態では、クライアント側で、そのリ
ースの有効期限が切れる前にそのリースを更新する必要がある。クライアントが
リースを更新する前にリースの有効期限が切れた場合、接続は切断され、クライ
アントとスペースとの接続が途絶える。一実施形態では、再接続するには、クラ
イアントは接続手順を繰り返す必要がある。
After authenticating the client and determining the capabilities of the client, the connection lease allowing the client can be determined. After the lease is determined, a structure can be created that maintains the client-space connection. Generate a session ID for the connection. In one embodiment, each client-space connection is assigned a unique session ID. In one embodiment, the activation space is created and the client-
The space-to-space session can be assigned or, alternatively, an existing activation space can be assigned to the client-space session.
In one embodiment, the activated space can be used to store the results of the client's service when the space is used. In one embodiment, the client's capabilities are used to determine if an activation space is created for the client. For example, the client may not have the ability to access the activation space to store and retrieve results. One or more messages can be sent to the client to notify the client that the connection has been established. Information about the session ID and lease may be included in the one or more messages. The client can then use space such as, but not limited to, notification lookup, notification registration, and notification retrieval. In one embodiment, the connection remains open until the assigned lease expires or the client sends a message to the space requesting that the lease be revoked. In one embodiment, the client needs to renew the lease before it expires. If the lease expires before the client renews the lease, the connection is broken and the client loses its connection to the space. In one embodiment, reconnecting requires the client to repeat the connection procedure.

【0184】 一実施形態では、スペースのクライアントはスペースの通知をいくつかの異な
る方法で取得することができる。クライアントがスペースの通知を取得する方法
のうちいくつかを図18に示す。たとえば、スペース発見プロトコルを分散コン
ピューティング環境の一部として提供することができる。スペース発見は、クラ
イアントまたはサービスがスペースを見つけるために使用するプロトコルである
。リスナー・エージェント202は、発見要求が来ないか監視するように1つま
たは複数のスペースと関連付けて設定できる。発見リスナー・エージェント20
2は、さまざまなネットワーク・インターフェース上で待機し、スペースを探し
ているクライアント200aからブロードキャスト要求またはユニキャスト要求
を(エージェントのURIで)受け取る。その後、リスナー・エージェント20
2は要求されたスペースのサービス通知に関してサービス通知またはURIで応
答する。一実施形態では、リスナー・エージェントは、一般に、スペースから分
離されているが、それは、その機能がスペース・サービスの機能と直交している
からである。ただし、リスナー・エージェントは、スペース・サービスと同じデ
バイスまたは異なるデバイスに実装することができる。
In one embodiment, a space's client may obtain the space's notification in several different ways. Some of the ways in which the client can get notifications for spaces are shown in FIG. For example, the space discovery protocol can be provided as part of a distributed computing environment. Space discovery is a protocol that clients or services use to find a space. The listener agent 202 can be configured in association with one or more spaces to monitor for discovery requests. Discovery listener agent 20
2 listens on various network interfaces and receives (in the agent's URI) a broadcast or unicast request from the client 200a looking for space. After that, the listener agent 20
2 responds with a service notification or URI regarding the service notification of the requested space. In one embodiment, the listener agent is generally separated from the space because its functionality is orthogonal to that of the space service. However, the listener agent can be implemented on the same device as the space service or on a different device.

【0185】 一実施形態では、発見プロトコルはデフォルト・スペース内で通知されるサー
ビスでよい。クライアントは、追加スペースを発見するためにクライアントのデ
フォルト・スペースから発見プロトコルをインスタンス化する。発見プロトコル
は、クライアントのデフォルト・スペースに事前に登録できる。それとは別に、
発見プロトコルは、たとえば、クライアントは発見サービスによって処理される
ローカル・ネットワークに接続した時に、そのスペース内に通知を置くことによ
りデフォルト・スペースに自己登録することもできる。
In one embodiment, the discovery protocol may be a advertised service in the default space. The client instantiates a discovery protocol from the client's default space to discover additional space. The discovery protocol can be pre-registered in the client's default space. Apart from that,
The discovery protocol can also self-register with the default space, for example, when a client connects to the local network served by the discovery service, by placing a notification within that space.

【0186】 一実施形態では、スペース発見プロトコルを、SLP、Jini、UPnPな
どの他のプラットフォーム用の基本デバイス発見プロトコルにマッピングするこ
とができる。そこで、クライアントは分散コンピューティング環境の発見プロト
コルを使用して他の環境内のサービスを見つける。これらの他の環境とのブリッ
ジを用意し、それらの他の環境内のサービスに通知を送って、ここで説明した分
散コンピューティング環境のクライアントがそれらにアクセスできるようにする
。「ブリッジ」のセクションを参照のこと。
In one embodiment, the space discovery protocol can be mapped to the basic device discovery protocol for other platforms such as SLP, Jini, UPnP. There, the client uses the distributed computing environment's discovery protocol to find services in other environments. It provides a bridge to these other environments and sends notifications to services in those other environments to make them accessible to clients of the distributed computing environment described herein. See the "Bridge" section.

【0187】 通知される発見プロトコルごとに、分散コンピューティング環境では発見プロ
トコルの結果を保持するための後続結果スペースを作成することができる。一実
施形態では、分散コンピューティング環境内のスペース・サービスはMulti
cast Announcement Protocol(マルチキャストUD
P)を使用してLAN上でアナウンスすることができる。リスナー・エージェン
トがこの情報を記録する。デバイス(クライアントまたはサービス)は、Mul
ticast Request Protocol(マルチキャストUDP)を
使用して、スペース・マネージャの発見を開始する。一実施形態では、スペース
・マネージャは、それぞれのスペースのURIを示す情報で応答する。それとは
別に、リスナー・エージェントは複数スペースについて応答することができる。
発見応答は、さらに、各スペースにラベルを付ける短い文字列(たとえば、スペ
ースのキーワードから取得する)と、たとえばそれぞれのスペースに対し操作を
実行する各スペース・マネージャとのTCP接続を設定するために使用できる情
報を含むことができる。要求側デバイスは複数のスペース・マネージャから応答
(またはリスナー・エージェントから複数のスペース・リスティング)を受け取
るので、この情報は、クライアントが接続先スペースを選択する場合に役立つ。
For each advertised discovery protocol, a distributed computing environment may create a subsequent results space to hold the results of the discovery protocol. In one embodiment, the space service in the distributed computing environment is Multi
cast Announcement Protocol (multicast UD
P) can be used to announce on the LAN. The listener agent records this information. Device (client or service) is Mul
Initiate space manager discovery using the Ticast Request Protocol (Multicast UDP). In one embodiment, the space manager responds with information indicating the URI of each space. Alternatively, the listener agent can respond for multiple spaces.
The discovery response may also be used to set up a TCP connection with a short string that labels each space (eg, obtained from the space keyword) and, for example, each space manager performing an operation on each space. It can contain information that can be used. This information is useful when the client chooses which space to connect to, because the requesting device receives responses from multiple space managers (or multiple space listings from the listener agent).

【0188】 上述のマルチキャスト発見に加えて、発見サービスではさらに、ネットワーク
(たとえば、インターネット、他のWAN、LANなど)上の既知のアドレスで
スペース・マネージャを発見するために使用できるユニキャスト・メッセージン
グ(たとえば、TCPで)を使用して発見を実行することもできる。ユニキャス
ト発見メッセージは、サービス通知を送るため既知のURIのスペース・サービ
スの要求を含むことができる。マルチキャスト発見プロトコルをおよびユニキャ
スト発見プロトコルは、メッセージ・レベルで定義され、そのため、発見に参加
しているデバイスがJavaをサポートしていようと他の特定の言語をサポート
していようと関係なく使用することができる。
In addition to the multicast discovery described above, the discovery service also provides unicast messaging (which can be used to discover space managers at known addresses on networks (eg, Internet, other WANs, LANs, etc.). Discovery can also be performed using TCP (for example). The unicast discovery message may include a request for space service with a known URI to send a service notification. The multicast discovery protocol and the unicast discovery protocol are defined at the message level, so that they will be used regardless of whether the device participating in the discovery supports Java or another particular language. be able to.

【0189】 発見プロトコルを使用すると、分散コンピューティング環境内のクライアント
をサポートするサーバ・コンテンツを拡散することとは独立にクライアントを拡
散させることが容易にできる。たとえば、モバイル・クライアントは、その初期
デフォルト・スペースをそのローカル・プラットフォームに組み込むことができ
る。デフォルト・スペースで通知されたローカル・サービスに加えて、モバイル
・クライアントは、発見プロトコルにアクセスするためのサービスやスペースサ
ーチ・エンジンにアクセスするためのサービスなど、追加スペースをサーチする
サービスを備えることができる。
The discovery protocol facilitates the spreading of clients independently of the spreading of server content that supports clients in a distributed computing environment. For example, a mobile client can embed its initial default space on its local platform. In addition to local services advertised in the default space, mobile clients may be equipped with services to search for additional spaces, such as services to access discovery protocols and services to search space search engines. it can.

【0190】 一実施形態では、分散コンピューティング環境のスペース発見プロトコルは、
一組のXMLメッセージとその応答を定義し、クライアントが以下のことを行え
るようにする。 ・ ネットワーク・インターフェース上でプロトコル定義スペース発見メッセー
ジをブロードキャストする。 ・ リスナーから、それらのリスナーが表す候補スペースを記述するXMLメッ
セージを受け取る。 ・ クライアントが選択されたスペースのアドレスを知らなくても、発見された
スペースの1つをデフォルトとして選択する。 ・ そのアドレスなど選択されたスペースに関する情報を取得し、クライ
アントが後で発見プロトコルの外部の手段により同じスペースを見つけることが
できるようにする(これは、後でクライアントがローカルでなくなったがまだク
ライアントに関わっているスペースにアクセスする場合に役立つ)。
In one embodiment, the space discovery protocol in a distributed computing environment is
Defines a set of XML messages and their responses, allowing clients to: Broadcast a protocol definition space discovery message on the network interface. • Receive XML messages from listeners that describe the candidate spaces they represent. -Select one of the discovered spaces as default even if the client does not know the address of the selected space. Get information about the selected space, such as its address, so that the client can later find the same space by means outside of the discovery protocol (which later the client is no longer local but is still the client Useful when accessing the space involved.

【0191】 いくつかの実施形態では、マルチキャストおよびユニキャスト発見プロトコル
はIPネットワークを必要とする。これらの発見プロトコルは、IPネットワー
ク対応のデバイスの必要条件を満たすが、これらの発見プロトコルで直接サポー
トされないデバイスも多くある。分散コンピューティング環境でスペースの発見
にこのようなデバイスの要求条件を満たすには、事前発見プロトコルを使用して
IPネットワーク対応のエージェントを見つける。事前発見プロトコルは、ネッ
トワーク・エージェントを要求する非IPネットワーク・インターフェース上で
メッセージを送るデバイスを含むことができる。ネットワーク・エージェントは
、それ自身とデバイスとの間の接続を設定する。デバイスとエージェントの間の
接続が設定されると、エージェントはこれがエージェントとして使用されるデバ
イスのためにIPネットワーク上で発見プロトコルに参加する。ネットワーク・
エージェントは、さらに、一般に分散コンピューティング環境にデバイスを接続
するためのインターフェースとなる。たとえば、発見されたスペース内で通知さ
れるサービスを実行するためにデバイスのためにエージェント内にゲートを構築
することができる。「ブリッジ」のセクションを参照されたい。
In some embodiments, multicast and unicast discovery protocols require IP networks. While these discovery protocols meet the requirements of IP network-enabled devices, many devices are not directly supported by these discovery protocols. To meet the requirements of such devices for space discovery in a distributed computing environment, pre-discovery protocols are used to find IP network-enabled agents. The pre-discovery protocol can include devices that send messages on non-IP network interfaces that require network agents. The network agent sets up the connection between itself and the device. Once the connection between the device and the agent is set up, the agent participates in the discovery protocol on the IP network for the device it is used as an agent. network·
Agents also typically provide an interface for connecting devices to a distributed computing environment. For example, a gate can be built in the agent for the device to execute the advertised service in the discovered space. See the "Bridge" section.

【0192】 クライアントが分散コンピューティング環境でスペースを特定するための方法
としては他に、他のスペース内でスペースを通知する方法がある。スペースはサ
ービスなので、他のサービスと同様、他のスペース内で通知を受けることができ
る。図18に示されているように、クライアント200bは、第2のスペース2
04bについて第1のスペース204a内で通知206を見つける。スペース2
04bは、次に、追加スペースへの通知を含む。サービス(スペースを実装する
)はさらにクライアントとしても機能するため、スペースは通知を交換するかま
たは一緒に連鎖し、図19に示されているように、ベースの連合を実現する。分
散コンピューティング環境にはスペースをいくつでも含めることができる。スペ
ースの個数とトポロジは、実装に依存する。たとえば、IPネットワーク上に実
装されたスペースは、それぞれ異なるサブネットに対応していることがある。
Another method for a client to specify a space in a distributed computing environment is to notify the space within another space. Spaces are services, so you can be notified in other spaces just like any other service. As shown in FIG. 18, the client 200b has a second space 2
Find notification 206 in first space 204a for 04b. Space 2
04b then includes a notification to the additional space. Since the service (which implements the space) also acts as a client, the spaces exchange or chain notifications together to achieve base federation, as shown in FIG. A distributed computing environment can include any number of spaces. The number of spaces and the topology depend on the implementation. For example, the space implemented on the IP network may correspond to different subnets.

【0193】 クライアントでスペースを特定する第3の方法として、図18に示されている
ように、サービス208を実行する方法がある。サービス208は、実行され、
その結果としてスペース・サービスのサービス通知を返す。サービス通知はXM
L文書であり、分散コンピューティング環境はインターネットを含むため、サー
ビス208はWebベースのサーチ・ツールとすることができる。このようなサ
ービスの一例として、図4で説明しているスペース・ルックアップ・サービスが
ある。一実施形態では、分散コンピューティング環境内のスペースはWebペー
ジとして実装することができる。それぞれのWebページ・ベースは、Webペ
ージを分散コンピューティング環境内のスペースとして識別するためにサーチで
きるキーワードを含むことができる。スペースは、その他のサーチ可能なキーワ
ードを含むだけでなく、さらにスペースを定義することができる。クライアント
は、サーチ・サービス208に接続し、キーワードをXMLメッセージの形式で
サーチ・サービスに供給する。サーチ・サービスは、クライアントからキーワー
ドを受け取りそのキーワードをインターネットサーチ・エンジンに送るが、これ
は従来のサーチ・エンジンまたはサードパーティ製のサーチ・エンジンでもよい
。サーチ・サービスは、XMLメッセージとして直接にまたは結果スペースへの
参照によりインターネットサーチ・エンジンからクライアントに結果を返す。結
果は、サーチ要求とマッチするスペースのURIである。それとは別に、サーチ
・サービスは、サーチによって識別されたスペースにコンタクトし、このような
それぞれのスペースについてサービス通知を取得し、XMLメッセージとして直
接に、または結果スペースでの参照により、スペース・サービス通知をクライア
ントに返すことができる。クライアントは、その後、サーチ結果からスペースを
選択し、ゲート(それ自身によりまたはプロキシを通じて)を構築し、選択した
スペースにアクセスすることができる。選択されたスペースにアクセスした後、
クライアントはそのスペース内のサービス通知をルックアップし、これによりス
ペースが追加される。
As a third method for identifying the space at the client, there is a method for executing the service 208 as shown in FIG. The service 208 is executed,
As a result, the service notification of the space service is returned. Service notification is XM
Since it is an L document and the distributed computing environment includes the Internet, the service 208 can be a web-based search tool. An example of such a service is the space lookup service described in FIG. In one embodiment, the space within the distributed computing environment can be implemented as a web page. Each web page base can include searchable keywords to identify the web page as a space in a distributed computing environment. Spaces not only contain other searchable keywords, but more spaces can be defined. The client connects to the search service 208 and supplies the keywords to the search service in the form of XML messages. The search service receives keywords from clients and sends them to Internet search engines, which may be conventional search engines or third-party search engines. The search service returns the results from the Internet search engine to the client either directly as an XML message or by reference to the results space. The result is the URI of the space that matches the search request. Alternatively, the search service contacts the spaces identified by the search and obtains service notifications for each such space, either directly as an XML message or by reference in the result space. Can be returned to the client. The client can then select a space from the search results, build a gate (either by itself or through a proxy) and access the selected space. After accessing the selected space,
The client looks up the service notification in that space, which adds the space.

【0194】 上述のように、スペースはXMLペースのWebサイトとすることができ、そ
のため、インターネットWeb上でサーチ・メカニズムによりサーチすることが
できる。スペースはインターネットサーチ可能キーワードを含むことができる。
小型クライアント・デバイスなどいくつかのデバイスでは、インターネット・ブ
ラウザをサポートしていない。ただし、このようなデバイスであっても、分散コ
ンピューティング環境内でスペースについてインターネット・サーチを実行する
ことができる。デバイスは、キーワードの列を受け付けるプログラムを備え、こ
れらのキーワードはサーバ上のプロキシ・プログラムに送られる(たとえば、サ
ーチ・サービス)。プロキシは、これらのキーワード列をブラウザ・ベースのサ
ーチ機能に送り(たとえば、インターネットサーチ機能)、サーチを実行するこ
とができる。プロキシは、サーチの出力を受け取ってサーチ結果の各URIを表
す文字列(たとえば、XML文字列)に解析し、応答文字列をクライアントに送
り返す。したがって、クライアントは、Webブラウザなどのプログラムをサポ
ートしていなくてもインターネットを介してスペースを特定することができる。
さらに高機能のデバイスでは、プロキシの使用を避けて、インターネット・ベー
スのルックアップ・サービスを直接開始することができる。
As mentioned above, the space can be an XML-based website, and thus can be searched by the search mechanism on the Internet Web. The space can include Internet searchable keywords.
Some devices, such as small client devices, do not support Internet browsers. However, even such devices can perform Internet searches for spaces within a distributed computing environment. The device comprises a program that accepts a sequence of keywords, which are sent to a proxy program on the server (eg, search service). The proxy can send these keyword strings to a browser-based search function (eg, Internet search function) to perform the search. The proxy receives the output of the search, parses it into a character string (for example, an XML character string) representing each URI of the search result, and sends a response character string back to the client. Therefore, the client can identify the space via the Internet even if the client does not support a program such as a Web browser.
For more sophisticated devices, the use of proxies can be avoided and Internet-based lookup services can be started directly.

【0195】 クライアントはスペースを特定するための第4の方法は、新規作成された空の
スペースまたは既存のスペースが生成されるときには生成されたスペースに関す
る情報を取得または受け取る方法である。既存のスペースは、生成元のスペース
と同じ機能(たとえば、同じXMLスキーマ)を持つ空のスペースを生成するイ
ンターフェースを備えることができる。スペースの生成については以下で詳述す
る。
The fourth method for the client to specify the space is a method of acquiring or receiving information regarding the newly created empty space or the created space when the existing space is created. An existing space can have an interface that creates an empty space with the same functionality (eg, the same XML schema) as the space from which it was created. Space generation is described in detail below.

【0196】 スペースのクライアントはスペース・サービスの通知を見つけると、スペース
のそのクライアントは他のサービスの場合と同様にスペース・サービスを実行で
きる。スペース・サービスのクライアントは別のサービスでもよいことに注意さ
れたい(たとえば、スペース内で通知すること求めるサービス)。一実施形態で
は、図20に示されているように、スペース・サービスを実行するため、スペー
スのクライアントはまずスペースに対し認証サービスを実行し、300に示され
ているように、認証証明書を取得する。認証サービスは、スペース・サービスの
サービスを通知で指定することができる。スペースのクライアントは、302に
示されているように、認証証明書、スペースのXMLスキーマ(スペースのサー
ビス通知からの)、およびスペースのURI(スペースのサービス通知からの)
を使用して、スペースのゲートを構築する。次に、スペースのクライアントは、
そのゲートを使用してメッセージをスペース・サービスに送ることによりスペー
ス・サービスを実行する。第1のそのようなメッセージは304に示されている
When a client of the space finds the notification of the space service, that client of the space can perform the space service as it would any other service. Note that the client of the space service may be another service (eg, a service that requires notification within the space). In one embodiment, as shown in FIG. 20, to perform a space service, a client of the space first performs an authentication service for the space and provides an authentication certificate, as shown at 300. get. The authentication service can specify the service of the space service in the notification. The space's client, as shown at 302, the authentication certificate, the space's XML schema (from the space's service notification), and the space's URI (from the space service notification).
Use to build a gate of space. Then the space client
Perform a space service by sending a message to the space service using the gate. The first such message is shown at 304.

【0197】 認証を採用する実施形態では、スペース・サービスがクライアントから第1の
メッセージを認証証明書が埋め込まれた状態で受け取ったときに、スペース・サ
ービスは同じ認証サービス(スペース・サービスのサービス通知で指定されてい
る)を使用して、クライアントを認証し、306で示されているように、その素
性を確定する。スペース・サービスは、クライアントの能力を判別し、308で
示されているように、クライアントを認証証明書にバインドする。
In an embodiment that employs authentication, when the space service receives a first message from a client with an embedded authentication certificate, the space service uses the same authentication service (service notification of space service). Authenticates the client and establishes its identity, as shown at 306. The space service determines the client's capabilities and binds the client to an authentication certificate, as shown at 308.

【0198】 310に示されているように、スペースのクライアントは、メッセージをスペ
ース・サービスに送ることによりさまざまなスペース機能を実行することができ
る。一実施形態では、スペースのクライアントがスペース・サービスに要求を送
るときに、クライアントはその要求で認証証明証を渡し、スペース・サービスが
クライアントの特定の能力について要求をチェックできるようにする。
As shown at 310, the space's client can perform various space functions by sending messages to the space service. In one embodiment, when a client of the space sends a request to the space service, the client passes an authentication certificate in the request so that the space service can check the request for the client's particular capabilities.

【0199】 各スペースは、通常、サービスであり、スペース・サービスのコア機能を定義
するXMLスキーマを備える場合がある。XMLスキーマでは、スペース・サー
ビスとのクライアント・インターフェースを指定する。一実施形態では、すべて
のスペース・サービスは、基本レベルのスペース関係のメッセージを出すことが
できる。基本レベルのスペース機能は、PDAなどの小型デバイスをはじめとす
るほとんどのクライアントで使用できる基本的なスペース機能である。たとえば
、より高機能なクライアントについては、機能を増やすことが望ましい場合があ
る。基本レベルのスペースの拡張は、スペースを通知するXMLスキーマにさら
にメッセージを追加することにより実現できる。たとえば、一実施形態では、基
本レベルのメッセージは、通知に対して関係グラフを強制しない。たとえば、通
知の階層をトラバースするメッセージはスペース拡張である。このような追加機
能は、スペースの1つまたは複数の拡張をXMLスペース・スキーマまたはスキ
ーマ拡張を通じて提供することができる。拡張されたスキーマは、基本スキーマ
を含むので、拡張スペースのクライアントもまた、基本スペースとしてスペース
にアクセスすることができる。
Each space is typically a service and may include an XML schema that defines the core functionality of the space service. The XML schema specifies a client interface with the space service. In one embodiment, all space services can issue basic level space-related messages. The basic level space function is a basic space function that can be used by most clients including small devices such as PDAs. For example, for more sophisticated clients, it may be desirable to add more features. The extension of the base level space can be realized by adding a message to the XML schema for notifying the space. For example, in one embodiment, a base level message does not enforce a relationship graph for notifications. For example, a message that traverses the hierarchy of notifications is a space extension. Such additional functionality may provide one or more extensions of space through the XML space schema or schema extensions. Since the extended schema contains the base schema, clients of the extension space can also access the space as the base space.

【0200】 一実施形態では、基本スペース・サービスは、XMLドキュメントの一時的リ
ポジトリを備える(たとえば、サービスの通知、実行中サービスの結果)。ただ
し、一実施形態の基本スペース・サービスは、スペース・コンテンツの永続性、
スペース構造(たとえば、階層)のナビゲーションまたは作成、およびトランザ
クション・モデルをサポートする高度な機能に対応していない場合がある。永続
性、階層、および/またはトランザクションをサポートするメカニズムは、XM
Lスキーマを拡張することによって実現される。拡張されたスペースはそれでも
基本XMLスキーマを含むので、必要なのが、あるいはサポートできるのが基本
スペースの機能だけの場合に、クライアントは拡張スペースを基本スペースとし
て取り扱うことができる。
In one embodiment, the base space service comprises a temporary repository of XML documents (eg, service notifications, results of running services). However, the basic space service of one embodiment is
It may not support navigation or creation of space structures (eg, hierarchies) and advanced features that support a transaction model. Mechanisms that support persistence, hierarchies, and / or transactions are XM
It is realized by extending the L schema. The extended space still contains the base XML schema so that the client can treat the extension space as a base space if all that is needed or supported is the base space's functionality.

【0201】 一実施形態では、基本スペースは一時的なものとすることができる。基本スペ
ースは、さまざまな目的のために受け入れることができる。サービス・プロバイ
ダは、さまざまなスペースでサービスを登録することができる。一実施形態では
、サービスはスペース内の情報のパブリッシュ後継続的にリースを更新する必要
がある。このような性質があることから、サービス通知は、多くの場合に再構築
かつ/または再確認するという点で一時的なものである。ただし、スペース内に
何らかの永続性を実現することが望ましい。たとえば、結果があるスペースは、
一定期間結果が失われないようにしたいユーザに対しては何らかの永続性を提供
できる。一実施形態では、クライアントが永続的ストアによって裏付けられてい
るスペース内のオブジェクトを制御し、その永続性ストアのメンテナンスを管理
することができるスペース・インターフェースを指定することにより永続性を実
現することができる。永続性インターフェースは、永続性に関してインターフェ
ースを定義するスペースの拡張XMLスキーマで指定することができる。
In one embodiment, the base space can be temporary. Base spaces can be accommodated for a variety of purposes. Service providers can register services in various spaces. In one embodiment, the service needs to continually renew the lease after publishing the information in the space. Due to this nature, service notifications are often temporary in that they are reconstructed and / or reconfirmed. However, it is desirable to achieve some persistence in the space. For example, the space that has a result is
You can provide some persistence for users who want to avoid losing results for a period of time. In one embodiment, persistence may be achieved by specifying a space interface that allows a client to control objects in the space backed by the persistent store and manage maintenance of that persistent store. it can. Persistence interfaces can be specified in the extended XML schema of the space that defines the interface for persistence.

【0202】 一実施形態では、基本スペースは、XMLドキュメントがスペースに追加され
、文字列によって識別できるインターフェースを備える。基本スペースは、スペ
ース内のさまざまな名前をつけられたXMLドキュメントの階層を実現すること
はできない。階層のサポートが望ましい実施形態では、ユーザが階層を指定する
ことができる追加インターフェースを定義するとよい(XMLスキーマを拡張す
る)。階層をナビゲートしたり、関係グラフを位置でナビゲートするように他の
インターフェースを指定することもできる。ただし、他のユーザはそれでも、基
本スペース・インターフェースを使用して、階層を使わずに、同じドキュメント
にアクセスすることができる。拡張スペース・スキーマでは、他のスペースの構
造に対するインターフェースも実現できる。
In one embodiment, the base space comprises an interface in which XML documents are added to the space and can be identified by a string. A base space cannot implement a hierarchy of various named XML documents within the space. In embodiments where hierarchy support is desired, additional interfaces may be defined that allow the user to specify the hierarchy (extending the XML schema). You can also navigate the hierarchy or specify other interfaces to navigate the relationship graph by location. However, other users can still use the base space interface to access the same document without using the hierarchy. Extended space schemas can also provide interfaces to structures in other spaces.

【0203】 拡張XMLスペース・インターフェースもまた、スペース・トランザクション
・モデルについて実現することができる。たとえば、拡張スペースXMLスキー
マがACIDトランザクションのインターフェースを指定する。ACIDは、エ
ンタプライズ・レベルのトランザクションの4つの特性を記述するために使用さ
れる頭字語である。ACIDは、Atomicity(原子性)、Consis
tency(一貫性)、Isolation(独立性)、およびDurabil
ity(耐久性)のそれぞれの頭文字をとったものである。原子性とは、トラン
ザクションを完全に完了するか、または元に戻すかのいずれかであることを意味
する。障害が発生した場合、すべての操作およびプロシージャを元に戻し、すべ
てのデータを前の状態にロールバックする必要がある。一貫性とは、トランザク
ションがシステムを一方の一貫性のある状態から他方の一貫性のある状態に変換
することを意味する。独立性とは、各トランザクションが同時に発生する他のト
ランザクションとは独立に発生することを意味する。耐久性とは、完了したトラ
ンザクションが、たとえばシステムに障害が発生したときでも、内容を失うこと
なく恒久的であるということを意味する。他のトランザクション・モデルはさら
に、拡張スペース・スキーマで指定することができる。
An extended XML space interface can also be implemented for the space transaction model. For example, the Extended Space XML Schema specifies the interface for ACID transactions. ACID is an acronym used to describe four characteristics of enterprise level transactions. ACID is Atomicity, Consis
tency, Isolation, and Durabil
It is an abbreviation for each of the ties (durability). Atomicity means that the transaction is either completely completed or undone. In the event of failure, all operations and procedures should be undone and all data should be rolled back to their previous state. Consistency means that a transaction transforms the system from one consistent state to the other consistent state. Independence means that each transaction occurs independently of other transactions that occur at the same time. Durability means that a completed transaction is durable without loss of content, for example when the system fails. Other transaction models can also be specified in the extended space schema.

【0204】 拡張スペース・スキーマは、拡張されたスペースの特徴、機能性、または機能
を使用するためのメッセージ・インターフェース(たとえば、XMLメッセージ
)を指定するXMLドキュメントとすることができる。スペースには、基本スキ
ーマおよび複数のを拡張スキーマを用意できる。これにより、クライアントの認
証に応じて、異なるレベルのサービスを異なるクライアントに簡単に提供するこ
とができる。
The extended space schema can be an XML document that specifies the extended space features, functionality, or message interfaces (eg, XML messages) for using the functionality. A space can have a base schema and multiple extended schemas. This allows different levels of service to be easily provided to different clients depending on the authentication of the client.

【0205】 スペースの永続性、構造、およびトランザクションの拡張のほかに、必要に応
じて、他のスペース拡張機能も指定できる。たとえば、通知要素の読み込み、書
き込み、または取り出しの機能、通知属性の読み込み、書き込み、または取り出
しの機能、および通知イベントの通知メッセージのサブスクライブの機能など、
要素または属性のレベルで通知を操作するための拡張機能を備えることもできる
。スペースは仮想的にいくつの機能でも提供でき、必要に応じて、基本スキーマ
および拡張スキーマに配列することができる。一実施形態では、すべての基本ス
ペースは通知の読み込み、書き出し、取り込み、およびルックアップの機能、さ
らにスペース・イベント・サブスクライブの機能を備える必要がある。さまざま
なスペース機能を用意できる。いくつかの実施形態では、スペースとのセッショ
ンを確立するための機能を備えることができる。このような実施形態では、スペ
ース機能のうちの残りの機能は、これが完了するまでに利用できない。他の実施
形態では、セッションという概念がないか、またはオプションであるか、および
/または実装に依存する。
In addition to space persistence, structure, and transaction extensions, other space extension features can be specified, if desired. For example, the ability to read, write, or retrieve notification elements, the ability to read, write, or retrieve notification attributes, and the ability to subscribe to notification messages for notification events.
Extensions may also be provided for manipulating notifications at the element or attribute level. Spaces can serve virtually any number of functions and can be arranged in base and extended schemas as needed. In one embodiment, all base spaces should have the ability to read, write, capture, and look up notifications, as well as the ability to subscribe to space events. Various space functions can be prepared. In some embodiments, functionality may be provided for establishing a session with the space. In such an embodiment, the remaining space functions are not available by the time they are completed. In other embodiments, the concept of session is absent or optional and / or implementation dependent.

【0206】 他のスペース機能として、スペースにサービス通知を追加したり、スペースか
らサービス通知を削除する機能もある。さらに、XMLドキュメントを追加また
は削除するスペース機能も用意できる(通知ではなく、おそらくスペース内の結
果)。スペース・サービスは、アイテムの追加を許可する前にアイテムの一意性
を検査する。たとえば、スペースに追加される各アイテムは、アイテムを識別し
、そのアイテムの一意性を検査するために使用できるユーザ指定の文字列と関連
付けることができる。
As another space function, there is also a function of adding a service notification to the space or deleting a service notification from the space. In addition, space functionality can be provided to add or remove XML documents (probably results in spaces, not notifications). Space Services checks the uniqueness of an item before allowing it to be added. For example, each item added to the space can be associated with a user-specified string that can be used to identify the item and check its uniqueness.

【0207】 一実施形態では、クライアントはスペース内で通知されるすべてのサービスの
リスティング、ツリー、またはその他の表現を要求することができる。ユーザは
、その後、通知をスクロールまたは操縦して、目的のサービスを選択する。また
、スペースはキーワードまたは文字列名を与えることによりクライアントがサー
ビスをサーチできるようにするルックアップ機能も備える。一実施形態では、ス
ペース機能は、スペースに追加されているスペース・エントリをルックアップす
るためのメカニズムを備える。ルックアップ機能は、名前とマッチする文字列、
またはワイルドカード、またはデータベース・クエリでルックアップすることが
できる。ルックアップ機能は、クライアントが1つ選択できる、またはさらに絞
り込みサーチを実行できる複数のエントリを返す。一実施形態では、ルックアッ
プ機能は特定のXMLスキーマとマッチするサービス通知を特定するためのメカ
ニズムを備える。クライアントは、スペース内でサーチ対象となる、特定のXM
Lスキーマ、または特定のXMLの一部を指定することができる。したがって、
インターフェース機能に従ってスペース内でサービスをサーチすることができる
In one embodiment, the client may request a listing, tree, or other representation of all services advertised within the space. The user then scrolls or steers the notification to select the desired service. The space also provides a lookup function that allows clients to search for services by providing a keyword or string name. In one embodiment, the space function comprises a mechanism for looking up space entries that have been added to the space. The lookup function is a string that matches the name,
Or it can be looked up with a wildcard or a database query. The lookup function returns a number of entries that the client can select one or perform a further refined search. In one embodiment, the lookup function comprises a mechanism for identifying service notifications that match a particular XML schema. Clients can search for specific XMs in the space
The L schema, or part of a particular XML, can be specified. Therefore,
Services can be searched in the space according to the interface function.

【0208】 分散コンピューティング環境で提供できるスペース機能としては他に、サービ
スおよびクライアントがXMLなどの型付けモデルに基づき一時的ドキュメント
を見つけられるメカニズムがある。このメカニズムは、汎用の型付けドキュメン
ト・ルックアップ・メカニズムである。一実施形態では、このルックアップ・メ
カニズムはXMLに基づく。このルックアップ・メカニズムを使用すると、クラ
イアントおよびサービスは、サービス通知を介したサービスを含めて、一般にド
キュメントを見つけることができる。
Another space feature that can be provided in a distributed computing environment is a mechanism by which services and clients can find temporary documents based on a typing model such as XML. This mechanism is a generic typed document lookup mechanism. In one embodiment, this lookup mechanism is based on XML. This lookup mechanism allows clients and services to find documents in general, including services via service notifications.

【0209】 一実施形態では、スペース・ルックアップおよび応答メッセージのペアを使用
することにより、クライアントおよびサービスがネットワーク一時ドキュメント
・ストア(スペース)内に格納されているXMLドキュメントを見つけられるよ
うにできる。スペースは、さまざまなドキュメントを格納するために使用される
ドキュメント・スペースである。一実施形態では、ドキュメントはXMLドキュ
メントまたはXMLでカプセル化された非XMLドキュメントである。スペース
については他のところでさらに詳述する。ルックアップ・メッセージは、サービ
ス通知およびデバイス・ドライバ通知を含む、スペース内に格納されているあら
ゆる種類のXMLドキュメント上で機能する。一実施形態では、クライアント(
他のサービスでもよい)は別のところで説明しているように発見メカニズムを使
用して、1つまたは複数のドキュメント・スペースを見つけることができる。そ
の後、クライアントはスペース・ルックアップ・メッセージを使用して、スペー
ス内に格納されているドキュメントを特定することができる。
In one embodiment, a space lookup and response message pair can be used to enable clients and services to find XML documents stored in the network temporary document store (space). Space is a document space used to store various documents. In one embodiment, the document is an XML document or a non-XML document encapsulated in XML. Spaces will be discussed in more detail elsewhere. Lookup messages work on any kind of XML document stored in the space, including service notifications and device driver notifications. In one embodiment, the client (
Other services) may use the discovery mechanism as described elsewhere to find one or more document spaces. The client can then use the space lookup message to identify the documents stored in the space.

【0210】 分散コンピューティング環境には、サービスおよびクライアントがXMLドキ
ュメントの発行に関するイベントのサブスクライブおよび受取を行うためのメカ
ニズムが備えられる。イベントは、スペースなどの一時的XMLドキュメント・
リポジトリにXMLドキュメントをパブリッシュしたり、そこから除去したりす
る機能を含むことができる。一実施形態では、イベントは、他のXMLドキュメ
ントを参照するXMLドキュメントである。
The distributed computing environment includes mechanisms for services and clients to subscribe to and receive events regarding the publication of XML documents. Events are temporary XML documents such as spaces.
It may include the ability to publish and remove XML documents from the repository. In one embodiment, the event is an XML document that references another XML document.

【0211】 一実施形態では、スペース・イベント・サブスクライブおよび応答メッセージ
のペアを使用することにより、クライアントおよびサービスがスペースに追加ま
たはスペースから削除されるドキュメントに関するイベントのサブスクライブを
行える。一実施形態では、他のところで説明しているリース・メカニズムを使用
して、イベント・サブスクライブをリースすることができる。一実施形態では、
リースが取り消されるかまたはその有効期限が切れたときにサブスクライブを取
り消すことができる。一実施形態では、サブスクライブ上のリースを更新する際
に、サブスクライブを更新できる。
In one embodiment, a space event subscribe and response message pair can be used to allow clients and services to subscribe to events for documents that are added to or removed from the space. In one embodiment, the event subscribe may be leased using the leasing mechanism described elsewhere. In one embodiment,
You can cancel the subscription when the lease is canceled or when it expires. In one embodiment, subscribing can be renewed when renewing the lease on the subscribe.

【0212】 一実施形態では、イベント・サブスクライブ・メッセージに、ドキュメント・
マッチング・メカニズムとして使用できるXMLスキーマを含めることができる
。スキーマとマッチするドキュメントはサブスクライブによって取り扱われる。
一実施形態では、スペースに追加され、XMLスキーマとマッチするドキュメン
トは、スペース・イベント・メッセージを生成する。
In one embodiment, the event subscribe message includes a document
An XML schema that can be used as a matching mechanism can be included. Documents that match the schema are handled by subscribe.
In one embodiment, documents added to the space and matching the XML schema generate a space event message.

【0213】 また、スペースに何かを追加したときやスペースから何かを削除したときにそ
の通知を取得するためクライアントが登録できる(または登録解除できる)スペ
ース機能を提供することができる。スペースは一時的コンテンツを格納すること
ができ、これはスペースに追加されたまたはスペースから削除されたサービスを
反映する。たとえば、サービスが利用できるようになったときまたは利用できな
くなったときにそのことをクライアントに通知するメカニズムを用意することが
できる。クライアントは、このような通知を取得するためイベント・サービスに
登録することができる。一実施形態では、クライアントは指定された文字列とマ
ッチする名前または指定されたスキーマ(またはスキーマ部分)とマッチするス
キーマを持つサービスをスペースに追加したりスペースから削除したりするとき
にそのことを通知するように登録することができる。したがって、スペース・イ
ベント通知機能に登録するクエリは、上述のサービス・ルックアップ機能のもの
と同じであるか類似している。
Further, it is possible to provide a space function that allows a client to register (or deregister) to obtain a notification when something is added to or deleted from a space. Spaces can store temporary content, which reflects services added to or deleted from the space. For example, a mechanism could be provided to notify the client when a service is available or unavailable. Clients can subscribe to the event service to get such notifications. In one embodiment, the client does so when adding or removing services with a name that matches the specified string or a schema that matches the specified schema (or schema part). You can register to be notified. Therefore, the query to register with the space event notification function is the same or similar to that of the service lookup function described above.

【0214】 イベントは型付けされる。いくつかの実施形態では、スペースによってサポー
トされるイベント機能を使用すると、イベント・リスナーがたとえば、Java
クラス(またはXMLの型)階層を利用することができる。たとえば、AdvE
lementEventが発生するのを待つことで、リスナーは型AdvEle
mentEventおよびそのサブクラス(XML型)のすべてのイベントを受
け取る。したがって、この例では、要素変更に関係するすべてのイベントは(通
知の挿入および削除はないが)、受取される。
Events are typed. In some embodiments, the event feature supported by spaces allows event listeners to, for example,
A class (or XML type) hierarchy can be utilized. For example, AdvE
By waiting for the elementEvent to occur, the listener will be of type AdvEle.
Receives all events of mentEvent and its subclasses (XML type). Thus, in this example, all events related to element changes (although there are no insertions and deletions of notifications) are received.

【0215】 他の例では、トップレベルのイベント・クラスまたは型、たとえば、Spac
eEventのサブスクライブまたは待機する際に、すべてのスペース・イベン
トが受取される。イベント・クラスの型は、たとえば、Javaのinstan
ce of演算子またはXML型付けシステムを介して区別することができる。
In another example, a top-level event class or type, eg Spac
All space events are received when subscribing or waiting for an eEvent. The event class type is, for example, Java instan
It can be distinguished via the ce of operator or the XML typing system.

【0216】 イベントには、影響を受ける通知または要素へのURIが含まれる。たとえば
、AdvertisementEventおよびそのすべてのサブクラスは影響
を受ける通知への参照(たとえば、URIまたはURL)を含む。AdvEle
mentEventおよびそのサブクラスは、影響を受ける要素の名前について
調査することができる。たとえば、前の要素値(URIまたはURL)は、Ad
vElementRemoveEventおよびAdvElementValu
eChangeEventから利用することができる。
Events include URIs to notifications or elements that are affected. For example, AdvertisementEvent and all its subclasses contain a reference (eg, URI or URL) to the affected notification. AdvEle
mentEvent and its subclasses can inspect for the name of the affected element. For example, the previous element value (URI or URL) is Ad
vElementRemoveEvent and AdvElementValue
It can be used from eChangeEvent.

【0217】 一実施形態のスペース・イベントの型階層を図21に示した。型は、XMLで
定義し、JavaやC++などの他の適当なオブジェクト指向言語で使用するこ
とができる。
The type hierarchy of space events of one embodiment is shown in FIG. Types are defined in XML and can be used in any other suitable object oriented language such as Java or C ++.

【0218】 スペースは、クライアントがスペース内で通知されたサービスをインスタンス
化する機能を備える。サービスのインスタンス化は、クライアントがサービスを
実行できるよう行われる初期化である。サービスのインスタンス化の一実施形態
を図22に示す。サービスをインスタンス化するために、クライアントはまず、
320で示されているように、スペース内でパブリッシュされたサービス通知の
うちから1つ選択する。クライアントは、スペースに用意されているルックアッ
プ機能などのさまざまな機能を使用して、スペース内のさまざまな通知をルック
アップすることができる。次に、クライアントは、322に示されているように
、スペースに対しサービスのインスタンス化を要求する。
The space has a function for the client to instantiate the advertised service in the space. Instantiation of a service is an initialization done so that a client can execute the service. One embodiment of service instantiation is shown in FIG. To instantiate the service, the client first
Select one of the service announcements published in the space, as indicated at 320. The client can look up different notifications in the space using different features, such as the lookup function provided in the space. Next, the client requests the space to instantiate the service, as shown at 322.

【0219】 一実施形態では、サービス・インスタンス化は、以下の操作を含む。クライア
ントがスペース・サービスに対し選択されたサービスのインスタンス化を要求し
た後、322に示されているように、スペース・サービスは、324に示されて
いるように、クライアントが要求されたサービスをインスタンス化できることを
確認する。スペース・サービスは、クライアントのメッセージに含まれる認証証
明書を調べることによりこの確認を実行する。認証証明書は、スペース・サービ
スとのセッションを確立したときにクライアントが受け取る証明書である。スペ
ース・サービスは、クライアントがそのクライアントに指示されているクライア
ントの認証証明書および能力に応じて要求されたサービスをインスタンス化でき
るかどうかを検証する。以下の「認証とセキュリティ」の項を参照のこと。
In one embodiment, service instantiation includes the following operations. After the client requests the space service to instantiate the selected service, the space service, as shown at 322, the client instantiates the requested service, as shown at 324. Confirm that it can be converted. Space Services performs this verification by looking at the authentication certificate contained in the client's message. The authentication certificate is the certificate that the client receives when establishing a session with the space service. The space service verifies if the client can instantiate the requested service depending on the client's authentication credentials and capabilities indicated to the client. See the "Authentication and Security" section below.

【0220】 クライアントが承認されていると仮定すると、スペース・サービスはさらに、
326に示されているように、クライアントによって指定されているリース要求
時間でクライアントに対するサービス通知のリースを取得することができる。リ
ースについては以下で詳述する。スペース・サービスは、328に示されている
ように、割り当てられたリースとサービスのサービス通知を含むメッセージをク
ライアントに送る。一実施形態では、クライアントはサービス通知で指定された
認証サービスを実行し、330で示されているように、認証証明書を取得する。
認証サービスの詳細については、「認証とセキュリティ」の項を参照のこと。次
に、332で示されているように、クライアントはサービスのためにゲートを構
築する(たとえば、認証証明書と通知からのXMLスキーマおよびサービスUR
Iを使用する)。「ゲート」の項を参照のこと。クライアントとスペース・サー
ビスとの上述の通信は、分散コンピューティング環境のXMLメッセージングを
使用して実行される。その後、クライアントは、構築されたゲートとXMLメッ
セージングを使用してサービスを実行する。サービスは、同様に、XMLメッセ
ージによるクライアントとの通信用にサービス・ゲートを構築する。
Assuming the client is authorized, the space service also
As shown at 326, a lease of service notification for the client can be obtained at the lease request time specified by the client. Leasing is detailed below. The space service sends a message to the client containing the assigned lease and service notification of the service, as shown at 328. In one embodiment, the client performs the authentication service specified in the service notification and obtains the authentication certificate, as shown at 330.
See the Authentication and Security section for more information on authentication services. Next, the client builds a gate for the service, as shown at 332 (eg, XML schema and service UR from authentication certificate and notification).
I)). See the "Gate" section. The above-described communication between the client and the space service is performed using XML messaging in a distributed computing environment. The client then executes the service using the constructed gate and XML messaging. The service likewise builds a service gate for communication with the client via XML messages.

【0221】 まとめとして、スペースの使用例を以下で説明する。クライアントは、スペー
ス・サービスにアクセス(たとえば、接続)することができる。(サービスは、
スペースにアクセスするかまたはその他の方法でスペースを使用するためにクラ
イアントとして機能する。)スペース・サービスは、1つまたは複数のサービス
通知および/またはその他のコンテンツス・ペース内に格納し、サービス通知の
それぞれが、対応するサービスにアクセスし、実行するために使用できる情報含
む。スペース・サービスは、スペース・サービスの機能を呼び出すために使用で
きる1つまたは複数のメッセージを指定するスキーマを備えることができる。た
とえば、スキーマはスペースから通知を読み込み、スペース内で通知をパブリッ
シュするメソッドを指定できる。スキーマおよびサービス通知は、拡張可能マー
クアップ言語(XML)などのオブジェクトを表現言語で表すことができる。ス
ペース・サービスにアクセスする場合、クライアントはXMLメッセージ(スキ
ーマで指定されている)などの情報をインターネット・アドレスにあるスペース
・サービスに送る。スペース・サービスにアクセスする際に、クライアントはス
ペースに格納されている1つまたは複数のをサービス通知をサーチする。クライ
アントは、スペースからサービス通知の1つを選択できる。一実施形態では、ク
ライアントは、スペースから目的のサービス通知を選択した後インスタンス化要
求をスペースに送る。目的のサービスに対するリースを取得し、リースおよびス
ペース・サービスによって、選択されたサービス通知をクライアントに送る。そ
の後、クライアントは目的のサービスに対するアクセスのためのゲートを構築す
る。目的のサービスをクライアントのために実行できる。
As a summary, a usage example of a space will be described below. Clients can access (eg, connect to) space services. (The service is
Act as a client to access or otherwise use the space. 3.) Space services are stored within one or more service notifications and / or other content spaces, each of which includes information that can be used to access and execute the corresponding service. A space service can comprise a schema that specifies one or more messages that can be used to invoke the space service's functions. For example, the schema can specify a method that reads notifications from the space and publishes the notifications in the space. Schemas and service notifications can represent objects, such as Extensible Markup Language (XML), in a representation language. When accessing the space service, the client sends information such as an XML message (specified in the schema) to the space service at the internet address. When accessing the space service, the client searches for service notifications for one or more stored in the space. The client can select one of the service notifications from the space. In one embodiment, the client sends an instantiation request to the space after selecting the desired service notification from the space. Obtain a lease for the desired service and send the selected service notification to the client via the lease and space service. The client then builds a gate for access to the desired service. The desired service can be executed on behalf of the client.

【0222】 スペース・サービスによって提供される機能としてはほかに、空のスペースの
生成または作成の機能がある。このスペース機能を使用する際に、クライアント
(他のクライアントへのサービスであってもよい)は新しいスペースを動的に作
成することができる。一実施形態では、このスペース機能は、生成元のスペース
と同じ機能(同じXMLスキーマまたは拡張スキーマ)を持つ空のスペースを生
成するインターフェースを備えることができる。この機能は、結果に対しスペー
スを(たとえば、動的に)生成する場合に使用できる。たとえば、クライアント
は、サービスで結果を生成されたスペースに置くかまたは結果を生成されたスペ
ースで通知するよう要求するスペースを生成することができる。クライアントは
、生成されたスペースのURIおよび/または認証証明書をサービスに渡す。ま
たは、サービスは、結果に対しスペースを生成し、生成されたスペースのURI
および/または認証証明書をクライアントに渡す。いくつかの実施形態では、ス
ペースがいったん生成されると、他のスペースと同様に、ここで説明したスペー
スを発見メカニズムのうち1つまたは複数を使用して発見することができる。
Another feature provided by the space service is the ability to create or create empty spaces. When using this space feature, clients (which may be services to other clients) can dynamically create new spaces. In one embodiment, this space function may comprise an interface that creates an empty space with the same function (same XML schema or extension schema) as the space from which it was created. This feature can be used to generate space (eg, dynamically) for the result. For example, the client can place a result in the generated space with the service or generate a space that requests the result to be posted in the generated space. The client passes the generated space URI and / or authentication certificate to the service. Or the service creates a space for the result and the URI of the created space
And / or pass the authentication certificate to the client. In some embodiments, once a space has been created, the space described herein can be discovered, as well as other spaces, using one or more of the discovery mechanisms.

【0223】 他のスペース内のインターフェースを介してスペースを作成するメカニズム(
たとえば、スペース生成機能)を使用して、新しいスペースを効率よく作成する
ことができる。たとえば、一実施形態では、格納用の元のスペースで使用してい
るのと同じ機能を使用して、生成されたスペース用の記憶域を割り当てることが
できる。また、生成されたスペースは共通サービス機能を元の(または親の)ス
ペースと共有することができる。たとえば、新しいURIを新しいスペースに割
り当てることができる。一実施形態では、新しいURIは元のスペースと共有さ
れる共通スペース機能へのリダイレクションとすることができる。したがって、
新しく生成されたスペースは元のスペースと同じサービス・コードまたはその一
部を使用することができる。
A mechanism for creating a space via an interface in another space (
For example, the space generation function) can be used to efficiently create a new space. For example, in one embodiment, the same functionality used in the original space for storage may be used to allocate storage for the generated space. Also, the created space can share common service functions with the original (or parent) space. For example, a new URI can be assigned to the new space. In one embodiment, the new URI can be a redirection to a common space function shared with the original space. Therefore,
The newly created space can use the same service code or part of it as the original space.

【0224】 スペース機能はさらに、たとえば、スペースのさまざまなセキュリティ・ポリ
シーおよびその他の管理機能を更新するためのセキュリティ管理機能を備える。
たとえば、通知の個数および経過時間を、ルート・スペース・サービスにより制
御し監視することができる。旧い通知を収集して処分することができる。たとえ
ば、通知を旧いとみなすことができる場合については「リース」の項を参照のこ
と。スペースを実装するサービスは管理者の制御の下にある。管理者は、サービ
スに依存する形でポリシーを設定することができる。スペースで機能はさらに、
空のスペースを削除する機能を備える。いくつかのスペースでは、モバイル・ク
ライアントなどのある種のクライアントの拡散をさらにサポートする機能または
サービスを備えることができる。たとえば、モバイル・クライアントが発見プロ
トコルなどにより発見できるスペース内のサービスは、モバイル・クライアント
に対し次のようにサポートする ・ クライアントに対し一時的ネットワーク・アドレスを割り当て管理する。 ・ クライアントに対しメッセージ通信をプロキシに通す。 ・ 追加スペースに対しサーチ機能を用意する。たとえば、サービスによ
り、クライアントは単純なインターフェースを介してキーワードを指定すること
ができる。その後サービスは、ここで詳述しているように、Webサーチ・エン
ジンでそのキーワードを使用して、Web上でスペースをサーチする。他の実施
形態では、サーチ・サービスは、クライアントを分散コンピューティング環境内
でごく少数のサポートされているスペースをサーチすることに制約する。
The space function further comprises security management functions, for example for updating various security policies and other management functions of the space.
For example, the number and age of notifications can be controlled and monitored by the Route Space Service. Old notices can be collected and disposed of. For example, see the Leases section when notices can be considered obsolete. The service that implements the space is under the control of the administrator. The administrator can set policies in a service-dependent manner. In the space the features are even more
It has a function to delete empty spaces. Some spaces may be equipped with features or services that further support the diffusion of certain clients, such as mobile clients. For example, a service in a space that can be discovered by a mobile client by a discovery protocol or the like supports the mobile client in the following manner: Assigns and manages a temporary network address to the client. -Pass the message communication to the proxy for the client.・ Provide a search function for additional space. For example, the service allows clients to specify keywords via a simple interface. The service then uses the keywords in a web search engine to search for spaces on the web, as detailed herein. In other embodiments, the search service constrains the client to searching a very small number of supported spaces within the distributed computing environment.

【0225】 前に述べたように(図9および付属の文章を参照)、スペースはクライアント
によって実行されるサービスからの結果を格納する便利なメカニズムを提供する
。結果にスペースを使用する際に、小型クライアントはサービスを実行した結果
をバラバラにして受け取ることができる。いくつかのサービスでは、大量の結果
が生成されることがある。スペースを使用してサービスからな結果を格納するこ
とにより、一度に全部の結果を受け取るだけのリソースがないクライアントでも
そのサービスを使用することができる。さらに、スペースを使用して結果を格納
することにより、大量の結果が返されるときに高速な使用中サーバ上で実行され
ているサービスを低速なクライアントとの直接的な対話操作から解放することが
できる。したがって、サービスをすぐに解放することができ、他のクライアント
で使用できる。
As mentioned previously (see FIG. 9 and accompanying text), spaces provide a convenient mechanism for storing results from services performed by clients. When using space for results, small clients can receive the results of executing services in pieces. Some services can generate a large amount of results. By using spaces to store results from a service, clients can also use the service if they do not have the resources to receive all the results at once. In addition, by using space to store results, services running on a fast busy server can be relieved of direct interaction with slow clients when large numbers of results are returned. it can. Therefore, the service can be released immediately and can be used by other clients.

【0226】 スペースは、異なるクライアントにより、かつ/または異なるときに、結果に
アクセスするための便利なメカニズムを備える。たとえば、クライアントは結果
をまるごとは使用できない場合があるが、ユーザはその結果にアクセスできる他
のクライアントを後で使用してその結果の残り部分にアクセスすることを望む。
たとえば、結果には、株式市況や、現在の株価の表示(PDAからアクセス可能
)、および株価チャートの表示(後でラップトップからアクセス可能)などがあ
る。また、結果に対し分散コンピューティング環境でスペースを使用すると、ク
ライアントは一方のサービスの結果を他方のサービスに供給することができ、し
かも、結果を最初にダウンロードする必要がない。たとえば、上の株式市況の場
合、PDAはチャートを他のサービスに送り、そこでチャートを印刷することが
でき、PDAでチャート自体をダウンロードする必要はない。したがって、結果
スペースは、クライアントが結果を処理または受け取らずに、他のクライアント
またはサービスに渡すためのメカニズムを提供する。
Spaces provide a convenient mechanism for accessing results by different clients and / or at different times. For example, the client may not be able to use the entire result, but the user wants to use another client that can access the result later to access the rest of the result.
For example, the results may include a stock quote, a display of the current stock price (accessible from the PDA), and a stock price chart display (accessible later from a laptop). Also, using space in a distributed computing environment for results allows clients to feed the results of one service to another, without having to download the results first. For example, in the stock market situation above, the PDA can send the chart to another service where it can be printed and the PDA does not need to download the chart itself. Thus, the result space provides a mechanism for clients to pass results to other clients or services without processing or receiving them.

【0227】 異なる実施形態では、結果に対しスペースを使用する決定は、サービスによっ
て命じられるか、クライアントによって命じられるか、および/またはクライア
ントによって要求される。サービスは、たとえば、その通知で、結果に対しスペ
ースを使用することを提案することがある。一実施形態では、クライアントまた
はサービスのいずれかが結果に対する新しいスペースを生成するか、または結果
に対し既存のスペースを使用することができる。スペースの生成に関する説明を
参照のこと。
In different embodiments, the decision to use space for the result is ordered by the service, ordered by the client, and / or requested by the client. The service may, for example, in its notification offer to use space for the result. In one embodiment, either the client or service can create new space for the results or use existing space for the results. See the description of space generation.

【0228】 一実施形態では、結果に対しスペースを使用しても、必ずしも、サービスがす
べての結果をそのスペースに入れる必要があるわけではない。サービスが生成す
る結果に対し代替えもありうる。たとえば、結果の一部または全部をメッセージ
によりインラインでクライアントに送ることができる。それとは別に、結果をス
ペースに入れ、その後、通知メッセージをクライアントに送り、結果を参照する
ようにできる(たとえば、結果へのURIや結果の通知へのURIを含める)。
他のオプションとして、結果をスペースに入れ、スペースからのイベントにより
通知を送る方法もある。たとえば、クライアントおよびサービスは何らかの特定
の名前で結果を呼び出し、クライアントはそのように名前を付けられた結果をス
ペースに追加するときにイベントを受け取るため(上記のものなどのスペース機
能を使用して)スペースに登録することができる。イベント通知に関する上の説
明を参照のこと。
In one embodiment, using space for results does not necessarily require the service to put all results in that space. There may be alternatives to the results generated by the service. For example, some or all of the results can be sent inline to the client by message. Alternatively, you can put the results in a space and then send a notification message to the client to refer to the results (eg, include a URI to the results or a URI to notify the results).
Another option is to put the results in a space and send a notification with an event from the space. For example, clients and services call the result under some specific name, and the client receives an event when adding such a named result to the space (using space features such as the one above). You can register in the space. See above for event notification.

【0229】 したがって、サービスが結果をクライアントに返すいくつかの異なるメカニズ
ムを分散コンピューティング環境内で使用することができる。実際の結果をXM
Lメッセージ内の値でクライアントに返すか、または結果をスペースに置かれて
いる実際の値(または、実際の結果に対する通知)による参照でクライアントに
返され、クライアントはスペース内の結果を参照しているメッセージを受け取る
。さらに、結果または結果通知をスペース内に置き、イベントでクライアントに
通知できる。
[0229] Thus, several different mechanisms by which a service returns a result to a client can be used within a distributed computing environment. The actual result is XM
The value in the L message is returned to the client, or the result is returned to the client by reference by the actual value (or notification of the actual result) placed in the space, and the client references the result in the space. You will receive a message. In addition, results or result notifications can be placed in the space and events can be notified to clients.

【0230】 結果を処理する他のメカニズムでは、クライアントが供給する結果に対し他の
サービスを指定する。たとえば、クライアントは、結果を出力するサービスを実
行する場合、そのサービスに(たとえば、XMLメッセージングを介して)、結
果を他のサービスに送ってさらに処理するよう指示することができる。これには
、他のサービスを実行して結果を渡すために、クライアントが他のサービスに通
知のURIを指示し、結果出力サービスが他のサービスへのゲートを生成するよ
うにする必要がある。この例では、結果出力サービスは他のサービスのクライア
ントでよい。いくつかの実施形態では、クライアントはスキーマまたは事前構築
されたゲートを結果出力サービスに送り、サービスにアクセスしてさらに処理す
る。さらに処理するサービスの例として、元のクライアントの結果を表示するこ
とができる表示サービスがある。この表示サービスは、クライアントと同じデバ
イスにあるか、またはそのようなデバイスと関連付けられる。
Other results processing mechanisms specify other services for client-supplied results. For example, if a client executes a service that outputs a result, the client may instruct the service (eg, via XML messaging) to send the result to another service for further processing. This requires that the client direct the other service to the URI of the notification to execute the other service and pass the result, and the result output service creates a gate to the other service. In this example, the result output service may be a client of other services. In some embodiments, the client sends a schema or pre-built gate to the result output service to access the service for further processing. An example of a service to be further processed is a display service that can display the results of the original client. This display service is on or associated with the same device as the client.

【0231】 結果スペースおよびメソッド・ゲートにより、分散コンピューティング環境で
は、メモリが最低限しかなく、帯域幅の非常に狭い、シン・クライアントにとっ
て実用的な単純なリモート・メソッド呼び出しを提供することができるが、それ
は、従来のリモート・メソッドを呼び出し手法のように巨大なプログラム・オブ
ジェクトが(必要なクラスとともに)ネットワーク上で(必ず)クライアントに
返される困った副作用がないからである。その代わり、結果は、結果スペースに
返すことができ、必要な場合のみ(そして、クライアントに常駐できる場合)、
クライアントにダウンロードされる実際のオブジェクトである。
The result space and method gates can provide simple remote method invocations that are practical for thin clients with minimal memory and very low bandwidth in a distributed computing environment. However, it does not have the annoying side-effect of huge program objects (along with the required classes) being returned to the client (always) over the network (as is the case with traditional remote method invocation techniques). Instead, the results can be returned in the result space and only when needed (and resident on the client),
It is the actual object downloaded to the client.

【0232】 分散コンピューティング環境がリモート・メソッドを呼び出すため備えている
メカニズムは以下のとおりである(「ゲート」の項のメソッド・ゲートの説明も
参照のこと)。スペース内でオブジェクトを通知することができる(たとえば、
サービスとして、またはサービスの一部として)。通知は、オブジェクトのUR
I(たとえば、URL)をセキュリティ証明書およびXMLスキーマなどの他の
アクセス・パラメータとともに含む参照を含む。クライアントは、オブジェクト
に対しクライアント・メソッド・ゲートを設定しているか、または構築し、これ
は、オブジェクト(またはサービス)自体のすべてのメソッドについて、メソッ
ド・パラメータを取り、要求XMLメッセージを作成してオブジェクトのメソッ
ドを呼び出すラッパー・メソッドを備える。XMLメッセージは、サービス・オ
ブジェクト上で実際のメソッドを呼び出すサービス・ゲートに送られる。そのメ
ソッドが結果オブジェクトを返すと、サービス・ゲートは結果オブジェクトを結
果スペース内にポストし、メッセージを結果オブジェクトへの参照とともにクラ
イアントに返す。
The mechanism provided by the distributed computing environment to invoke remote methods is as follows (see also the description of method gates in the "Gate" section): You can post an object within a space (for example,
As a service or as part of a service). Notification is the UR of the object
Contains a reference that contains the I (eg, URL) along with other access parameters such as security credentials and XML schema. The client has set or constructed a client method gate for the object, which takes method parameters and creates a request XML message for every method of the object (or service) itself to create the object. It has a wrapper method to call the method. The XML message is sent to the service gate which calls the actual method on the service object. When that method returns a result object, the service gate posts the result object in the result space and returns the message to the client with a reference to the result object.

【0233】 したがって、クライアントがリモートメソッドを呼び出すためには、クライア
ントはまず、上述のように、オブジェクト(たとえば、サービス)をインスタン
ス化するメッセージを送る。一実施形態では、オブジェクトのインスタンス化を
行うには、結果スペースを作成するかまたは生成する。他の実施形態では、結果
スペースの作成は、オブジェクトのインスタンス化とは別である。インスタンス
化により、オブジェクトURIがクライアントに返され、クライアントとサービ
ス・ゲートは、クライアントはインスタンス化を要求したときに動的に作成され
る。いくつかの実施形態では、結果スペースはすでに存在しており、オブジェク
ト(サービス)によって通知される。これらのゲートの一部または全部も事前に
構築されるかまたは再利用されている。
Therefore, for a client to call a remote method, the client first sends a message that instantiates an object (eg, service), as described above. In one embodiment, instancing an object involves creating or creating a result space. In other embodiments, creating the result space is separate from instantiating the object. Instantiation returns an object URI to the client and the client and service gate are dynamically created when the client requests instantiation. In some embodiments, the result space already exists and is advertised by the object (service). Some or all of these gates have also been pre-built or reused.

【0234】 クライアントがオブジェクトをインスタンス化した後、適切なクライアント・
メソッド・ゲートをローカルで呼び出すと、上述のように、実際のリモート・オ
ブジェクトへのリモート・コールが影響を受ける。分散コンピューティング環境
のリモート・メソッド呼び出しの方式は再帰的であり、クライアント・ゲートが
呼び出されると、オブジェクト自体ではなく、オブジェクト参照がクライアント
に返される。このような返されたオブジェクトはすでにインスタンス化されてい
ることに注意されたい。いくつかの実施形態では、クライアント側は、リモート
で呼び出すだけでなく、オブジェクト自体を丸ごとダウンロードする決定を下す
After the client instantiates the object, the appropriate client
Invoking the method gate locally affects the remote call to the actual remote object, as described above. The method of remote method invocation in a distributed computing environment is recursive, and when a client gate is invoked, the object reference is returned to the client rather than the object itself. Note that such returned objects have already been instantiated. In some embodiments, the client side makes the decision to download the entire object itself, as well as calling it remotely.

【0235】 上述のように呼び出されたメソッドまたはサービスは、結果ドキュメントと関
連付けられている子ゲートを生成する。メソッドは、参照自体ではなく、参照の
子ゲート(またはクライアントが子ゲートを構築するためのスキーマ、URIお
よび証明書)を返す。その後、クライアントは、子ゲートを通じて参照にアクセ
スすることができる。子ゲートは、メソッド・ゲートでもよい。
The method or service invoked as described above creates a child gate associated with the result document. The method returns the reference's child gates (or the schema, URI, and certificate for the client to build the child gates) rather than the reference itself. The client can then access the reference through the child gate. The child gate may be a method gate.

【0236】 上述のように、分散コンピューティング環境で提供されるこのリモート・メソ
ッド呼び出しにより、実際の結果オブジェクトを、サービス結果スペース内に格
納できる(これは、たとえば、サーブレットにより動的に作成できる)。結果ス
ペースは一時的である。結果スペースは、クエリ結果キャッシュとして機能する
ことができる。古い結果領域をクリーンアップするサーバ・ソフトウェア(ガベ
ージ・コレクタ)が結果キャッシュ内を巡回する。分散ガベージ・コレクション
を採用するが、それは、クライアントがスペースを必要としなくなったことを示
すか、またはサーバの管理者が適切な制限値を設定することにより、破棄される
まで結果スペースが満たされるからである。
As mentioned above, this remote method invocation provided in the distributed computing environment allows the actual result object to be stored in the service result space (which can be dynamically created by, for example, a servlet). . The result space is temporary. The result space can act as a query result cache. Server software (garbage collector) that cleans up the old result area crawls the result cache. It uses distributed garbage collection because it indicates that the client no longer needs the space or the server administrator sets an appropriate limit to fill the resulting space until it is destroyed. Is.

【0237】 図23に戻ると、デフォルトのスペース350の図が示されている。分散コン
ピューティング環境は、少なくとも1つのデフォルト・スペースを用意し、クラ
イアントは通知の初期セットを見つけられるようにする。デバイスは、事前構築
されたゲートを組み込んだ、ローカルに存在するデフォルト・スペースを備える
ことができる。そのデフォルト・スペースで通知されたサービスは、ローカルで
そのデバイスに存在し、デバイスが分散コンピューティング環境に参加するのを
有効にするかまたは容易にするシステム・ソフトウェアを備える。
Returning to FIG. 23, a diagram of the default space 350 is shown. The distributed computing environment provides at least one default space to allow clients to find an initial set of notifications. The device may have a locally existing default space that incorporates a prebuilt gate. The advertised service in its default space resides locally on the device and comprises system software that enables or facilitates the device's participation in a distributed computing environment.

【0238】 デフォルト・スペース350は、図23に示されているように、外部スペース
を特定する1つまたは複数のメカニズム352を備える。デフォルト・スペース
内の1つのサービスが、上述のスペース発見プロトコルを実行して外部スペース
を見つけることができる。また、デフォルト・スペース内で外部スペースを通知
することができる。さらに、外部スペースを決定するまたは見つけるデフォルト
・スペース内でサービス(たとえば、サーチ・エンジンまたはサーチ・エンジン
へのプロキシ・サーバ)を通知する。各スペースは、ファイル・システムのマウ
ント・ポイントに似ている。したがって、分散コンピューティング環境はサービ
スに対しサーチ可能な動的マウント・ポイントを提供できる。デフォルト・スペ
ースは、分散コンピューティング環境へのクライアントの初期マウント・ポイン
トである。
The default space 350 comprises one or more mechanisms 352 for identifying external spaces, as shown in FIG. One service in the default space can execute the space discovery protocol described above to find the external space. Also, the external space can be notified in the default space. In addition, it advertises services (eg, search engines or proxy servers to search engines) within default spaces that determine or find external spaces. Each space is similar to a file system mount point. Thus, the distributed computing environment can provide searchable dynamic mount points for services. The default space is the client's initial mount point into the distributed computing environment.

【0239】 デフォルト・スペースまたはデフォルト・スペースへのアクセス機能をデバイ
スに組み込むことができる。デバイスに存在するデフォルト・スペースおよびロ
ーカル・サービスを通じて、分散コンピューティング環境にクライアント実行環
境を用意できる。デバイスのローカル・サービスおよびデフォルト・スペース・
サービスは、事前構築ゲートを組み込んでいる。デフォルト・スペース内にリス
トされている組み込みサービスの1つは発見プロトコルを実行するサービスであ
り、クライアントは追加(たとえば、外部)スペースを特定することができる。
デフォルト・スペースは、クライアント・ユーザがスペースを参照し、サービス
を選択し、インスタンス化するために使用するクライアント用の実行環境を提供
する組み込みサービスを備える。このようなサービスは、クライアントが文字列
全体(たとえば、スペースサーチのためのキーワード)を操作する、結果参照(
たとえば、スペースのリスティング、またはスペース内のサービス・リスティン
グ)を表示または参照する、アイテム(たとえば、サービスを選択してインスタ
ンス化するため)を選択するなどのための単純なユーザ・インターフェースを備
える。
A default space or a function for accessing the default space can be built into the device. A client execution environment can be provided in a distributed computing environment through the default space and local services that reside on the device. Device local services and default space
The service incorporates a prebuilt gate. One of the built-in services listed in the default space is the service that runs the discovery protocol, which allows clients to identify additional (eg, external) spaces.
The default space comprises built-in services that provide an execution environment for clients that client users can use to browse the space, select services, and instantiate them. Such services allow clients to manipulate entire strings (eg, keywords for space search), result lookup (
For example, it provides a simple user interface for viewing or browsing a space listing, or a service listing within a space, selecting an item (eg, to select and instantiate a service), and so on.

【0240】 主にサービスを提供するデバイスは、さらに、デフォルト・スペースも備え、
サービスでさまざまなスペース内での自己通知を管理できるようにする組み込み
サービスをデフォルト・スペースに備えることができる。たとえば、プリンタな
どのデバイスは、ローカル・エリア・ネットワーク上でスペースを(たぶん、発
見プロトコルを利用して)見つけ、プリンタ・サービスの通知をそのスペースに
追加する組み込みデフォルト・サービスを備える。このサービスはさらに、たと
えば、リースを更新したり、プリンタのXMLスキーマを更新するなどして、L
ANスペース内のプリンタ・サービス通知を維持することもできる。
Devices that primarily provide services also include a default space,
The default space can have built-in services that allow the service to manage self-notification in different spaces. For example, devices such as printers have built-in default services that find a space (perhaps utilizing a discovery protocol) on a local area network and add printer service notifications to that space. The service can also use L to update the lease, update the printer XML schema, and so on.
It is also possible to maintain printer service notifications in the AN space.

【0241】 サービスを提供するいくつかのデバイスでは、サービスを通知し、その通知を
維持するのにスペースを見つけるオーバーヘッドは望ましくない。一実施形態で
は、サービス通知をパブリッシュするために1つまたは複数のスペースをサーチ
し維持するのではなく、いくつかのデバイスのサービスが接続要求に対する応答
としてそれらの通知を送る。たとえば、プリンタ・サービスを近接性ベースで利
用できるプリンタ・デバイスは、スペース内で通知を維持しない(デバイスで、
またはデバイスの外部で)。その代わり、他のデバイスがプリンタ・デバイスと
の接続を確立すると(たとえば、クライアントを実行しているラップトップを所
有するユーザがドキュメントを印刷しようとする)、プリンタ・サービスはサー
ビス通知を送り、プリンタ・デバイスで印刷機能を提供するサービスに接続し、
そのサービスを実行するXMLサービス・スキーマを提供することができる。さ
らに、いくつかのデバイスではある近傍またはローカル・ネットワークでサービ
スに対する通知を維持するのみである。このようなデバイスでは、広範にアクセ
ス性に関してトランスポートへのアクセスをサポートすることを望まない、また
はアクセスできない場合がある。
For some devices that provide a service, the overhead of notifying the service and finding space to maintain that notification is undesirable. In one embodiment, rather than searching and maintaining one or more spaces to publish service notifications, the services of some devices send those notifications in response to a connection request. For example, a printer device that has proximity-based printer services available will not keep notifications in the space.
Or outside the device). Instead, when another device establishes a connection with the printer device (for example, a user who owns a laptop running a client tries to print a document), the printer service sends a service notification to the printer.・ Connect to the service that provides the printing function on the device,
An XML service schema can be provided that implements that service. Moreover, some devices only maintain notification for services in some neighborhood or local network. In such devices, it may not be desirable or accessible to support access to the transport for accessibility in a broad range.

【0242】 デバイスがスペース内でサービス通知を避けるまたは制限することが望ましい
サービス・デバイスの一例として、機能を近接性ベースで利用できるデバイスが
ある。近接性ベース・サービスは、要求があった場合に機能の通知を行うことが
できる。これらの通知は、広くアクセスできない場合がある。たとえば、近接性
ベース・サービスは無線通信システムで提供できる。「無線」という用語は、電
磁波または音波が電線ではなく大気中を通して信号を伝送する通信、監視、また
は制御システムを意味する。ほとんどの無線システムでは、無線周波(RF)ま
たは赤外線(IR)の波長を使用する。通常、近接ベースの無線システムでは、
トランシーバを備えるデバイスは通信チャネルを確立し維持するために他のデバ
イスから到達範囲内(近接)になければならない。デバイスは、他のデバイスを
無線ローカル・エリア・ネットワーク(LAN)に接続するためのハブとするこ
ともできる。
One example of a service device where it is desirable for the device to avoid or limit service notifications in space is a device whose functionality is available on a proximity basis. Proximity-based services can provide feature notifications when requested. These notices may not be widely accessible. For example, proximity-based services can be provided in wireless communication systems. The term "wireless" means a communication, monitoring, or control system in which electromagnetic waves or waves transmit signals through the atmosphere, rather than electrical wires. Most wireless systems use radio frequency (RF) or infrared (IR) wavelengths. Usually in proximity-based wireless systems,
The device with the transceiver must be within range (proximity) from other devices to establish and maintain the communication channel. The device may also be a hub for connecting other devices to a wireless local area network (LAN).

【0243】 前述のように、分散コンピューティング環境の実施形態では、クライアントが
サービスとランデブーするためのルックアップ・スペースを使用するメカニズム
を提供する。近接コンピューティング環境では、分散コンピューティング環境の
一実施形態は、クライアントがランデブー・ポイントとしてルックアップ・スペ
ースを使用せずにサービスを発見するために使用するサービス発見メカニズムを
提供する。近接コンピューティング環境の一例として、IrDAポイントツーポ
イント通信環境がある。近接コンピューティング環境では、近接メカニズムがク
ライアントに対するサービスの「物理的」位置を見つけることができる。たとえ
ば、IrDA環境では、クライアント・デバイスは、クライアントが使用するこ
とを望んでいるサービスを含むデバイスを物理的に指している。
As mentioned above, embodiments of the distributed computing environment provide a mechanism for a client to use a lookup space to rendezvous with a service. In a proximity computing environment, one embodiment of the distributed computing environment provides a service discovery mechanism that clients use to discover services without using lookup space as a rendezvous point. An IrDA point-to-point communication environment is an example of a proximity computing environment. In a proximity computing environment, proximity mechanisms can find the "physical" location of a service to a client. For example, in an IrDA environment, a client device physically refers to the device that contains the service that the client wants to use.

【0244】 近接サービス発見メカニズムを使用すると、クライアントは、サービス通知を
求めるためにサーチ要求をルックアップ・スペースに送るのではなく、直接サー
ビス通知を求めることができる。クライアント・デバイスはサービス・デバイス
への近接接続を確立しているため、クライアントは目的のサービスを直接要求で
きる。たとえば、PDAクライアント・デバイスはプリンタ・デバイスとの近接
接続を確立している場合があり、クライアントはプリンタ・デバイスのプリンタ
をサービス接続を要求することを「知っている」。
The proximity service discovery mechanism allows a client to request a service notification directly rather than sending a search request to the lookup space to request a service notification. Since the client device has established a proximity connection to the service device, the client can directly request the desired service. For example, a PDA client device may have established a proximity connection with a printer device and the client "knows" the printer of the printer device to request a service connection.

【0245】 一実施形態では、クライアントは、近接サービス発見メッセージをサービス・
デバイスに送ることができる。メッセージには、クライアント・デバイスが近接
接続を行う相手であるサービス・デバイスの目的のサービスを指定する情報を含
む。一実施形態では、サービス・デバイスのサービスは近接サービス発見メッセ
ージに応答し、クライアントに、目的のサービスに接続するためにクライアント
が使用するサービス通知を送る。近接サービス発見メッセージは、さらに、クラ
イアントの認証を行い、サービスでクライアントの能力を確定するために使用さ
れる情報を含む。受け取ったサービス通知を使用する際に、クライアントは、目
的のサービスとの通信を確立するためのゲートを確立することができる。しかし
ながら、広くアクセス可能なスペースで通知を維持することを望まない、または
維持できないサービスに対し通知をパブリッシュすることが望ましい。分散コン
ピューティング環境の一実施形態では、近接ベース・デバイスなどのサービス通
知をパブリッシュしないデバイスとの接続を確立するデバイスは、非パブリッシ
ュ・デバイスから受け取ったサービス通知をパブリッシュすることができる。た
とえば、近接ベース・デバイスとの接続を確立し、代替えトランスポート接続を
設定するデバイスは、代替えトランスポート環境で近接ベース・デバイスから受
け取ったサービス通知をパブリッシュ(または再パブリッシュ)し、近接ベース
・デバイス・サービスをデバイスの通常の近接範囲の外にある他のデバイスによ
り((再)パブリッシュされたサービス通知を通じて)使用できるようにする。
In one embodiment, the client sends the proximity service discovery message to the service
Can be sent to the device. The message includes information that specifies the intended service of the service device with which the client device makes a proximity connection. In one embodiment, the service of the service device responds to the proximity service discovery message and sends the client a service notification that the client will use to connect to the desired service. The proximity service discovery message further includes information used to authenticate the client and establish the client's capabilities with the service. When using the received service notification, the client can establish a gate to establish communication with the desired service. However, it is desirable to publish notifications for services that do not want or cannot maintain them in a widely accessible space. In one embodiment of a distributed computing environment, devices establishing a connection with devices that do not publish service notifications, such as proximity-based devices, can publish service notifications received from non-publishing devices. For example, a device that establishes a connection with a proximity-based device and sets up an alternate transport connection publishes (or republishes) service notifications received from the proximity-based device in the alternate transport environment and Make the service available (via a (re) published service notification) by other devices that are outside the device's normal proximity.

【0246】 パブリッシュ・デバイスが、発見および/またはルックアップ・サービスを通
じて近接ベース・デバイスのローカルでパブリッシュされたサービスを通知を特
定するか、またはそれとは別に、サービス通知をローカル・サービス・デバイス
がパブリッシュしないが、その代わりに、そのサービス通知を、上述のように、
接続の確立後、ローカル・デバイスがパブリッシュ・デバイスに送る。一実施形
態では、通知を維持するデバイスがローカル・デバイスに接続されているか、接
続することが可能である限り、再パブリッシュされたサービス通知は使用可能に
できる。たとえば、パブリッシュ・デバイスがローカル・デバイスから切断され
た場合(たとえば、デバイスの近接範囲から外へ移動する)、サービス通知はス
テールになるか、または削除される。通知が格納されているスペースがリース更
新メッセージをパブリッシュ・デバイスに送ることができるようにするリース・
メカニズムを実現できる。パブリッシュ・デバイスは、ローカル・デバイスとの
接続を確認し、これによりローカル・デバイスが利用できなくなったときにその
ことをスペースが検出できるようにする。ローカルの近傍(たとえば、近接領域
)またはローカル・ネットワークに対し、ローカル・デバイスまたは管理ポリシ
ーにより、サービス通知を再パブリッシュする規則を定める。図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を含む)上に格
納できる。
The publish device specifies notifications of locally published services of proximity-based devices through discovery and / or lookup services, or alternatively, service notifications are published by the local service device. But instead, instead of sending the service notification, as described above,
After establishing the connection, the local device sends to the publish device. In one embodiment, republished service notifications may be enabled as long as the device that maintains the notification is connected to or capable of connecting to the local device. For example, if the publish device disconnects from the local device (eg, moves out of the device's proximity), the service notification will be stalled or deleted. A lease that allows the space in which the notification is stored to send a lease renewal message to the publish device.
The mechanism can be realized. The publish device verifies the connection with the local device so that space can detect when the local device becomes unavailable. Local devices or administrative policies define rules for republishing service announcements to local neighbors (eg, proximity areas) or local networks. FIG. 24 illustrates a device for bridging a proximity-based device to another transport mechanism that allows services provided by the proximity-based device to be accessed by devices outside the device's proximity, according to one embodiment. It is a figure which shows an example. The publish device 1404 is connected to a network 1412, such as an Ethernet LAN or the Internet, and the proximity devices 1400 and 14
Establishes and maintains a proximity connection 1414 with 04. The proximity connection can be, for example, a wireless connection or a wired LAN connection. Proximity devices 1400 and 14
02 each send a post-connection service notification to the publishing device 1404, or alternatively, the publishing device identifies the service notification using a discovery and / or lookup service on the proximity connection. Publish device 1404 republishes service notifications 1416 and 1418 in space 1406 to make services provided by neighboring devices available to other devices 1408 and 1410 on network 1412. Space 1406 is the publish device or LA
It can be stored on other devices (including devices 1408 and 1410) connected to N.

【0247】 デバイス1408および1410を含むLAN上の他のデバイスは、スペース
1406を発見し、再パブリッシュされたサービス通知1416および1418
を近接ベース・デバイスについてルックアップし、前記のXMLメッセージ・パ
ッシング方式を使用して近接ベース・デバイス1400および1402上でこれ
らのサービス(デバイス1404はプロキシまたブリッジとして機能する)との
デートの通信を確立し、近接デバイスとの間の要求の発送および結果の受取を行
う。パブリッシュ・デバイス1404は、ネットワーク1412と近接ベース・
デバイスへの近接接続1414との間のブリッジとして機能する。
Other devices on the LAN, including devices 1408 and 1410, have discovered space 1406 and have republished service notifications 1416 and 1418.
For proximity-based devices and communicates with these services (device 1404 acts as a proxy or bridge) on proximity-based devices 1400 and 1402 using the XML message passing scheme described above. Establishes and routes requests to and receives results from neighboring devices. The publish device 1404 is a proximity based network 1412.
It acts as a bridge to the proximity connection 1414 to the device.

【0248】 リース リースは、分散コンピューティング環境で、部分的な障害、リソースの同期(
スケジューリング)を処理し、秩序だったリソースのクリーンアップ・プロセス
を実施するために使用される。リースを使用すると、分散システム全体で行き来
する独立のクライアントおよびサービスを管理することができる。クライアント
がサービス(スペース・サービスを含む)から取得するさまざまなリソースは、
これらのサービスからリースすることができる。一般に、すべてのリソースをリ
ースするできるわけでも、またリースする必要があるわけでもない。一実施形態
では、どのリソースをリースする必要があるかの決定は、それぞれの特定のサー
ビスの実装に任されている。特に、大量のクライアントが使用するリソースが同
時に、リースを必要としない場合があったり、あるいはその代わりに、カスタム
・リース・プロトコルを必要とする場合もある。このようなはリースのクラスは
、サービス・プロバイダに任されている。たとえば、トランザクションを実装す
るものなどのカスタム・プロトコルは、基本リース方式に基づいて構築できる。
一実施形態では、基本リース・モデルは相対的な時間ベースのモデルである。
Lease Lease is a distributed computing environment where partial failures, resource synchronization (
Scheduling) and perform an orderly resource cleanup process. Leasing allows you to manage independent clients and services that travel back and forth throughout your distributed system. The various resources that clients get from services (including space services) are:
You can lease from these services. In general, not all resources can or need to be leased. In one embodiment, the decision of which resources need to be leased is left to the implementation of each particular service. In particular, the resources used by a large number of clients may not require a lease at the same time, or may instead require a custom lease protocol. The class of such lease is left to the service provider. For example, custom protocols such as those that implement transactions can be built on the basic leasing scheme.
In one embodiment, the basic lease model is a relative time-based model.

【0249】 サービスは、リースをクライアントに発行し、リースに対し操作を実行する。
一実施形態では、サービスのこのようなリース機能はすべてそのサービスのXM
Lスキーマの一部である。したがって、クライアントはそのゲート(サービスに
対応し、サービスのXMLスキーマに対し構築される)を使用してリース操作を
実行することができる。一実施形態では、リースを発行するサービスはすべて、
(i)リースの更新(リースの指定されたパラメータ(たとえば、リースID、
リース証明書)、要求された新しいリース時間)、および(ii)リースの取り
消し(リースの指定されたパラメータ(たとえば、リースID、リース証明書)
という2つのリース操作を行える(リースの所有者によってのみ使用可能)。一
実施形態では、すべてのリースは交渉可能な特定の相対的時間(リースの持続時
間)について認可される。リクエスタではある時間を指定し(たとえば、秒で)
、グランタ(grantor)ではその時間が経過するまでの間リースを認可できる。一
実施形態では、値を−1にすると、無期限のリースを指定することができる。
The service issues a lease to the client and performs operations on the lease.
In one embodiment, all such leasing functions for a service are XMs for that service.
It is part of the L schema. Thus, the client can use that gate (which corresponds to the service and is built against the XML schema of the service) to perform the lease operation. In one embodiment, all services that issue leases
(I) lease renewal (lease specified parameters (eg, lease ID,
Lease certificate), requested new lease time), and (ii) lease revocation (lease specified parameters (eg lease ID, lease certificate))
Two leasing operations can be performed (only usable by the owner of the lease). In one embodiment, all leases are granted for a particular negotiable relative time (duration of lease). The requester specifies a certain time (for example, in seconds)
, The grantor can grant the lease until the time expires. In one embodiment, a value of -1 may specify a permanent lease.

【0250】 一実施形態では、サービス通知に1つまたは複数のリース・アドレスを含める
ことができる。一実施形態では、リース・アドレスはURIとすることができる
。サービス・リソース・リースを更新する、または取り消す標準リース・メッセ
ージを、リースURIに送ることができる。リースURIの例: <leaser>service1://resource1</leaser>
In one embodiment, the service advertisement may include one or more leased addresses. In one embodiment, the lease address can be a URI. A standard lease message to renew or cancel a service resource lease can be sent to the lease URI. Example of lease URI: <leaser> service1: // resource1 </ leaser>

【0251】 通知は、さらに上述のように、さまざまなリース・メッセージを含む。リース
・メッセージは、サービスのリソースに対するリースを更新するメッセージおよ
びリースを取り消すメッセージを含むことができる。一実施形態では、通知にメ
ッセージをXMLスキーマで含めることもできる。
Notifications also include various lease messages, as described above. The lease message may include a message to renew a lease for a resource of service and a message to cancel a lease. In one embodiment, the notification may also include the message in an XML schema.

【0252】 リース・メカニズムは、サービスおよびクライアントの障害を検出するメカニ
ズムを備える。リースはさらに、共有および排他的リソース・アクセスを実現す
るメカニズムも備える。一実施形態では、すべてのサービス・リソースはリース
がないか(リソースがリースされておらず、したがって使用できない)、共有リ
ソースがあるか(リソースは複数のクライアントによりアクセスされる)、また
は排他的リースがあるか(リソースは一度に1つのクライアントだけによりアク
セスされる)のいずれかである。一実施形態では、すべてのリソースはリースが
ない状態から始まる。リースがない状態は、現在基礎となるリソースにアクセス
がないことを意味し、リソースのインタレストが存在していてリースに使用可能
であることを示す。リース・レベルは、「なし」から「共有」へ、「なし」から
「排他的」へ、または「共有」から「排他的」へ上げることができる。リース独
立レベルも、「排他的」から「共有」へ、「排他的」から「なし」へ、または「
共有」から「なし」へ下げることができる。一実施形態では、クライアントは自
発的にリース独立レベルを上下させるか、またはサービスによりそのようにする
ことを要求することができる。サービスからの応答メッセージは、独立レベルの
変更が受け入れられたかどうかを示す。
The leasing mechanism provides a mechanism for detecting service and client failures. Leases also provide a mechanism to provide shared and exclusive resource access. In one embodiment, all service resources have no leases (resources are not leased and therefore unavailable), shared resources (resources are accessed by multiple clients), or exclusive leases. Either (the resource is accessed by only one client at a time). In one embodiment, all resources begin with no leases. The no-lease state means that the underlying resource is currently not accessed, indicating that there is an interest in the resource and it is available for lease. The lease level can be increased from "none" to "shared", "none" to "exclusive", or "shared" to "exclusive". The lease independence level can also be from "exclusive" to "shared", "exclusive" to "none", or "
You can go from "shared" to "none". In one embodiment, the client may voluntarily raise or lower the lease independence level or request that the service do so. The response message from the service indicates whether the isolation level change was accepted.

【0253】 要求−応答メッセージのペアを使用して、リースの請求、解放、および更新を
行うことができる。予約されているXMLタグを使用して各メッセージにタグを
付け、メッセージがリース・メッセージであることを示す。分散コンピューティ
ング環境では、メッセージの完全な構成を必ずしも定義しない。このような実施
形態では、メッセージがリース・メッセージとしてタグ付けされる限り、サービ
ス開発者側でカスタム・メッセージ・コンテンツを付加することができる。
Request-response message pairs can be used to solicit, release, and renew leases. Each message is tagged using the reserved XML tag to indicate that the message is a lease message. In a distributed computing environment, the full composition of messages is not necessarily defined. In such an embodiment, the service developer can add custom message content as long as the message is tagged as a lease message.

【0254】 一実施形態では、リースされたリソースを使用するクライアントは、(i)リ
ソースを共有または排他的として請求する、(ii)リソース請求を解放する(
要求された場合またはリソースで終了した場合)、および(iii)更新メッセ
ージに応答する(同じまたは異なる独立レベルの他の請求により)のいずれかを
行うことを期待される。更新メッセージは、サービスにより(たとえば、定期的
間隔で)クライアントの障害を検出するために送られる。この間隔(更新メッセ
ージが送られる)は、サービス固有である。一定時間経過後更新メッセージへの
応答が発行されない場合(たとえば、サービス通知で知らされた時間に基づき)
、リソース再利用プロセスがサービス内で開始し、そのリースを完全に破棄する
。このような実施形態では、クライアントに送られる更新メッセージは、タイミ
ングよく取り扱うべきである。図25は、クライアントとインスタンス化された
サービスとの間の更新メッセージ、およびサービス・プロバイダとスペース・サ
ービスとの間の更新メッセージの使い方を示している。両方とも、クライアント
とサービスとの間の更新メッセージの使用と考えることができるが、それは、サ
ービス・プロバイダがスペースの通知サービスへのクライアントであるためであ
ることに注意されたい。
In one embodiment, a client that uses a leased resource (i) charges the resource as shared or exclusive, (ii) releases the resource request (
It is expected to either do so (when requested or done with the resource), and (iii) respond to the update message (by another claim at the same or different independence level). Update messages are sent by the service (eg, at regular intervals) to detect client failures. This interval (the update message is sent) is service specific. If no response to the update message is issued after a certain amount of time (for example, based on the time notified in the service notification)
, The resource reclamation process starts in service and completely destroys the lease. In such an embodiment, update messages sent to the client should be handled in a timely manner. Figure 25 illustrates the use of update messages between clients and instantiated services and between service providers and space services. Both can be thought of as the use of update messages between the client and the service, note that the service provider is the client to the space's notification service.

【0255】 更新メッセージは、クライアントには取り扱いが不便な「アウトオブバンド」
方式で到着する。つまり、クライアントは、更新メッセージがいつサービスから
送られるかを予測できないということである。アウトオブバンド・メッセージ処
理により、クライアントのロジックがやっかいなものになり、その複雑度が増す
。この問題を解決するために、自動リース更新メカニズムを実装し、アウトオブ
バンド・メッセージを取り扱う必要があるクライアントの労力を軽減し、クライ
アントの複雑さを低減する。自動リース更新メカニズムで、それぞれのゲート(
メッセージ、メソッド、および/またはイベント・ゲート)は更新メッセージを
受け取り、クライアントの助けを借りずにそれに自動的に応答することができる
。更新要求に対するデフォルトの応答は、現在のレベルでリースを請求すること
である。それぞれのメッセージ・ゲートは、ゲートが更新メッセージを受け取っ
たときに自動的に通知スペース・サービスに送られる単一の留保更新応答メッセ
ージを含むことができる。この「アウトオブバンド」メッセージは、クライアン
トの代わって処理され、クリーンなクライアント・プログラミング・モデルを生
み出す。一実施形態では、ゲートにより、クライアントはリース・イベント・ハ
ンドラを登録し、応答メッセージの中で異なる独立レベルを指定できる。
The update message is “out of band” which is inconvenient for the client to handle.
Arrives in a fashion. That is, the client cannot predict when an update message will be sent from the service. Out-of-band message processing adds complexity to the client's logic and complicates it. To solve this problem, an automatic lease renewal mechanism is implemented to reduce the effort of the client that needs to handle out-of-band messages and reduce the complexity of the client. With an automatic lease renewal mechanism, each gate (
A message, method, and / or event gate) receives an update message and can respond to it automatically without the help of the client. The default response to a renewal request is to solicit a lease at the current level. Each message gate may include a single reservation update response message that is automatically sent to the notification space service when the gate receives the update message. This "out-of-band" message is processed on behalf of the client, producing a clean client programming model. In one embodiment, the gate allows the client to register a lease event handler and specify different levels of isolation in the response message.

【0256】 分散コンピューティング環境で標準リース・メッセージを定義することができ
る。一実施形態では、カスタム・リース・モデルにより追加リース・メッセージ
を定義することができる。一実施形態では、リースを発行するすべてのサービス
は、更新および取り消しリース・メッセージを送る場合にURIを指定すること
ができる。リース・メッセージは、メッセージの発送側を認証するために埋め込
まれた証明書を含むことができる。一実施形態では、クライアントはサービスの
インスタンス化時に認証サービスから証明書(たとえば、認証証明書)を受け取
り、サービスに送られるメッセージ内にその証明書を埋め込むことができる。一
実施形態では、認証サービスは、そのサービスのサービス通知の中で指定されて
いる。その後、サービスは、クライアントからメッセージで受け取ったときに証
明書を認証する。一実施形態では、サービスは、最初に受け取ったときの証明書
をクライアントが証明書を生成するために使用したのと同じ認証サービスに送る
。したがって、証明書を発行し、リース・メッセージに証明書を埋め込む作業に
より、セキュリティで保護されたリース環境を実現することができる。たとえば
、証明書を取り消しリース・メッセージ内に埋め込むと、承認され証明されてい
るクライアント(およびリースを発行したサービス)以外のものがリースを取り
消すことを事実上禁止することができる。詳細については、「認証とセキュリテ
ィ」の項を参照のこと。
Standard lease messages can be defined in a distributed computing environment. In one embodiment, a custom lease model may define additional lease messages. In one embodiment, all services that issue leases can specify a URI when sending renewal and cancellation lease messages. The lease message can include an embedded certificate to authenticate the sender of the message. In one embodiment, the client may receive a certificate (eg, an authentication certificate) from the authentication service when instantiating the service and embed the certificate in the message sent to the service. In one embodiment, the authentication service is specified in the service announcement for that service. The service then authenticates the certificate when received in the message from the client. In one embodiment, the service sends the certificate when first received to the same authentication service that the client used to generate the certificate. Therefore, by issuing the certificate and embedding the certificate in the lease message, a secure lease environment can be realized. For example, embedding the certificate in the revocation lease message can effectively prevent anyone other than the authorized and certified client (and the service that issued the lease) from revoking the lease. See the Authentication and Security section for more details.

【0257】 図44は、リソースをリースするメカニズムを示す流れ図である。ステップ2
000で、クライアントは、サービスによって提供されるリソース上でリースを
要求する。一実施形態では、リースは時間ベースである、つまり、一定期間をク
ライアントに対し認可される。他の実施形態では、リースは、クライアントまた
はサービスが取り消すまで維持される時間ベースでないリースとすることができ
る。一実施形態では、サービスはスペース・サービスであり、リソースは他のサ
ービスに対するサービス通知であってスペース・サービスによりクライアントに
リースされる。一実施形態では、サービスはスペース・サービスであり、クライ
アントはそれ自体サービスであり、リソースはクライアント/サービスの代わり
にスペース・サービスによるサービス通知をパブリッシュすることである。一実
施形態では、クライアントは、リソースを指定し、リソース上でリースを要求す
るサービスに要求メッセージを送る。一実施形態では、メッセージにより、要求
されたリース期間を指定する。一実施形態では、クライアント・メッセージ・ゲ
ートは、クライアントのために、サービスにリース要求メッセージを送ることが
できる。一実施形態では、リース要求メッセージはXMLメッセージである。
FIG. 44 is a flow chart showing a mechanism for leasing a resource. Step two
At 000, the client requests a lease on the resources provided by the service. In one embodiment, leases are time-based, that is, granted to clients for a period of time. In other embodiments, the lease may be a non-time based lease that is maintained until canceled by the client or service. In one embodiment, the service is a space service and the resource is a service advertisement to other services that is leased to the client by the space service. In one embodiment, the service is a space service, the client is itself a service, and the resource is to publish a service notification by the space service on behalf of the client / service. In one embodiment, the client specifies a resource and sends a request message to the service requesting a lease on the resource. In one embodiment, the message specifies the requested lease period. In one embodiment, the client message gate may send a lease request message to the service on behalf of the client. In one embodiment, the lease request message is an XML message.

【0258】 ステップ2002で、サービスは、リソース上のリースをクライアントに対し
認可する。一実施形態では、サービスは、クライアントからリース要求メッセー
ジを受け取る。その後、サービスはリソース上でリースを認可することができる
。一実施形態では、リース要求メッセージは、要求されたリース期間を含む。一
実施形態では、サービスは、要求されたリース期間以内の認可されたリース期間
についてリースを認可することができる。一実施形態では、要求されたリース期
間は無期限のリースに対応する(つまり、期限切れのない期間)。この実施形態
では、リース自体に期限切れがないため、クライアントまたはサービス側でリー
スを取り消す必要がある。
In step 2002, the service grants the client a lease on the resource. In one embodiment, the service receives a lease request message from the client. The service can then grant the lease on the resource. In one embodiment, the lease request message includes the requested lease period. In one embodiment, the service may authorize the lease for an authorized lease term that is within the requested lease term. In one embodiment, the requested lease period corresponds to an indefinite lease (ie, an unexpired period). In this embodiment, the lease itself does not expire, so the client or service needs to cancel the lease.

【0259】 クライアントに提供されるサービス通知を使用して、サービスのアクセス中に
サービスによって提供され、クライアントによって要求されるリソースの初期リ
ースを確立することができる。一実施形態では、リソース上のリースはサービス
のインスタンス化時に認可される。この実施形態では、クライアントは、リース
を要求しているサービスにリース要求メッセージを送ることはできない。この実
施形態では、サービスは、サービス通知からインスタンス化されたときに、1つ
または複数のリソースに対する初期リースをクライアントに認可することができ
る。たとえば、スペース・サービスは、クライアントからの要求メッセージに応
答して、スペース・サービス上のサービス通知からサービスをインスタンス化す
ることができる。サービスは、クライアントが明示的にリースを要求するメッセ
ージを送りなくても、インスタンス化されたときに、サービスによって提供され
る1つまたは複数のリソース上についてクライアントにリースを認可することが
できる。
The service notification provided to the client can be used to establish an initial lease of the resource provided by the service and requested by the client during access of the service. In one embodiment, the lease on the resource is granted upon instantiation of the service. In this embodiment, the client cannot send a lease request message to the service requesting the lease. In this embodiment, the service may grant the client an initial lease for one or more resources when instantiated from the service advertisement. For example, the space service may instantiate the service from a service notification on the space service in response to a request message from the client. A service, when instantiated, may grant a client a lease on one or more resources provided by the service without the client explicitly sending a message requesting a lease.

【0260】 ステップ2004で、クライアントはリースの更新を要求する。一実施形態で
は、サービスは、クライアントにリース更新要求メッセージを送る。一実施形態
では、すでに認可されているリース期間の期限切れの前にリース更新要求メッセ
ージをクライアントに送る。クライアントは、リースの更新を要求するサービス
に対するリース更新応答メッセージでそのメッセージに応答する。時間ベースの
リースを使用する一実施形態では、リース更新応答メッセージは、要求されたリ
ース期間を含む。時間ベースでないリースを使用する他の実施形態では、リース
更新応答メッセージは、リースを継続することを要求する。一実施形態では、ク
ライアントは、リースがもはや必要なくなったことをサービスに指示するリース
更新応答メッセージを返す。一実施形態では、クライアントがリース更新応答メ
ッセージを送らないと、サービス側では、応答メッセージがサービスに届かない
ということでクライアントがもはやリースを必要としなくなったものと想定する
。たとえば、クライアントはネットワークから切断されている可能性がある。こ
れにより、サービスは、使用されていないリースを検出し、リースしているリソ
ースを含むリソースのガベージ・コレクションを実行するメカニズムを利用でき
る。
In step 2004, the client requests a lease renewal. In one embodiment, the service sends a lease renewal request message to the client. In one embodiment, a lease renewal request message is sent to the client prior to the expiration of the already granted lease period. The client responds to the message with a lease renewal response message for the service requesting the renewal of the lease. In one embodiment using a time-based lease, the lease renewal response message includes the requested lease period. In another embodiment using a non-time based lease, the lease renewal response message requires the lease to continue. In one embodiment, the client returns a lease renewal response message indicating to the service that the lease is no longer needed. In one embodiment, if the client does not send a lease renewal response message, the service side assumes that the client no longer needs a lease because the response message does not reach the service. For example, the client may be disconnected from the network. This allows the service to utilize a mechanism to detect unused leases and to perform a garbage collection of resources, including leased resources.

【0261】 一実施形態では、サービスは、クライアントにリース更新要求メッセージを送
らない。この実施形態では、クライアントはその代わりに、認可されたリース期
間を監視し、認可されたリース期間の期限切れ前にリース更新メッセージをサー
ビスに送る。リース更新メッセージでは、リースしているリソースおよびリソー
スのリースに対する要求された新しいリース期間を指定する。一実施形態では、
要求されたリース期間は無期限のリースに対応する(つまり、期限切れのない期
間)。クライアントは、リースを必要としなくなったら、更新メッセージを送ら
ず、リースを破棄する。
In one embodiment, the service does not send a lease renewal request message to the client. In this embodiment, the client instead monitors the granted lease period and sends a lease renewal message to the service before the granted lease period expires. The lease renewal message specifies the leased resource and the requested new lease period for the lease of the resource. In one embodiment,
The requested lease period corresponds to an indefinite lease (that is, an unexpired period). When the client no longer needs the lease, it sends no renewal message and discards the lease.

【0262】 一実施形態では、クライアント・メッセージ・ゲートがクライアント・プロセ
スのためにリースの更新を処理する。したがって、クライアント・プロセスはリ
ース・メンテナンスの処理の役割から解放される。一実施形態では、クライアン
ト・メッセージ・ゲートは、サービスから送られたリース更新要求メッセージに
自動的に応答する。一実施形態では、デフォルトのリース更新応答メッセージが
ゲートにコンパイルされ、そのリース更新要求メッセージを受け取ったゲートに
よってサービスに自動的に送られる。他の実施形態では、サービスは、リース更
新要求メッセージを送らない。この実施形態では、クライアント・ゲートは、リ
ース更新メッセージを自動的に送る。一実施形態では、自動発送が定期的に実行
される。一実施形態では、クライアント・メッセージ・ゲートが、現在認可され
ているリース期間を監視し、現在認可されているリース期間の期限切れ前にリー
ス更新メッセージを送る。
In one embodiment, the Client Message Gate handles lease renewal on behalf of the client process. Thus, the client process is relieved of the lease maintenance handling role. In one embodiment, the client message gate automatically responds to the lease renewal request message sent by the service. In one embodiment, a default lease renewal response message is compiled into the gate and automatically sent to the service by the gate that received the lease renewal request message. In other embodiments, the service does not send a lease renewal request message. In this embodiment, the client gate automatically sends a lease renewal message. In one embodiment, automatic shipping is performed on a regular basis. In one embodiment, the Client Message Gate monitors the currently granted lease period and sends a lease renewal message before the currently granted lease period expires.

【0263】 一実施形態では、リースは排他的アクセスおよび共有アクセスを含む複数のア
クセス・レベルのうちの1つである。排他的アクセスにより、クライアントにリ
ソースへの排他的権限が与えられ、他のクライアントはリースの持続期間中リソ
ースにアクセスすることを禁じられる。共有アクセスでは、他のクライアントに
、クライアントと同じリソースを現時点でリース権限、つまり、クライアントが
保持しているリースの期間と重なるリソースへのリースを取得する権限が与えら
れる。一実施形態では、クライアントは一アクセス・レベルでリースを保持し、
他のアクセス・レベルでリースを要求するリース更新メッセージを送る。
In one embodiment, the lease is one of multiple access levels including exclusive access and shared access. Exclusive access gives the client exclusive rights to the resource and prohibits other clients from accessing the resource for the duration of the lease. With shared access, other clients are given the right to lease the same resources as the client at the moment, that is, to get a lease on a resource that overlaps with the lease held by the client. In one embodiment, the client holds a lease at one access level,
Send a lease renewal message requesting a lease at another access level.

【0264】 ステップ2006で、サービスは、クライアントからリース更新メッセージを
受け取った後、リソースのリースの更新をクライアントに認可する。サービスか
らクライアントに送られたリース更新要求メッセージへの応答としてリース更新
メッセージが発送済みであるか、または既に認可されているリース期間の期限切
れ前にクライアントにより自動的に発送されている。一実施形態では、リースは
、認可されたリース期間に対して認可できる。一実施形態では、リース更新メッ
セージは、リース更新期間をすでに要求している。一実施形態では、認可された
リース期間は要求されたリース期間以内とする。一実施形態では、サービスは、
クライアントによるリース更新要求を拒否する。たとえば、クライアントは、最
大累積リース期間を超えているか、または他のクライアントがリソースに対する
排他的リース・アクセス権を必要としている場合がある。一実施形態では、サー
ビスは、要求されたリース期間よりも短い期間について、リースを認可すること
ができる。一実施形態では、サービスは、メッセージをクライアントに送り、リ
ースが更新された場合にそのことをクライアントに通知する。一実施形態では、
メッセージは、認可されたリース期間を含む。
In step 2006, the service authorizes the client to renew the lease of the resource after receiving the lease renewal message from the client. The lease renewal message has been dispatched in response to the lease renewal request message sent by the service to the client, or has been automatically dispatched by the client before the expiration of the already granted lease period. In one embodiment, the lease can be authorized for the authorized lease term. In one embodiment, the lease renewal message has already requested a lease renewal period. In one embodiment, the authorized lease term is within the requested lease term. In one embodiment, the service is
Reject client lease renewal requests. For example, a client may have exceeded the maximum cumulative lease period, or another client may need exclusive lease access to a resource. In one embodiment, the service may authorize the lease for a shorter period than the requested lease period. In one embodiment, the service sends a message to the client to inform the client when the lease is renewed. In one embodiment,
The message contains the authorized lease period.

【0265】 ステップ2008で、クライアントは、リースの取り消しを要求しているサー
ビスにメッセージを送る。このメッセージで、クライアントがリースを取り消す
リソースを指定する。ステップ2010で、サービスはリースを取り消す。サー
ビスは、ステップ2008で述べたように、リース取り消し要求メッセージの受
取への応答としてリースを取り消す。一実施形態では、サービスは、さらに、認
可されたリース期間がクライアントからリース更新メッセージを受け取らないう
ちに期限切れになった場合にリースを取り消すことができる。サービスはさらに
、他のさまざまな理由によりリースを取り消すことができる。たとえば、他のク
ライアントはリソースに対する排他的アクセスを要求するか、またはリソースが
利用できなくなる。一実施形態では、サービスは、メッセージをクライアントに
送り、リースが取り消された場合にそのことをクライアントに通知する。
In step 2008, the client sends a message to the service requesting the cancellation of the lease. This message specifies the resource from which the client will cancel the lease. In step 2010, the service cancels the lease. The service cancels the lease in response to receipt of the lease cancellation request message, as described in step 2008. In one embodiment, the service may also cancel the lease if the licensed lease period expires without receiving a lease renewal message from the client. The service may also cancel the lease for various other reasons. For example, other clients request exclusive access to the resource or the resource becomes unavailable. In one embodiment, the service sends a message to the client and informs the client if the lease has been revoked.

【0266】 一実施形態では、後述の認証証明書などのセキュリティ証明書を、図44で述
べられているように、クライアントとサービスとの間で送られるリース・メッセ
ージに含めることができる。たとえば、クライアントは、サービスに送られるリ
ース更新およびリース取り消し要求メッセージ内にセキュリティ証明書を埋め込
むことができる。サービスは、メッセージを受け取ると、その証明書を調べてそ
れがリースホルダからのものであることを確認し、さらに、メッセージの信憑性
も確認する。こうして、適切な証明書を持たないエンティティがサービスにより
クライアントも現在のリースを修正するのを防止することによりリース・メカニ
ズム内にセキュリティを確保する。
In one embodiment, security certificates, such as authentication certificates described below, may be included in the lease message sent between the client and service, as described in FIG. For example, the client can embed the security certificate in the lease renewal and lease revocation request messages sent to the service. When the service receives the message, it looks at the certificate to make sure it is from the lease holder, and also verifies the authenticity of the message. Thus, security is ensured within the lease mechanism by preventing entities that do not have the proper certificate from modifying the current lease by the service as well as the client.

【0267】 一実施形態では、クライアントとサービスとの間で送られるリース・メッセー
ジのすべてはデータ表現言語によるものである。一実施形態では、データ表現言
語は拡張可能マークアップ言語(XML)である。一実施形態では、すべてのメ
ッセージは、サービス・メッセージ・ゲートとクライアント・メッセージ・ゲー
トとが送受される。一実施形態では、リース・メッセージは、クライアントに提
供されるXMLメッセージ・スキーマで記述することができ、これを使用して、
クライアント・メッセージ・ゲートを構築できる。一実施形態では、XMLメッ
セージ・スキーマは、たとえば、スペース・サービスから取り出したサービス通
知でクライアントが取得している。
In one embodiment, all lease messages sent between clients and services are in a data representation language. In one embodiment, the data representation language is Extensible Markup Language (XML). In one embodiment, all messages are sent and received by the Service Message Gate and the Client Message Gate. In one embodiment, the lease message can be described in the XML message schema provided to the client, which is used to
You can build a client message gate. In one embodiment, the XML message schema is obtained by the client, for example, in a service notification retrieved from the space service.

【0268】 リース・メカニズムは、さらに、ステール(無効の)通知を検出するメカニズ
ムも備える。サービスがスペース内の通知をパブリッシュすると、そのサービス
はこれが通知をパブリッシュしたことに基づいてリースを取得する。それぞれの
通知には、サービスが通知を更新することを約束している時間が記述される。一
実施形態では、すべてのタイムアウト値を秒単位で指定する。サービスがリース
の更新を続ける場合、通知されたサービスがまだ提供中であるという何らかの確
認をスペースで行うようにする。更新時間は、スペース・サービスによりゼロに
なるまでカウントダウンされる。サービスがリースを更新しない場合、サービス
は失敗している可能性があるか、またはサービスを提供しなくなっているか、ま
たは提供できなくなっている。リースが更新されない場合、スペース・サービス
はサービス通知をステールにするため、クライアントから使用できなくなる。サ
ービスでは、スペースに更新メッセージを送ることにより通知を更新する。スペ
ース・サービスは、これらのメッセージを受け取りて、通知更新時を初期値にリ
セットする。
The leasing mechanism further comprises a mechanism for detecting stale (invalid) notifications. When a service publishes a notification in a space, the service gets a lease based on which it published the notification. Each notification describes the time the service has promised to update the notification. In one embodiment, all timeout values are specified in seconds. If the service continues to renew the lease, ensure that the space does some confirmation that the advertised service is still available. The update time counts down to zero by Space Services. If the service does not renew the lease, then the service may have failed, or may no longer provide, or no longer can provide. If the lease is not renewed, the space service will steal the service announcement and it will not be available to clients. The service updates the notification by sending an update message to the space. The space service receives these messages and resets the notification update time to the initial value.

【0269】 一実施形態では、ステール状態の通知は自動的には削除されない。スペースの
ポリシーに応じて、十分に長い期間期限切れになっているステール状態のサービ
ス通知の削除を選択できる。削除ポリシーは、スペース・サービスで設定できる
。スペース・サービスは、ステール状態の通知をサーチし、たとえば、それを削
除するか、または管理者に知らせる。
In one embodiment, stale status notifications are not automatically deleted. Depending on your space policy, you can choose to remove stalled service notifications that have expired for a sufficiently long period of time. You can set the deletion policy in Space Services. The space service searches for notifications of the stalled state and either deletes it or informs the administrator, for example.

【0270】 スペース・サービスは、リースを使用して、その機能によってスペースのクラ
イアント(他のサービスを含む)に提供されるリソースを管理することができる
。たとえば、クライアントがサービスを使用することを希望する場合、スペース
・サービスはサービスのインスタンス化の一部としてクライアントにリースを要
求する。サービスのインスタンス化を実行する際に、クライアントはサービスを
実行できる。サービスをインスタンス化するために、クライアントはまず、スペ
ース内でパブリッシュされたサービス通知のうちから1つ選択する。クライアン
トは、スペースに用意されているさまざまな機能を使用して、スペース内の通知
をルックアップすることができる。次に、クライアントは、スペースに対しサー
ビスのインスタンス化を要求する。サービスのインスタンス化のときに取得され
たリースは、サービス通知を使用したときのものである(サービス通知をパブリ
ッシュしたときのリースと同じではない)。スペース・サービスでは、共有され
ていることを示す通知の場合に複数のクライアントがサービス通知の使用につい
てリースすることができることに注意すべきである。そうでない場合、スペース
・サービスでは、一度に1つのクライアントがサービス通知についてリースする
だけである(排他的)。
Space Services can use leases to manage the resources provided by its capabilities to Space's clients (including other services). For example, if a client wants to use a service, the space service requests the client to lease as part of instantiating the service. When performing the instantiation of a service, the client can execute the service. To instantiate a service, the client first selects one of the service announcements published in the space. Clients can look up notifications in a space using various features provided in the space. The client then requests the space to instantiate the service. The lease obtained when the service was instantiated was when the service notification was used (not the same as when the service notification was published). It should be noted that the space service allows multiple clients to lease for use of service notifications in the case of notifications indicating sharing. Otherwise, with space services, only one client leases for service announcements at a time (exclusive).

【0271】 スペース・サービスがリースを使用してその機能によりクライアントに提供さ
れるリソースを管理するもう1つの例として、XMLドキュメント(たとえば、
サービス通知)がスペースに追加されるかまたはスペースから削除されるときに
そのことを通知するようスペースのクライアントが登録する場合が上げられる。
スペースの登録クライアントは、通知に対するこのサブスクライブでリースを取
得できる。このリースにより、スペース・サービスは通知を送り続けるかどうか
を知ることができる。このようなリースは、クライアントがスペースとのアクテ
ィブなセッションを確立している場合には、必要ないと思われる。また、スペー
スのクライアント(サービスの場合もある)がスペースとのセッションを確立す
るときに、クライアントがそのセッションでリースを取得することができること
に注意されたい。このため、スペースはセッションと関連するリソースを管理す
ることができる。
As another example of how Space Services uses leases to manage the resources provided to its clients by its capabilities, an XML document (eg,
When a service notification is added to or removed from a space, the space's clients may register to be notified when that happens.
The space's registered clients can get a lease on this subscription to the notification. This lease allows Space Services to know whether to continue sending notifications. Such a lease would not be necessary if the client has an active session with the space. Also note that when a client of a space (which may be a service) establishes a session with the space, the client can obtain a lease on that session. This allows the space to manage the resources associated with the session.

【0272】 他の実施形態では、分散コンピューティング環境は時間ベースではないリース
・メカニズムを採用する。このリースは、オブジェクトに対し使用が請求された
ときに生成される。時間ベースのメカニズムの代わりに請求メソッドでは、他の
何かのパーティが同じオブジェクト(たとえば、サービス)にアクセスしたいと
いうことを現在のリースホルダに通知するコールバックを受け付ける。したがっ
て、時間ベースのリースに対する他の実施形態として、代わりに、クライアント
がスペース・オブジェクト(たとえば、サービス)に対する請求を行うことがで
きる。他のクライアントが現在のリースホルダのリースと互換性のないリースを
望んでいる場合、サービスは、「コールバック・メッセージ」をクライアントに
送る。コールバック・メッセージを受け取ると、クライアント(つまり、クライ
アント・ゲート)はコールバック・メソッドを呼び出して、コールバック・メッ
セージに応答するかどうかを決定する(リースを持続する、リースを取り消す、
アクセス・レベルを共有に変更するなど)。応答が決定されたら、クライアント
・ゲートは応答メッセージをサービスに送る。リースを管理するこのような配布
メカニズムは、XMLメッセージ通信レイヤを使用して実装できる。
In another embodiment, the distributed computing environment employs a non-time based leasing mechanism. This lease is created when the object is charged for use. Instead of a time-based mechanism, the billing method accepts a callback that informs the current lease holder that some other party wants to access the same object (eg, service). Therefore, as an alternative to time-based leasing, the client may instead bill for space objects (eg, services). If another client wants a lease that is incompatible with the lease of the current lease holder, the service sends a "callback message" to the client. Upon receiving the callback message, the client (that is, the client gate) invokes the callback method to determine whether to respond to the callback message (persist lease, cancel lease,
Change the access level to shared, etc.) Once the response is determined, the client gate sends a response message to the service. Such a distribution mechanism for managing leases can be implemented using the XML messaging layer.

【0273】 時間ベースでないリース実施形態では、分散コンピューティング環境は複数の
レベル(または種類)のアクセスをサポートするリースを提供し、これにより、
分散アルゴリズムでリース互換性を判別することができる。レベルには、(i)
オブジェクトをスペース内に保持する(keepInSpace)、(ii)ス
ペース内のオブジェクトを読み込む(readShared)、および(iii
)スペース内のオブジェクトを排他的に読み込む(readExclusive
)というレベルがある。
In a non-time-based leasing embodiment, the distributed computing environment provides leases that support multiple levels (or types) of access, whereby
Lease compatibility can be determined with a distributed algorithm. Level has (i)
Keep objects in space (keepInSpace), (ii) read objects in space (readShared), and (iii)
) Exclusively read the object in the space (readExclusive)
) There is a level.

【0274】 認証とセキュリティ 分散コンピューティング環境は、非同期メッセージ通信モデルに基づく自然発
生の分散システムと異機種分散システムに対応し、データおよび/またはオブジ
ェクトはXMLなどの表現言語により表現することができる。分散コンピューテ
ィング環境では、たとえば、クライアントは、インターネット全体を通してサー
ビスに接続することができる。分散コンピューティング環境では、大量のネット
ワーク・デバイスがセキュリティで保護された信頼できる動的な方式で連携動作
する。分散コンピューティング環境により、準拠するソフトウェア・コンポーネ
ント(クライアントおよびサービス)の間の相互運用性を実質的に可能にするプ
ロトコルが定義される。
Authentication and Security The distributed computing environment supports naturally occurring distributed systems and heterogeneous distributed systems based on the asynchronous message communication model, and data and / or objects can be expressed in an expression language such as XML. In a distributed computing environment, for example, clients may connect to the service over the Internet. In a distributed computing environment, large numbers of network devices work together in a secure, reliable, and dynamic manner. A distributed computing environment defines protocols that substantially enable interoperability between compliant software components (clients and services).

【0275】 分散コンピューティング環境のコンテキストでは、デバイスはネットワーキン
グ・トランスポートでアドレス指定可能なユニットである。クライアントとサー
ビスは、デバイスで実行されるソフトウェアまたはファームウェアのUnive
rsal Resource Identifier(URI)アドレス指定可
能なインスタンスとして実装することができる。
In the context of a distributed computing environment, a device is a network transport addressable unit. Clients and services are Universal versions of software or firmware running on the device.
It can be implemented as a rsaR Resource Identifier (URI) addressable instance.

【0276】 インターネット・スペースには、多数のコンテンツ・ポイントが配置されてい
る。URIは、コンテンツ・ポイントを識別するのに使用される方法であり、テ
キストのページ、ビデオまたはサウンド・クリップ、イメージ、ソフトウェア、
ファームウェア、またはその他のインターネット・コンテンツである。URIの
最も一般的な形式は、Webページ・アドレスであり、これは、Uniform
Resource Locator(URL)と呼ばれるURIの特定の形式
またはサブセットである。URIは、通常、リソース、リソースが置かれている
特定のコンピュータ、およびコンピューター上のリソースの特定の名前(通常、
ファイル名)にアクセスするために使用されるメカニズムを記述する。
A large number of content points are arranged in the Internet space. The URI is a method used to identify content points, that is, pages of text, video or sound clips, images, software,
Firmware or other Internet content. The most common form of URI is a web page address, which is the Uniform
A specific form or subset of a URI called a Resource Locator (URL). The URI is typically the resource, the particular computer on which the resource resides, and the particular name of the resource on the computer (typically,
Describes the mechanism used to access (filename).

【0277】 クライアントおよびサービス(両方とも、デバイスにソフトウェアおよび/ま
たはファームウェアとして実装できる)は、インターネット、企業イントラネッ
ト、動的近接ネットワーク上で、単一コンピュータ内で、またはその他のネット
ワーク接続モデルにより接続できる。たとえば、クライアントおよびサービスを
サポートするデバイスのサイズおよび複雑さは、単純な照明スイッチから複雑な
高可用性のサーバーまでさまざまなものがある。デバイスの例としては、それら
に限定されないが、PDA、携帯電話、ノートブック・パソコン、ラップトップ
・パソコン、より強力なPC、さらに強力なコンピュータ・システム、そしてス
ーパー・コンピュータに至るまで、さまざまなものがある。いくつかの実施形態
では、クライアントおよびサービスの距離、待ち時間、および実装を抽象化し、
共通の発見および通信方法を使用し、「ブラック・ボックス」効果を生み出して
いる。この定義方法により、ソフトウェアの実装問題は、根幹のプラットフォー
ムで取り扱うことができ、インターネット規模に合わせて拡大縮小できる粗結合
システムを実現できる。
Clients and services (both can be implemented as software and / or firmware on the device) can connect over the Internet, corporate intranets, dynamic proximity networks, within a single computer, or by other network connectivity models. . For example, the size and complexity of devices that support clients and services can range from simple lighting switches to complex, highly available servers. Examples of devices include, but are not limited to, PDAs, cell phones, notebooks, laptops, more powerful PCs, even more powerful computer systems, and even supercomputers. There is. In some embodiments, abstracting client and service distances, latencies, and implementations,
It uses common discovery and communication methods to create a "black box" effect. By this definition method, the software implementation problem can be dealt with on the core platform, and a coarsely coupled system that can be scaled up or down according to the scale of the Internet can be realized.

【0278】 分散コンピューティング環境は、WEBおよびXMLコンテンツ表現、動的デ
バイス発見、およびさまざまなネットワーク・デバイスからアクセス可能なセキ
ュリティで保護されたデバイス通信など、インターネット中心のプログラミング
・モデルを提供する。分散コンピューティング環境は、CPUレベルよりも上で
抽象化されたネットワーク・プログラミング・モデルを含む。このプログラミン
グ・モデルは、以下の特性を持つ。 URIアドレス コンテンツと呼ばれる強く型付けられたデータ(URIでアドレス指定) 実質的に無制限の永続的コンテンツ記憶域(たとえば、ストア)(MIMEタ
イプで識別されるものなどのXMLおよび非XMLコンテンツを含む) スペースと呼ばれる実質的に無制限の一時的コンテンツ・メモリ(XMLコン
テンツを含む) 関係するクライアントに通知するためにスペース内に格納できる記述的XML
メタデータ(データに関するデータ)コンテンツ通知。 実質的に無制限の数の命令(メッセージとして埋め込まれる) URIによりアドレス指定されるセキュリティで保護されたメッセージ・エン
ドポイント(ゲート) 分散ソフトウェア・プログラム間のワーク・フローを調整するデータ・フロー
のサポート(イベント・メッセージ)
The distributed computing environment provides Internet-centric programming models such as WEB and XML content representations, dynamic device discovery, and secure device communication accessible from a variety of network devices. The distributed computing environment includes a network programming model that is abstracted above the CPU level. This programming model has the following properties: Strongly typed data (addressed by URI) called URI address content Virtually unlimited persistent content storage (eg store) (including XML and non-XML content such as those identified by MIME type) Space Virtually unlimited temporary content memory (including XML content) called Descriptive XML that can be stored in space to notify interested clients
Metadata (data about data) content notification. Virtually unlimited number of instructions (embedded as messages) URI-addressed secure message endpoints (gates) Data flow support for coordinating work flows between distributed software programs ( Event message)

【0279】 サービスおよびクライアントは、分散コンピューティング環境内でプログラム
として実行できる。サービスは、サービスの使用を望んでいるクライアントに機
能を通知することができる。クライアントは、同じネットワーク・デバイス内に
常駐する場合も常駐しない場合もあり、デバイスのコード実行環境はJavaプ
ラットフォームをサポートする場合もあればしない場合もある。URIを使用し
てコンテンツおよびメッセージ・エンドポイントをアドレス指定する際に、分散
コンピューティング環境は強力なアドレス指定方式となる。アドレスにより、コ
ンテンツまたはエンドポイントの位置を指定し、また使用するルート(またはト
ランスポート・プロトコル)を指定することができる。URIを使用してアドレ
ス指定したアイテムはさらに、関連付けられたセキュリティ証明書を持つ。セキ
ュリティ証明書を使用して、どのようなクライアントにアイテムへのアクセスを
許可するか、また承認されたクライアントでそのアイテムに対しどの操作の実行
を許可するかを制御することができる。
Services and clients can execute as programs within a distributed computing environment. The service can notify the client to the client who wants to use the service. The client may or may not reside within the same network device, and the device's code execution environment may or may not support the Java platform. The distributed computing environment becomes a powerful addressing scheme when using URIs to address content and message endpoints. The address can specify the location of the content or endpoint and also specify the route (or transport protocol) to use. Items addressed using a URI also have an associated security certificate. Security credentials can be used to control what clients are allowed to access the item and what operations are allowed on the item by authorized clients.

【0280】 分散コンピューティング環境によって提供される高度なアクセスは、適切な認
証およびセキュリティ・システムおよび方法により制御できる。分散コンピュー
ティング環境における認証とセキュリティには、メッセージ内のXMLコンテン
ツの型付けの正しさの検証、受取側に対し発送側を安全に識別する操作、クライ
アントからサービスに、その逆にサービスからクライアントに送られるメッセー
ジの完全性を検査するメカニズム、およびクライアントに対し受け付けられたサ
ービスのメッセージ群を記述し、サービスで受け取ったメッセージに対しメッセ
ージ要求条件を強制するメカニズムがある。上記のセキュリティおよび認証の機
能は、コードおよびデータの単一アトミック・ユニットで活用できる。コードお
よびデータのアトミック・ユニットを動的に作成できる。一実施形態では、コー
ドおよびデータのアトミック・ユニットは、いったん作成されると、メッセージ
・エンドポイント(ゲート)を表し、作成時に実装されたセキュリティおよび認
証ポリシーに関して改変できない。
The advanced access provided by the distributed computing environment can be controlled by appropriate authentication and security systems and methods. Authentication and security in a distributed computing environment includes verifying the correctness of typing XML content in a message, securely identifying the sender to the recipient, and sending from client to service and vice versa. There is a mechanism to check the integrity of the received message and a mechanism to describe the message group of the service accepted by the client and enforce the message request condition on the message received by the service. The security and authentication features described above can be leveraged in a single atomic unit of code and data. Atomic units of code and data can be created dynamically. In one embodiment, atomic units of code and data, once created, represent a message endpoint (gate) and cannot be modified with respect to the security and authentication policies implemented at the time of creation.

【0281】 ゲートは、サービスの機能の一部または全部を使用する権限を表す。各機能は
、サービスに送ることができるメッセージに関して表すことができる。ゲートは
さらに、クライアントがリソースをリースするときに障害が発生した場合を検出
するのに使用できる。
The gate represents the authority to use some or all of the functions of the service. Each function can be represented in terms of a message that can be sent to the service. The gate can also be used to detect when a client fails to lease a resource.

【0282】 認証およびセキュリティはさらに、サービスを使用しようとするクライアント
がそのサービスを使用することを承認されていること、クライアントがサービス
通知を受け取る先であるスペースがサービス通知を提供することを承認されてい
ること、および/またはサービス通知自体が承認されていることを検証するメカ
ニズムを備えることができる。
Authentication and security are further approved that the client attempting to use the service is authorized to use the service and that the space to which the client receives the service notification provides the service notification. And / or a mechanism for verifying that the service notification itself has been approved.

【0283】 メッセージ通信は、クライアントからサービスに要求を伝達する手段およびサ
ービスがクライアントに結果を応答する手段としてメッセージング・レイヤに実
装できる。分散コンピューティング環境のメッセージング・レイヤでは、有効な
XMLメッセージが送られることを実質的に保証し、また言語独立のセキュリテ
ィ・モデルを使用可能にするメカニズムを備えることができる。メッセージング
・レイヤでは、送るメッセージ・エンドポイントを受け取るメッセージ・エンド
ポイントにリンクさせることができる。2つの関連するメッセージ・エンドポイ
ントは、クライアントとサービスとの間の要求−応答メッセージ通信に適したセ
キュリティで保護された双方向のアトミック・メッセージ・チャネルを提供する
ことができる。
Messaging can be implemented at the messaging layer as a means of communicating requests from clients to services and as a means of services responding to clients with results. The messaging layer of a distributed computing environment may include mechanisms that substantially ensure that valid XML messages are sent and that enable a language independent security model. At the messaging layer, sending message endpoints can be linked to receiving message endpoints. Two associated message endpoints can provide a secure, bidirectional atomic message channel suitable for request-response message communication between clients and services.

【0284】 分散コンピューティング環境の実施形態では、サービスに関してスペース内で
通知をパブリッシュすることができる。通知は、サービスのXMLスキーマおよ
びURIを含むXMLドキュメントとすることができる。サービスはさらに、通
知の中にサービスIDトークンまたは証明書を含めることもでき、通知で、クラ
イアントとサービスの両方により使用される認証サービスを指定することができ
る。その後、クライアントはスペースのサービス通知を特定し、その通知を使用
してクライアントでメッセージ・ゲートをインスタンス化する。クライアントは
、通知で指定された認証サービスを使用して、メッセージでクライアントに送る
ための認証証明書を取得する。一実施形態では、クライアントはサービスIDト
ークンまたは証明書をサービス通知から認証サービスに渡し、続いて認証サービ
スはサービス・トークンと、または証明書を使用して、そのクライアントの認証
証明書を生成することができる。一実施形態では、クライアントはメッセージ・
ゲートを作成するために必要な情報を受け取るゲート・ファクトリを備え、その
ゲート・ファクトリはメッセージ・ゲートを構築し、認証サービスと通信して、
クライアントの認証証明書を取得する。対応するサービス・メッセージ・ゲート
が、サービス側でインスタンス化される。
Embodiments of the distributed computing environment may publish notifications in space regarding services. The notification can be an XML document containing the service's XML schema and URI. The service may also include a service ID token or certificate in the notification, which may specify the authentication service used by both the client and the service. The client then identifies the service notification for the space and uses that notification to instantiate a MessageGate on the client. The client uses the authentication service specified in the notification to obtain an authentication certificate to send to the client in a message. In one embodiment, the client passes a service ID token or certificate from the service notification to the authentication service, which in turn uses the service token or the certificate to generate an authentication certificate for that client. You can In one embodiment, the client
It has a gate factory that receives the information needed to create a gate, which builds a message gate, communicates with the authentication service,
Get the client authentication certificate. The corresponding service message gate is instantiated on the service side.

【0285】 クライアントは、ある時点で、第1のメッセージをサービスに送る。一実施形
態では、クライアント・メッセージ・ゲートは認証サービスにより構築されたク
ライアントの認証証明書をメッセージ内に埋め込む。サービスがメッセージを受
け取ると、同じ認証サービスを使用してメッセージで受け取った認証証明書を検
証する。同じ認証サービスを共有することにより、さまざまな認証プロトコルを
採用し、しかも、認証証明書の生成の詳細をクライアントとサービスから分離す
ることができる。したがって、クライアントは異なる認証証明書プロトコルを異
なるサービスとともに使用することができる。
The client, at some point, sends a first message to the service. In one embodiment, the client message gate embeds the client's authentication credentials built by the authentication service in the message. When the service receives the message, it uses the same authentication service to validate the authentication certificate received in the message. By sharing the same authentication service, different authentication protocols can be adopted, yet the details of authentication certificate generation can be separated from the client and the service. Therefore, the client can use different authentication certificate protocols with different services.

【0286】 一実施形態では、認証サービスは、サービスからクライアント認証証明書を最
初に受け取った後クライアントの能力を判別することができる(たとえば、サー
ビスに対しクライアントがどのようなことを許されているか)。クライアントの
能力は、クライアントの素性に縛られる。そこで、クライアントのメッセージ・
ゲートはクライアントからサービスに送られるすべてのメッセージに認証証明書
を埋め込む。メッセージは、サービス・メッセージ・ゲートに届き、そこで、認
証サービスによりチェックされ、そのメッセージがクライアントからのものであ
ること、メッセージ要求がクライアントの能力範囲内にあることを確認する。他
の実施形態では、サービス・メッセージ・ゲートは、認証サービスを使用せずに
、能力を判別および能力に関するメッセージ検査を処理する。
In one embodiment, the authentication service may determine the client's capabilities after first receiving a client authentication certificate from the service (eg, what the client is allowed to do with the service). ). The client's capabilities are bound by the client's identity. So the message from the client
The gate embeds the authentication certificate in all messages sent from the client to the service. The message arrives at the service message gate where it is checked by the authentication service to ensure that the message is from the client and that the message request is within the capabilities of the client. In another embodiment, the Service Message Gate handles capability determination and message checking for capabilities without using authentication services.

【0287】 クライアントおよびサービス・メッセージ・ゲートは連携して、セキュリティ
で保護され信頼できるメッセージ・チャネルを実現する。ゲートはセキュリティ
で保護されたメッセージ・エンドポイントとして使用され、クライアントはセキ
ュリティで保護され承認されているXMLメッセージをサービスとの間で送受さ
れることによりサービスを実行できる。
The client and Service Message Gate work together to provide a secure and reliable message channel. The gate is used as a secure message endpoint, and clients can perform services by sending and receiving secure and approved XML messages to and from the service.

【0288】 分散コンピューティング環境内のオペレーションは、クライアントとサービス
との間で送られるXMLメッセージとして実現される。クライアントをサービス
と接続し、スペースおよびストア内のコンテンツをアドレス指定するのに使用さ
れるプロトコルは、クライアントとサービスとの間で送ることができるメッセー
ジによって定義される。メッセージを使用してプロトコルを定義すると、さまざ
まな種類のデバイスをプロトコルに参加させることができる。各デバイスは、そ
の能力と役割に最適の方法でプロトコルを自由に実装することができる。
Operations in the distributed computing environment are implemented as XML messages sent between clients and services. The protocol used to connect the client with the service and address the content in spaces and stores is defined by the messages that can be sent between the client and the service. Defining the protocol using messages allows different types of devices to participate in the protocol. Each device is free to implement the protocol in a way that best suits its capabilities and roles.

【0289】 サービスの機能は、そのサービスが受け入れるメッセージに表すことができる
。サービスのメッセージ・セットは、XMLスキーマを使用して定義することが
できる。XMLメッセージ・スキーマにより、XML型付きタグを使用して各メ
ッセージ形式を定義する。タグの使用規則もまた、スキーマで定義できる。メッ
セージ・スキーマは、メッセージを受け取るために使用するサービスのメッセー
ジ・エンドポイント(ゲート)とともにXML通知の一コンポーネントであって
よい。メッセージをXMLメッセージ・スキーマに加えることにより、拡張機能
(さらに多くの能力)をサービスに追加することができる。
The capabilities of a service can be expressed in a message that the service accepts. A service's message set can be defined using an XML schema. The XML message schema defines each message format using XML typed tags. The usage rules for tags can also be defined in the schema. The message schema may be a component of an XML notification along with the message endpoint (gate) of the service used to receive the message. Extensions (more capabilities) can be added to a service by adding messages to the XML message schema.

【0290】 分散コンピューティング環境では、承認されたクライアントがサービスの能力
すべてを使用できるか、またはサービスの能力のサブセットの使用に限定される
。一実施形態では、一組の機能をクライアントに与えた後、クライアントは適切
な承認がないとそのセットを変更することはできない。この機能定義のモデルに
より、基本機能セットから拡張機能セットまでのサービス・レベルに対応できる
In a distributed computing environment, authorized clients can use all of the capabilities of the service, or be limited to using a subset of the capabilities of the service. In one embodiment, after giving a set of capabilities to a client, the client cannot change that set without proper authorization. This model of function definition allows for service levels from the basic feature set to the extended feature set.

【0291】 サービスのインスタンス化を実行する際に、クライアントはサービスを実行で
きる。サービスをインスタンス化するために、クライアントはまず、スペース内
でパブリッシュされたサービス通知のうちから1つ選択する。クライアントは、
スペースに用意されているさまざまな機能を使用して、スペース内の通知をルッ
クアップすることができる。次に、クライアントは、スペースに対しサービスの
インスタンス化を要求する。サービスのインスタンス化は、以下のことを含むが
、これに限られるわけではない。 1.クライアントは、スペース・サービスにサービスをインスタンス化するよ
う要求する。 2.スペース・サービスは、クライアントがサービスをインスタンス化するこ
とを許可されていることを検証する。 3.スペース・サービスは、クライアントによって指定されたリース要求時間
にクライアントのサービス通知でリースを取得する。それとは別に、サービス通
知をクライアントに送るができ、しかもリース・メカニズムを使用しない。 4.スペース・サービスは、ステップ3で割り当てたリースとサービスのサー
ビス通知を含むメッセージをクライアントに送る。 5.クライアントは、サービス通知で指定された認証サービスを実行し、認証
証明書を取得する。 6.クライアントは、サービスと通信するためクライアント・メッセージ・ゲ
ートを構築する。 分散コンピューティング環境でクライアントとサービスとの間に信頼性を築く
ために、一連の動的に生成される数値(キー、またはトークン)を、クライアン
トのセキュリティまたは認証証明書として使用する。1つまたは複数の証明書を
使用して、クライアントがサービスを使用する権限を検証し、クライアントとサ
ービスとの間でやり取りするメッセージを検証することができる。それぞれクラ
イアントおよびサービスは、固有の証明書を備える。
When performing the instantiation of a service, the client can execute the service. To instantiate a service, the client first selects one of the service announcements published in the space. The client is
You can look up notifications in a space using various features that are available in the space. The client then requests the space to instantiate the service. Instantiation of services includes, but is not limited to: 1. The client requests the space service to instantiate the service. 2. The space service verifies that the client is authorized to instantiate the service. 3. The Space Service gets a lease in the client's service announcement at the lease request time specified by the client. Alternatively, service notifications can be sent to the client, but without the lease mechanism. 4. The Space Service sends a message to the client containing the service notification for the lease and service assigned in step 3. 5. The client executes the authentication service specified by the service notification and acquires the authentication certificate. 6. The client builds a client message gate to communicate with the service. Use a series of dynamically generated numbers (keys, or tokens) as security or authentication credentials for a client to build trust between the client and service in a distributed computing environment. The one or more certificates can be used to verify the client's authority to use the service and to verify the messages exchanged between the client and the service. Each client and service has a unique certificate.

【0292】 サービスを使用するのに必要な認証証明書の種類がサービス・サーチを実行す
るクライアントに返される。一実施形態では、認証証明書は、クライアントがサ
ービスを使用するごとに提示する必要がある隠蔽型オブジェクトである。一実施
形態では、認証証明書はサービスに送られるすべてのメッセージ内でクライアン
トのためにメッセージ・ゲートにより提示される。どのような種類の認証証明書
をサービスが必要としようと、クライアントとサービスの外部の認証サービスを
使用することにより、クライアントおよびサービスは認証証明書構造または認証
プロセスを意識する必要がない。
The type of authentication certificate required to use the service is returned to the client performing the service search. In one embodiment, the authentication certificate is a hidden object that the client needs to present each time it uses the service. In one embodiment, the authentication credentials are presented by the MessageGate for the client in all messages sent to the service. No matter what kind of authentication certificate the service requires, by using an authentication service external to the client and service, the client and service need not be aware of the authentication certificate structure or process.

【0293】 認証証明書はさらに、サービス・チケットに加えてトランスポート固有のチケ
ットを備えることができる。サービスを実行するときに、サービス通知で指定さ
れるネットワーキング・トランスポートに応じて、トランスポートはセキュリテ
ィで保護された接続を提供できる。場合によっては、データ・リンク・レイヤが
すでにセキュリティで保護されている場合、すでにセキュリティで保護されてい
るデータ・リンク・レイヤ上でセキュリティで保護されたトランスポートを使用
する必要はないと考えられる。
The authentication certificate may further comprise a transport-specific ticket in addition to the service ticket. When executing a service, the transport can provide a secure connection, depending on the networking transport specified in the service notification. In some cases, if the data link layer is already secure, then it may not be necessary to use the secure transport on the already secure data link layer.

【0294】 認証証明書の概念は、証明書実装に基づくさまざまなレベルのセキュリティを
可能にするだけの十分な抽象性を備えている。セキュリティのレベルにはそれら
に限定されないが以下のものがある。 1.なし(空のメッセージにセキュリティ証明書はないか、または証明書がな
い) トランスポートの物理的接続特性によりセキュリティが強制されるときは、証
明書が空であるか、または証明書がないメッセージで十分である。たとえば、照
明スイッチ・コントローラ1つだけに接続されたスマート・ライト・スイッチは
そのスイッチが安全な方法で配線されているので安全である。 2.シグネチャ付きメッセージ(電子シグネチャ) シグネチャ付きメッセージは、サービスがメッセージの発送源(クライアント
)を検証できるようにする電子シグネチャを含む。 3.暗号化メッセージ(トランスポートでこれを取り扱う) 暗号化メッセージは、メッセージの内容をスクランブルし、他の証明書でその
スクランブルを解除する必要があるようにするという方法により、別のレベルの
セキュリティを追加する。 4.能力メッセージ(サービス機能およびユーザ認識) このレベルのセキュリティは、ユーザごとのセキュリティ機能を実現し(たと
えば、ユーザが実行を許されているもの)、サービスおよび個々のサービス機能
に対する精密なアクセス制御を行うことができる。
The concept of authentication certificates is sufficiently abstract to allow various levels of security based on certificate implementation. Security levels include, but are not limited to: 1. None (empty message has no security certificate or no certificate) When the physical connection characteristics of the transport enforce security, the message is either empty certificate or no certificate. It is enough. For example, a smart light switch connected to only one light switch controller is safe because that switch is wired in a safe manner. 2. Signed Message (Electronic Signature) A signed message contains an electronic signature that allows a service to verify the origin of the message (the client). 3. Encrypted messages (which the transport handles) Encrypted messages add another level of security by scrambling the contents of the message so that other certificates need to unscramble it. To do. 4. Capability Message (Service Capabilities and User Awareness) This level of security provides per-user security capabilities (eg, what the user is allowed to do) and fine-grained access control to services and individual service capabilities. be able to.

【0295】 高いレベルのセキュリティ(能力および暗号化)を実現するのに必要な実装が
重いため、複数レベルのセキュリティ・ゾーンを使用する。メッセージ・トラン
スポートでこのようなセキュリティ・レベルをサポート(またはボートを支援)
する場合、このサポートを活用して一方のレベルのセキュリティから他方のレベ
ルのセキュリティへ橋架けするセキュリティ・レベル・ブリッジ・サービスを提
供する。
We use multiple levels of security zones because the implementation required to achieve a high level of security (capacity and encryption) is heavy. Supporting such security levels (or assisting boats) with message transport
In this case, we will utilize this support to provide a security level bridge service that bridges from one level of security to the other.

【0296】 上述のように、セキュリティ・モデルのないサービスでは、空の認証証明書を
受け付けることができる。アクセスが制限されていないサービスでは、認証証明
書なしでまたは「空の」認証証明書付きでゲートを構築することができる。この
ようなサービスのゲートは、それぞれのメッセージとともに認証証明書を送らな
いか、または空の証明書を送る。認証サービスは、アクセスを制限しないサービ
スの一例である。他のサービスでは、ユーザIDとパスワードのペアを必要とす
る。
As described above, a service without a security model can accept an empty authentication certificate. For services with unrestricted access, gates can be built without authentication credentials or with "empty" authentication credentials. The gate of such a service does not send an authentication certificate with each message, or sends an empty certificate. The authentication service is an example of a service that does not restrict access. Other services require a user ID / password pair.

【0297】 証明書を使用するサービス・アクセスの認証 いくつかの実施形態では、サービスを実行しようとするクライアントが承認さ
れているクライアントであることを検証し、クライアントによって受取されるサ
ービス通知が承認されたサービス通知であること検証し、かつ/またはクライア
ントがサービス通知を受け取った発送元のスペースが承認されていることを検証
するメカニズムは、公開鍵/秘密鍵非対称暗号メカニズムに基づく。このメカニ
ズムでは、承認された発送側エンティティは公開鍵をメッセージに埋め込み、秘
密鍵で公開鍵を含むメッセージを暗号化する。暗号化メッセージを受け取るエン
ティティは、公開鍵を使用してメッセージを復号化し、復号化されたメッセージ
に埋め込まれている同じ公開鍵を見つけ、そのメッセージが承認されたエンティ
ティからのものであることを検証するが、それは、そのエンティティのみがメッ
セージを暗号化するのに必要な秘密鍵を持っているからである。そこで、エンテ
ィティは、実質的に忘れることができない、他のエンティティが復号化して(適
切な公開鍵で)、エンティティによって送られたメッセージを検証することがで
きる証明書を発行する。
Authentication of Service Access Using Certificates In some embodiments, the client attempting to perform the service verifies that it is an authorized client, and the service notification received by the client is authorized. The mechanism for verifying that the service notification is valid and / or that the space from which the client received the service notification is authorized is based on a public / private key asymmetric cryptographic mechanism. In this mechanism, the authorized sending entity embeds the public key in the message and encrypts the message containing the public key with the private key. The entity that receives the encrypted message uses the public key to decrypt the message, finds the same public key embedded in the decrypted message, and verifies that the message is from an authorized entity. However, only that entity has the private key needed to encrypt the message. There, the entity issues a certificate that is virtually unforgettable, which other entities can decrypt (with the appropriate public key) and verify the message sent by the entity.

【0298】 一実施形態では、分散コンピューティング環境でのメッセージはクライアント
−サービス間通信モデルでエンティティを承認するため暗号化された公開鍵のい
くつかのレイヤを含む。一実施形態では、サービスは公開鍵X1を含む証明書C
1を構築する。その後、サービスは秘密鍵Y1を使用して証明書を暗号化する。
サービスは、暗号化された証明書C1をサービス通知の一部としてスペース内に
格納する。その後、スペースは、証明書C1とスペースの公開鍵X2を含む新し
い証明書C2を構築する。その後、スペースは秘密鍵Y2を使用して証明書C2
を暗号化する。クライアントがスペースにサービスを要求すると、スペースはサ
ービス通知と証明書C2をクライアントに送る。クライアントは、ゲートを構築
すると、ゲートに、暗号化された証明書C2とクライアントの公開鍵X3を含む
他の証明書C3を含むメッセージをサービスに送らせる。C3は、送る前にクラ
イアントの秘密鍵Y3を使用して暗号化される。クライアントの公開鍵X3とス
ペースの公開鍵X2も、メッセージとともに送られる。一実施形態では、スペー
スの公開鍵X2はC3に含まれ、そのため、C3で暗号化される。この実施形態
では、クライアントの公開鍵X3はメッセージ内で暗号化されずに送られる。他
の実施形態では、クライアントの公開鍵X3とスペースの公開鍵X2は、メッセ
ージ内で暗号化されずに送られる。
In one embodiment, messages in a distributed computing environment include several layers of public keys that are encrypted to authorize entities in a client-service communication model. In one embodiment, the service is a certificate C containing a public key X1.
Build 1. The service then uses the private key Y1 to encrypt the certificate.
The service stores the encrypted certificate C1 in the space as part of the service notification. Space then builds a new certificate C2 containing the certificate C1 and the space's public key X2. After that, the space uses the private key Y2 to generate the certificate C2.
Encrypt. When the client requests a service from the space, the space sends the service notification and the certificate C2 to the client. When the client builds the gate, it causes the gate to send a message to the service containing the encrypted certificate C2 and another certificate C3 containing the client's public key X3. C3 is encrypted using the client's private key Y3 before sending. The client public key X3 and the space public key X2 are also sent with the message. In one embodiment, the space's public key X2 is contained in C3 and is therefore encrypted at C3. In this embodiment, the client public key X3 is sent unencrypted in the message. In another embodiment, the client public key X3 and the space public key X2 are sent unencrypted in the message.

【0299】 ゲートを作成した後、一実施形態では、クライアントは暗号化された証明書C
3および公開鍵X3を含むメッセージをサービスに送る。一実施形態では、スペ
ースの公開鍵X2はC3に含まれる。他の実施形態では、公開鍵X2はC3の外
部のメッセージに(暗号化されずに)含まれる。サービスは、メッセージを受け
取ると、受け取られたクライアントの公開鍵X3を使用して証明書C3を復号化
し、メッセージを復号化するために使用する受け取った公開鍵X3と照らし合わ
せて復号化された証明書C3の中に埋め込まれている公開鍵X3をチェックし、
メッセージが承認されたクライアントからのものであることを検証する。その後
、サービスはスペースの公開鍵X2で証明書C2(復号化された証明書C3から
抽出した)を復号化し、スペースの公開鍵X2と照らし合わせて復号化された証
明書C2に埋め込まれている公開鍵X2をチェックし、スペース証明書C2が承
認されたスペースからのものであることを検証する。一実施形態では、スペース
の公開鍵X2は証明書C3に含まれている。他の実施形態では、スペースの公開
鍵X2はC3の外部のメッセージに含まれている。他の実施形態では、たとえば
、サービスはスペース自体から別のところにあるスペースの公開鍵X2を取得す
る。最後に、サービスはサービスの公開鍵X1で証明書C1(復号化された証明
書C2から抽出した)を復号化し、復号化された証明書をチェックして、その証
明書がサービスによって作成されたものであることを検証する(証明書はサービ
スの公開鍵を含んでいる必要がある)。
After creating the gate, the client, in one embodiment, receives the encrypted certificate C.
3. Send a message to the service containing 3 and the public key X3. In one embodiment, the space public key X2 is contained in C3. In another embodiment, the public key X2 is included (unencrypted) in a message external to C3. When the service receives the message, it decrypts the certificate C3 using the received client's public key X3 and the decrypted proof against the received public key X3 used to decrypt the message. Check the public key X3 embedded in document C3,
Validate that the message is from an authorized client. After that, the service decrypts the certificate C2 (extracted from the decrypted certificate C3) with the space public key X2 and embeds it in the decrypted certificate C2 against the space public key X2. Check the public key X2 and verify that the space certificate C2 is from the approved space. In one embodiment, the public key X2 of the space is included in certificate C3. In another embodiment, the space public key X2 is included in a message external to C3. In other embodiments, for example, the service obtains the space's public key X2 elsewhere from the space itself. Finally, the service decrypts the certificate C1 (extracted from the decrypted certificate C2) with the service's public key X1, checks the decrypted certificate, and the certificate was created by the service. Verify that it is a certificate (the certificate must include the service's public key).

【0300】 さまざまな鍵生成アルゴリズムを分散コンピューティング環境で使用できる。
鍵の構成は、クライアントとサービスの両方から隠されており、クライアントと
サービスはどのような鍵生成アルゴリズムを使用しているかを問わない。
A variety of key generation algorithms can be used in the distributed computing environment.
The key composition is hidden from both the client and the service, regardless of what key generation algorithm the client and service are using.

【0301】 Kerberosチケットは、分散コンピューティング環境で使用されるセキ
ュリティ証明書の一例である。Kerberosは、コンピュータ・ネットワー
ク内のサービスの要求を認証するセキュリティで保護された方法である。Ker
berosを使用すると、ユーザは特定のサービスを要求するために使用できる
認証プロセスに暗号化された「チケット」を要求することができる。ユーザのパ
スワードは、ネットワークに通す必要はない。
A Kerberos ticket is an example of a security certificate used in a distributed computing environment. Kerberos is a secure method of authenticating requests for services within a computer network. Ker
Beros allows a user to request an encrypted "ticket" for an authentication process that can be used to request a particular service. The user's password does not have to pass through the network.

【0302】 分散コンピューティング環境では、クライアントとサービスとの間で送られる
メッセージの品質が損なわれないよう実質的に保証するメカニズムを提供する。
一実施形態では、メッセージが改変されていないことを検証するため発送側は受
取側が使用できる情報を含むトークンを埋め込む。メッセージに埋め込む情報を
生成する方法はいくつかある。一実施形態では、メッセージのハッシュを計算し
、それをメッセージとともに送る。ハッシュ法は、文字列を元の文字列を表す通
常短い固定長の値または鍵に変換する操作を含む。メッセージを受け取ると、受
取側はそのハッシュを再計算し、送られたハッシュに照らしてチェックする。メ
ッセージが改変されていた場合、同じハッシュが生成される可能性はほとんどな
い。発送側は、ハッシュを暗号化し、対応する公開鍵を暗号化されたメッセージ
に入れて送り、そのハッシュが損なわれないように実質的に保証する。
In a distributed computing environment, a mechanism is provided that substantially guarantees that the quality of messages sent between clients and services is not compromised.
In one embodiment, the sender embeds a token containing information that the recipient can use to verify that the message has not been tampered with. There are several ways to generate information to embed in a message. In one embodiment, a hash of the message is calculated and sent with the message. Hashing involves the conversion of a string into a key ordinarily short fixed length value or key that represents the original string. Upon receiving the message, the recipient recalculates the hash and checks it against the hash sent. If the message has been modified, it is unlikely that the same hash will be generated. The sender encrypts the hash and sends the corresponding public key in the encrypted message, effectively guaranteeing that the hash is intact.

【0303】 他の実施形態では、巡回冗長検査などの誤り検出方式を使用する。巡回冗長検
査は、通信リンクで送られたデータ内にエラーがないか調べる方法である。巡回
冗長検査を使用する実施形態では、発送側はnビットの多項式をメッセージに適
用し、その結果の巡回冗長検査(CRC)をメッセージに付加する。受取側は、
同じ多項式(メッセージでも渡される)をメッセージに適用し、その結果を発送
側が付加した結果と比較する。マッチする場合、メッセージは正常に受け取られ
たということである。マッチしない場合、発送側はメッセージの再送を通知され
る。
In another embodiment, an error detection scheme such as a cyclic redundancy check is used. Cyclic redundancy checking is a method of looking for errors in the data sent over a communication link. In embodiments that use a cyclic redundancy check, the sender applies an n-bit polynomial to the message and adds the resulting cyclic redundancy check (CRC) to the message. The recipient is
Apply the same polynomial (also passed in the message) to the message and compare the result with the result added by the sender. If there is a match, the message was successfully received. If there is no match, the sender is notified to resend the message.

【0304】 ゲート・ファクトリは「信頼できる」コードなので、ゲート・ファクトリもま
たセキュリティで一定の役割を果たす。信頼できるゲート・ファクトリを使用し
てゲートを生成することにより、ゲートが信頼できるコードであり、そのコード
がサービス通知に関して正しいものであることを保証できる。クライアントは、
認証の一手段として、クライアントIDトークンまたは証明書をゲート・ファク
トリに提示する必要がある。サービスは、クライアントがゲートを作成するとき
に、サービスIDトークンまたは証明書をクライアントに提示する(たとえば、
通知を通じて)。ここで説明したように、クライアントおよびサービス・トーク
ンのペアを使用して、クライアントがメッセージをサービスに送ることができる
ようにするために使用される第3の証明書を作成する。この第3の証明書は、認
証証明書と呼ばれる。認証証明書は、認証プロセスの実行時に認証サービスによ
り作成される。一実施形態では、サービスは認証ポリシーを自由に使用できる。
一実施形態では、認証サービスはサービスに代わって認証ポリシーを管理するた
め、サービス側では、使用されている特定の認証ポリシーを意識する必要はない
Since the Gate Factory is "trusted" code, the Gate Factory also plays a role in security. By using a trusted gate factory to generate a gate, you can ensure that the gate is trusted code and that the code is correct for service notifications. The client is
As a means of authentication, it is necessary to present the client ID token or certificate to the gate factory. The service presents the service ID token or certificate to the client when the client creates the gate (eg,
Through notification). As described herein, the client and service token pair is used to create a third certificate that is used to enable the client to send messages to the service. This third certificate is called an authentication certificate. The authentication certificate is created by the authentication service during the authentication process. In one embodiment, services are free to use authentication policies.
In one embodiment, the authentication service manages the authentication policy on behalf of the service, so the service does not need to be aware of the particular authentication policy being used.

【0305】 クライアントはサービス通知で指定した認証サービスを実行することにより受
け取った認証証明書を使用してゲートを構築する。これにより、構築されたゲー
トは認証証明書をそれぞれのメッセージとともにサービスに送ることができる。
サービスがクライアントから第1のメッセージで第1の認証証明書を受け取ると
、サービスはサービス通知で指定されている認証サービスを使用してクライアン
トを認証し、認証証明書のクライアントのIDへのバインドを確立する。
The client constructs a gate by using the authentication certificate received by executing the authentication service specified by the service notification. This allows the constructed gate to send the authentication certificate with the respective message to the service.
When the service receives the first authentication certificate from the client in the first message, the service authenticates the client using the authentication service specified in the service notification and binds the authentication certificate to the client's ID. Establish.

【0306】 すでに述べたように、サービスによって出力されるいくつかの結果がスペース
内で通知され、最終的に結果ゲートを使用してアクセスされる。結果ゲートは、
結果を生成するために使用する入力ゲートと同じセキュリティ証明書を含む場合
もあれば含まない場合もある。サービスへの入力は出力(結果)と非同期である
ため、結果は、異なるアクセス権限セットが関連付けられる。たとえば、給料支
払い簿サービスではクライアントの異なる集まりが給料支払い簿サービスを起動
して給料支払い簿サービスの結果(給与)を読み取ることができる。そこで、ク
ライアントは、結果へのアクセス権を取得するために別の認証プロセスを適用さ
れる必要があり、これは、結果に関する通知で指定された認証サービスから結果
に対する認証証明書を受け取る作業も含む。
As already mentioned, some results output by the service are signaled in space and finally accessed using the results gate. The result gate is
It may or may not contain the same security certificate as the input gate used to generate the result. Since the inputs to the service are asynchronous with the outputs (results), the results are associated with different permission sets. For example, in a payroll service, different groups of clients can activate the payroll service to read the results (salary) of the payroll service. So the client needs to apply another authentication process to get access to the result, including the work of receiving the authentication certificate for the result from the authentication service specified in the result notification. .

【0307】 メッセージ・ゲートにより、ほとんどのセキュリティ・チェックの負担がサー
ビスから取り除かれる。サービスでは、能力の発揮と、クライアントの認証に集
中することができる。クライアントが要求された(または割り当てられた)能力
にのみアクセスできるようにする際に、特権は最低限にするという原則が守られ
る。
The Message Gate relieves most of the security check burden from the service. The service allows you to focus on your ability and client authentication. The principle of least privilege is followed when ensuring that clients have access only to requested (or assigned) capabilities.

【0308】 セキュリティ・チェックは、ゲートの作成時および/またはゲートの使用時(
メッセージを発送かつ/または受け取るとき)に実行される。クライアントが通
知されたアイテム(サービス)へのアクセスを要求したときに、ゲート作成のプ
ロセスが開始する。このプロセスで、クライアント・ゲート・ファクトリは、サ
ービスと連携して、互いに相互認証を行う。ゲート作成時に実行されるチェック
は広範にわたり、ゲートの使用時に実行されるチェックの回数が最小限に抑えら
れる。サービスでクライアントを認証した後、サービスはクライアントの特定の
能力を判別し(たとえば、サービスでクライアントがどのようなことを実行する
ことを許されているか)、その能力をクライアントの認証証明書に関連付けるこ
とができる。これらの特定の能力により、サービス上でクライアントがどのよう
な操作を実行することを許されるかを指定できる。ゲートではすべてのメッセー
ジに認証証明書が含まれることを確認するので、サービスでは、受け取ったとき
のそれぞれの要求を認証されたクライアントの能力に照らし合わせてチェックす
ることができる。
Security checks are performed during gate creation and / or gate usage (
(When sending and / or receiving messages). The process of gate creation begins when the client requests access to the notified item (service). In this process, the Client Gate Factory works with the service to mutually authenticate each other. The checks performed during gate creation are extensive and the number of checks performed during gate use is minimized. After authenticating the client with the service, the service determines the client's specific capabilities (for example, what the service is allowed to do with the client) and associates that capability with the client's authentication credentials. be able to. These specific capabilities allow you to specify what operations clients are allowed to perform on the service. Since the gate verifies that every message contains an authentication certificate, the service can check each request as it is received against the capabilities of the authenticated client.

【0309】 ゲート作成チェックでは、XMLメッセージ・スキーマによって指定されたサ
ービス能力の一部または全部を使用する許可がクライアントにあることを確認す
る。一実施形態では、これらのチェックは、Kerberosなどの認証サービ
スとともにアクセス制御リスト(ACL)を使用して実施する。チャレンジ−応
答シーケンス(パスワードなど)も、クライアントの認証に使用できる。いくつ
かの実施形態では、ハードウェア・ベースの物理的識別方法を使用してクライア
ントを認証することができる。たとえば、ユーザは、識別と承認のためにスマー
ト・カードなどの物理的識別機能を提供することができる。認証のための他のメ
カニズムも、他の実施形態で使用できる。
A gate creation check ensures that the client has permission to use some or all of the service capabilities specified by the XML message schema. In one embodiment, these checks are performed using an access control list (ACL) with an authentication service such as Kerberos. Challenge-response sequences (such as passwords) can also be used to authenticate the client. In some embodiments, a hardware-based physical identification method may be used to authenticate the client. For example, a user may provide a physical identification feature such as a smart card for identification and authorization. Other mechanisms for authentication can also be used in other embodiments.

【0310】 一実施形態では、クライアントを認証するためにどのような手段を使用すると
しても、認証はクライアントとサービスの両方に見えないものであり、ゲート・
ファクトリが使用する認証サービスを認識し、その認証サービスが認証メカニズ
ムとポリシーを取り扱う。ゲート・ファクトリは、製品と環境に依存しているか
、または構成管理システムによって制御することさえできる。一実施形態では、
クライアント独立の程度と方法はプラットフォーム依存であるが、ゲート・ファ
クトリには認識される。いくつかの実施形態では、ハードウェア・ベースの物理
的識別方法を使用してクライアントを認証することができる。たとえば、ユーザ
は、識別と承認のためにスマート・カードなどの物理的識別機能を提供すること
ができる。認証のための他のメカニズムも、他の実施形態で使用できる。
In one embodiment, no matter what means are used to authenticate the client, the authentication is transparent to both the client and the service, and
It is aware of the authentication service used by the factory, which handles the authentication mechanism and policies. Gate factories are product and environment dependent or can even be controlled by a configuration management system. In one embodiment,
The degree and method of client independence is platform dependent, but is visible to the gate factory. In some embodiments, a hardware-based physical identification method may be used to authenticate the client. For example, a user may provide a physical identification feature such as a smart card for identification and authorization. Other mechanisms for authentication can also be used in other embodiments.

【0311】 分散コンピューティング環境のメッセージ・ゲートは、通常、単一のクライア
ントと関連付けられている。ゲート・ファクトリは関連付けの手段を決定する。
メッセージを送るときに実行されるチェックにより、適切なクライアントがゲー
トを使用していることが確認される。一実施形態では、ゲートはメッセージで渡
され、新しいクライアントがそのゲートを使用することを望んでいる場合、クロ
ーンが作成される。クローン・プロセスで、一組の作成チェックが新しく実行さ
れる。
Message gates in a distributed computing environment are typically associated with a single client. The gate factory determines the means of association.
Checks performed when sending a message confirm that the proper client is using the gate. In one embodiment, the gate is passed in the message and cloned if a new client wants to use the gate. The cloning process performs a new set of creation checks.

【0312】 スペースのクライアントがスペース・サービスの通知を見つけると(クライア
ントは他のサービスでもよい)、スペースのクライアントは他のサービスの場合
と同様にスペース・サービスを実行する。スペース・サービスを実行するには、
認証メカニズムを使用する必要がある。スペース・サービスの実行ではそれに限
定されないが、以下のことを行う。 1.スペースのクライアントは、まず、スペース・サービスのサービス通知で
指定されている認証サービスを実行して認証証明書を取得する。 2.スペースのクライアントは、認証証明書、スペースのXMLスキーマ(ス
ペースのサービス通知からの)、およびスペースのURI(スペースのサービス
通知からの)を使用して、スペースのゲートを構築する。一実施形態では、クラ
イアントはゲート構築するための情報をゲート・ファクトリに渡す。 3.スペースのクライアントは、そのゲートを使用してメッセージをサービス
に送ることによりそのスペース・サービスを実行する。 4.スペース・サービスは、クライアントから認証証明書を埋め込んだ第1の
メッセージを受け取ったときに、クライアントが使用したのと同じ認証サービス
を使用してクライアントを認証するための認証証明書を取得し、クライアントの
素性を確定する。 5.スペース・サービスは、その後、クライアントの能力(たとえば、クライ
アントがスペース・サービス上で実行を許されているもの)を判別し、その能力
を認証証明書にバインドする。
When the Space's client finds a notification of the Space service (the client may be another service), the Space's client performs the Space service as it would any other service. To run the space service,
Must use an authentication mechanism. The execution of space services includes, but is not limited to, the following: 1. The space client first executes the authentication service specified in the service notification of the space service to obtain the authentication certificate. 2. The space's client uses the authentication certificate, the space's XML schema (from the space's service notification), and the space's URI (from the space's service notification) to build the space's gate. In one embodiment, the client passes information to the gate factory to build the gate. 3. Space clients perform their space service by sending messages to the service using their gates. 4. When the space service receives the first message with the authentication certificate embedded from the client, it obtains the authentication certificate to authenticate the client using the same authentication service that the client used, and the client Determine the identity of. 5. The space service then determines the client's capabilities (eg, what the client is allowed to do on the space service) and binds that capability to the authentication certificate.

【0313】 「スペース」の項で説明しているように、スペース機能は、生成元のスペース
と実質的に同じ機能(同じXMLスキーマ)を持つ空のスペースを生成するイン
ターフェースを備えることができる。生成機能は、特に、結果に対しスペースを
動的に生成する場合に使用できる。リクエスタがスペースを生成すると、リクエ
スタのみがその生成されたスペースにアクセスすることが許される。たとえば、
生成されたスペースは、クライアントを安全な状態に保持する必要があるサービ
スからの結果を格納するために使用される。このセキュリティは以下のようにし
て保証される。
As described in the “Space” section, the space function can include an interface for generating an empty space having substantially the same function (same XML schema) as the generating space. The generation function can be used especially when dynamically generating space for the result. When a requester creates a space, only requesters are allowed access to the created space. For example,
The space created is used to store results from services that need to keep the client secure. This security is guaranteed as follows.

【0314】 初期ルート認証証明書を作成し、生成されたスペースの認証サービスを初期化
する際に、認証サービスがルート認証証明書のみを認証し、他の認証証明書を返
さないようにする(最初に許可されている生成されたスペースのクライアントは
ほかにない)。
When creating the initial root authentication certificate and initializing the authentication service of the generated space, the authentication service authenticates only the root authentication certificate and prevents other authentication certificates from being returned ( There is no other client of generated space that is initially allowed).

【0315】 生成されたスペースのセキュリティ・ポリシーを初期化し、ルート認証証明書
に関連付けられたルートIDで、セキュリティ管理機能を含むスペースのすべて
の機能にアクセスできるようにする。ルート認証証明書および生成されたスペー
スのサービス通知を生成されたスペースのリクエスタに返す。
The security policy of the created space is initialized so that the root ID associated with the root authentication certificate enables access to all the functions of the space including the security management function. Returns the root authentication certificate and service notification of the generated space to the requester of the generated space.

【0316】 リクエスタは、生成されたスペースにアクセスするためのゲートを構築するが
、それは、認証証明書と生成されたスペースのサービス通知を返すからである。
一実施形態では、リクエスタとリクエスタが認証証明書と生成されたスペースの
サービス通知を渡すクライアントまたはサービスのみが生成されたスペースにア
クセスできる。生成されたスペースへのアクセスをこのように制限することは、
たとえば、クライアントとサービスが結果をプライベートの状態に保持する場合
にクライアントおよびサービスがその生成されたスペースを使用して結果を格納
するときに役立つ。
The Requester builds a gate to access the created space, since it returns the authentication certificate and service notification of the created space.
In one embodiment, only the client or service that the requester and the requester pass the authentication certificate and service notification of the created space has access to the created space. Limiting access to the generated space in this way is
This is useful, for example, when clients and services use their generated space to store results when they keep the results private.

【0317】 サービスを実行した後、クライアントはセキュリティ管理スペース機能を使用
して生成されたスペースの認証ポリシーを変更し、その後、他のクライアントま
たはサービスはその生成されたスペースにアクセスできる。さらに、発見プロト
コルまたはその他の手段を用いて、生成されたスペースのサービス通知を生成さ
れたスペースの他のクライアント(他のクライアントはサービスでもよい)から
利用できるようにする。
After executing the service, the client changes the authentication policy of the created space using the security management space function, and then other clients or services can access the created space. In addition, discovery protocols or other means are used to make service notifications of the created space available to other clients of the created space (other clients may be services).

【0318】 分散コンピューティング環境でのメッセージ・トランスポート・レイヤは、ト
ランスポート時にクライアントとサービスとの間の通信のセキュリティおよび安
全性を保護するメカニズムを備える。このようなセキュリティは、「ワイヤ・セ
キュリティ」または「トランスポート・セキュリティ」と呼ばれるものであり、
これにより、ゲートを含むメッセージング・システムにより実装された認証セキ
ュリティから区別できる。メッセージの暗号化は、分散コンピューティング環境
のメッセージ・トランスポート・レイヤで行われる。暗号化されたトランスポー
トを要求するサービスは、XML通知にタグを付けることによりそのような作業
を行う。その後、ゲート・ファクトリは、BluetoothやHTTPSによ
って提供されるものなどのセキュリティで保護されたメッセージ・トランスポー
トを使用するゲート(または複数のゲート)を作成する。
The message transport layer in a distributed computing environment comprises mechanisms to protect the security and safety of communications between clients and services at transport time. This kind of security is called "wire security" or "transport security".
This distinguishes it from the authentication security implemented by the messaging system including the gate. Message encryption is performed at the message transport layer of the distributed computing environment. Services that require encrypted transports do such work by tagging XML notifications. The gate factory then creates the gate (or gates) that uses a secure message transport such as those provided by Bluetooth or HTTPS.

【0319】 HTTPS(Secure Hypertext Transfer Protocol)は、ユーザ・ページ要求
さらにWebサーバによって返されるページの暗号化および復号化を行うWeb
プロトコルである。HTTPSでは、ストリーム暗号化アルゴリズム(たとえば
、RC4)に多ビット鍵サイズ(40〜128ビット以上)を使用して、商用の
データ交換に対し十分な暗号化を行う。HTTPSは、分散コンピューティング
環境でトランスポートとして使用できる。
HTTPS (Secure Hypertext Transfer Protocol) is a Web page that encrypts and decrypts user page requests and pages returned by Web servers.
It is a protocol. In HTTPS, a multi-bit key size (40 to 128 bits or more) is used for a stream encryption algorithm (for example, RC4) to perform sufficient encryption for commercial data exchange. HTTPS can be used as a transport in a distributed computing environment.

【0320】 Bluetoothは、新しく登場したピアツーピアの無線通信規格である。
Bluetooth鍵生成アルゴリズムを分散コンピューティング環境で使用で
きる。Bluetoothでは暗号鍵をサポートする。暗号鍵はトランスポート
に依存しているが、クライアント、サービス、および組み合わせ鍵はトランスポ
ートに依存しないようにできる。
Bluetooth is a newly emerging peer-to-peer wireless communication standard.
The Bluetooth key generation algorithm can be used in a distributed computing environment. Bluetooth supports encryption keys. Cryptographic keys are transport-dependent, but client, service, and combination keys can be transport-independent.

【0321】 図26a−クライアントに認証証明書を提供する認証サービス 図26aは、一実施形態により、認証証明書をクライアントに提供する認証サ
ービスを示す流れ図である。分散コンピューティング環境のクライアントは、ク
ライアントのために1つまたは複数の機能を実行するサービスを必要とすること
がある。一実施形態では、セキュリティで保護されたメッセージング・チャネル
を設定するときにクライアントとサービスで使用する認証サービスを提供する。
認証サービスは、クライアントおよび/またはサービスの認証および望むレベル
のセキュリティおよびクライアントとサービスとの間で渡されるメッセージ・セ
ットを交渉するなどの機能をクライアントおよび/サービスのために実行する。
認証サービスは、分散コンピューティング環境内で実行されているプロセスでも
よい。認証サービスは、サービスおよび/またはクライアントと同じデバイスで
実行するか、またはそれとは別に、認証サービスは、認証サーバなどの別のデバ
イスで実行する。一実施形態では、認証サービスはインターネット・ベースのサ
ービスである。認証サービスは、それ独自のアドレス、たとえば、Univer
sal Resource Identifier(URI)を持ち、これによ
り、クライアントおよび/またはサービスは認証サービスと通信できる。一実施
形態では、認証サービスのアドレスを、サービスのサービス通知でクライアント
に提供する。認証サービスを共有するクライアントおよびサービスを使用すると
、クライアントとサービスとの間でセキュリティで保護されたメッセージング・
チャンネルを確立し、いくつかのセキュリティおよび認証プロトコルのどれかを
メッセージング・チャネルで使用できる。
26a- Authentication Service Providing Authentication Certificate to Client FIG. 26a is a flow diagram illustrating an authentication service providing authentication certificate to a client, according to one embodiment. A client in a distributed computing environment may require a service to perform one or more functions on behalf of the client. In one embodiment, an authentication service is provided for use by clients and services when setting up a secure messaging channel.
The authentication service performs functions for the client and / or service such as authenticating the client and / or service and the desired level of security and negotiating the message set passed between the client and the service.
The authentication service may be a process running within the distributed computing environment. The authentication service runs on the same device as the service and / or the client, or alternatively, the authentication service runs on another device, such as an authentication server. In one embodiment, the authentication service is an internet based service. The authentication service has its own address, for example, Universal.
It has a sal Resource Identifier (URI), which allows clients and / or services to communicate with authentication services. In one embodiment, the address of the authentication service is provided to the client in the service notification of the service. Clients and services that share an authentication service enable secure messaging between clients and services.
Channels can be established and any of several security and authentication protocols can be used with the messaging channel.

【0322】 一実施形態では、クライアントはクライアントIDトークンまたは証明書を認
証サービスに提示する。クライアント・トークンまたは証明書は十分に忘れがた
いものであり、クライアントの素性を証明するものとして使用できる。次に、認
証サービスは、クライアントIDトークンまたは証明書をチェックし、クライア
ントに、認証サービスのみが作成できる認証証明書を発行する。クライアントに
返された認証証明書は、次に、クライアントによりすべてのメッセージに入れら
れてサービスに送られる。一実施形態では、クライアント・メッセージ・ゲート
はゲート・ファクトリによって作成され、認証証明書をメッセージ・ゲートに格
納すると、メッセージ・ゲートはクライアントに代わって認証証明書をすべての
メッセージに入れてサービスに送る。メッセージを受け取ると、サービスは認証
証明書をチェックする。認証サービスのみが認証証明書を作成できるので、クラ
イアントが認証証明書を改ざんしていないとサービスは認識する。一実施形態で
は、サービスは認証証明書をクライアントによって使用される同じ認証サービス
に渡し、認証証明書が有効であることを確認し、クライアントが承認されたクラ
イアントであることを検証し、クライアントの素性を調べる。
In one embodiment, the client presents the client ID token or certificate to the authentication service. Client tokens or certificates are sufficiently memorable and can be used to prove the identity of a client. The authentication service then checks the client ID token or certificate and issues to the client an authentication certificate that only the authentication service can create. The authentication certificate returned to the client is then sent by the client in all messages to the service. In one embodiment, the Client Message Gate is created by the Gate Factory and stores the authentication certificate in the Message Gate, and the Message Gate sends the authentication certificate to the service on behalf of the client in all messages. . Upon receiving the message, the service checks the authentication certificate. Only the authentication service can create the authentication certificate, so the service recognizes that the client has not tampered with the authentication certificate. In one embodiment, the service passes the authentication certificate to the same authentication service used by the client, verifies that the authentication certificate is valid, verifies that the client is an authorized client, and identifies the client identity. Find out.

【0323】 スペース・サービスおよび認証サービスを含むすべてのサービスはそのクライ
アントを認証することができる。サービスによってクライアントの認証が行われ
ると、クライアントはそのサービスにアクセスできる。たとえば、スペース・サ
ービスの場合、クライアントはスペースからXML通知を取得する。
All services, including space services and authentication services, can authenticate their clients. Once the service authenticates the client, the client can access the service. For example, for the space service, the client gets an XML notification from the space.

【0324】 一実施形態では、サービスはそのサービスのすべてのクライアントが使用する
あらかじめ整えられている証明書を用意する。この実施形態では、認証により、
そのあらかじめ整えられた証明書が要求側クライアントに提供される。クライア
ントはあらかじめ整えられている証明書をサービスに提示すると、サービスによ
って承認される。
In one embodiment, a service provides a pre-arranged certificate for use by all clients of that service. In this embodiment, the authentication allows
The prearranged certificate is provided to the requesting client. The client presents the pre-arranged certificate to the service and is approved by the service.

【0325】 ステップ1000で、クライアントは認証証明書を認証サービスに要求する。
一実施形態では、クライアントは目的のサービスのサービス通知をサーチし、特
定する。一実施形態では、サービス通知はサービスにアクセスする際に使用され
る認証証明書を取得するために使用する認証サービスの通知を含む。一実施形態
では、サービス通知は、認証サービスのURIなどのアドレスを含む。一実施形
態では、クライアントは認証証明書を要求する認証サービスに情報を送る。一実
施形態では、クライアントは情報をゲート作成プロセス、たとえば、ゲート・フ
ァクトリに送り、ゲート作成プロセスは認証サービスにアクセスして認証証明書
を取得する。
In step 1000, the client requests an authentication certificate from the authentication service.
In one embodiment, the client searches for and identifies service notifications for the desired service. In one embodiment, the service notification includes a notification of the authentication service used to obtain the authentication credentials used in accessing the service. In one embodiment, the service notification includes an address such as the URI of the authentication service. In one embodiment, the client sends the information to an authentication service that requires an authentication certificate. In one embodiment, the client sends the information to a gate creation process, eg, a gate factory, which accesses the authentication service to obtain an authentication certificate.

【0326】 ステップ1002で、認証サービスはクライアントのために認証証明書を生成
する。認証証明書は、メッセージング・システムのメッセージに埋め込むことが
でき、これによりメッセージの受取側がメッセージの発送側を認証し、メッセー
ジが承認された発送側からのものであることを検証し、メッセージが発送側が受
取側に送ることを許可されているメッセージであることを検証できるようにする
データ要素またはデータ構造である。分散コンピューティング環境の一実施形態
では、認証証明書は特定のクライアントと特定のサービスとの間に設定されるメ
ッセージング・チャンネルに固有のものである。ステップ1002は、図26b
に詳しく示され、説明されている。図26aのステップ1004で、認証サービ
スはクライアントに認証証明書を返す。一実施形態では、認証証明書は、クライ
アントに直接返すことができる。一実施形態では、認証証明書をゲート作成プロ
セス、たとえば、ゲート・ファクトリに返し、このプロセスが次に、認証証明書
を使用してゲートを生成する。
At step 1002, the authentication service generates an authentication certificate for the client. The authentication certificate can be embedded in the message of the messaging system so that the recipient of the message can authenticate the sender of the message, verify that the message is from an authorized sender, and A data element or data structure that allows a party to verify that it is a message that it is authorized to send to the recipient. In one embodiment of a distributed computing environment, authentication credentials are specific to a messaging channel established between a particular client and a particular service. Step 1002 is shown in FIG.
Are shown and described in detail in. In step 1004 of Figure 26a, the authentication service returns the authentication certificate to the client. In one embodiment, the authentication certificate can be returned directly to the client. In one embodiment, the authentication certificate is returned to a gate creation process, eg, a gate factory, which then uses the authentication certificate to generate a gate.

【0327】 図26b−認証証明書を生成する認証サービス 図26bは一実施形態により、図26aのステップ1002で展開し、認証証
明書を生成する認証サービスを示す流れ図である。一実施形態のステップ100
2aで、認証サービスはクライアント・トークンとサービス・トークンを取得す
る。他の実施形態では、認証サービスはクライアント・トークンのみを取得する
。一実施形態では、クライアント・トークンは分散コンピューティング環境にお
けるクライアントの一意的な識別子である。一実施形態では、サービス・トーク
ンは分散コンピューティング環境におけるサービスの一意的な識別子である。た
とえば、公開/秘密鍵暗号化メカニズムの公開鍵をクライアントとサービスに対
する一意的な識別子として使用することができる。一実施形態では、クライアン
トはサービス通知でサービス・トークンを受け取り、クライアントはクライアン
ト・トークンとサービス・トークンを認証サービスに送る。他の実施形態では、
クライアントはクライアント・トークンとサービス通知URIを認証サービスに
送り、認証サービスはサービス通知からサービス・トークンを取り出すことがで
きる。
FIG. 26b- Authentication Service for Generating Authentication Certificates FIG. 26b is a flow diagram illustrating an authentication service for expanding an authentication certificate at step 1002 of FIG. 26a, according to one embodiment. Step 100 of one embodiment
At 2a, the authentication service obtains a client token and a service token. In other embodiments, the authentication service only obtains the client token. In one embodiment, the client token is a unique identifier for a client in a distributed computing environment. In one embodiment, the service token is a unique identifier for the service in the distributed computing environment. For example, the public key of a public / private key encryption mechanism can be used as a unique identifier for clients and services. In one embodiment, the client receives the service token in the service notification and the client sends the client token and the service token to the authentication service. In other embodiments,
The client sends the client token and the service notification URI to the authentication service, which can retrieve the service token from the service notification.

【0328】 ステップ1002bで、認証サービスはクライアントおよび/またはサービス
を検証する。一実施形態では、認証サービスはステップ1002aで取得したク
ライアント・トークンおよびサービス・トークンを使用して、クライアントおよ
び/またはサービスを検証する。他の実施形態では、ステップ1002aでクラ
イアント・トークンのみを取得しており、1002bでクライアント・トークン
のみを使用してクライアントを検証する。一実施形態では、クライアントはその
クライアント・トークンをすでに認証サービスに登録しており、認証サービスは
受け取ったクライアント・トークンを登録されているクライアント・トークンと
比較し、クライアントが有効なクライアントであるかどうかを検証することがで
きる。一実施形態では、クライアントはパスワードが設定されているログオン・
アカウントなどのチャレンジ/応答メカニズムを使用して認証サービスにアクセ
スし、クライアントを有効なクライアントとして検証することができる。一実施
形態では、サービスはすでに認証サービスに登録されており、そのサービス・ト
ークンを認証サービスに提供してある。認証サービスは、次に、受け取ったサー
ビス・トークンをすでに登録されているサービス・トークンと比較して、クライ
アントが有効なサービスにアクセスしようとしていることを検証する。他のタイ
プのクライアントおよびサービス認証も使用できる。たとえば、クライアントは
、認証サービスがクライアントを認証するためにかつ/またはクライアントがア
クセスしようとしているサービスを認証するために使用できる電子シグネチャま
たは電子証明書を提供する。
At step 1002b, the authentication service verifies the client and / or service. In one embodiment, the authentication service uses the client token and service token obtained in step 1002a to validate the client and / or service. In another embodiment, only the client token is obtained at step 1002a and the client token is used at 1002b to validate the client. In one embodiment, the client has already registered its client token with the authentication service and the authentication service compares the received client token with the registered client token to determine if the client is a valid client. Can be verified. In one embodiment, the client is a logon
A challenge / response mechanism such as an account can be used to access the authentication service and validate the client as a valid client. In one embodiment, the service is already registered with the authentication service and has provided its service token to the authentication service. The authentication service then verifies that the client is trying to access a valid service by comparing the received service token with the service token already registered. Other types of client and service authentication can also be used. For example, the client provides an electronic signature or certificate that the authentication service can use to authenticate the client and / or to authenticate the service the client is trying to access.

【0329】 ステップ1002cで、認証サービスは認証証明書を生成する。一実施形態で
は、認証証明書は、認証サービスのみが作成できる認証トークンを含む。一実施
形態では、認証サービスはクライアント・トークンとサービス・トークンを使用
して認証証明書を生成する。他の実施形態では、認証サービスはクライアント・
トークンだけを使用して、認証証明書を生成する。さらに他の実施形態では、認
証サービスは認証証明書の生成に取得されているトークを使用しないが、その代
わりに、認証証明書生成アルゴリズムを使用して実質的に忘れることはできない
認証証明書を生成することができる。一実施形態では、認証サービスはサービス
・トークンとクライアント・トークンを組み合わせて、一意的な認証証明書を生
成する。たとえば、サービス・トークンとクライアント・トークンを64ビット
値とし、この2つのトークンを組み合わせて128ビットの認証証明書を生成す
ることができる。他の実施形態では他の方法を使用して、認証証明書を生成する
ことができる。
In step 1002c, the authentication service generates an authentication certificate. In one embodiment, the authentication certificate includes an authentication token that only the authentication service can create. In one embodiment, the authentication service uses the client token and the service token to generate an authentication certificate. In another embodiment, the authentication service is a client
Generate an authentication certificate using only the token. In yet another embodiment, the authentication service does not use the obtained talk to generate an authentication certificate, but instead uses an authentication certificate generation algorithm to generate an authentication certificate that is virtually unforgettable. Can be generated. In one embodiment, the authentication service combines the service token and the client token to generate a unique authentication certificate. For example, the service token and the client token can be 64-bit values and the two tokens can be combined to generate a 128-bit authentication certificate. Other methods may be used in other embodiments to generate the authentication certificate.

【0330】 図41−ゲートの作成 図41は、一実施形態によるクライアント用にゲートを作成する方法を示す流
れ図である。一実施形態では、ゲート・ファクトリはXMLサービス記述に基づ
いてゲートを生成するクライアント上の信頼できるコードである。他の実施形態
では、ゲート・ファクトリは別のデバイスに常駐し、クライアントがゲートを生
成するために使用できる。たとえば、ゲート・ファクトリ・サービスは、クライ
アントがゲートを生成するためにアクセスできる。ゲート・ファクトリを使用す
ると、生成されたゲートが信頼できるコードであること、またそのコードがサー
ビス通知に関して正しいものであることを確認することができる。
Figure 41-Gate Creation Figure 41 is a flow diagram illustrating a method for creating a gate for a client according to one embodiment. In one embodiment, the gate factory is trusted code on the client that creates gates based on the XML service description. In other embodiments, the gate factory resides on another device and can be used by clients to generate gates. For example, the gate factory service can be accessed by clients to create gates. The gate factory can be used to ensure that the generated gate is trusted code and that the code is correct for service notifications.

【0331】 ゲート作成時に実行されるセキュリティ・チェックは広範にわたり、ゲートの
使用時に実行する必要のあるセキュリティ・チェックの回数が最小限に抑えられ
る。ゲート作成時のセキュリティ・チェックにより、サービス通知から取り出さ
れたメッセージ・スキーマで指定された一組のサービス能力を使用する許可がク
ライアントにあることを確認することができる。一実施形態では、これらのセキ
ュリティ・チェックは、認証サービスとともにアクセス制御リスト(ACL)を
使用して実施する。一実施形態では、チャレンジ/応答シーケンス(ログオンお
よびパスワード・アカウントなど)も、クライアントの認証に使用できる。一実
施形態では、クライアント認証およびゲート作成セキュリティ・チェックは、ク
ライアントおよびサービスから隠されており、ゲート・ファクトリは使用する認
証サービスのみを認識し、認証サービスは認証メカニズムおよびポリシーを認識
できる。
The security checks that are performed at gate creation time are extensive, minimizing the number of security checks that need to be performed when using a gate. Security checks during gate creation can ensure that the client has permission to use the set of service capabilities specified in the message schema retrieved from the service notification. In one embodiment, these security checks are performed using an access control list (ACL) with an authentication service. In one embodiment, challenge / response sequences (such as logon and password accounts) can also be used to authenticate the client. In one embodiment, client authentication and gate creation security checks are hidden from clients and services, the gate factory only knows which authentication service to use, and the authentication service can be aware of authentication mechanisms and policies.

【0332】 ステップ1010で、ゲート・ファクトリはクライアントがサービスと通信す
る際に使用する認証証明書を取得する。一実施形態では、クライアントは認証サ
ービスから認証証明書をすでに取得しており、その認証証明書をゲート・ファク
トリに提供する。他の実施形態では、ゲート・ファクトリは認証サービスから認
証証明書を取得する。
At step 1010, the gate factory obtains the authentication certificate that the client uses to communicate with the service. In one embodiment, the client has already obtained an authentication certificate from the authentication service and provides the authentication certificate to the gate factory. In another embodiment, the gate factory obtains the authentication certificate from the authentication service.

【0333】 一実施形態では、ゲート・ファクトリはサービスのメッセージ・スキーマも取
得する。一実施形態では、ゲート・ファクトリはクライアントからメッセージ・
スキーマを取得する。他の実施形態では、ゲート・ファクトリはサービス通知か
らメッセージ・スキーマを受け取る。たとえば、クライアントは、サービス通知
のURIをゲート・ファクトリに送り、ゲート・ファクトリはURIを使用して
メッセージ・スキーマを取得しサービス通知に接続する。メッセージ・スキーマ
では、サービスに発送またはサービスから受け取るメッセージ群を記述する。た
とえば、サービスを呼び出す、またはサービスのいくつかの一部を呼び出すため
に、クライアントからサービスに送られるメッセージを記述できる。また、応答
メッセージやイベント通知メッセージなど、サービスからクライアントに送るメ
ッセージも記述できる。一実施形態では、メッセージをXMLメッセージとし、
メッセージ・スキーマをXMLメッセージ・スキーマとすることができる。
In one embodiment, the gate factory also gets the message schema of the service. In one embodiment, the gate factory sends messages from clients.
Get the schema. In another embodiment, the gate factory receives the message schema from the service notification. For example, the client sends the service notification URI to the gate factory, which uses the URI to obtain the message schema and connect to the service notification. The message schema describes a group of messages that are sent to or received from the service. For example, a message can be written that is sent from a client to a service to call the service or to call some part of the service. Also, a message sent from the service to the client such as a response message or an event notification message can be described. In one embodiment, the message is an XML message,
The message schema can be an XML message schema.

【0334】 ステップ1012で、ゲート・ファクトリはクライアント・メッセージ・ゲー
トを生成する。一実施形態では、ゲート・ファクトリにより、生成されたメッセ
ージ・ゲートに認証証明書がデータとして埋め込まれ、メッセージ・ゲート・コ
ードで認証証明書にアクセスできる。他の実施形態では、認証証明書をクライア
ントのメッセージ・ゲートの外部に格納することができる。一実施形態では、サ
ービスのURIも埋め込むか、またはゲート・ファクトリによってゲートに提供
することができる。
At step 1012, the Gate Factory creates a Client Message Gate. In one embodiment, the Gate Factory embeds the authentication certificate as data in the generated MessageGate so that the MessageGate code can access the authentication certificate. In other embodiments, the authentication credentials may be stored outside the client's MessageGate. In one embodiment, the URI of the service may also be embedded or provided to the gate by the gate factory.

【0335】 ステップ1012で、ゲート・ファクトリはそのメッセージ・スキーマを使用
してクライアント・メッセージ・ゲートを生成する。メッセージ・スキーマは、
クライアントがメッセージ・ゲートを通じてサービスに送るメッセージ群を定義
するのに使用できる。ゲート・ファクトリでは、そのメッセージ・スキーマをゲ
ートにコンパイルする。メッセージ・スキーマは、ゲート・ファクトリによって
、メッセージ検証プロセス中に素早くアクセスするのに適している内部形式でゲ
ートにコンパイルすることができる。サービスへのアクセスは、スキーマを使用
して特定のクライアントに対し制限することができ、それにより、サービスへの
一部のアクセスにクライアントを限定できる。一実施形態では、クライアントが
クライアントの能力および/またはアクセス権に基づきサービス通知をたとえば
スペースから取得すると、そのサービスに関して制限されたメッセージ・スキー
マがクライアントに提供される。したがって、ゲート・ファクトリは、制限され
たメッセージ・スキーマをコンパイルしてクライアント・メッセージ・ゲートに
し、それにより、クライアントのサービスへのアクセスを制限することができる
。一実施形態では、認証サービスはクライアントがサービスに送ることができる
メッセージ・セット全体のうちのサブセットを判別することができる。分散コン
ピューティング環境ではアクセスの1つまたは複数のレベルをサービスに設定で
きる。あるレベルのアクセスでは、サービスのクライアントはそのサービスに対
するメッセージ・スキーマによる要求メッセージのすべてにアクセスすることが
でき、したがって、サービスが分散コンピューティング環境でクライアントに提
供している実質的にすべての機能にアクセスできる。他のレベルでは、サービス
のクライアントはメッセージ・スキーマによる要求メッセージのさまざまなサブ
セットにアクセスすることができ、したがって、サービスの機能のさまざまなサ
ブセットにアクセスすることができる。一実施形態では、アクセスのレベルもク
ライアントの能力によって決まる。たとえば、シンクライアントは、大きなデー
タ・ファイルをダウンロードできず、したがって、大きなデータ・ファイルのダ
ウンロードを要求するメッセージを使用することは制限される。一実施形態では
、クライアントはクライアントに関する情報を認証サービスに提供し、そのクラ
イアントのアクセス・レベルを判別できるようにする。一実施形態では、情報に
はサービスに対する特定のレベルのアクセスの要求を含めることができる。一実
施形態では、ゲート・ファクトリは情報を認証サービスに提供し、そのクライア
ントのアクセス・レベルを判別できるようにする。そこで、ゲート・ファクトリ
は、メッセージ・スキーマで記述されているメッセージ・セット全体のサブセッ
トをクライアントの能力および/またはアクセス・レベルに基づいてサービスに
送ることができるクライアント・メッセージ・ゲートを生成する。
At step 1012, the Gate Factory uses the message schema to generate a Client Message Gate. The message schema is
Can be used by a client to define a set of messages to send to a service through a MessageGate. The gate factory compiles its message schema into a gate. The gate factory allows the message schema to be compiled into a gate in an internal format suitable for quick access during the message validation process. Access to the service can be restricted to specific clients using the schema, which can limit the client to some access to the service. In one embodiment, when a client obtains a service notification from, for example, a space based on the client's capabilities and / or access rights, a limited message schema for that service is provided to the client. Thus, the gate factory can compile the restricted message schema into client message gates, thereby restricting client access to services. In one embodiment, the authentication service can determine a subset of the total message set that the client can send to the service. In a distributed computing environment, one or more levels of access can be set on a service. At a certain level of access, a client of a service has access to all of the request messages in the message schema for that service, and thus is able to access virtually all the functionality that the service provides to the client in a distributed computing environment. Can access. At other levels, clients of the service may have access to different subsets of request messages according to the message schema, and thus different subsets of service functionality. In one embodiment, the level of access also depends on the capabilities of the client. For example, thin clients cannot download large data files, thus limiting the use of messages requesting large data file downloads. In one embodiment, the client provides information about the client to the authentication service so that the client's access level can be determined. In one embodiment, the information may include a request for a particular level of access to the service. In one embodiment, the gate factory provides information to the authentication service so that it can determine the access level of its clients. The gate factory then creates a client message gate that can send a subset of the entire message set described in the message schema to the service based on the capabilities and / or access levels of the client.

【0336】 ステップ1014で、ゲート・ファクトリは、クライアント・メッセージ・ゲ
ートを生成しており、ゲートは生成されたことをクライアントに通知することが
できる。一実施形態では、クライアント・メッセージ・ゲートはクライアントに
よってアクセス可能な別個のコード・モジュールである。一実施形態では、クラ
イアント・メッセージ・ゲートは、クライアントに常駐する。クライアントは、
メッセージを生成し、そのメッセージをクライアント・メッセージ・ゲートに渡
し、このゲートにより、メッセージを検証し、メッセージをサービスに送ること
ができる。クライアントおよびサービスでメッセージを交換するためのゲート・
ペア・メカニズムの実施形態は図42a〜42cに詳しく示されている。ゲート
・ファクトリの実施形態については別のところで詳述する。ゲートは、コードと
データからなり、それ自体はメッセージで渡すことができる。このため、クライ
アントおよび/またはサービス上にゲートを作成する代替方法となる。一実施形
態では、メッセージで渡されたゲートは、新しいクライアントがそのゲートを使
用することを望んでいる場合、クローンが作成される。このクローン作成プロセ
スでは、新しいクライアントの認証を含むゲート作成セキュリティ・チェックを
新たにいくつか実行する。新しいクライアントに対しては新しい一意的な認証証
明書が生成されクローンのゲートに埋め込まれる。
At step 1014, the gate factory has created a client message gate, which the gate can notify the client to do. In one embodiment, the client message gate is a separate code module accessible by the client. In one embodiment, the client message gate resides on the client. The client is
It can generate a message and pass it to the client message gate, which can validate the message and send it to the service. Gates for exchanging messages with clients and services
Embodiments of the pairing mechanism are detailed in Figures 42a-42c. The gate factory embodiment is described in detail elsewhere. A gate consists of code and data, which itself can be passed in a message. This is an alternative way to create a gate on the client and / or service. In one embodiment, the gate passed in the message is cloned if a new client wants to use that gate. This cloning process performs some new gating security checks, including authentication of new clients. A new unique authentication certificate is generated for the new client and embedded in the gate of the clone.

【0337】 図42a−メッセージをサービスに送るクライアント 図42aは、一実施形態によりクライアントが第1のメッセージをサービスに
送る方法を示す流れ図である。ステップ1020で、クライアントはメッセージ
をクライアント・メッセージ・ゲートに送る。一実施形態では、メッセージはX
MLメッセージである。ステップ1022で、メッセージ・ゲートはメッセージ
を送る前にメッセージに認証証明書を埋め込む。一実施形態では、認証証明書は
、上述のように、認証サービスによりゲート構築の一部として提供されている。
FIG. 42a-- Client Sending Message to Service FIG. 42a is a flow diagram illustrating a method for a client to send a first message to a service, according to one embodiment. At step 1020, the client sends a message to the client message gate. In one embodiment, the message is X
This is an ML message. In step 1022, MessageGate embeds the authentication certificate in the message before sending it. In one embodiment, the authentication certificate is provided by the authentication service as part of the gate construction, as described above.

【0338】 一実施形態では、メッセージ・ゲートは、メッセージのデータ表現言語の型の
正しさ、シンタックスなどを検証することができる。一実施形態では、メッセー
ジ・ゲートはメッセージと、データ表現言語メッセージ・スキーマのメッセージ
・テンプレートとを比較し、メッセージのデータ表現言語の型の正しさを調べる
。一実施形態ではメッセージはXMLメッセージであり、メッセージ・ゲートは
XMLメッセージ・スキーマと照らしてメッセージをチェックすることができる
。一実施形態では、メッセージ・スキーマは、上述のように、認証サービスによ
りゲート構築の一部として提供されている。一実施形態では、メッセージ・ゲー
トはメッセージのメッセージ・テンプレートをスキーマに配置し、メッセージ内
のさまざまなアイテムまたはフィールドをそのメッセージ・テンプレートと比較
して、アイテムの型の正しさを判別する。
In one embodiment, the Message Gate can verify the type correctness, syntax, etc. of the data representation language of the message. In one embodiment, the MessageGate compares the message with the message template of the data representation language message schema to determine the correctness of the data representation language type of the message. In one embodiment, the message is an XML message and the message gate can check the message against the XML message schema. In one embodiment, the message schema is provided by the authentication service as part of the gate construction, as described above. In one embodiment, the MessageGate places the message template of the message in the schema and compares various items or fields in the message with the message template to determine the correctness of the item's type.

【0339】 一実施形態では、第1のメッセージはクライアントから受け取ったサービスに
送られる要求メッセージであり、メッセージ・ゲートは、メッセージおよび/ま
たはメッセージで指定された要求サービス機能が、クライアントによってサービ
スに送ることができるメッセージおよび/またはサービス機能の許容されるサブ
セット内にあるかどうかを判別することができる。一実施形態では、メッセージ
・ゲートはメッセージをメッセージ・スキーマによる許容されるメッセージのサ
ブセットと比較し、メッセージが許容されるものであるかどうかを判別する。一
実施形態では、認証サービスによってクライアントに提供されるサービスはアク
セス・レベルを使用して、クライアントによりサービスに送られる許容されるメ
ッセージのサブセットを判別することができる。一実施形態では、第1の要求メ
ッセージは、クライアントと通信チャンネルの確立をサービスに要求する。一実
施形態では、通信チャネルはゲート・ペアで構成される。ゲート・ペアは、クラ
イアント・メッセージ・ゲートとサービス・メッセージ・ゲートからなる。一実
施形態では、サービス・メッセージ・ゲートは、第1のメッセージがサービスに
送られたときにはサービス上に存在していない。
In one embodiment, the first message is a request message sent to the service received from the client, and the message gate is the message and / or the request service function specified in the message sent to the service by the client. It is possible to determine if it is within an allowed subset of possible messages and / or service functions. In one embodiment, the MessageGate compares the message with a subset of the allowed messages according to the message schema to determine if the message is allowed. In one embodiment, the service provided by the authentication service to the client can use the access level to determine the subset of messages allowed by the client to the service. In one embodiment, the first request message requests the service to establish a communication channel with the client. In one embodiment, the communication channel comprises a gate pair. A gate pair consists of a client message gate and a service message gate. In one embodiment, the service message gate is not present on the service when the first message is sent to the service.

【0340】 ステップ1024で、クライアント・メッセージ・ゲートはクライアントをサ
ービスに接続する通信チャネルを介して第1のメッセージをサービスに送る。一
実施形態では、クライアント・メッセージ・ゲートは、メッセージをサービスの
URIに送る。一実施形態では、サービスURIが、サービス通知でクライアン
トに提供されている。一実施形態では、クライアント・メッセージ・ゲートが特
定のサービスURIについて作成され、すべてのメッセージは特定のサービスU
RIに発送され、そのためクライアントからサービスへのメッセージ・チャネル
が作成される。一実施形態では、要求メッセージはクライアント・メッセージ・
ゲートのアドレスを含むので、サービスはクライアント・メッセージ・ゲートを
通じてクライアントとの通信リンクを確立できる。メッセージ・ゲートに使用で
きるアドレスの例として、それに限定されないがUniversal Uniq
ue Identifiers(UUID)やURIがある。サービスがクライ
アントから第1のメッセージを受け取るプロセスは図42bに示され説明されて
いる。
At step 1024, the client message gate sends a first message to the service over the communication channel connecting the client to the service. In one embodiment, the Client Message Gate sends the message to the URI of the service. In one embodiment, the service URI is provided to the client in the service notification. In one embodiment, a client message gate is created for a particular service URI and all messages are
Routed to the RI, which creates a message channel from the client to the service. In one embodiment, the request message is a client message
Since it contains the address of the gate, the service can establish a communication link with the client through the client message gate. Non-limiting examples of addresses that can be used for Message Gates are Universal Uniq.
ue Identifiers (UUID) and URI. The process by which the service receives the first message from the client is shown and described in Figure 42b.

【0341】 図42b−メッセージをクライアントから受け取るサービス 図42bは、一実施形態によりクライアントからメッセージ受け取り、認証サ
ービスを使用してメッセージを認証するサービスを示す流れ図である。ステップ
1030で、サービスは、クライアントから第1のメッセージを受け取る。一実
施形態では、サービス・メッセージ・ゲートは、第1のメッセージがサービスに
よって受け取られたときにはサービス上に存在していない。一実施形態では、ク
ライアント・メッセージ・ゲートは第1のメッセージをそのサービスのURIに
送り、サービスはクライアントから第1のメッセージを受け取り、その後、サー
ビス・メッセージ・ゲートを生成する。一実施形態では、サービスに関するメカ
ニズムを構成することにより、一般にサービス通知でクライアントに送られるU
RIでクライアントからのメッセージを含むメッセージを受け取るようにする。
クライアントから第1のメッセージを受け取ると、サービスはサービス・ゲート
を生成し、サービス・メッセージ・ゲートとクライアント・メッセージ・ゲート
からなるゲート・ペアを通じてクライアントとの通信チャネルを確立する。一実
施形態では、クライアント・メッセージ・ゲートのアドレス(たとえば、UUI
DまたはURI)をクライアントから第1のメッセージでサービスに送り、これ
を使用してサービス・メッセージ・ゲートを生成する。一実施形態では、サービ
ス・メッセージ・ゲートはクライアント・メッセージ・ゲートとのみ通信し、し
たがってメッセージ・ゲートと関連するクライアントと通信する。そこで、いく
つかの実施形態では、少なくとも1つの一意的なサービス・メッセージ・ゲート
が、サービスと現在通信中のクライアントごとに存在する。
Figure 42b- Message Receiving Service from Client Figure 42b is a flow diagram illustrating a service for receiving a message from a client and authenticating the message using an authentication service according to one embodiment. At step 1030, the service receives a first message from the client. In one embodiment, the service message gate is not present on the service when the first message is received by the service. In one embodiment, the client message gate sends a first message to the service's URI, the service receives the first message from the client, and then creates a service message gate. In one embodiment, the U associated with the service notification is typically sent to the client by configuring a mechanism for the service.
The RI receives the message including the message from the client.
Upon receiving the first message from the client, the service creates a service gate and establishes a communication channel with the client through a gate pair consisting of the service message gate and the client message gate. In one embodiment, the address of the client message gate (eg, UUI
D or URI) from the client to the service in the first message, which is used to generate the service message gate. In one embodiment, the Service Message Gate communicates only with the Client Message Gate and thus with the client associated with the Message Gate. Thus, in some embodiments, at least one unique service message gate exists for each client currently in communication with the service.

【0342】 上述のように、クライアント・メッセージ・ゲートは認証証明書を、サービス
に送られる第1のメッセージ内に埋め込んでいる。ステップ1032で、サービ
スは認証証明書を認証サービスに送る。一実施形態では、認証サービスはクライ
アントが認証証明書を生成するために使用するのと同じ認証サービスである。一
実施形態では、サービス・メッセージ・ゲートが認証証明書を認証証明書に送る
。一実施形態では、メッセージ全体が認証サービスに送られる。
As mentioned above, the Client Message Gate embeds the authentication certificate in the first message sent to the service. In step 1032, the service sends the authentication certificate to the authentication service. In one embodiment, the authentication service is the same authentication service that the client uses to generate the authentication certificate. In one embodiment, the Service Message Gate sends the authentication certificate to the authentication certificate. In one embodiment, the entire message is sent to the authentication service.

【0343】 ステップ1034で、認証サービスは認証証明書の検証を実行する。一実施形
態では、認証サービスは認証証明書を作成したときの認証証明書のコピーを含む
。一実施形態では、認証サービスはサービスから受け取った認証証明書と認証証
明書のコピーとを比較する。ステップ1036で認証証明書がマッチした場合、
認証サービスは、認証証明書は検証され、有効であるように思われることをサー
ビスに通知する。検証プロセスが失敗した場合、認証サービスは、認証証明書が
無効であるように思われることをサービスに通知する。
At step 1034, the authentication service performs verification of the authentication certificate. In one embodiment, the authentication service includes a copy of the authentication certificate when it was created. In one embodiment, the authentication service compares the authentication certificate received from the service with a copy of the authentication certificate. If the authentication certificates match in step 1036,
The authentication service notifies the service that the authentication certificate has been verified and appears to be valid. If the verification process fails, the authentication service notifies the service that the authentication certificate appears to be invalid.

【0344】 一実施形態では、認証サービスはサービスの機能にアクセスするクライアント
のアクセス・レベルを設定できる。一実施形態では、クライアントは、認証サー
ビスでサービスのアクセス・レベルを設定済みである。一実施形態では、認証サ
ービスはクライアントのアクセス・レベルをサービスに通知する。サービス側で
はクライアントのアクセス・レベルを使用して、クライアントがサービスに送る
サービス・メッセージ・スキーマで記述されているとおり要求メッセージのサブ
セットを判別する。
In one embodiment, the authentication service can set the access level of the client accessing the functionality of the service. In one embodiment, the client has already set the access level of the service with the authentication service. In one embodiment, the authentication service informs the service of the client's access level. The service side uses the client's access level to determine the subset of request messages as described in the service message schema that the client sends to the service.

【0345】 ステップ1038で、認証サービスが、ステップ1036で認証証明書は有効
であるとサービスに通知した場合、サービスはクライアント・ゲートとのペアを
組むサービス・メッセージ・ゲートを生成し、ゲート・ペアを形成する。サービ
ス・メッセージ・ゲートは、サービスからクライアントに送られたメッセージに
埋め込み、クライアントから受け取ったメッセージ内の認証証明書と比較するた
めの認証証明書を含む。サービス・メッセージ・ゲートはさらにクライアント・
メッセージ・ゲートのアドレス(UUIDやURIなど)を含む。サービス・メ
ッセージ・ゲートは、さらに、クライアントから受け取ったメッセージがクライ
アントによってサービスに送られる許容されるメッセージのサブセット内に含ま
れることを検証するためのクライアントのアクセス・レベル情報を含むことがで
きる。サービス・メッセージ・ゲートはさらに、クライアントから受け取ったメ
ッセージの型検査およびシンタックスの検証を行い、メッセージがメッセージの
許容されるサブセット内に含まれるかどうかを検証する際に使用するメッセージ
・スキーマも含む。一実施形態では、サービスは新しいサービス・メッセージ・
ゲートを作成することができる。他の実施形態では、クライアントと通信するた
めにサービス・メッセージ・ゲートを生成するのに使用できるサービス・メッセ
ージ・ゲートがステップ1038の前にすでに存在する。この実施形態では、サ
ービスは新しいゲートを作成せず、その代わりに、既存のゲートを、クライアン
トとサービスとの間に確立されるメッセージ・チャネルに関する情報で更新する
ことができる。
In step 1038, if the authentication service notifies the service in step 1036 that the authentication certificate is valid, the service generates a service message gate paired with the client gate, and the gate pair To form. The service message gate contains an authentication certificate for embedding in the message sent from the service to the client and for comparison with the authentication certificate in the message received from the client. Service Message Gate is a client
Contains the address of the Message Gate (such as UUID or URI). The service message gate may further include access level information for the client to verify that the message received from the client is contained within the subset of allowed messages sent by the client to the service. The Service Message Gate also includes a message schema that is used to type-check and syntax-validate messages received from clients and to verify whether the message is in an acceptable subset of messages. . In one embodiment, the service is a new service message
Gates can be created. In other embodiments, there is already a Service Message Gate that can be used to generate a Service Message Gate to communicate with the client prior to step 1038. In this embodiment, the service does not create a new gate, instead an existing gate can be updated with information about the message channel established between the client and the service.

【0346】 一実施形態では、サービスは、サービス・メッセージ・ゲート生成した後、メ
ッセージをクライアントに送る。このメッセージは、クライアント・メッセージ
・ゲートに対しサービス・メッセージ・ゲートを識別し、メッセージ・ゲート・
ペアを使用してクライアントとサービスとの間に通信チャネルを確立するための
情報を含む。一実施形態では、メッセージは、サービス・メッセージ・ゲートの
アドレス(UUIDやURIなど)を含む。
In one embodiment, the service sends the message to the client after creating the service message gate. This message identifies the Service Message Gate to the Client Message Gate, and the Message Gate
Contains information for establishing a communication channel between a client and a service using a pair. In one embodiment, the message includes an address (such as UUID or URI) of the Service Message Gate.

【0347】 図42c−認証証明書が埋め込まれているメッセージの交換 図42cは、一実施形態によりクライアントおよびサービスがメッセージを埋
め込まれた認証証明書と交換する一般的プロセスを示す流れ図である。一実施形
態では、クライアント・メッセージ・ゲートとサービ・スメッセージ・ゲートは
確立された後、クライアントおよびサービスは認証サービスのサービスを必要と
しなくなる。クライアント・メッセージ・ゲートおよびサービス・メッセージ・
ゲートは、メッセージを送るときに、認証証明書をメッセージに埋め込む。クラ
イアント・メッセージ・ゲートとサービス・メッセージ・ゲートは、メッセージ
を受け取るときに、埋め込まれている認証証明書とゲートに含まれる認証証明書
のコピーとを比較することにより、メッセージを検証することができる。
42c- Message Exchange with Embedded Authentication Certificate FIG. 42c is a flow diagram illustrating the general process by which clients and services exchange messages with embedded authentication certificates according to one embodiment. In one embodiment, after the client message gate and service message gate are established, the client and service no longer require the services of the authentication service. Client Message Gate and Service Message
When sending a message, the gate embeds the authentication certificate in the message. When the Client and Service Message Gates receive a message, they can validate the message by comparing the embedded authentication certificate with a copy of the authentication certificate contained in the gate. .

【0348】 ステップ1040で、発送側(クライアントまたはサービス)メッセージ・ゲ
ートは、メッセージを送る前にメッセージに認証証明書を埋め込む。一実施形態
では、認証サービスによって認証証明書が提供されている。一実施形態では、メ
ッセージはXMLメッセージである。一実施形態では、発送側メッセージ・ゲー
トは、メッセージを送る前にメッセージのデータ表現言語の型の正しさ、シンタ
ックスなどを検証することもできる。一実施形態では、発送側メッセージ・ゲー
トはメッセージと、メッセージ・スキーマのメッセージ・テンプレートとを比較
し、メッセージの型の正しさを調べる。たとえば、メッセージはXMLメッセー
ジであり、メッセージ・ゲートはXMLメッセージ・スキーマを含む。発送側メ
ッセージ・ゲートはメッセージのメッセージ・テンプレートをスキーマに配置し
、メッセージ内のさまざまなXMLアイテムまたはフィールドをそのメッセージ
・テンプレートと比較して、アイテムの型の正しさを判別する。
At step 1040, the sending (client or service) Message Gate embeds the authentication certificate in the message before sending it. In one embodiment, the authentication service provides the authentication certificate. In one embodiment, the message is an XML message. In one embodiment, the sending message gate may also verify the message's data representation language type correctness, syntax, etc. before sending the message. In one embodiment, the sending message gate compares the message with the message template in the message schema to determine the correctness of the message type. For example, the message is an XML message and the message gate contains an XML message schema. The sending message gate places the message template of the message in the schema and compares various XML items or fields in the message with the message template to determine the correctness of the item's type.

【0349】 一実施形態では、発送側メッセージ・ゲートは、メッセージが許容可能である
かどうかをチェックする。一実施形態では、メッセージはクライアントから受け
取ったサービスに送られる要求メッセージであり、メッセージ・ゲートは、メッ
セージで指定された要求サービス機能が、認証サービスを通じてクライアント側
でサービスと確立したアクセス・レベルによりクライアントに提供される機能の
サブセット内にあるかどうかを判別する。一実施形態では、メッセージ・ゲート
はメッセージをメッセージ・スキーマによる許容される要求メッセージのサブセ
ットと比較し、メッセージが許容されるものであるかどうかを判別する。一実施
形態では、メッセージがサービスからクライアントへの応答メッセージである場
合に、メッセージの許容可能性をチェックしない。他の実施形態では、サービス
からクライアントへの応答メッセージはクライアント・メッセージ・ゲートによ
りチェックされ、クライアントが応答メッセージを受け取ることを承認されてい
ることを確認する。
In one embodiment, the sending message gate checks if the message is acceptable. In one embodiment, the message is a request message sent to the service received from the client, and the message gate is the client according to the access level established by the request service function specified in the message on the client side through the authentication service. Determine if it is within a subset of the functionality provided by. In one embodiment, the MessageGate compares the message to a subset of the allowed request messages according to the message schema to determine if the message is acceptable. In one embodiment, the acceptability of the message is not checked if the message is a response message from the service to the client. In another embodiment, the response message from the service to the client is checked by the client message gate to ensure that the client is authorized to receive the response message.

【0350】 ステップ1042で、発送側(クライアントまたはサービス)メッセージ・ゲ
ートは、発送元(クライアントまたはサービス)を宛先(クライアントまたはサ
ービス)に接続する通信チャネルを介してメッセージを宛先(クライアントまた
はサービス)メッセージ・ゲートに送る。一実施形態では、受取側メッセージ・
ゲートは、メッセージを受け取るときに、埋め込まれている認証証明書とゲート
に含まれる認証証明書のコピーとを比較することにより、メッセージの発送側を
検証することができる。
At step 1042, the sending (client or service) Message Gate directs the message to a destination (client or service) message via a communication channel connecting the sender (client or service) to the destination (client or service).・ Send to the gate. In one embodiment, the recipient message
When the gate receives a message, the gate can verify the sender of the message by comparing the embedded authentication certificate with a copy of the authentication certificate contained in the gate.

【0351】 一実施形態では、メッセージは発送の前に暗号化する。一実施形態では、メッ
セージ・ゲートは暗号化を実行できる。他の実施形態では、メッセージ・ゲート
の外部のプロセスが暗号化を実行できる。たとえば、メッセージ・ゲートは通信
チャネルで完了したメッセージをドライバ・プロセスに渡し、ドライバ・プロセ
スはメッセージの暗号化を実行する。一実施形態では、メッセージの暗号化およ
び復号化は、トランスポート・メカニズム(たとえば、HTTPS)により実行
される。
In one embodiment, the message is encrypted before shipping. In one embodiment, the MessageGate can perform encryption. In other embodiments, a process external to Message Gate can perform the encryption. For example, the Message Gate passes the completed message on the communication channel to the driver process, which performs the encryption of the message. In one embodiment, message encryption and decryption is performed by a transport mechanism (eg, HTTPS).

【0352】 ステップ1044で、受取側(クライアントまたはサービス)メッセージ・ゲ
ートは、ステップ1042で送られたメッセージを受け取る。一実施形態では、
メッセージが暗号化された場合、メッセージはメッセージ・ゲートにより受け取
る前にプロセスによって復号化する。他の実施形態では、メッセージが暗号化さ
れている場合、メッセージ・ゲートはそのメッセージを復号化する。ステップ1
046で、受取側メッセージ・ゲートは、埋め込まれている認証証明書と受取側
ゲートに含まれる認証証明書のコピーとを比較することにより、メッセージの発
送側を検証することができる。
At step 1044, the recipient (client or service) Message Gate receives the message sent at step 1042. In one embodiment,
If the message is encrypted, the message is decrypted by the process before it is received by the message gate. In another embodiment, if the message is encrypted, the Message Gate decrypts the message. Step 1
At 046, the recipient Message Gate can verify the sender of the message by comparing the embedded authentication certificate with a copy of the authentication certificate contained in the recipient gate.

【0353】 いくつかの実施形態では、少なくともいくつかのクライアントについて認証証
明書を必要としないサービスもある。一実施形態では、クライアントに対し認証
証明書を必要としないサービスにアクセスするクライアントは認証サービスを使
用せずにメッセージ・ゲートを生成することができる。他の実施形態では、認証
サービスはNULL、空、またはその他の何らかの汎用認証証明書を、サービス
を使用するのに認証を必要としないクライアントに返す。認証を必要としない一
実施形態では、メッセージ・ゲートは認証証明書を埋め込まずにメッセージを送
る。他の実施形態では、NULL、空、またはその他の何らかの汎用認証証明書
をメッセージ・ゲートによってメッセージに埋め込むことができる。
In some embodiments, some services do not require authentication credentials for at least some clients. In one embodiment, a client accessing a service that does not require an authentication certificate for the client may generate a MessageGate without using the authentication service. In other embodiments, the authentication service returns a null, empty, or some other universal authentication certificate to clients that do not require authentication to use the service. In one embodiment, which does not require authentication, the Message Gate sends the message without embedding the authentication certificate. In other embodiments, NULL, empty, or some other universal authentication certificate may be embedded in the message by the message gate.

【0354】 一実施形態では、受取側メッセージ・ゲートは、メッセージを受け取った後、
メッセージのデータ表現言語の型の正しさ、シンタックスなどを検証することが
できる。一実施形態では、受取側メッセージ・ゲートはメッセージと、メッセー
ジ・スキーマのメッセージ・テンプレートとを比較し、メッセージの型の正しさ
を調べる。たとえば、メッセージはXMLメッセージであり、メッセージ・ゲー
トはXMLメッセージ・スキーマを含む。受取側メッセージ・ゲートはメッセー
ジのメッセージ・テンプレートをスキーマに配置し、メッセージ内のさまざまな
XMLアイテムまたはフィールドをそのメッセージ・テンプレートと比較して、
アイテムの型の正しさを判別する。
In one embodiment, the Recipient Message Gate, after receiving the message,
You can verify the correctness of the data expression language type of the message, the syntax, etc. In one embodiment, the recipient message gate compares the message with the message template in the message schema to determine the correctness of the message type. For example, the message is an XML message and the message gate contains an XML message schema. The Recipient Message Gate places the message template for the message in the schema and compares the various XML items or fields in the message to the message template,
Determine the correctness of the item type.

【0355】 一実施形態では、受取側メッセージ・ゲートは、メッセージが許容可能である
かどうかをチェックする。一実施形態では、メッセージはクライアントから受け
取った要求メッセージであり、メッセージ・ゲートは、メッセージで指定された
要求サービス機能が、認証サービスを通じてクライアント側でサービスと確立し
たアクセス・レベルによりクライアントに提供される機能のサブセット内にある
かどうかを判別する。一実施形態では、受取側メッセージ・ゲートはメッセージ
をメッセージ・スキーマによる許容される要求メッセージのサブセットと比較し
、メッセージが許容されるものであるかどうかを判別する。
In one embodiment, the Recipient Message Gate checks if the message is acceptable. In one embodiment, the message is a request message received from a client, and the message gate provides the client with the requested service function specified in the message through an authentication service with the access level established with the service on the client side. Determine if it is within a subset of features. In one embodiment, the recipient message gate compares the message with a subset of the allowed request messages according to the message schema to determine if the message is acceptable.

【0356】 一実施形態では、発送側および受取側はメッセージの型の正しさおよび/また
は許容可能性を検証することができる。他の実施形態では、発送側はメッセージ
の検証を実行する。さらに他の実施形態では、発送側はメッセージ検証を実行せ
ず、受取側がメッセージ検証を実行する。さらに他の実施形態では、検証を一切
実行しない。
In one embodiment, the sender and recipient can verify the correctness and / or acceptability of the message type. In another embodiment, the sender performs message validation. In yet another embodiment, the sender does not perform message verification, but the recipient does message verification. In yet another embodiment, no verification is performed.

【0357】 いくつかのクライアントはクライアント・メッセージ・ゲートの全機能をサポ
ートするには「軽量(シン)」過ぎる。これらのクライアントは、上述のように
要求メッセージを送る前の要求メッセージ検証および応答メッセージを受け取っ
た後の応答メッセージ検証を一部または全部実行しない。たとえば、いくつかの
単純なクライアント・デバイスはサービスに送ることができる小さな要求メッセ
ージ・セットとサービスから受け付けることができる小さな応答セットを含む。
一実施形態では、上述のように、メッセージ検証を実行せずに要求メッセージを
送り、応答メッセージを受け取るクライアント・デバイスに対し最小のクライア
ント・メッセージ・ゲートを構築することができる。他の実施形態では、クライ
アントに対して上述のようにメッセージの検証、発送、および受取の機能の一部
または全部を備える他のデバイスにプロキシ・クライアント・メッセージ・ゲー
トを設定することができる。
Some clients are too “thin” to support the full functionality of the Client Message Gate. These clients do not perform some or all of the request message validation before sending the request message and the response message validation after receiving the response message as described above. For example, some simple client devices include a small set of request messages that can be sent to the service and a small set of responses that can be accepted from the service.
In one embodiment, as described above, a minimal client message gate can be built for client devices that send request messages and receive response messages without performing message validation. In other embodiments, the proxy client message gate may be set up on another device that provides some or all of the message validation, shipping, and receiving capabilities to the client as described above.

【0358】 図43−メッセージの完全性のチェック 図43は、一実施形態によりメッセージの完全性を確認するメカニズムを示す
流れ図である。ステップ1050で、発送側ゲートは、クライアントまたはサー
ビスの代わりに機能し、送るメッセージ内にトークンを埋め込む。このトークン
は、上述のように、認証証明書をから分離され、区別される。このトークンは、
受取側ゲートがメッセージが損なわれていない、あるいは改変されていないこと
を検証できるようにする情報を含む。たとえば、発送側は、受取側が検証するメ
ッセージのハッシュまたはチェックサムを計算することができる。発送側はさら
に、発送側の秘密鍵を使用してこのトークンおよび/またはメッセージ全体を暗
号化し、暗号化されたメッセージに対応する公開鍵を含め、トークンが変更され
ていないことを受取側が検証できるようにする。ステップ1052で、発送側ゲ
ートがメッセージを送る。ステップ1054で、受取側ゲートは、サービスまた
はクライアントのために機能し、メッセージを受け取る。ステップ1056で、
受取側ゲートはメッセージおよび埋め込まれたトークンを調べ、メッセージが損
なわれていないことを検証する。
FIG . 43-Message Integrity Check FIG. 43 is a flow diagram illustrating a mechanism for verifying message integrity according to one embodiment. At step 1050, the sending gate acts on behalf of the client or service and embeds the token in the message it sends. This token is separated and distinguished from the authentication certificate, as described above. This token is
Contains information that allows the receiving gate to verify that the message has not been corrupted or tampered with. For example, the sender can calculate a hash or checksum of the message that the recipient verifies. The sender can also use the sender's private key to encrypt this token and / or the entire message and the recipient can verify that the token has not been modified, including the public key corresponding to the encrypted message. To do so. At step 1052, the sending gate sends a message. At step 1054, the recipient gate acts on behalf of the service or client to receive the message. In step 1056,
The receiving gate examines the message and the embedded token to verify that the message is intact.

【0359】 メッセージに埋め込むトークンを生成する方法がいくつかある。一実施形態で
は、メッセージのハッシュを計算し、それをメッセージとともに送る。ハッシュ
法は、文字列を元の文字列を表す通常短い固定長の値または鍵に変換する操作を
含む。メッセージを受け取ると、受取側はそのハッシュを再計算し、送られたハ
ッシュに照らしてチェックする。メッセージが改変されていた場合、同じハッシ
ュが生成される可能性はほとんどない。発送側は、ハッシュを暗号化し、対応す
る公開鍵を暗号化されたメッセージに入れて送り、そのハッシュが損なわれない
ように実質的に保証する。他の実施形態では、巡回冗長検査などの誤り検出方式
を使用する。巡回冗長検査は、通信リンクで送られたデータ内にエラーがないか
調べる方法である。巡回冗長検査を使用する実施形態では、発送側はnビットの
多項式をメッセージに適用し、その結果の巡回冗長検査(CRC)をメッセージ
に付加する。受取側は、同じ多項式(メッセージでも渡される)をメッセージに
適用し、その結果を発送側が付加した結果と比較する。マッチする場合、メッセ
ージは正常に受け取られたということである。マッチしない場合、発送側はメッ
セージの再送を通知される。他の実施形態には、生成、埋め込み、およびメッセ
ージ内のエラーまたは悪意ある改ざんの有無をチェックするトークンのチェック
のため他の方法が含まれる。
There are several ways to generate a token to embed in a message. In one embodiment, a hash of the message is calculated and sent with the message. Hashing involves the conversion of a string into a key ordinarily short fixed length value or key that represents the original string. Upon receiving the message, the recipient recalculates the hash and checks it against the hash sent. If the message has been modified, it is unlikely that the same hash will be generated. The sender encrypts the hash and sends the corresponding public key in the encrypted message, effectively guaranteeing that the hash is intact. Other embodiments use error detection schemes such as a cyclic redundancy check. Cyclic redundancy checking is a method of looking for errors in the data sent over a communication link. In embodiments that use a cyclic redundancy check, the sender applies an n-bit polynomial to the message and adds the resulting cyclic redundancy check (CRC) to the message. The receiver applies the same polynomial (also passed in the message) to the message and compares the result with the result added by the sender. If there is a match, the message was successfully received. If there is no match, the sender is notified to resend the message. Other embodiments include other methods for generating, embedding, and checking tokens for errors or malicious tampering in messages.

【0360】 デバイスを分散ネットワーク環境にブリッジする方法 分散コンピューティング環境で実装されるメッセージ通信モデルをサポートし
ないデバイスが、分散コンピューティング環境の外部にある。これらのデバイス
は、分散コンピューティング環境のクライアントにとって有用と思われるサービ
スを備えている場合がある。分散コンピューティング環境には、このような外部
デバイスを分散コンピューティング環境にブリッジするメカニズムが備えられて
いる。分散コンピューティング環境内のクライアントはこのようなデバイスに用
意されているサービスにアクセスすることができる。分散コンピューティング環
境ではさらに、分散コンピューティング環境で使用するこのような外部デバイス
を発見するため既存のデバイス発見プロトコルを活用することができる。
Method of Bridging Devices into a Distributed Network Environment Devices that do not support the messaging model implemented in the distributed computing environment are external to the distributed computing environment. These devices may have services that may be useful to clients in a distributed computing environment. The distributed computing environment is equipped with a mechanism to bridge such external devices to the distributed computing environment. Clients within a distributed computing environment can access services provided by such devices. The distributed computing environment can further leverage existing device discovery protocols to discover such external devices for use in the distributed computing environment.

【0361】 多くの技術が、ネットワークのデバイス構成をパブリッシュし、監視するため
の発見プロトコルを定義している。これらの技術には、これらに限定されないが
、Jini、SLP、Bluetooth、UPnPがある。さらに、LonW
orks、USB、および1394などの多くの入出力バスも動的発見プロトコ
ルをサポートしている。分散コンピューティング環境では、実装をAPIでラッ
プすることにより、デバイス発見技術を活用する。他のデバイス発見プロトコル
を活用し、他の発見プロトコルにブリッジする方法を使用することにより、分散
コンピューティング環境で、さまざまなネットワークおよび入出力バス上のデバ
イスまたはサービスを発見することができる。分散コンピューティング環境のデ
バイス発見は、したがって、分散コンピューティング環境に直接参加していなく
ても、PDAなどの小型デバイスを含むさまざまなデバイスに応用できる。発見
プロトコルは、メッセージ・レベルで定義することができる。
Many technologies have defined discovery protocols for publishing and monitoring network device configurations. These technologies include, but are not limited to, Jini, SLP, Bluetooth, UPnP. Furthermore, LonW
Many I / O buses such as orks, USB, and 1394 also support dynamic discovery protocols. Distributed computing environments take advantage of device discovery technology by wrapping the implementation in an API. By leveraging and bridging to other device discovery protocols, devices or services on various networks and I / O buses can be discovered in a distributed computing environment. Device discovery in a distributed computing environment can therefore be applied to a variety of devices, including small devices such as PDAs, without having a direct participation in the distributed computing environment. The discovery protocol can be defined at the message level.

【0362】 ブリッジ・メカニズムは、分散コンピューティング環境用のメッセージングA
PIでBluetoothなどの1つまたは複数のを特定のデバイス発見プロト
コルを「ラップ」する方法として提供される。ラップでは、コードおよび/また
はデータ(API)でデバイス発見プロトコルの枠組みを作り、プロトコルを分
散コンピューティング環境内のクライアントおよび/またはサービスによって実
行できるようにするが、そうでないとこれは実行できない。ブリッジ・メカニズ
ムを実行すると、特定のデバイス発見プロトコルによりデバイスを発見する発見
エージェントが分散コンピューティング環境のスペース内のデバイスに対しサー
ビスをパブリッシュすることができる。サービスが分散ネットワーク環境でXM
Lメッセージ・スキーマ・インターフェースをクライアントに提示し、特定のデ
バイス発見プロトコルにより発見されたさまざまなデバイスを動作させることが
できる。したがって、サービス通知は、基礎のラップされたデバイス発見プロト
コルにより発見されたさまざまなデバイスを動作させるサービスに対してパブリ
ッシュされる。そこで、通知されたサービスは、分散ネットワーク環境の外部に
あるデバイス(またはサービス)を分散ネットワーク環境上のクライアントにブ
リッジする。
The bridge mechanism is a messaging A for distributed computing environments.
One or more such as Bluetooth is provided in the PI as a way to "wrap" a particular device discovery protocol. Wrap creates a framework for device discovery protocols in code and / or data (API), allowing the protocols to be executed by clients and / or services within a distributed computing environment, which otherwise would not be possible. Executing the bridging mechanism allows a discovery agent that discovers the device with a particular device discovery protocol to publish services to the device within the space of the distributed computing environment. Service is XM in distributed network environment
The L message schema interface can be presented to the client to operate various devices discovered by a particular device discovery protocol. Therefore, service announcements are published for services that operate various devices discovered by the underlying wrapped device discovery protocol. Therefore, the notified service bridges the device (or service) outside the distributed network environment to the client on the distributed network environment.

【0363】 図27は、スペース1200を持つ分散コンピューティング環境の一実施形態
を示している。1つまたは複数の発見エージェント1204が、外部発見プロト
コルに参加し、ブリッジ・メカニズム1202を通じて分散コンピューティング
環境にブリッジする。ラップされたデバイス発見プロトコルを実行すると、ブリ
ッジ・メカニズム1202を介した発見エージェント1204はスペース120
0内のサービス通知1206a〜1206cをパブリッシュし、そこで、通知1
206a〜1206cのそれぞれが分散コンピューティング環境の外部にある発
見プロトコル1204のうちの1つにより発見されるデバイスまたはサービスに
対応する。クライアントは、その後、スペース1200内のサービス通知120
6a〜1206cを使用して外部デバイスにアクセスし、対応する外部デバイス
またはサービスを動作させるエージェント1204のうちの1つでサービスをイ
ンスタンス化する。
FIG. 27 illustrates one embodiment of a distributed computing environment with space 1200. One or more discovery agents 1204 participate in the external discovery protocol and bridge through the bridge mechanism 1202 to the distributed computing environment. When executing the wrapped device discovery protocol, discovery agent 1204 via bridge mechanism 1202 will
Publish service notifications 1206a-1206c in 0, where notification 1
Each of 206a-1206c corresponds to a device or service discovered by one of discovery protocols 1204 external to the distributed computing environment. The client then sends the service notification 120 in the space 1200.
6a-1206c are used to access the external device and instantiate the service with one of the agents 1204 operating the corresponding external device or service.

【0364】 そこで、分散コンピューティング環境のクライアントは、デバイス発見プロト
コルをラップする発見エージェントを使用してデバイスを見つける。これらのデ
バイスとのブリッジとして機能するサービスをスペース内でパブリッシュし、通
知して、分散コンピューティング環境のクライアントが外部デバイスによって提
供されるサービスにアクセスできるようにする。通知されたサービスは、他のプ
ロトコルまたは環境により分散コンピューティング環境の外部のデバイスを呼び
出すことができる分散コンピューティング環境内のサービスであり、外部のデバ
イス/サービスを分散コンピューティング環境にブリッジする。分散コンピュー
ティング環境内のクライアントは、分散コンピューティング環境内の通知された
サービスのみを「見」、外部のデバイス/サービスに気付くことすらしない。
The client of the distributed computing environment then finds the device using a discovery agent that wraps the device discovery protocol. It publishes and advertises services in the space that act as bridges to these devices, allowing clients in a distributed computing environment to access services provided by external devices. The advertised service is a service within the distributed computing environment that can invoke devices external to the distributed computing environment through other protocols or environments, bridging the external devices / services to the distributed computing environment. A client in a distributed computing environment "sees" only the advertised services in the distributed computing environment and does not even notice external devices / services.

【0365】 一実施形態では、分散コンピューティング環境は上述のラップされたデバイス
発見プロトコルを含む基礎の外部デバイス発見プロトコルにマップされる、「ス
ペース」の項で説明した発見プロトコルなどの特定のバージョンのスペース発見
メッセージ・プロトコルを提供する。マップされた発見プロトコルは、スペース
、デフォルト・スペースに自己登録するかまたは登録されるが、その際に、その
スペースに通知を入れる。通知される発見プロトコルごとに、発見プロトコルの
結果を保持する後続の結果スペースが提供される。
In one embodiment, the distributed computing environment is mapped to a specific external version of the discovery protocol, such as the discovery protocol described in the “Space” section, which is mapped to the underlying external device discovery protocol including the wrapped device discovery protocol described above. Provides a space discovery message protocol. The mapped discovery protocol either self-registers or is registered with the space, the default space, but with a notification in that space. For each advertised discovery protocol, a subsequent results space holding the results of the discovery protocol is provided.

【0366】 図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に示されているような方法を使用してデバイスを発見し、他の基礎の発見
プロトコルを使用して他のサービスを発見する。
FIG. 28 is a diagram of an example space discovery protocol that is mapped to the Bluetooth discovery service 1220 according to one embodiment. The Bluetooth discovery service 1220 first registers 1230 with the distributed computing environment. B
The Bluetooth discovery service 1220 is wrapped 1232 with the bridge API and the discovery service 1220's notification 1225 is added 1232 to the space 1224. The client or service has a discovery service notification 1225 on space 1224.
Specify. When the discovery service 1220 is executed (using the API wrapper as a bridge between the discovery protocol 1220 and the distributed computing environment 1222), a new space 1226 is created 1234 to store the results of the discovery process. The discovery service 1220 reports these results (again using the API wrapper) to the discovery results space 1226 as one or more notifications 1227.
To store. Alternatively, the results of executing the discovery service 1220 are stored in space 1224 of the distributed computing environment or other existing space.
Devices are discovered using methods such as those shown in FIG. 28, and other underlying discovery protocols are used to discover other services.

【0367】 上述のように、分散ネットワーク環境で実装されるメッセージ通信モデルをサ
ポートしないデバイスが、分散ネットワーク環境の外部にある。これらのデバイ
スは、分散コンピューティング環境で提供されるサービスを使用する必要がある
クライアントを備えることもある。分散コンピューティング環境は、外部クライ
アントまたはクライアント・デバイスを分散コンピューティング環境にブリッジ
するメカニズムが備えられており、外部デバイスのクライアントは分散コンピュ
ーティング環境内のサービスにアクセスすることができる。
As mentioned above, devices that do not support the messaging model implemented in the distributed network environment are outside the distributed network environment. These devices may include clients that need to use the services provided in the distributed computing environment. The distributed computing environment includes a mechanism for bridging external clients or client devices to the distributed computing environment, where the client of the external device can access services within the distributed computing environment.

【0368】 分散コンピューティング環境でクライアントとして使用されるエージェントを
用意し、外部クライアントを分散コンピューティング環境にブリッジし、外部ク
ライアントが分散コンピューティング環境内でパブリッシュされているサービス
にアクセスできるようにする。一実施形態では、エージェントは、フロント・エ
ンドでメッセージ通信モデルと専用プロトコル(たとえば、外部デバイスによっ
てサポートされているプロトコル)を使用して外部デバイスにインターフェース
し、さらに外部クライアントにインターフェースする分散コンピューティング環
境内のサービスと通信することができるXML対応バックエンドを備える。した
がって、分散コンピューティング環境の外部のクライアントは、ブリッジ・エー
ジェントを通じて分散コンピューティング環境内のサービスを特定してアクセス
し、要求をサービスに送って結果データを含む応答をサービスから受け取ること
ができる。たとえば、外部クライアントは分散コンピューティング環境でブリッ
ジ・エージェントを使用してスペース発見を実行し、通知されたサービスをルッ
クアップし、分散コンピューティング環境内のサービスを呼び出す。
Provide an agent to be used as a client in a distributed computing environment, bridge external clients to the distributed computing environment, and allow external clients to access services published within the distributed computing environment. In one embodiment, the agent is a distributed computing environment that interfaces to external devices using a messaging model and proprietary protocols (eg, protocols supported by external devices) at the front end and to external clients. It has an XML-enabled backend that can communicate with the services within. Thus, a client external to the distributed computing environment can identify and access the service within the distributed computing environment through the bridge agent, send a request to the service and receive a response from the service that includes the resulting data. For example, an external client uses a bridge agent in a distributed computing environment to perform space discovery, look up advertised services, and invoke services in the distributed computing environment.

【0369】 一実施形態では、分散コンピューティング環境は分散コンピューティング環境
クライアントからJiniサービスにアクセスするためのブリッジ・メカニズム
を備える。Jiniサービスはリモート・メソッド呼び出し(RMI)を必要と
し、また分散コンピューティング環境内のクライアントはXMLメッセージなど
のメッセージを使用してサービスと通信するので、分散コンピューティング環境
クライアントによりJiniサービスへのアクセスを可能にするプロトコル・ブ
リッジ・メカニズムを提供できる。一実施形態では、分散コンピューティング環
境のスペース内でJiniサービスの動的通知を有効にし、さらに分散コンピュ
ーティング環境内のクライアントからJiniサービス・プロキシのアクセスを
有効にすることができるコネクタ・メカニズムを定義する。一実施形態では、分
散コンピューティング環境にブリッジできないJiniサービスもある。
In one embodiment, the distributed computing environment comprises a bridge mechanism for accessing Jini services from distributed computing environment clients. The Jini service requires remote method invocation (RMI), and clients in the distributed computing environment communicate with the service using messages, such as XML messages, so that the distributed computing environment client can access the Jini service. It can provide a protocol bridge mechanism that enables it. In one embodiment, a connector mechanism is defined that enables dynamic notification of Jini services within the space of a distributed computing environment and also enables Jini service proxy access from clients within the distributed computing environment. To do. In one embodiment, some Jini services cannot bridge to a distributed computing environment.

【0370】 一実施形態では、Jiniサービスによって使用されるJini RMIプロ
トコルを分散コンピューティング環境のクライアントによって使用されるXML
メッセージングにブリッジするエージェントを分散コンピューティング環境内の
サービスとして提供することができる。エージェントを起動すると、エージェン
トはJiniスペースで一組の属性を持つJiniサービスのルックアップを実
行する。登録されているすべてのJiniサービスについて、エージェントは、
サービスに対応するXML通知を生成し、分散コンピューティング環境内のスペ
ースで通知を登録する。一実施形態では、エージェントは、Jiniルックアッ
プ・サービスのイベント通知について登録でき、新しいJiniサービスが登録
されると実行される。新しいJiniサービスが通知されると、エージェントは
Jiniスペースでルックアップを実行し、新たに通知されたJiniサービス
を特定し、分散コンピューティング環境のスペースを新しいサービスに対する新
しいXML通知で更新する。一実施形態では、Jiniサービスが削除されると
、エージェントはJiniサービスの削除を通知するイベントを受け取る。エー
ジェントは、サービスのXML通知をスペースから削除する。
In one embodiment, the Jini RMI protocol used by Jini services is XML used by clients in a distributed computing environment.
An agent bridging to messaging can be provided as a service within the distributed computing environment. When the agent is started, it performs a lookup of the Jini service with a set of attributes in the Jini space. For all registered Jini services, the agent
Generate an XML notification corresponding to the service and register the notification in the space within the distributed computing environment. In one embodiment, an agent can register for Jini lookup service event notifications and will be executed when a new Jini service is registered. When a new Jini service is advertised, the agent performs a lookup in the Jini space to identify the newly advertised Jini service and update the distributed computing environment space with a new XML notification for the new service. In one embodiment, when the Jini service is deleted, the agent receives an event notifying the deletion of the Jini service. The agent deletes the service XML notification from the space.

【0371】 一実施形態では、分散コンピューティング環境のスペースのXML通知を介し
てJiniサービスを呼び出すには、クライアントはスペース内のサービス通知
をルックアップし、有効なメッセージをエージェントに送ってサービスにアクセ
スする。エージェントは、サービス・プロキシに対するRMIコールを介して対
応するメソッドを呼び出してJiniサービスに対応するプロキシ・サービスを
呼び出す。プロキシがインスタンス化されていない場合、エージェントはプロキ
シ・コードをダウンロードし、プロキシ・オブジェクトの新しいインスタンスを
インスタンス化する。一実施形態では、すべてのクライアント接続は異なるプロ
キシ・インスタンスを持つ。クライアントから着信したメッセージは、エージェ
ントによってプロキシのメソッド・コールに変換される。メソッド・コールから
の結果は発送メッセージとしてクライアントに返される。
In one embodiment, to invoke a Jini service via an XML notification of a space in a distributed computing environment, the client looks up the service notification in the space and sends a valid message to the agent to access the service. To do. The agent calls the corresponding method via the RMI call to the service proxy to call the proxy service corresponding to the Jini service. If the proxy is not instantiated, the agent downloads the proxy code and instantiates a new instance of the proxy object. In one embodiment, all client connections have different proxy instances. The message coming from the client is transformed by the agent into a proxy method call. The result from the method call is returned to the client as a shipping message.

【0372】 一実施形態では、RMIメソッドへの引数として、単純なJavaの型のみを
使用できる。Javaの複合型が必要な場合、1つまたは複数のデータ通知をコ
ールの引数として渡し、データ通知はJava複合型のデータの位置とアクセス
方法を示す。一実施形態では、エージェントがXMLメッセージがRMIメソッ
ド・コール呼び出しへの初期変換を動的に実行する。エージェントはサービス・
インターフェースを認識するので、クライアントに通知される対応するメッセー
ジ・セットを生成する。
In one embodiment, only simple Java types can be used as arguments to RMI methods. If a Java composite type is required, then one or more data notifications are passed as arguments to the call, the data notification indicating the location and access method of the Java composite type data. In one embodiment, the agent dynamically performs the initial translation of XML messages into RMI method call invocations. Agent is a service
Since it knows the interface, it will generate a corresponding set of messages to be notified to the client.

【0373】 図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のサービスとして機能し(外部クライアントのプロトコルを介して)
、また分散コンピューティング環境内のクライアントとして機能して、分散コン
ピューティング環境内のサービスを外部クライアントにブリッジする。
FIG. 29 is a diagram illustrating a method of bridging a client 1250 external to a distributed computing environment to a space 1254 in the distributed computing environment. The bridge agent 1252 is used as an intermediary between the client 1250 and the space 1254. The bridge agent 1252 communicates with the client 1250 using a communication protocol understood by the client 1250. The bridge agent 1252 configures the client's communication protocol to use space 125 to perform the functions provided by space 1254.
4 to the XML messaging protocol required to communicate with The bridge agent 1252 identifies and executes the service on the space 1254 when requested by the client 1250. For example, the client 1250 may request a space 1254 for a list of all services of a particular type. The bridge agent 1252 uses the service notification 125.
6a-c are specified and the result is returned to the client 1250. Alternatively, post the result in the results space and return the location of the result to the client 1250. The client 1250 then chooses to execute the service notification 1256a and sends the message (in the client 1250's communication protocol) to the bridge agent 125.
Send to 2. Bridge agent 1252 then sends service notification 1256.
It sends the XML request message needed to perform the service represented by a and returns the result of the service to the client 1250. Result client 1250
Methods of handling service results other than returning them directly to can be used as described in the "Space" section above. The bridge agent 1252 functions as a service to the external client 1250 (via the external client's protocol).
, Also acting as a client in the distributed computing environment, bridging services in the distributed computing environment to external clients.

【0374】 ときには、分散コンピューティング環境内であっても、クライアントおよびサ
ービスは互いに直接通信し、また共通のスペースとのみ通信することはできない
。この場合、スペース・サービスはクライアント・サービスにブリッジするサー
ビス・プロキシを自動的に作成する。プロキシの主要な役目は、スペースを介し
てクライアントとサービスとの間でメッセージをやりとりすることである。サー
ビス・プロキシは動的に作成される。作成メカニズムは、スペースの実装に左右
される。プロキシ・メカニズムの説明については、図30を参照のこと。クライ
アント554およびサービス556は、たとえば、これらが異なるトランスポー
トまたはネットワーク・プロトコルをサポートしているため、分散コンピューテ
ィング環境内で直接通信することができない場合がある。ただし、両方とも両方
のプロトコルをサポートするスペース552とは通信できる。スペース・サービ
スは、クライアント554をサービス556にブリッジするプロキシ550を作
成する。プロキシの共通の形態はブラウザ・プロキシである。プラザ・プロキシ
(サーブレットとして実装されるは最も一般的である)は、従来のWebページ
要求をメッセージに変換する。「スペース」の項のスペースルックアップ・サー
ビス(およびプロキシ)の説明も参照のこと。
At times, even within a distributed computing environment, clients and services may not be able to communicate directly with each other and only with a common space. In this case, the space service automatically creates a service proxy that bridges the client service. The main role of the proxy is to pass messages between clients and services over the space. Service proxies are created dynamically. The creation mechanism depends on the space implementation. See FIG. 30 for a description of the proxy mechanism. Clients 554 and services 556 may not be able to communicate directly within a distributed computing environment, for example because they support different transports or network protocols. However, both can communicate with space 552, which supports both protocols. The space service creates a proxy 550 that bridges the client 554 with the service 556. A common form of proxy is a browser proxy. Plaza proxies (most commonly implemented as servlets) convert traditional web page requests into messages. See also the space lookup service (and proxy) description in the Space section.

【0375】 分散コンピューティング環境は、分散コンピューティング環境内のクライアン
トをエンタプライズ・サービスにブリッジするメカニズムを備える。分散コンピ
ューティング環境の一実施形態では、クライアントをエンタプライズ・サービス
にブリッジする方法は、分散コンピューティング環境内のクライアント、分散コ
ンピューティング環境内のブリッジ・サービス、およびエンタプライズ環境内の
エンタプライズ・サービスを含む。分散コンピューティング環境のブリッジ・サ
ービスは、クライアントとエンタプライズ・サービスとの間のブリッジ・サービ
スとして使用される。エンタプライズは、企業、中小企業、非営利団体、政府機
関、またはその他の種類の組織である。エンタプライズでは、その事業の一部を
実施するためにエンタプライズ・コンピューティング環境を利用する。エンタプ
ライズ・コンピューティング環境は、さまざまなエンタプライズ・サービスを含
む。分散コンピューティング環境内のクライアントは、エンタプライズ・コンピ
ューティング環境のサービスを使用することを望んでいる場合がある。エンタプ
ライズ・サービスは、三層クライアント/サーバ・アーキテクチャなどのさまざ
まなアーキテクチャに基づく。エンタプライズ・サービスを実装するのに使用で
きるアーキテクチャの一例として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のプログラム・コンポーネントは、一般にサーブレット(小さなサーバ
・プログラム)と呼ばれている。サーブレットを実行するアプリケーションまた
はコンテナは、アプリケーション・サーバと呼ばれることもある。
The distributed computing environment comprises a mechanism for bridging clients within the distributed computing environment to enterprise services. In one embodiment of a distributed computing environment, a method of bridging a client to an enterprise service includes: a client in a distributed computing environment, a bridge service in a distributed computing environment, and an enterprise service in an enterprise environment. including. A bridge service in a distributed computing environment is used as a bridge service between clients and enterprise services. An enterprise is a business, small business, non-profit organization, government agency, or other type of organization. Enterprise utilizes the enterprise computing environment to carry out part of its business. The enterprise computing environment includes various enterprise services. A client in a distributed computing environment may want to use the services of the enterprise computing environment. Enterprise services are based on various architectures such as a three-tier client / server architecture. One example of an architecture that can be used to implement enterprise services is Enterprise JavaBeans. Enterprise JavaBeans (EJB) runs on the server part of the enterprise environment using a client / server model.
It is an architecture for setting program components written in the ava programming language. In object-oriented programming and distributed object technology, a component is a building block of a program that can be reused in combination with other components on the same computer or other computers in a distributed network to form an application. The EJB is built on the basis of JavaBeans technology that distributes program components (Beans) to clients in a network. In order to deploy an EJB Bean or component, it needs to be part of a particular application called a container. For Enterprise JavaBeans, se
There are two types of beans: session beans and entity beans. Unlike the session beans, the entity beans are persistent and can retain the initial operation or state. EJBs can be deployed on virtually any major operating system. The program component of EJB is generally called a servlet (small server program). An application or container that runs a servlet is sometimes called an application server.

【0376】 ブリッジ・サービスは、XMLメッセージ通信を介してクライアントと対話し
、分散ネットワーク環境の外にあるエンタプライズ・サービスに要求を行うのに
必要な入力パラメータを収集する。たとえば、クライアントが分散コンピューテ
ィング環境内の他のサービスとまったく同様にブリッジ・サービスをルックアッ
プし、インスタンス化することができる。ブリッジ・サービスは、エンタプライ
ズ・サービスと対話して、エンタプライズ・サービスを実行する。この対話では
、エンタプライズ・サービスが理解できるプロセス間通信アーキテクチャを使用
する。たとえば、エンタプライズ・サービスがEnterprise Java
Beans(EJB)で実装されている場合、ブリッジ・サービスはEJBを使
用してエンタプライズ・サービスと通信する。ブリッジ・サービスは、エンタプ
ライズ・サービスから結果を受け取り、その結果を直接クライアントに(XML
メッセージで)返すか、またはその結果を分散ネットワーク環境内のスペース(
たとえば、結果スペース)に入れることができる。クライアントからは、ブリッ
ジ・サービスは唯一のサービスのように見えるため(エンタプライズ・サービス
はクライアントには隠されている)、クライアントはエンタプライズ・サービス
のアーキテクチャをサポートする必要がない。複数の分散ネットワーク環境のク
ライアントが同じブリッジ・サービス(それぞれ、一意的なゲート・ペアを使用
する)を使用して、エンタプライズ・サービスと対話する。
The Bridge Service interacts with the client via XML messaging to collect the input parameters needed to make a request to an enterprise service outside the distributed network environment. For example, a client can look up and instantiate a bridge service just like any other service in a distributed computing environment. The bridge service interacts with the enterprise service to execute the enterprise service. This interaction uses an interprocess communication architecture that enterprise services can understand. For example, the enterprise service is Enterprise Java
When implemented in Beans (EJB), bridge services use EJB to communicate with enterprise services. The bridge service receives the results from the enterprise service and sends the results directly to the client (XML
Space) in a distributed network environment
For example, the result space). To the client, the bridge service appears to be the only service (the enterprise service is hidden to the client), so the client does not have to support the architecture of the enterprise service. Clients in multiple distributed network environments use the same bridge service, each with a unique gate pair, to interact with the enterprise service.

【0377】 ブリッジ・サービスまたはその他のエージェントは、分散コンピューティング
環境内のスペースでブリッジ・サービス(およびエンタプライズ・サービス)の
通知をパブリッシュする。たとえば、ブリッジ・サービスまたはその他のブリッ
ジ・エージェントはJavaリフレクションを使用して、EJBで実装されてい
るエンタプライズ・システム内のサービスについてBeansを調べ、Bean
sへのブリッジ・サービスのサービス通知を作成し、分散コンピューティング環
境内のスペースにそれらの通知をパブリッシュする。リフレクションは、クラス
のフィールド、メソッド、およびコンストラクタに関する情報を発見し、セキュ
リティ制限の範囲内でオブジェクトに対する基礎の対応する部分の上で動作する
リフレクトされたフィールド、メソッド、およびコンストラクタを使用するJa
vaコードのメソッドである。リフレクションAPIは、ターゲット・オブジェ
クトの公開メンバまたは所定のクラスで宣言されているメンバのいずれかにアク
セスするのが必要なアプリケーションに対応している。ブリッジ・サービスが通
知されると、クライアントは、サービスを提供するエンタプライズ・サービスの
アーキテクチャを詳細を知ることなく、分散ネットワーク環境内の他の通知され
たサービスと同様にブリッジ・サービス(およびしたがって対応するエンタプラ
イズ・サービス)にアクセスできる。
Bridge services or other agents publish bridge service (and enterprise service) notifications in a space within a distributed computing environment. For example, a bridge service or other bridge agent may use Java reflection to look up Beans for services in an enterprise system implemented in EJB, and use Bean.
Create service notifications for bridge services to s and publish those notifications to spaces in the distributed computing environment. Reflection discovers information about the fields, methods, and constructors of a class, and works with the reflected fields, methods, and constructors on the corresponding part of the foundation for objects within the security constraints.
va code method. The reflection API corresponds to an application that needs to access either the public members of the target object or the members declared in a given class. When a bridge service is advertised, the client does not need to know the architecture of the enterprise service offering it in detail, just like any other advertised service in a distributed network environment. Access to enterprise services).

【0378】 クライアントのディスプレイ クライアントによって実行されたサービスからの結果を分散コンピューティン
グ環境内で表示する方法はいくつかある。結果を表示するデバイスとしては、コ
ンピュータのCRT、ラップトップのLCD、ノートブック・パソコンのディス
プレーなど、プリンタ、スピーカ、および視覚的、聴覚的、またはその他の知覚
可能な形式でサービスの結果を表示できるその他のデバイスがある。結果を表示
する方法にはそれに限定されないが、次のものがある。 サービスが結果をクライアントに直接、または参照により返し、クライアント
はそれらの結果の表示を処理する。 サービスが結果をクライアントに直接、または参照により返し、クライアント
はそれらの結果を表示サービスに直接、または参照により渡し、表示サービスが
それらの結果を表示する。 サービスが結果の表示を直接処理する。 サービスが結果を表示サービスに直接、または参照により渡し、表示装置はそ
れらの結果を表示する。
Client Display There are several ways to display the results from the services performed by a client within a distributed computing environment. Devices that display results, such as computer CRTs, laptop LCDs, and notebook PC displays, can display printers, speakers, and service results in visual, audible, or other perceptible formats. There are other devices. Methods of displaying results include, but are not limited to: The service returns the results to the client either directly or by reference, and the client handles the display of those results. The service returns the results to the client directly or by reference, the client passes the results directly to the display service or by reference, and the display service displays the results. The service handles the display of results directly. The service passes the results to the display service, either directly or by reference, and the display device displays the results.

【0379】 結果を表示する最後の方法では、クライアントが表示サービスを指定する。た
とえば、クライアントがサービスの結果を表示するために使用することを望んで
いるクライアントが常駐するデバイスの表示サービスまたは関連する表示サービ
スがある。クライアントがサービスを実行すると、クライアントはメッセージを
サービスに送り、クライアントの表示サービスのサービス通知を指定する。その
後、サービスは、ゲートを構築し、メッセージをクライアントの表示サービスに
送ることができるようにする。したがって、結果を表示するとき、クライアント
によって呼び出されたサービスはクライアントの表示サービスのクライアントと
なり、その結果を(直接または参照により)表示のためその表示サービスに送る
。クライアント−サービス間の関係、ゲート、およびメッセージングの詳細につ
いては、本書の他の項を参照のこと。
The last way to display the results is for the client to specify a display service. For example, there is a display service or associated display service for the device on which the client resides that the client wishes to use to display the results of the service. When the client executes the service, the client sends a message to the service, specifying a service notification for the client's display service. The service then builds a gate to allow the message to be sent to the client's display service. Thus, when displaying a result, the service invoked by the client becomes a client of the client's display service and sends the result (either directly or by reference) to that display service. See other sections of this document for more information on client-service relationships, gates, and messaging.

【0380】 従来のアプリケーション・モデルは、通常、所定のおおむね静的なユーザ・イ
ンターフェースおよび/またはデータ特性に基づく。従来のアプリケーションに
変更を加えるには、コードを修正し再コンパイルする必要がある。サービスを通
知し、分散コンピューティング環境のサービスと通信するためのXMLメッセー
ジ・スキーマを指定するための記述されたメカニズムを使用して、アプリケーシ
ョン(クライアント、サービス、など)が自動的に表示オブジェクトの記述する
ためのメカニズムを提供する。動的表示オブジェクトを使用すると、新しいコー
ドをダウンロードしたり、アプリケーションを再コンパイルしたり、アプリケー
ションを再リンクすることなく、アプリケーションの動作を変更することができ
る。同じ結果を異なる形式で表示する、表示のため結果の一部を抽出する、およ
び異なる表示デバイスに結果を表示する表示スキーマを提供する。
Conventional application models are typically based on certain generally static user interface and / or data characteristics. To make changes to a traditional application, the code would need to be modified and recompiled. An application (client, service, etc.) automatically describes a display object using a described mechanism for notifying a service and specifying an XML message schema for communicating with the service in a distributed computing environment. Provide a mechanism for doing so. Dynamic display objects allow you to change the behavior of your application without having to download new code, recompile your application, or relink your application. Provide a display schema that displays the same results in different formats, extracts some of the results for display, and displays the results on different display devices.

【0381】 図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)として指定する。
FIG. 31 is a diagram of an embodiment of a client 1300 with an associated display 1302 and display service 1304 according to one embodiment. The notification 1306 of the display service 1304 is registered in the space 1308. The notification 1312 of the service 1310 is registered in the space 1314 by the service 1310. Separately, the service notice 1312 and the display service notice 1306 are registered in the same space. The client 1300 uses the service notification 13 on the space 1314.
Search for 12 and discover 1320 and send request to service 1310 (service 1
Set gate for receiving result or response from 310). In one embodiment, the message is in the form of an XML message specified in the XML Schema received as part of notification 1312. Client 1300 sends one or more messages (1322) to service 1310. The one or more messages include a message to perform service 1310 and a message to instruct service 1310 to send the results to display service 1304 for display and specify the location of display service notification 1306. The location of the notification is Uniform Re
Specified as a source identifier (URI).

【0382】 クライアント1300からサービス1310にメッセージを命令として送ると
、サービス1310は表示可能な結果を出力する1つまたは複数のオペレーショ
ンを実行する。サービス1310は、クライアント1300から受け取った位置
情報に基づいてスペース1308から表示サービス通知1306を取り出す。サ
ービス通知は、XMLメッセージ・スキーマと、表示サービス1304とインタ
ーフェースするのに必要なその他の情報含む。次に、サービス1310は要求を
表示サービス1304に送る(そして表示サービス1304から結果を受け取る
)ためのゲートを設定する。他の実施形態では、クライアント1300からサー
ビス1310へのメッセージは、XMLスキーマと、サービス1310が表示サ
ービス1304へのゲートを構築するのに必要なその他の情報を含むか、または
表示サービス1304への事前に構築されたゲートを備える。
When a message is sent from the client 1300 to the service 1310 as an instruction, the service 1310 performs one or more operations that output a displayable result. The service 1310 extracts the display service notification 1306 from the space 1308 based on the position information received from the client 1300. The service notification contains an XML message schema and other information needed to interface with the display service 1304. Service 1310 then sets up a gate to send the request to display service 1304 (and receive the result from display service 1304). In other embodiments, the message from the client 1300 to the service 1310 includes the XML schema and other information needed by the service 1310 to build a gate to the display service 1304, or to the display service 1304 in advance. It has a gate built in.

【0383】 クライアント1300によって要求されたオペレーションの実行中、または完
了した後、サービス1310は、表示サービス1304のスキーマによって指定
されている方法によりオペレーションの結果を表示サービス1304に送る(た
とえば、XMLメッセージ・スキーマでまたは表示サービスのパラメータとして
の参照により指定されたXMLメッセージ内にカプセル化される)。この点で、
サービス1310は、表示サービス1304のクライアントである。その後、表
示サービス1304は、クライアントのディスプレイ1302上にサービス13
10から受け取った、または指示された結果をフォーマットして表示する。
After performing or completing the operation requested by the client 1300, the service 1310 sends the result of the operation to the display service 1304 in the manner specified by the schema of the display service 1304 (eg, XML message. Encapsulated in an XML message specified in the schema or by reference as a parameter of the presentation service). In this respect,
The service 1310 is a client of the display service 1304. After that, the display service 1304 displays the service 13 on the display 1302 of the client.
Format and display the results received or indicated from 10.

【0384】 いくつかの実施形態では、サービス1310は、結果スペース(図に示されて
いない)などのスペースにオペレーションの結果をポストする。その後、サービ
ス1310は、オペレーションも格納されている結果への参照を含むメッセージ
を表示サービス1304に送る。一実施形態では、参照はURIの形式である。
その後、表示サービス1304は、スペースから結果を取り出し、その結果をデ
ィスプレイ1302に表示する。
In some embodiments, service 1310 posts the result of the operation to a space, such as result space (not shown). The service 1310 then sends a message to the display service 1304 that includes a reference to the result in which the operation is also stored. In one embodiment, the reference is in the form of a URI.
The display service 1304 then retrieves the result from the space and displays the result on the display 1302.

【0385】 従来のアプリケーション・モデルは、通常、所定のおおむね静的なユーザ・イ
ンターフェースおよび/またはデータ特性に基づく。従来のアプリケーションに
変更を加えるには、コードを修正し再コンパイルする必要がある。サービスを通
知し、分散コンピューティング環境のサービスと通信するためのXMLメッセー
ジ・スキーマを指定するための記述されたメカニズムを使用して、アプリケーシ
ョン(クライアント、サービス、など)が自動的に表示オブジェクトの記述する
ためのメカニズムを提供する。動的表示オブジェクトを使用すると、新しいコー
ドをダウンロードしたり、アプリケーションを再コンパイルしたり、アプリケー
ションを再リンクすることなく、アプリケーションの動作を変更することができ
る。
Conventional application models are typically based on certain generally static user interface and / or data characteristics. To make changes to a traditional application, the code would need to be modified and recompiled. An application (client, service, etc.) automatically describes a display object using a described mechanism for notifying a service and specifying an XML message schema for communicating with the service in a distributed computing environment. Provide a mechanism for doing so. Dynamic display objects allow you to change the behavior of your application without having to download new code, recompile your application, or relink your application.

【0386】 動的表示オブジェクトはXMLスキーマで記述できる。これらのスキーマは、
スペース内で通知される。これらのスキーマは、表示スキーマまたは表現スキー
マと呼ぶ。その後、アプリケーション(またはアプリケーションの代わりに動作
するその他のサービス)は、サービス通知からスキーマにアクセスし、フォーマ
ット、データ型、およびスキーマに格納されているその他の情報に基づきデータ
を表示する。
The dynamic display object can be described in the XML schema. These schemas are
Be notified in the space. These schemas are called display schemas or representation schemas. The application (or other service acting on behalf of the application) then accesses the schema from the service notification and displays the data based on the format, data type, and other information stored in the schema.

【0387】 動的表示オブジェクトを含むスキーマの一例を以下に示す。 <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>[0387]   An example of a schema containing dynamic display objects is shown below. <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>

【0388】 上記のスキーマは、アプリケーションを再コンパイルすることなく、次のよう
に変更できる。 <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>
The above schema can be modified as follows without recompiling the application. <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>

【0389】 図32Aおよび図32Bは一実施形態により動的表示オブジェクトのスキーマ
を使用する例を示す図である。図32Aで、アプリケーション1320(クライ
アント、サービス、またはその他のアプリケーション)はスペース1326に格
納されている表現スキーマ通知1324で実装されている。表現スキーマ通知は
、データ型、書式指定、フォント、位置、色、およびディスプレイ1322にア
プリケーションのデータを表示するために使用されるその他の情報を記述する要
素を含む。アプリケーション1320のための複数の表現スキーマ通知がある。
たとえば、一連の表示ページ(たとえば、WebサイトのWebページ)内の表
示ページごとに1つのスキーマがある。
32A and 32B are diagrams illustrating an example of using a schema of a dynamic display object according to an embodiment. In FIG. 32A, application 1320 (client, service, or other application) is implemented with representation schema notification 1324 stored in space 1326. The representation schema notification includes elements that describe the data type, formatting, font, position, color, and other information used to display the application's data on the display 1322. There are multiple representation schema notifications for application 1320.
For example, there is one schema for each display page within a series of display pages (eg, web pages for a website).

【0390】 一実施形態では、アプリケーション1320は、発見および/またはルックア
ップ・サービスを呼び出して、表現スキーマ通知を特定する。発見および/また
はルックアップ・サービスは、1つまたは複数の通知、およびURIの一覧を含
むXMLドキュメントを特定の表示形式などを記述するスキーマのそれぞれに返
す。その後、アプリケーション1320は、XMLドキュメントから1つまたは
複数の表現スキーマを選択する。アプリケーション1320は、続いて、そのス
キーマを解析し、スキーマ要素をユーザ・インターフェース・コンポーネントに
分解する。これらのコンポーネントは、結果データを特定し、フォーマットし、
適切なディスプレイ上に表示するために使用される。結果データは、たとえば、
サービスの実行または結果スペースから得られる。そこで、静的な表示または所
定の表示を用意するのとは反対に、アプリケーション1320は、アプリケーシ
ョンを再構築することなく動的に変更できる表現スキーマに従って結果を表示す
るように構成される。
In one embodiment, application 1320 invokes a discovery and / or lookup service to identify a representation schema notification. The discovery and / or lookup service returns one or more notifications and an XML document containing a list of URIs to each of the schemas that describe the particular display format, etc. The application 1320 then selects one or more representation schemas from the XML document. Application 1320 then parses the schema and decomposes the schema elements into user interface components. These components identify and format the result data,
Used to display on the appropriate display. The result data is, for example,
Obtained from the service execution or result space. Thus, as opposed to providing a static or predefined display, the application 1320 is configured to display the results according to a representation schema that can be dynamically changed without rebuilding the application.

【0391】 同じ結果を異なる形式で表示する、表示のため結果の一部を抽出する、および
異なる表示デバイスに結果を表示する表現スキーマを提供する。
A representation schema is provided for displaying the same results in different formats, extracting a portion of the results for display, and displaying the results on different display devices.

【0392】 一実施形態では、1つまたは複数の表現スキーマ通知を分散コンピューティン
グ環境内の1つまたは複数のスペースに格納することができる。1つまたは複数
のデバイスでアプリケーションのコピーを呼び出すと、アプリケーションのそれ
ぞれのコピーがサービスに対するサーチを実行し、アプリケーションによって使
用される表現スキーマの通知を発見する。そこで、表示情報の中央永続的ストア
をアプリケーションの複数のインスタンス用または他のアプリケーション用に保
持することができる。表示情報は、アプリケーションを再コンパイルしたり再イ
ンストールすることなく、中央の場所で修正することができる。
In one embodiment, one or more representation schema notifications may be stored in one or more spaces within the distributed computing environment. Invoking a copy of the application on one or more devices causes each copy of the application to perform a search for services and discover notifications of the representation schema used by the application. There, a central persistent store of display information can be maintained for multiple instances of the application or for other applications. The display information can be modified in a central location without having to recompile or reinstall the application.

【0393】 図32Bでは、クライアント1328は、スペースのサービス1330のサー
ビス通知を特定する。サービス1330を呼び出すと、クライアント1328は
スペース1326の表現スキーマ通知1324の位置をサービス1330に渡す
。サービス1330が結果をクライアント1328に送る用意が整っている場合
、表現スキーマ通知1324によって提供される表現スキーマからの表示情報を
使用してディスプレイ1322(クライアント1328が実行されているデバイ
スに結合されている)に結果を表示することができる。結果の表示方法を変更す
るには、表現スキーマ通知1324のXMLメッセージを修正するか、または異
なる表現スキーマを選択すればよく、クライアント1328またはサービス13
30で変更する必要はない。サービス1330は表示サービスでよい。
In FIG. 32B, the client 1328 identifies a service notification for the space service 1330. Upon invoking service 1330, client 1328 passes to service 1330 the location of representation schema notification 1324 of space 1326. If the service 1330 is ready to send the results to the client 1328, the display information from the representation schema provided by the representation schema notification 1324 is used to display 1322 (the client 1328 is bound to the device on which it is running). The result can be displayed in). To change the way the results are displayed, modify the XML message in the representation schema notification 1324 or select a different representation schema, and the client 1328 or service 13
No need to change at 30. The service 1330 may be a display service.

【0394】 クライアント、アプリケーション、またはサービスは、1つまたは複数のサー
ビスによって提供されるさまざまなオペレーションの結果を表示するための複数
の表示スキーマを備える。それとは別に、表示スキーマは1つまたは複数のクラ
イアントのさまざまな結果を表示するための情報を含む。そこで、クライアント
1328は、1つの表示スキーマまたは複数の表示スキーマを使用することがで
きる。異なる形式で、または異なるディスプレイに同じ結果をフォーマットして
表示する2つまたはそれ以上の表示スキーマが用意されている。たとえば、結果
セットに対しディスプレイの画面に結果を表示するための表示スキーマを1つ用
意し、結果を印刷するための表示スキーマをもう1つ用意する。また、同じアプ
リケーション、クライアント、またはサービスのコピーを表示能力の異なるデバ
イスで実行し、異なるデバイスの表示要求条件を満たす2つまたはそれ以上の表
示スキーマを提供するようにする。
A client, application, or service comprises multiple display schemas for displaying the results of various operations provided by one or more services. Alternatively, the display schema contains information for displaying various results for one or more clients. Thus, the client 1328 can use one display schema or multiple display schemas. There are two or more display schemas that format and display the same results in different formats or on different displays. For example, for the result set, one display schema for displaying the result on the screen of the display is prepared, and another display schema for printing the result is prepared. Also, a copy of the same application, client, or service may be run on devices with different display capabilities to provide two or more display schemas that meet the display requirements of different devices.

【0395】 文字列管理 従来のシステムでの文字列処理は、一般に、あまり効率がよくなく、特に、可
変サイズの文字列の場合に効率がよくなく、たとえば、文字列をメモリ内でコピ
ーしたり移動したりするときにメモリ空間を浪費することになる。文字列処理が
このように不効率であることは、特に、組み込み型システムなどの省メモリ・シ
ステムでは問題になる。メモリ、特にスタック領域、および動的割り当て用の領
域のサイズが、省スペース/システムでは制限される。そこで、組み込み型シス
テムなどの省スペース・システム内で実行するプログラムでの文字列処理を効率
良く行う方法が望まれる。
Character String Management Character string processing in conventional systems is generally not very efficient, especially in the case of variable size strings, for example copying a string in memory. You will waste memory space when you move around. This inefficiency in string processing is especially problematic in memory-saving systems such as embedded systems. The size of the memory, especially the stack area, and the area for dynamic allocation is limited in space saving / system. Therefore, a method for efficiently performing character string processing in a program executed in a space-saving system such as an embedded system is desired.

【0396】 図33Aは、Cプログラミング言語による代表的文字列表現の図である。Cで
は、文字列は、文字列1452の先頭文字のメモリ位置(アドレス)を格納した
文字型ポインタ1450(string1)で表される。他の文字は、文字列1
452の中の先頭文字の後に続き、通常、メモリ内の連続するアドレス指定可能
なバイト位置に格納される。C文字列における文字は通常、8ビットである。C
文字列の文字は、ASCII文字である。C文字列は、NULLを終端文字とす
る必要がある。NULLは、プラットフォームで定義されている256個の使用
可能な8ビット値のうちの1つで、通常、2進値0b00000000である。
文字列1452は、13バイトを占有する(12個の文字と終端文字を合わせて
13個)。
FIG. 33A is a diagram of a representative string representation in the C programming language. In C, the character string is represented by a character type pointer 1450 (string1) that stores the memory position (address) of the first character of the character string 1452. Other characters are character string 1
Following the first character in 452 is typically stored in contiguous addressable byte positions in memory. Characters in the C string are typically 8 bits. C
The characters in the character string are ASCII characters. The C character string must have NULL as the termination character. NULL is one of the 256 possible 8-bit values defined by the platform, typically the binary value 0b00000000.
The character string 1452 occupies 13 bytes (13 characters including 12 characters and the termination character).

【0397】 Cにおける文字列操作の一例として、strlen()関数があり、これは、
通常、標準Cライブラリの実装に付属している。strlen()関数は、入力
として文字列ポインタをとり、終端文字を含まない文字列の長さ(バイト)を返
す。たとえば、文字ポインタ1450をstrlen()関数に渡すと、長さ1
2が返される。strlen()関数は、終端文字が見つかるまで文字数を数え
ながら文字列内を端から端まで走査するという方法で実装できる。
An example of string manipulation in C is the strlen () function, which
It is usually included in the standard C library implementation. The strlen () function takes a character string pointer as input and returns the length (bytes) of the character string not including the terminating character. For example, if you pass the character pointer 1450 to the strlen () function, the length 1
2 is returned. The strlen () function can be implemented by scanning the character string from end to end, counting the number of characters until the end character is found.

【0398】 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バイトを占有することになる。
A character string copy of C is usually performed by strcpy () or st of the C library function.
It is processed by rncpy (), which is implemented as follows. char * strcpy (char * dest, const char * src); char * strncpy (char * dest, const char * src, size_t n); The strcpy () function returns the string pointed by the character pointer src Is included in the character string pointed to by the character pointer dest. The strings do not overlap and the destination string dest must be large enough to accommodate the copy. The strncpy () function is similar, except that n bytes or less of src are copied. Therefore, if the first n bytes of src have no termination character, the result does not include the termination character. Strncpy () if necessary
The code after the can include instructions to add a terminating character to the end of the dest string. If the length of src is less than n, the rest of dest is filled with NULL. The strcpy () and strncpy () functions return a pointer to the copy destination character string dest. FIG. 33B shows strnc for the character string 1452.
An example of the result of the py () function is shown, but with the following parameters, s
This is the case when trncpy () is called. strncpy (string2, string + 3,5); where string2 is the character pointer 1454 pointing to the first byte after the terminating character of the string 1452 and string1 + 3 is the character pointer 1450 incremented by 3 bytes. 5 is the copy source location string
It is the number of characters (the number of bytes) copied from 1 + 3 to string2. After copying, the next character after the 5 characters copied from string1 is set to the terminating character (the character may have been initialized to the terminating character before copying).
. Therefore, two character strings will occupy (13 + 6) = 19 bytes in memory. When the strcpy () function is applied with the character pointer 1450 as the copy source character string, the original character string 1452 and the resulting new character string are (13 * 2).
) = 26 bytes will be occupied.

【0399】 図33Cは、一般のシステムで、具体的には組み込み型システムなどの省スペ
ース・システムで文字列を表現し、管理する効率的な方法を示す図である。文字
列1452は、メモリ内に12バイトとして格納される(終端文字は不要である
)。文字列構造1460は、文字列1452の先頭文字と末尾文字へのポインタ
(アドレス(A)とアドレス(L))を含む。この文字列構造を使用すると、末
尾文字へのポインタから先頭文字へのポインタを引くことで、文字列の長さを効
率よく計算できる。
FIG. 33C is a diagram showing an efficient method of expressing and managing a character string in a general system, specifically, a space-saving system such as an embedded system. Character string 1452 is stored as 12 bytes in memory (no terminating character is required). The character string structure 1460 includes pointers (address (A) and address (L)) to the first character and the last character of the character string 1452. By using this character string structure, the length of the character string can be efficiently calculated by subtracting the pointer to the first character from the pointer to the last character.

【0400】 文字列コピー操作strcpy()やstrncpy()などの操作も、より
効率的に処理できる。図33cに示されているようなものなどの文字列構造を使
用して、新しい文字列構造1462を作成し、先頭文字ポインタと末尾文字ポイ
ンタを文字列1452内のそれぞれの文字を指すように初期化する。したがって
、文字列1452の一部または全部をその文字列用の新しい記憶域にコピーする
必要はない。文字列は長さが数百文字あるいは数千文字にさえ達することがある
ため、文字列構造とその文字列構造を利用するように実装されている文字列メソ
ッドを使用してメモリを節約することは注目に値する。文字列の一部または全部
のコピーを処理するこのような方法のことを、「部分文字列管理」と呼び、文字
列の一部(部分文字列)を効率よく処理することができる。
Operations such as the character string copy operation strcpy () and strncpy () can also be processed more efficiently. Create a new string structure 1462 using a string structure such as the one shown in FIG. Turn into. Therefore, it is not necessary to copy some or all of the string 1452 to new storage for that string. Strings can reach hundreds or even thousands of characters in length, so save memory by using string structures and the string methods implemented to take advantage of those string structures. Is notable. Such a method of processing a copy of a part or all of a character string is called "partial character string management", and a part of the character string (partial character string) can be efficiently processed.

【0401】 標準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>
Other string functions in the standard C string library can be replaced with string functions that utilize the string structure as shown in FIG. 33C. Examples of other C string functions include, but are not limited to, strstr (), strcat (), and printf (). The string processing structure and method as described in FIG. 33C efficiently processes XML text (such as XML messages) in a memory-saving system such as an embedded system when used with a hierarchical structure of XML documents. be able to. Below is a simple example of an XML schema that defines a purchase order. <! 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>

【0402】 XMLドキュメントの階層構造により、これらを再帰的に処理することができ
、それぞれの再帰のレベルで次々にドキュメントのさらに小さな部分を処理して
ゆく。さまざまな部分への参照が再帰的に記録され、処理される。図33Cに関
して説明されているような文字列構造を使用して、さまざまな部分を記録するこ
とができる。このようにして、XMLドキュメントの最小単位が再帰的に処理さ
れる一実施形態で、特定のXMLタグの内容(上の例の1行)を効率よく決定で
きる。所定のスコープ内のタグを効率よく列挙し処理できるため、同じスコープ
内でタグが繰り返されるドキュメントもまた効率よく処理できる。
The hierarchical structure of XML documents allows them to be processed recursively, with each level of recursion successively processing smaller portions of the document. References to various parts are recursively recorded and processed. Various parts can be recorded using a string structure as described with respect to FIG. 33C. In this way, the content of a particular XML tag (one line in the above example) can be efficiently determined in one embodiment where the smallest unit of an XML document is processed recursively. Since tags within a given scope can be efficiently enumerated and processed, documents with repeated tags within the same scope can also be processed efficiently.

【0403】 図33Cで説明しているような文字列構造を使用してXMLドキュメントを処
理する再帰的方法では、XMLドキュメント文字列全体を表し、ドキュメント文
字列内の先頭バイトと末尾バイトを指している文字列構造を受け付けることがで
きる。この方法では、ドキュメントの次のサブセクションを特定して、そのサブ
セクションを含むドキュメント文字列全体の部分文字列を表す文字列構造をその
サブセクションの型に対応する処理関数に渡す。サブセクション自体を、サブセ
クションの型に対応する処理関数に渡される文字列構造により表されるサブセク
ションの他のレベルに分解できる。この方法は、ドキュメント全体が処理される
まで、XMLドキュメントのサブセクションを再帰的に処理し続けることができ
る。
A recursive method of processing an XML document using a string structure as described in FIG. 33C represents the entire XML document string, pointing to the first and last bytes in the document string. It can accept any string structure. This method identifies the next subsection of the document and passes a string structure that represents a substring of the entire document string containing that subsection to the processing function for that subsection's type. The subsection itself can be decomposed into other levels of the subsection represented by the string structure passed to the processing function corresponding to the subsection's type. This method can continue to recursively process subsections of an XML document until the entire document has been processed.

【0404】 再帰的処理で文字列構造を使用すると、処理のためサブセクションのコピーを
作成しなくても処理を実行できる。サブセクションのコピーは、再帰が深くなる
につれ同じデータのコピーが増えてゆくため、再帰的処理では特にコストがかか
る。文字列構造を使用すると、サブセクションの中の先頭バイトと末尾バイトへ
のポインタを含む文字列構造のみを作成し、次のレベルに引き渡すだけでよい。
サブセクションの長さを決定するなどの他の操作は、文字列構造に格納されてい
るアドレス情報を使用することで効率よく実行できる。さらに、文字列構造を使
用すると、C文字列の終端に使用される文字などの終端文字は、必要なくなり、
組み込み型デバイスなど省スペース・デバイスのメモリを節約できる。
The use of string structures in recursive processing allows processing to be performed without making a copy of the subsection for processing. Copying subsections is especially expensive for recursive processing, as the deeper the recursion, the more copies of the same data. With the string structure, you only need to create a string structure that contains pointers to the first and last bytes in the subsection and pass it to the next level.
Other operations, such as determining the length of subsections, can be performed efficiently by using the address information stored in the string structure. Furthermore, using the string structure eliminates the need for terminating characters such as those used to terminate C strings,
You can save memory for space-saving devices such as embedded devices.

【0405】 オブジェクトのXML表現 前述のように、Jini RMIは、最小限のメモリ占有面積と最低限の帯域
幅を備えるシン・クライアントなどのいくつかのクライアントには実用的でない
と思われる。Jini RMIと関連するシリアライゼーションは、実行時間が
長く、コード・サイズが大きく、JVMリフレクションAPIを必要とし、Ja
va固有オブジェクト表現である。Javaデシリアライゼーションも実行に時
間がかかり、コード・サイズが大きく、シリアライズ・オブジェクト・パーサを
必要とする。Javaベースのシン・クライアントであっても、Jini内で要
求されたときにネットワーク経由で(必ず)返される巨大なJavaオブジェク
ト(必要なクラスに沿って)を受け入れられない場合がある。
XML Representation of Objects As previously mentioned, Jini RMI seems impractical for some clients, such as thin clients with minimal memory footprint and minimal bandwidth. The serialization associated with Jini RMI has long run times, large code size, requires the JVM reflection API, and
This is a va-specific object expression. Java deserialization is also time consuming to execute, has a large code size and requires a serialized object parser. Even Java-based thin clients may not be able to accept large Java objects (along with the required classes) that are (always) returned over the network when requested in Jini.

【0406】 分散コンピューティング環境の実施形態を使用するとよりスケーラブルな分散
コンピューティング・メカニズムを実現できる。分散コンピューティング環境に
は、分散コンピューティングを容易に行えるようにするAPIレイヤが含まれる
。APIレイヤは、クライアントとサービスとの間のメッセージ発送およびメッ
セージ受取機能を備える。このメッセージングAPIは、拡張マークアップ言語
(XML)など、表現データまたはメタデータ形式による単純メッセージ用のイ
ンターフェースを提供する。実施形態はここではXMLを採用しているものにつ
いて説明しているが、他の実施形態では他のメタデータ型言語または形式を使用
することもできることに注意されたい。いくつかの実施形態では、APIレイヤ
は、さらに、Javaオブジェクトなど、オブジェクト間の通信やオブジェクト
の受け渡しのためのメッセージのインターフェースを備えることもできる。AP
Iレイヤ102を通じてアクセス可能なオブジェクトは、XMLなどの表現デー
タ形式で表現される。そのため、オブジェクト自体とは反対に、オブジェクトの
XML表現は操作が可能である。
Embodiments of the distributed computing environment may be used to provide more scalable distributed computing mechanisms. The distributed computing environment includes an API layer that facilitates distributed computing. The API layer provides message sending and receiving functions between clients and services. This messaging API provides an interface for simple messages in a representational data or metadata format, such as Extensible Markup Language (XML). It should be noted that although the embodiments are described herein as employing XML, other embodiments may use other metadata type languages or formats. In some embodiments, the API layer may also include a message interface for communication between and passing objects, such as Java objects. AP
Objects accessible through the I layer 102 are represented in a representation data format such as XML. Therefore, contrary to the object itself, the XML representation of the object can be manipulated.

【0407】 APIレイヤは、メッセージング・レイヤの上に置かれる。メッセージング・
レイヤは、XMLなどの表現データ形式に基づいている。一実施形態では、XM
Lメッセージは、APIレイヤの呼び出しに従って、メッセージング・レイヤに
よって生成される。メッセージング・レイヤは、クライアントとサービスとの間
で送ることができる定義済みの静的メッセージを備えることができる。メッセー
ジング・レイヤは、さらに、動的に生成されるメッセージにも対応できる。一実
施形態では、JavaオブジェクトなどのオブジェクトをXML表現に動的に変
換(コンパイル)することができる。オブジェクトは、コードおよび/またはデ
ータ部分を含む。オブジェクトのコードおよび/またはデータ部分は、XML表
現のXMLタグにより識別されるコード・セグメントとデータ・セグメントにコ
ンパイルすることができる。メッセージング・レイヤにより、XMLオブジェク
ト表現はメッセージとして送ることができる。逆に、メッセージング・レイヤは
、オブジェクトのXML表現を受け取ることができる。その後、そのメッセージ
からオブジェクトを再構成(逆コンパイル)できる。再構成では、XML表現の
コードおよび/またはデータ・セグメントを識別するタグのXML表現を調べ、
タグに格納されている情報を使用して、そのオブジェクトのコードおよび/また
はデータ部分を識別し、逆コンパイルする。
The API layer sits on top of the messaging layer. Messaging ·
Layers are based on a representational data format such as XML. In one embodiment, XM
The L message is generated by the messaging layer according to the API layer call. The messaging layer can comprise predefined static messages that can be sent between clients and services. The messaging layer can also accommodate dynamically generated messages. In one embodiment, an object such as a Java object can be dynamically translated (compiled) into an XML representation. Objects include code and / or data portions. The code and / or data portion of an object can be compiled into code and data segments identified by XML tags in an XML representation. The messaging layer allows the XML object representation to be sent as a message. Conversely, the messaging layer can receive an XML representation of the object. The object can then be reconstructed (decompiled) from the message. Reconstruction examines the XML representation of tags that identify the code and / or data segments of the XML representation,
The information stored in the tag is used to identify and decompile the code and / or data portion of that object.

【0408】 オブジェクトのXML表現の作成と発送 図34は、一実施形態により、クライアント1500とサービス1502の間
でJavaオブジェクトを移動するプロセスを示す図である。サービス1502
は、スペース・サービスを含む、分散コンピューティング環境でサポートされて
いるサービスであればどのようなものでもよい。クライアント1500は、サー
ビス1502のサービス通知から受け取ったXMLスキーマを使用して作成した
ゲート1504を使用し、サービス1502の対応するゲート1506と通信す
る。ある時点で、クライアント1500は、Javaオブジェクト1510をサ
ービス1502に送る必要がある。Javaオブジェクト1510は、他のオブ
ジェクトを参照し、次にこのオブジェクトは他のオブジェクトを参照し、という
ように続いてゆく。Javaオブジェクト1510とその参照されているオブジ
ェクト、次に参照するオブジェクト、というように続くことを、オブジェクト・
グラフと呼ぶ。
Creating and Shipping XML Representation of Objects FIG. 34 is a diagram illustrating a process of moving Java objects between a client 1500 and a service 1502, according to one embodiment. Service 1502
Can be any service supported in a distributed computing environment, including space services. The client 1500 uses the gate 1504 created using the XML schema received from the service notification of the service 1502 to communicate with the corresponding gate 1506 of the service 1502. At some point, the client 1500 needs to send a Java object 1510 to the service 1502. Java object 1510 references another object, which in turn references another object, and so on. Java object 1510 and its referenced object, then the referenced object, and so on.
Call it a graph.

【0409】 Javaオブジェクト1510は、Javaオブジェクト・コンパイル・プロ
セス1512に渡されてコンパイルされ、オブジェクト・グラフのXML表現を
出力する。オブジェクト・グラフのXML表現は、XMLデータ・ストリーム1
514としてゲート1504に渡される。XMLデータ・ストリーム1514は
、オブジェクト・グラフ内のすべてのオブジェクトのXML表現を含む。一実施
形態では、オブジェクト・グラフ内のオブジェクトは、XMLデータ・ストリー
ム1514内に再帰的に格納される。
The Java object 1510 is passed to the Java object compilation process 1512 for compilation and outputs an XML representation of the object graph. The XML representation of the object graph is XML data stream 1
It is passed to the gate 1504 as 514. XML data stream 1514 contains an XML representation of all objects in the object graph. In one embodiment, the objects in the object graph are stored recursively in XML data stream 1514.

【0410】 ゲート1504は、その後、XMLデータ・ストリーム1514をメッセージ
1516にパッケージして、メッセージ1516をサービス1502のゲート1
506に送る。ゲート1506は、XMLメッセージ1516からXMLデータ
・ストリーム1514を抽出して、XMLデータ・ストリーム1514をXML
データ・ストリーム逆コンパイル・プロセス1518に送り、逆コンパイルを行
い、Javaオブジェクト1510を含むオブジェクト・グラフを備えるオブジ
ェクトを出力する。一実施形態では、オブジェクト・グラフ内のオブジェクトは
、XMLデータ・ストリーム1514内に再帰的に格納され、したがって、再帰
的逆コンパイル・プロセスが使用される。
Gate 1504 then packages the XML data stream 1514 into message 1516, and message 1516 is gate 1 of service 1502.
Send to 506. The gate 1506 extracts the XML data stream 1514 from the XML message 1516 and outputs the XML data stream 1514 as XML.
Send to data stream decompile process 1518 to perform decompile and output an object with an object graph containing Java objects 1510. In one embodiment, the objects in the object graph are stored recursively in XML data stream 1514, thus using a recursive decompilation process.

【0411】 サービス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を含むオブジェクト・グラ
フを備えるオブジェクトを出力する。
If the service 1502 needs to send a Java object to the client 1500, a substantially similar process can be used. Java object 1
520 is passed to the Java object compilation process 1512 for compilation and outputs an XML representation of the object graph. object·
The XML representation of the graph is the gate 150 as an XML data stream 1522.
Passed to 6. The gate 1506 then processes the XML data stream 1522.
Is packaged in a message 1524 and the message 1524 is
500 to gate 1504. The gate 1504 uses the XML message 1524.
Extract XML data stream 1522 from and send XML data stream 1522 to XML data stream decompile process 1518 to decompile and output an object with an object graph containing Java object 1520.

【0412】 他の実施形態では、ゲートは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に送るプロセスは、オブジェクトをクライアントからサービスに送る
プロセスと実質的に類似している。
In another embodiment, the gate is responsible for compiling and decompiling Java objects. In this embodiment, the Java object 151
0 is passed to the gate 1504. The gate 1504 sets the object 1510 to J
Passes to the ava object compilation process 1512 for compilation and outputs the XML representation of the object graph to an XML data stream 1514. Gate 1504 then packages the XML data stream 1514 into message 1516 and sends message 1516 to gate 1506 of service 1502. The gate 1506 extracts the XML data stream 1514 from the XML message 1516 and outputs the XML data stream 1514 to the XML.
L data stream decompile process 1518 to decompile and output an object with an object graph containing Java objects 1510. The process of sending a Java object from service 1502 to client 1500 is substantially similar to the process of sending an object from client to service.

【0413】 一実施形態では、オブジェクト・コンパイル・プロセス1512とオブジェク
ト逆コンパイル・プロセス1518は、両方とも、クライアント1500とサー
ビス1502に存在し、プログラムする際に、コンパイルと逆コンパイルを2つ
のデバイスで実質的に同じように実行できるため、一方のオブジェクト出力は他
方のオブジェクト入力と実質的に同一である。一実施形態では、Javaオブジ
ェクトの記述を含むXMLスキーマをコンパイル・プロセスや逆コンパイル・プ
ロセスにおいてクライアントおよび/またはサービスの両方で使用できる。一実
施形態では、Javaオブジェクトのコンパイルや逆コンパイルで使用するXM
Lスキーマをサービスにより、サービス通知でクライアントに渡すことができる
In one embodiment, the object compile process 1512 and the object decompile process 1518 both reside on the client 1500 and the service 1502 and, when programmed, effectively compile and decompile on two devices. The output of one object is substantially the same as the input of the other, since they can be performed in the same way. In one embodiment, an XML schema containing a description of Java objects can be used by both clients and / or services in the compilation and decompilation processes. In one embodiment, an XM used for compiling and decompiling Java objects
The L schema can be passed by the service to the client in a service notification.

【0414】 XMLでは、言語独立およびプラットフォーム独立のオブジェクト表現形式を
備えている。したがって、オブジェクトをオブジェクトのXML表現にコンパイ
ルし、逆コンパイルしてオブジェクトを再現する場合に、図34に示されている
ようなプロセスは、Javaオブジェクトの移動に限られず、実施形態によって
は、ネットワーク内のエンティティ間で他の型のオブジェクトを移動するのにも
適用される。
XML has a language-independent and platform-independent object representation format. Thus, when compiling an object into an XML representation of the object and decompiling it to reproduce the object, the process as shown in FIG. 34 is not limited to moving Java objects, and in some embodiments, within a network. It also applies to moving other types of objects between entities.

【0415】 図46は、オブジェクトのXML表現を使用してサービスからクライアントに
オブジェクトを送るメカニズムを示している。ステップ2200で、クライアン
トはオブジェクトをサービスに要求する。一実施形態では、オブジェクトはJa
vaオブジェクトである。一実施形態では、クライアントは、メッセージ(たと
えば、XMLメッセージ)を、オブジェクトを要求しているサービスに送る。ス
テップ2202で、サービスは要求を受け取った後、オブジェクトをコンパイル
・プロセスに送る。一実施形態では、コンパイル・プロセスはサービスが実行さ
れている仮想マシン内に組み込まれる。一実施形態では、仮想マシンはJava
仮想マシン(JVM)である。一実施形態では、コンパイル・プロセスは、JV
Mへの拡張機能として提供できる。ステップ2204で、コンパイル・プロセス
はオブジェクトのデータ表現言語表現を生成する。一実施形態では、データ表現
言語はXMLである。オブジェクトの表現は、オブジェクトの名前または識別子
およびそのオブジェクトに対する1つまたは複数のインスタンス変数を含む。オ
ブジェクト指向プログラミングで使用するインスタンス変数は、クラス・テンプ
レートの変数の1つであって、そのクラスのオブジェクトごとに異なる値を持つ
。ステップ2206で、サービスはオブジェクトのデータ表現言語表現をクライ
アントに送る。一実施形態では、表現はメッセージにパッケージされる。一実施
形態では、メッセージはデータ表現言語で記述される。別のところで説明したよ
うに、メッセージ・ゲートをクライアントとサービスとの間で受け渡しされるメ
ッセージに使用される。
FIG. 46 illustrates a mechanism for sending an object from a service to a client using an XML representation of the object. At step 2200, the client requests an object from the service. In one embodiment, the object is Ja
va object. In one embodiment, the client sends a message (eg, an XML message) to the service requesting the object. In step 2202, the service sends the object to the compilation process after receiving the request. In one embodiment, the compilation process is embedded within the virtual machine in which the service is running. In one embodiment, the virtual machine is Java.
It is a virtual machine (JVM). In one embodiment, the compilation process is a JV.
It can be provided as an extension function to M. At step 2204, the compilation process produces a data representation language representation of the object. In one embodiment, the data representation language is XML. The representation of an object includes the name or identifier of the object and one or more instance variables for that object. The instance variable used in object-oriented programming is one of the variables of the class template and has a different value for each object of the class. In step 2206, the service sends the data representation language representation of the object to the client. In one embodiment, the representation is packaged in the message. In one embodiment, the message is written in a data representation language. As described elsewhere, the MessageGate is used for messages passed between clients and services.

【0416】 ステップ2208で、クライアントはオブジェクトのデータ表現言語表現を受
け取り、その表現を逆コンパイル・プロセスに送る。一実施形態では、逆コンパ
イル・プロセスはクライアントが実行されている仮想マシン内に組み込まれる。
一実施形態では、仮想マシンはJava仮想マシン(JVM)である。一実施形
態では、逆コンパイル・プロセスはJVMへの拡張機能として設けられる。ステ
ップ2210で、逆コンパイルはオブジェクトのコピーをオブジェクトのデータ
表現言語表現から生成する。その後、オブジェクトがクライアントに送られる。
At step 2208, the client receives the data representation language representation of the object and sends the representation to the decompilation process. In one embodiment, the decompilation process is embedded within the virtual machine in which the client is running.
In one embodiment, the virtual machine is a Java Virtual Machine (JVM). In one embodiment, the decompilation process is provided as an extension to JVM. In step 2210, decompilation produces a copy of the object from the data representation language representation of the object. The object is then sent to the client.

【0417】 JVMコンパイル/逆コンパイルAPI 図35aおよび図35bは、仮想マシン(たとえば、JVM)がオブジェクト
(たとえば、Javaオブジェクト)をオブジェクトのXML表現にコンパイル
する拡張機能および(Java)オブジェクトのXML表現を(Java)オブ
ジェクトに逆コンパイルする拡張機能を含む実施形態を示すデータ流れ図である
。JVMは、コンパイル/逆コンパイル拡張機能のアプリケーション・プログラ
ミング・インターフェース(API)を備えることができる。クライアント15
00およびサービス1502は、JVM内で実行中の場合がある。JVMは、同
じデバイスまたは異なるデバイスに置くことができる。
JVM Compile / Decompile APIs FIGS. 35a and 35b show extensions for a virtual machine (eg, JVM) to compile an object (eg, Java object) into an XML representation of the object and an XML representation of the (Java) object. 6 is a data flow diagram illustrating an embodiment that includes an extension that decompiles into a (Java) object. The JVM can include an application programming interface (API) for compile / decompile extensions. Client 15
00 and service 1502 may be running within the JVM. The JVM can be on the same device or a different device.

【0418】 図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
(およびそのオブジェクト・グラフ内のすべてのオブジェクト)を出力する。
In both FIGS. 35a and 35b, the JVM XML compiler / decompiler AP
The I1530 receives a Java object 1510 as an input, and outputs an XML representation of the object 1510 and its referenced object (object graph of the object 1510) to an XML data stream 1514. In addition, the JVM XML compiler / decompiler API 1530
It can accept an ML data stream 1522, which contains an XML representation of object 1520 and all its referenced objects (object graph of object 1520), including Java object 1520.
Output (and all objects in its object graph).

【0419】 図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に送る。
In FIG. 35 a, when the Java object 1510 is sent, the client sends a JV
FIG. 9 illustrates one embodiment for calling the M XML compiler / decompiler API 1530. The client 1510 sends the Java object 1510 to the A
Pass it to PI 1530, compile the object and output the XML representation,
The XML representation is stored in the XML data stream 1514, and the XML data
The stream 1514 is output. The client can then pass the XML data stream 1514 to the gate 1504. Gate 1504 then packages XML data stream 1514 into XML message 1516 and sends message 1516 to service 1502.

【0420】 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に返す。
After receiving the XML message 1524 from the service 1502, the gate 15
22 extracts the XML data stream 1522 from the message 1524 and passes the data stream 1522 to the client 1500. Client 150
0 calls the JVM XML compiler / decompiler API 1530 and passes the XML data stream 1522 to the API 1530. Then AP
I 1530 decompiles the XML data stream 1522 into a Java
It outputs the a object 1520 and other objects to its object graph and returns the object to the client 1500.

【0421】 図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に送る。
FIG. 35b illustrates another embodiment where the JVM XML compiler / decompiler API 1530 is called by a gate when sending a Java object 1510. The client 1510 is a Java object 15
Pass 10 to gate 1504. The gate 1504 APs the object 1510
I 1530 to compile the object, output an XML representation, store the XML representation in an XML data stream 1514, and output an XML data stream 1514. The gate 1504 then packages the XML data stream 1514 into an XML message 1516 and sends message 151
6 to service 1502.

【0422】 XMLメッセージ1524をサービス1502から受け取った後、ゲート15
22はメッセージ1524からXMLデータ・ストリーム1522を抽出し、デ
ータ・ストリーム1522をJVM XMLコンパイラ/逆コンパイラAPI
1530に渡す。その後、API 1530はXMLデータ・ストリーム152
2を逆コンパイルして、Javaオブジェクト1520およびその他のオブジェ
クトをそのオブジェクト・グラフに出力する。そしてゲートは、Javaオブジ
ェクト1520とその他のオブジェクトをクライアント1500に送る。
After receiving the XML message 1524 from the service 1502, the gate 15
22 extracts the XML data stream 1522 from the message 1524 and outputs the data stream 1522 to the JVM XML compiler / decompiler API.
Hand it over to 1530. After that, API 1530 returns XML data stream 152.
Decompile 2 to output Java object 1520 and other objects in its object graph. Then, the gate sends the Java object 1520 and other objects to the client 1500.

【0423】 一実施形態では、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コードが大
量に必要になる。
In one embodiment, the JVM XML compiler and decompiler may be implemented as integrated features of the JVM. In other embodiments, the XML compiler and decompiler can be implemented with API method calls in the JVM standard extensions, so there is no need to modify the core JVM. JVM
Is responsible for invoking processes (clients and / or services) running within the JVM.
To provide the VM XML Compiler / Decompiler API 1530, a process can access the Java object compile / decompile functionality provided by the JVM. In one embodiment, in order for a process to utilize object compilation / decompilation, the JVM running in that process needs to be equipped with the JVM XML compiler / decompiler functionality and API 1530. The method of translating and sending an object using reflection and serialization is typically implemented in another application separate from the JVM. When dynamically analyzing the transitive closure of an object, the application must repeatedly access the JVM and retrieve the object one field at a time. This task tends to be a slow and tedious process and requires a lot of applications and JVM code.

【0424】 JVM内にJavaオブジェクト・コンパイル/逆コンパイル機能を実装する
ことが好都合なのは、JVMがすでにオブジェクト・グラフの概念、および内容
を理解しているからである。そこで、コンパイル/逆コンパイル機能で、XML
表現を出力するためのオブジェクト・グラフの解析とオブジェクト・グラフを出
力するためのXML表現の解析にJVMの知識を活用(そして、コードを再利用
し)することができる。したがって、コンパイル/逆コンパイル機能では、リフ
レクションとシリアライゼーションを使用するオブジェクト送出メソッドの場合
のように、JVMによって提供される機能を複製してはならない。これにより、
コンパイル/逆コンパイル機能のコード占有領域を、リフレクションおよびシリ
アライゼーションを使用するオブジェクト送出メソッドと比べて小さくすること
ができる。また、オブジェクトは、JVM XMLコンパイラ/逆コンパイラA
PIを1回呼び出すだけでコンパイルまたは逆コンパイルすることができる。
Implementing the Java object compile / decompile functionality within a JVM is convenient because the JVM already understands the concept and content of object graphs. So, with the compile / decompile function, XML
JVM knowledge can be leveraged (and code reused) for parsing an object graph to output an expression and parsing an XML expression to output an object graph. Therefore, the compile / decompile function should not duplicate the functionality provided by the JVM, as is the case with object dispatch methods that use reflection and serialization. This allows
The code footprint of the compile / decompile function can be small compared to object dispatching methods that use reflection and serialization. The object is a JVM XML compiler / decompiler A.
You can compile or decompile with just one call to PI.

【0425】 さらに、オブジェクトのコンパイル逆コンパイルをJVMに統合することによ
り、オブジェクトのコンパイルおよび逆コンパイルを、リフレクションおよびシ
リアライゼーションを使用したメソッドよりも高速に実行することができる場合
があるが、それは、リフレクションおよびシリアライゼーションで実装されたオ
ブジェクト・トラバーサル・モデルでは、JVMの外部にあるコードはJava
オブジェクトの構造またはグラフを認識せず、オブジェクト・グラフをトラバー
スして、引き離し、最終的に、JVMを繰り返し呼び出してコンパイル(および
逆コンパイルのための反転プロセス)を実行する必要があるからである。このプ
ロセスは、コードの外部で、JVMの呼び出しを繰り返し実行する必要があるた
め、遅くなることがある。ここで説明したように、コンパイルおよび逆コンパイ
ル機能をJVMに統合することにより、JVMの外部のコードからJVMへ繰り
返し呼び出しを行わなくて済むようになる。一実施形態では、オブジェクトは、
JVM XMLコンパイラ/逆コンパイラAPIを1回呼び出すだけでコンパイ
ルまたは逆コンパイルすることができる。
Further, by integrating compilation and decompilation of objects into the JVM, it may be possible to perform compilation and decompilation of objects faster than methods using reflection and serialization. And the object traversal model implemented with serialization, code outside the JVM is Java
This is because it needs to be aware of the structure or graph of the object, traverse the object graph, pull apart, and eventually call the JVM repeatedly to perform the compilation (and inversion process for decompilation). This process can be slow because it requires repeated calls to the JVM outside of the code. By integrating the compile and decompile functions into the JVM as described herein, it is possible to avoid making repeated calls to the JVM from code outside the JVM. In one embodiment, the object is
You can compile or decompile with one call to the JVM XML compiler / decompiler API.

【0426】 一実施形態では、コンパイラ/逆コンパイラ機能は分散コンピューティング環
境におけるサービスとして実装できる。サービスは、スペース内でサービス通知
をパブリッシュする。分散コンピューティング環境内のプロセスは、サーチまた
は発見サービスを使用して、コンパイル/逆コンパイル・サービスを特定するこ
とができる。このプロセス(サービスのクライアント)は、次に、XML表現に
コンパイルするJavaオブジェクトおよび/またはJavaオブジェクトに逆
コンパイルするXML表現サービスに渡すことによりそのサービスを使用できる
。Javaオブジェクトにコード(オブジェクトのメソッド)およびデータを含
めることができる。オブジェクトのコードは、非一時的でなく、オブジェクトが
作成された後このコードは変更されない。ただし、オブジェクトのデータは一時
的な場合がある。同じJavaクラスから作成された2つのオブジェクトは、同
一のコードを含んでいても、2つのオブジェクト内のデータが異なることがある
。一実施形態では、コンパイル機能はJavaオブジェクトのデータをオブジェ
クトのXML表現にコンパイルするが、XML表現の中にオブジェクトの実際の
コードが含まれない場合がある。一実施形態では、オブジェクトに関する情報を
コンパイルされたXML表現の中に挿入し、そのオブジェクトのコードの再作成
方法を受取側に通知するようにできる。XML表現をXMLデータ・ストリーム
に格納し、受け取り側プロセス(クライアントまたはサービス)に(たとえば、
メッセージで)送ることができる。受け取り側プロセスは、XMLデータ・スト
リームを逆コンパイル機能に渡すことができる。逆コンパイル機能は、XMLデ
ータ・ストリームを逆コンパイルして、そのデータを含むJavaオブジェクト
を出力することができる。一実施形態では、オブジェクトのコードは、XML表
現に含まれるオブジェクトに関する情報を使用して逆コンパイル機能により再現
することができるが、それはオブジェクトのコードが静的に定義され、そのオブ
ジェクトを受け取るJVMがオブジェクトについての情報を利用して(必要なら
ば)そのコードを再現することができるからである。
In one embodiment, the compiler / decompiler functionality may be implemented as a service in a distributed computing environment. The service publishes a service notification in the space. A process in a distributed computing environment can use search or discovery services to identify compile / decompile services. This process (the client of the service) can then use that service by passing it to a Java object that compiles to an XML representation and / or an XML representation service that decompiles to a Java object. Java objects can contain code (object methods) and data. The code of the object is not non-transitory and this code does not change after the object is created. However, the object data may be temporary. Two objects created from the same Java class may have different data in the two objects even if they contain the same code. In one embodiment, the compile function compiles Java object data into an XML representation of the object, but may not include the actual code for the object in the XML representation. In one embodiment, information about an object may be inserted into the compiled XML representation to inform the recipient how to recreate the code for that object. Store the XML representation in an XML data stream and make it available to the receiving process (client or service) (eg,
You can send it (in a message). The receiving process can pass the XML data stream to the decompile function. The decompile function can decompile an XML data stream and output a Java object containing that data. In one embodiment, the object's code can be recreated by the decompile function using information about the object contained in the XML representation, which means that the object's code is statically defined and the JVM receiving the object is The information about the object can be used to recreate the code (if needed).

【0427】 一実施形態では、コンパイル機能によって出力されたオブジェクトのXML表
現に、にJavaオブジェクトのデータおよびそのJavaオブジェクトに関す
る情報を格納することができる。その情報は、Javaオブジェクトのクラス情
報を含むことができる。オブジェクト・シグネチャを情報に含め、そのシグネチ
ャを利用して、オブジェクトのクラスなどを識別することができる。逆コンパイ
ル機能では、Javaオブジェクトに関する情報を使用してJavaオブジェク
トのコードを再作成し、XMLデータ・ストリームからデータをJavaオブジ
ェクトに逆コンパイルすることができる。したがって、逆コンパイルされたデー
タとオブジェクトを記述している情報から受け取り側クライアントまたはサービ
スを実行しているJVM上でコードとデータを含む完全なオブジェクトを再現す
ることができる。一実施形態では、オブジェクトを記述する情報を1つまたは複
数のXMLタグの中に格納することができる。一実施形態では、XMLデータ・
ストリームを受け取るクライアントまたはサービスはオブジェクトを記述するX
MLスキーマを含むことができ、またXMLスキーマを使用して、逆コンパイル
されたデータとそのオブジェクトに関する情報からJavaオブジェクトを再構
成することができる。逆コンパイル・プロセスは、オブジェクト・グラフを再帰
的にたどり、オブジェクトによって参照されているオブジェクトを再構成するが
、この作業は、XMLデータ・ストリームから参照されているオブジェクトのデ
ータを逆コンパイルし、そのXMLデータ・ストリーム内の参照されているオブ
ジェクトに関する情報から参照されているオブジェクトのコードを再作成するこ
とで行う。
In one embodiment, the XML representation of the object output by the compile function may store Java object data and information about the Java object. The information may include Java object class information. The object signature can be included in the information, and the class of the object can be identified using the signature. The decompile function can use information about Java objects to re-create Java object code and decompile data from an XML data stream into Java objects. Therefore, the complete object containing the code and data can be recreated from the decompiled data and the information describing the object on the receiving client or JVM running the service. In one embodiment, the information that describes the object may be stored in one or more XML tags. In one embodiment, XML data
The client or service that receives the stream is an X that describes an object.
ML schemas can be included and XML schemas can be used to reconstruct Java objects from the information about the decompiled data and its objects. The decompilation process recursively traverses the object graph and reconstructs the object referenced by the object, which involves decompiling the data of the referenced object from the XML data stream, This is done by recreating the code of the referenced object from information about the referenced object in the XML data stream.

【0428】 一実施形態では、コンパイル機能によって出力されたオブジェクトのXML表
現に、オブジェクトのデータおよびオブジェクトのコードを識別する情報を格納
することができる。一実施形態では、オブジェクトのコードを記述する情報をX
MLデータ・ストリーム内の1つまたは複数のXMLタグの中に格納することが
できる。受け取ると、逆コンパイル機能はXMLデータ・ストリームからのコー
ドに関する情報を使用してJavaオブジェクトのコードを再作成し、XMLデ
ータ・ストリームからオブジェクトのデータを逆コンパイルすることができる。
したがって、逆コンパイルされたデータとオブジェクトのコードを記述している
情報から受け取り側クライアントまたはサービスを実行しているJVMでコード
とデータを含む完全なオブジェクトを再現することができる。
In one embodiment, the XML representation of the object output by the compile function may store information identifying the object's data and the object's code. In one embodiment, the information that describes the code of the object is X
It can be stored in one or more XML tags in the ML data stream. Upon receipt, the decompile function can use the information about the code from the XML data stream to recreate the Java object's code and decompile the object's data from the XML data stream.
Thus, from the decompiled data and the information describing the code of the object, the receiving client or JVM running the service can recreate the complete object containing the code and data.

【0429】 オブジェクトのXML表現を使用して分散コンピューティング環境内のエンテ
ィティ(通常、クライアントとサービス)間でオブジェクトを転送するシナリオ
を説明のため取り上げる。これらのシナリオは、例であり、制限することを意図
していない。
[0429] A scenario is described for the purpose of transferring objects between entities (typically clients and services) in a distributed computing environment using an XML representation of the objects. These scenarios are examples and are not intended to be limiting.

【0430】 第1のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をクライアントに送る。クライアントは、XMLコンパイラ/逆コン
パイラを使用してXML表現を逆コンパイルし、オブジェクト内のデータに対し
操作を実行し、後でXMLコンパイラ/逆コンパイラを使用してそのオブジェク
トをオブジェクトのXML表現にコンパイルし、そのオブジェクトのXML表現
をサービスに返す。
In the first scenario, the service uses an XML compiler / decompiler to compile a Java object into an XML representation of the object and send the XML representation to the client. The client decompiles the XML representation using an XML compiler / decompiler, performs operations on the data in the object, and later compiles the object into an XML representation of the object using the XML compiler / decompiler. Then, the XML representation of the object is returned to the service.

【0431】 第2のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をクライアントに送る。次に、クライアントはXML表現を他のサー
ビスに送り、これはXMLコンパイラ/逆コンパイラを使用してXML表現を逆
コンパイルしてオブジェクトを再生成し、クライアントから(場合によってはデ
ータを修正する)要求があったときにオブジェクトに対し操作を実行し、XML
コンパイラ/逆コンパイラを使用してその修正されオブジェクトをそのXML表
現に再コンパイルし、そのオブジェクトのXML表現をクライアントに送る。
In the second scenario, the service uses an XML compiler / decompiler to compile a Java object into an XML representation of the object and send the XML representation to the client. The client then sends the XML representation to another service, which uses the XML compiler / decompiler to decompile the XML representation to regenerate the object and request from the client (possibly modifying the data). When there is, execute the operation on the object and
Recompile the modified object into its XML representation using a compiler / decompiler and send the XML representation of the object to the client.

【0432】 第3のシナリオでは、サービスはXMLコンパイラ/逆コンパイラを使用して
、JavaオブジェクトをそのオブジェクトのXML表現にコンパイルし、その
XML表現をオブジェクト・リポジトリまたはストア・スペースに送る。サービ
スは、次に、メッセージをクライアントに送り、XML表現の位置をクライアン
トに知らせる。メッセージは、XML表現のUniversal Resour
ce Identifier(URI)を含む。その後、クライアントはストア
・スペースからオブジェクトのXML表現を取り出し、XMLコンパイラ/逆コ
ンパイラを使用してその表現を逆コンパイルしてオブジェクトを再現する。それ
とは別に、クライアントはオブジェクトのXML表現の位置を、そのオブジェク
トで実行する操作の要求とともに他のサービスに送る。その後、他のサービスは
ストア・スペースからXML表現を取り出し、XMLコンパイラ/逆コンパイラ
を使用してXML表現を逆コンパイルしオブジェクトを再現して、オブジェクト
に対し要求された操作を実行する。
In the third scenario, the service uses an XML compiler / decompiler to compile a Java object into an XML representation of the object and send the XML representation to the object repository or store space. The service then sends a message to the client telling it the location of the XML representation. The message is a Universal Resour in XML representation.
ce ce Identifier (URI) is included. The client then retrieves the XML representation of the object from the store space and decompiles that representation using the XML compiler / decompiler to recreate the object. Alternatively, the client sends the location of the XML representation of the object to other services, along with a request for an operation to perform on that object. The other service then retrieves the XML representation from the store space and decompiles the XML representation using an XML compiler / decompiler to recreate the object and perform the requested operations on the object.

【0433】 第4のシナリオでは、プロセス(クライアントまたはサービスの場合がある)
は、ストア・スペースでサービス通知をサーチして見つけることにより、分散コ
ンピューティング環境内のオブジェクト・リポジトリまたはストア・スペースを
特定することができる。プロセスは、実行時に、複数のJavaオブジェクトを
作成し、取得する。プロセスは、XMLコンパイラ/逆コンパイラを使用して、
1つまたは複数のオブジェクトをオブジェクトのXML表現にコンパイルし、ス
トア・スペース・サービスのクライアントとして、オブジェクトのXML表現を
ストア・スペースに送り、後でアクセスできるように、また他のプロセスによっ
てアクセスできるように格納する。
In the fourth scenario, the process (which may be a client or service)
Can locate an object repository or store space in a distributed computing environment by searching for service notifications in the store space. The process creates and obtains multiple Java objects at run time. The process uses an XML compiler / decompiler to
Compiles one or more objects into an XML representation of the object and, as a client of the store space service, sends the XML representation of the object to the store space for later access and access by other processes. To store.

【0434】 オブジェクトのXML表現の逆コンパイルにおけるセキュリティ問題 スペースは、ここで説明しているように、分散コンピューティング環境でファ
イル・システムとして使用できる。システム内のファイルに対してはセキュリテ
ィをアクセス権限の形で提供する。アクセス権限は、ファイルのアクセス(開く
、読み込む、書き出すの操作)ごとにチェックされる。したがって、分散コンピ
ューティング環境でファイルのアクセス・セキュリティを実現する方法が望まれ
る。この方法はさらに、スペースに格納され、分散コンピューティング環境内の
クライアントとサービスとの間で送られるJavaオブジェクトのXML表現に
適用できる。
Security Issues in Decompiling the XML Representation of Objects The space can be used as a file system in a distributed computing environment, as described herein. Security is provided in the form of access rights for files in the system. The access authority is checked for each file access (open, read, write operation). Therefore, a method of achieving file access security in a distributed computing environment is desired. The method is further applicable to XML representations of Java objects stored in a space and sent between clients and services in a distributed computing environment.

【0435】 一実施形態では、分散コンピューティング環境のデバイスのクライアントのユ
ーザは、最初にクライアントにアクセスしたときに識別され、認証される。一実
施形態では、ユーザは、識別と承認のためにスマート・カードなどの物理的識別
機能を提供することができる。他の実施形態では、チャレンジ応答メカニズム(
ユーザIDとパスワードなど)を使用して、識別と承認を行うことができる。さ
らに他の実施形態では、識別と承認に電子シグネチャなどの電子識別を使用する
。識別と承認に他の方法を使用することもできる。識別されて承認されると、ユ
ーザは、分散コンピューティング環境で1つまたは複数のサービスにアクセスす
ることを含む、クライアント上のさまざまな操作を実行できる。これらの操作の
ときに、上述のように、1つまたは複数のオブジェクトを作成する(ローカルで
)か、またはどこか他のところ(たとえば、サービスまたはスペース)から取得
することができる。オブジェクトは、修正して、オブジェクトのXML表現にコ
ンパイルし、ローカルで、クライアントによって格納するか、または(遷移的ま
たは永続的)ストアのためスペース・サービスに送ることができる。オブジェク
トのいくつかはサービスからオブジェクトのXML表現の形式で(サービスまた
は他のサービスで格納)受取され、これは、XMLコンパイラ/逆コンパイラに
よって逆コンパイルされ、クライアント上にオブジェクトを再作成することがで
きる。
In one embodiment, a user of a client of a device in a distributed computing environment is identified and authenticated when first accessing the client. In one embodiment, the user may provide a physical identification feature such as a smart card for identification and authorization. In another embodiment, the challenge response mechanism (
The user ID and password, etc.) can be used to identify and approve. In yet another embodiment, electronic identification, such as an electronic signature, is used for identification and authorization. Other methods can be used for identification and approval. Once identified and authorized, the user can perform various operations on the client, including accessing one or more services in the distributed computing environment. During these operations, one or more objects may be created (locally) or obtained from elsewhere (eg, service or space), as described above. The object can be modified and compiled into an XML representation of the object, stored locally by the client, or sent to the space service for store (transitive or persistent). Some of the objects are received from the service in the form of an XML representation of the object (stored in a service or other service), which can be decompiled by an XML compiler / decompiler to recreate the object on the client. .

【0436】 一実施形態では、オブジェクトのXML表現を逆コンパイルするときに、それ
ぞれのXMLメッセージをチェックし、ユーザがそのオブジェクトに対するアク
セス権限を持っていることを検証する。ユーザが適切なアクセス権限を持ってい
ない場合、XMLコンパイラ/逆コンパイラはそのユーザに対してオブジェクト
を逆コンパイルしない。一実施形態では、XMLコンパイラ/逆コンパイラによ
ってセキュリティ例外がスローされる。一実施形態では、ユーザに対しアクセス
違反が知らされる。
In one embodiment, when decompiling the XML representation of an object, check each XML message to verify that the user has access to that object. If the user does not have the proper access privileges, the XML compiler / decompiler will not decompile the object for that user. In one embodiment, a security exception is thrown by the XML compiler / decompiler. In one embodiment, the user is notified of the access violation.

【0437】 オブジェクトに対し許されている作成者およびアクセス・レベル(作成者のみ
アクセス、読み取り専用、読み書き、削除、コピーなど)などのアクセス権限情
報は、オブジェクトのXML表現を含むXMLメッセージ内に埋め込むことがで
きる。アクセスの承認は、ユーザの識別と承認を行う際に決定される。たとえば
、オブジェクトは、ほとんどのユーザに対し「読み取り専用」アクセスを許可し
、オブジェクトの作成者には「読み書き」アクセスを許可する。ユーザが読み書
きアクセス権限を使用してオブジェクトにアクセスしようとし、ユーザがオブジ
ェクトを作成していなかった場合、逆コンパイル・プロセスにより、これがアク
セス違反として検出され、アクセスが不許可になり、ユーザは通知を受ける。
Access authority information such as the author and access level (author only access, read only, read / write, delete, copy, etc.) allowed for an object is embedded in an XML message containing the XML representation of the object. be able to. Access authorization is determined during user identification and authorization. For example, an object allows "read-only" access to most users and "read-write" access to the creator of the object. If a user tries to access an object with read / write access and the user did not create the object, the decompilation process detects this as an access violation, denies access, and the user is notified. receive.

【0438】 一実施形態では、ユーザがクライアントを使用して完了した場合、ユーザはロ
グオフするか、またはそうでなければ、ユーザがクライアントを終了した(たと
えば、スマート・カードを削除した)ことを通知する。逆コンパイルによりクラ
イアント上に作成されたオブジェクトは、ユーザは終了したことをクライアント
が検出したときに、自動的に検出される。このため、後からのユーザが故意にま
たはうっかりそのユーザのオブジェクトにアクセスしようとしてもできない。一
実施形態では、逆コンパイルによって作成されたすべてのオブジェクトは、ユー
ザが終了したことが検出されたときに削除される。他の実施形態では、クライア
ント上に永続的に作成されたオブジェクトの少なくとも一部を格納する方法が用
意され(たとえば、アクセス権限情報を使用して)、これによりクライアントが
後でオブジェクトにアクセスしたり、オブジェクトを他のユーザに提供してアク
セスできるようにする。一実施形態では、ユーザは「スマート・カード」または
その他の物理的デバイスを使用し、クライアントへのアクセス権を取得する。ユ
ーザは、スマート・カードをクライアント・デバイスに差し込んで、セッション
を開始することができる。クライアントは、終了すると、スマート・カードを取
り出す。クライアントは、スマート・カードが取り出されたことを検出し、クラ
イアントが終了していることを検出し、その後、XML表現の逆コンパイルによ
って作成されたオブジェクトの削除へ進む。
In one embodiment, if the user completes using the client, the user logs off, or otherwise notifies that the user has exited the client (eg, deleted the smart card). To do. Objects created on the client by decompilation are automatically detected when the client detects that the user has terminated. This prevents a later user from intentionally or inadvertently trying to access that user's objects. In one embodiment, all objects created by decompilation are deleted when it is detected that the user is done. Other embodiments provide a way to store at least a portion of an object created persistently on the client (eg, using access privilege information), which allows the client to access the object later. , Provide the object to others for access. In one embodiment, the user uses a "smart card" or other physical device to gain access to the client. The user can insert the smart card into the client device and start a session. When the client is finished, it takes out the smart card. The client detects that the smart card has been removed, detects that the client has terminated, and then proceeds to delete the objects created by the decompiling the XML representation.

【0439】 図47は、クライアント・デバイスでセキュリティで保護されたオブジェクト
逆コンパイルのメカニズムを示す。ステップ2240で、ユーザはクライアント
・デバイスにアクセスする。一実施形態では、ユーザはクライアントに識別情報
を送る。一実施形態では、ユーザは、たとえば、ユーザ名とパスワードを使用し
てクライアントにログオンする。一実施形態では、ユーザは物理的識別方法、た
とえばスマート・カードをクライアント・デバイスに提供し、デバイスによりユ
ーザの素性を確定する。
FIG. 47 illustrates a mechanism for secure object decompilation at the client device. At step 2240, the user accesses the client device. In one embodiment, the user sends identifying information to the client. In one embodiment, the user logs on to the client using, for example, a username and password. In one embodiment, the user provides a physical identification method, such as a smart card, to the client device and the device determines the user's identity.

【0440】 ユーザ認証された後、クライアントはユーザによるアクセス中に1つまたは複
数のサービスに1つまたは複数のオブジェクトを要求することができる。一実施
形態では、オブジェクトはJavaオブジェクトである。一実施形態では、クラ
イアントは、メッセージ(たとえば、XMLメッセージ)を、オブジェクトを要
求しているサービスに送る。サービスは、要求を受け取った後、オブジェクトの
データ表現言語表現をクライアントに送る。一実施形態では、この表現はメッセ
ージにパッケージされる。別のところで説明したように、メッセージ・ゲートを
クライアントとサービスとの間で受け渡しされるメッセージに使用される。
After user authentication, the client may request one or more objects for one or more services during access by the user. In one embodiment, the object is a Java object. In one embodiment, the client sends a message (eg, an XML message) to the service requesting the object. After receiving the request, the service sends the data representation language representation of the object to the client. In one embodiment, this representation is packaged in the message. As described elsewhere, the MessageGate is used for messages passed between clients and services.

【0441】 ステップ2242で、クライアントはオブジェクトのデータ表現言語表現を受
け取り、その表現を逆コンパイル・プロセスに送る。一実施形態では、逆コンパ
イル・プロセスはクライアントが実行されている仮想マシン内に組み込まれる。
一実施形態では、仮想マシンはJava仮想マシン(JVM)である。逆コンパ
イルでは、オブジェクトのコピーをオブジェクトのデータ表現言語表現から生成
する。一実施形態では、メッセージをチェックして、クライアントが要求された
オブジェクトへのアクセス特権を持つことを確認する。その後、オブジェクトが
クライアントに送られ、ユーザによるアクセス時に使用することができる。
At step 2242, the client receives the data representation language representation of the object and sends the representation to the decompilation process. In one embodiment, the decompilation process is embedded within the virtual machine in which the client is running.
In one embodiment, the virtual machine is a Java Virtual Machine (JVM). Decompiling creates a copy of an object from a data representation language representation of the object. In one embodiment, the message is checked to ensure that the client has access privileges to the requested object. The object is then sent to the client and is available for access by the user.

【0442】 ステップ2244で、ユーザはクライアント・デバイスへのアクセスを終了す
る。たとえば、ユーザはログオフするか、またはスマート・カードなどの識別デ
バイスを使用していた場合には、それを削除してユーザがクライアントのアクセ
スを終了していることをクライアント・デバイスに通知する。クライアントはア
クセスを終了したことが検出された後、クライアント・デバイスは、ユーザがア
クセスしているときにユーザのために逆コンパイルしたオブジェクトを自動的に
削除する。オブジェクトを削除すると、デバイスの後のユーザがうっかりまたは
故意にアクセスする可能性のあるクライアント・デバイスにオブジェクトが残ら
ない。
At step 2244, the user ends access to the client device. For example, the user may log off or, if using an identification device such as a smart card, delete it to notify the client device that the user has finished accessing the client. After it is detected that the client has finished accessing, the client device automatically deletes the decompiled object for the user when the user is accessing. Deleting an object leaves no object on the client device that a user after the device may inadvertently or deliberately access.

【0443】 それとは別に、ユーザはアクセスを終了したときに、オブジェクトのうち1つ
または複数が削除されない場合もある。その代わりに、ユーザが後でアクセスで
きるようにオブジェクトが格納される(ローカルにまたは分散コンピューティン
グ環境内のどこかに)。一実施形態では、クライアントのアクセス情報はオブジ
ェクトとともに格納され、無許可ユーザがオブジェクトにアクセスできないよう
にする。
Alternatively, the user may not have one or more of the objects deleted when they finish accessing. Instead, the object is stored (either locally or somewhere in the distributed computing environment) for later access by the user. In one embodiment, client access information is stored with the object to prevent unauthorized users from accessing the object.

【0444】 XMLベースのオブジェクト・リポジトリ 分散コンピューティング環境では、プロセス(サービスおよび/またはクライ
アント)には、XMLスキーマ、サービス通知、サービスによって生成された結
果、JavaオブジェクトのXML表現、および/または他の言語で実施された
オブジェクトなどの一時的および/または永続的記憶域があると望ましい場合が
ある。既存のオブジェクト記憶技術は、言語および/またはオペレーティング・
システム固有のものになりがちである。これらの記憶域システムは、また、組み
込み型システムなどの省スペース・システムで使用するには複雑すぎる傾向もあ
る。
XML-Based Object Repository In a distributed computing environment, processes (services and / or clients) can have XML schemas, service notifications, results generated by the services, XML representations of Java objects, and / or other It may be desirable to have temporary and / or persistent storage such as objects implemented in the language. Existing object storage technologies rely on language and / or operating
It tends to be system specific. These storage systems also tend to be too complex for use in space-saving systems such as embedded systems.

【0445】 JiniのJavaSpacesは、既存のオブジェクト・リポジトリ・メカ
ニズムである。JavaSpacesは、Javaオブジェクトを格納すること
しかできず、メモリ容量に制限のある小型デバイスには大きすぎて実装できない
。JavaSpaceの各オブジェクトは、前記のようにシリアライズされ、そ
のため、リフレクションおよびシリアライゼーション手法について前述したのと
同じ制限がある。
Jini's JavaSpaces is an existing object repository mechanism. JavaSpaces can only store Java objects, and are too large to be mounted on a small device having a limited memory capacity. Each JavaSpace object is serialized as described above, and thus has the same limitations as described above for reflection and serialization techniques.

【0446】 異機種混在の(言語またはオペレーティング・システム依存でない)、小型デ
バイスから大型デバイスまで拡張性のある、オブジェクトの一時的記憶域または
永続的記憶域を提供できる分散コンピューティング環境向けのストア・メカニズ
ムを提示する。一実施形態では、分散コンピューティング環境でのストア・メカ
ニズムは、XMLマークアップ言語で定義されているインターネットWebペー
ジまたはページ・セットとして実装することができる。XMLは、言語独立およ
びプラットフォーム独立のオブジェクト表現形式を用意し、Javaおよび非J
avaソフトウェアが言語独立オブジェクトを格納し、取り出すことができるよ
うにしている。ストア・メカニズムはWeb上にあるため、すべての型およびサ
イズ(小型から大型まで)のデバイスでストア・メカニズムにアクセスできる。
Webブラウザーを使用して、Webページとして実装されているストア・メカ
ニズムを表示することができる。Webサーチ・エンジンを使用して、Webペ
ージとして実装されているストア・メカニズム内のコンテンツをコンテンツする
ことができる。インターネット管理メカニズム(既存および将来の)およびXM
Lツールを使用して、XMLベースのストア・メカニズムを管理することができ
る。
Store for a heterogeneous (language or operating system independent), distributed computing environment capable of providing temporary or persistent storage of objects, scalable from small devices to large devices. Present the mechanism. In one embodiment, the store mechanism in a distributed computing environment may be implemented as an Internet web page or page set defined in the XML markup language. XML provides language-independent and platform-independent object representation formats for Java and non-J
Allows ava software to store and retrieve language independent objects. Since the store mechanism is on the web, devices of all types and sizes (small to large) can access it.
A web browser can be used to view the store mechanism implemented as a web page. A web search engine can be used to content the content within a store mechanism implemented as a web page. Internet management mechanism (existing and future) and XM
L-tools can be used to manage XML-based store mechanisms.

【0447】 一実施形態では、ストア・メカニズムを使用して、XMLで作成され、表現さ
れ、またはカプセル化されたオブジェクトを格納することができる。ストア・メ
カニズムに格納できるオブジェクトの例として、それには限定されないが、XM
Lスキーマ、オブジェクトのXML表現(たとえば、上述のようにXML表現に
コンパイルされたJavaオブジェクト)、サービス通知、およびXMLでカプ
セル化されたサービス結果(データ)がある。一実施形態では、XMLオブジェ
クトの無許可アクセスを防止するために、電子シグネチャや証明書などの承認証
明書をXMLオブジェクトに付属させ、XMLオブジェクトにアクセスすること
を望んでいるクライアントがXMLオブジェクトにアクセスするための適切な承
認証明書を持つことを義務づける。一実施形態では、ストア・メカニズムは、「
スペース」の項で説明したようにスペースであってもよい。
In one embodiment, the store mechanism may be used to store objects created, represented, or encapsulated in XML. Examples of objects that can be stored in the store mechanism include, but are not limited to, XM
There is an L schema, an XML representation of the object (eg, a Java object compiled into an XML representation as described above), a service notification, and a service result (data) encapsulated in XML. In one embodiment, to prevent unauthorized access to an XML object, an authorization certificate, such as a digital signature or certificate, is attached to the XML object so that a client wishing to access the XML object can access the XML object. Require that you have an appropriate certificate of approval to do so. In one embodiment, the store mechanism is
It may be a space as described in the section "Space".

【0448】 分散コンピューティング環境では、ストア・メカニズムはサービスである。サ
ービスとして実装されたストア・メカニズムは、「ストア・サービス」と呼ばれ
る。ストア・サービスは、スペース内で通知をパブリッシュする。スペース自体
はストア・サービスの一例である。一部のストア・サービスは一時的である。た
とえば、サービス通知を格納するスペース・サービスは一時的ストアである。他
のストア・サービスは永続的である。たとえば、サービスからの結果を格納する
ストア・サービスは永続的ストアである。
In a distributed computing environment, the store mechanism is the service. A store mechanism implemented as a service is called a "store service". The store service publishes the notification in the space. The space itself is an example of a store service. Some store services are temporary. For example, the space service that stores service notifications is a temporary store. Other store services are persistent. For example, a store service that stores results from services is a persistent store.

【0449】 図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
に送る結果を出力する。
FIG. 36 is a diagram of a client 1604 and service A 1606 accessing store mechanisms 1600 and 1602 in a distributed computing environment according to one embodiment. This figure is for illustrative purposes and is not meant to be limiting on the scope of the invention. In one embodiment, store mechanisms 1600 and 1602 are Internet web pages or collections of XML pages defined in XML that are accessible by web browsers and other Internet tools, respectively. Store mechanism 1600 is a temporary store that can store objects implemented using XML. Store mechanism 1602 is a persistent store that can store objects, which are also implemented using XML. Service A 1606 X at temporary store 1600
Publish ML Service Notification 1608. The persistent store may also publish XML service notifications to the temporary store 1600 (or to other temporary stores in the distributed computing environment). At some point, the client 1604 needs the functionality provided by Service A 1606. The client 1604 uses the discovery and / or lookup service to identify the service notification 1608. Client 1604 builds a Message Gate and initiates communication with Service A 1606, as described herein. Client 1604 sends one or more XML request messages to Service A 1606. Service A 1606 performs one or more functions in response to the one or more request messages. Service A 1
One or more of the functions performed by 606 allow client 1604 to
Output the result sent to.

【0450】 一時的結果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> ....
For the temporary result 1610, the service A 1606 sends the XML notification 161.
Encapsulate the result at 2 and publish the notification 1612 to the temporary store 1600 (or to other temporary stores in the distributed computing environment). afterwards,
Service A 1606 will notify result 1610 of temporary store 1600 1612.
Stored in the client 1604, or the client 1604 may be notified by other mechanisms as described herein. Client 1604 then retrieves temporary result 1610 from notification 1612. The notification 1612 includes an XML schema that describes the format, content, type, etc. of the temporary result 1610. The result is XML encapsulated. For example, XML tags can be used to describe some of the data as follows: <XML tag1><data1><XMLtag2><data2> ....

【0451】 永続的結果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に示されるさまざまな通知はそれぞれ、異なる一時的ストアまたはスペ
ースに格納できることに注意されたい。
For persistent results 1618, service A 1606 uses the service or other mechanism as described herein to store persistent store 1602.
XML service notification 1616 and a persistent store 1602 for storing persistent results. Alternatively, client 1604 has already identified persistent store 1602 by identifying service notification 1616,
Universal Resource Id of persistent result 1618 memory location
Send the entifier (URI) to the service A as an XML message. In one embodiment, the persistent results 1618 are defined in XML and stored in an internet web page or set of web pages accessible by a web browser. Service A 1606 then stores persistent result 16 in persistent store 1602.
18 is stored. Service A 1606 then continues to the XML of the persistent result 1618.
Publish notification 1616 to ephemeral store 1600 (or to other ephemeral store in the distributed computing environment) and locate notification 1616 at client 1
Return to 604. The notification 1616 includes an XML schema that describes the format, content, type, etc. of the persistent result 1618. The result is XML encapsulated as described above. The notification further includes the URI of the persistent result 1618. The client 1604 then retrieves the notification 1616 and uses it to create a persistent result 1
618 is identified and retrieved. Alternatively, Service A 1606 does not publish the notification of persistent result 1618, and instead, the URI of persistent result 1618 is accessed by client 1604 so that client 1604 can access the result without looking up the notification. Return to. Note that in some embodiments, each of the various notifications shown in temporary store 1600 may be stored in a different temporary store or space.

【0452】 したがって、ストア・メカニズムは、分散コンピューティング環境内でXML
ベースのインターネットWebページとして実装することができる。これらのス
トア・メカニズムは、分散コンピューティング環境内のさまざまなデバイスに実
装され、クライアント(他のサービスでもよい)がストア・メカニズムを特定し
使用できるようにするサービス通知を実現する。ストア・メカニズムを管理する
ために使用できるWebおよびXMLツールは既存のものでもこれからのもので
もよい。ストア・メカニズムは、XMLで実装されたまたはカプセル化されたさ
まざまな型のオブジェクトを格納できる。クライアントは、省スペース・デバイ
スからスーパー・コンピュータに至るまで実質的にいかなるサイズのデバイスの
クライアントであっても、ストア・メカニズムにアクセスして、インターネット
上でさまざまなオブジェクトを格納し取り出すことができる。クライアントは、
XMLによって定められている言語独立の記憶形式であれば、Javaアプリケ
ーションでも非Javaアプリケーションでもよい。一時的または永続的オブジ
ェクト・リポジトリは、分散コンピューティング環境内のファイル・システムに
対応しており、ここで説明しているように、アクセス・チェックおよびその他の
セキュリティ・メカニズムの機能を備える。
Therefore, the store mechanism uses XML within a distributed computing environment.
It can be implemented as a base internet web page. These store mechanisms are implemented on various devices within a distributed computing environment to provide service notifications that allow clients (or other services) to identify and use the store mechanism. The web and XML tools that can be used to manage the store mechanism can be existing or upcoming. The store mechanism can store various types of objects implemented or encapsulated in XML. Clients of virtually any size device, from space-saving devices to supercomputers, can access the store mechanism to store and retrieve various objects over the Internet. The client is
A Java application or a non-Java application may be used as long as it is a language-independent storage format defined by XML. A transient or persistent object repository corresponds to a file system in a distributed computing environment and provides access checking and other security mechanism functionality, as described herein.

【0453】 JavaオブジェクトをXMLドキュメントに動的に変換する 一実施形態では、分散コンピューティング環境はオブジェクト・クラス・イン
スタンスをXMLドキュメントに変換しそれを表現するメカニズムを備える。ク
ラス・インスタンスの表現を他のサービスに送るために、オブジェクトは変換さ
れXMLドキュメントとして表現される。一実施形態では、XMLドキュメント
を受け取ると、プログラムがドキュメントによって表現されたオブジェクトに対
応するクラス・インスタンスをインスタンス化する。一実施形態では、オブジェ
クトはJavaオブジェクトであり、プログラムはJavaプログラムである。
Dynamically Converting Java Objects into XML Documents In one embodiment, the distributed computing environment provides a mechanism to convert object class instances into XML documents and represent them. Objects are transformed and represented as XML documents in order to send representations of class instances to other services. In one embodiment, upon receiving an XML document, the program instantiates a class instance corresponding to the object represented by the document. In one embodiment, the object is a Java object and the program is a Java program.

【0454】 一実施形態では、中間形式を使用してXMLドキュメントを表現し、この中間
形式を動的に処理して、XMLドキュメントを表現するクラス・インスタンスを
生成することができる。クラスによって、一組のインスタンス変数とインスタン
ス変数にアクセスするための「セットアンドゲット」メソッドを定義する。対応
するXMLドキュメントを一組のタグとして定義し、インスタンス変数ごとに1
つのタグを割り当てることができる。ドキュメントの解析を行うときに、ハッシ
ュ可能な表現を構築し、ハッシュ鍵にインスタンス変数名を含め、値にインスタ
ンス変数値を入れる。複合インスタンス変数が複数出現する場合、列挙型値をそ
のハッシュ・テーブルに格納することができる。一実施形態では、プロセスをイ
ンスタンス変数について複合型のうちただ1つのレベルに制限し、要素を均質的
なものとすることができる。
In one embodiment, an intermediate form may be used to represent an XML document and the intermediate form may be dynamically processed to generate a class instance representing the XML document. A class defines a set of instance variables and a "set and get" method for accessing the instance variables. Define the corresponding XML document as a set of tags, one for each instance variable
You can assign one tag. When parsing a document, construct a hashable expression, include the instance variable name in the hash key, and put the instance variable value in the value. If more than one compound instance variable occurs, the enumerated value can be stored in its hash table. In one embodiment, the process can be restricted to only one level of the complex type for instance variables, making the elements homogeneous.

【0455】 一実施形態では、保護されたインスタンス変数を、対応するクラスの名前を含
めることができるクラス定義に追加することができる。XMLドキュメント表現
ではクラス名をドキュメント型として使用できる。ドキュメントにクラス名を埋
め込むと、オブジェクトを再構築するときに、正しいクラス・インスタンスのイ
ンスタンス化を動的に行うことができる。
In one embodiment, protected instance variables can be added to a class definition that can include the name of the corresponding class. The class name can be used as the document type in the XML document representation. Embedding the class name in the document allows you to dynamically instantiate the correct class instance when reconstructing the object.

【0456】 一実施形態では、ドキュメントを受け取った後、クラス・インスタンス・ジェ
ネレータ・メソッドを使用して、クラス型を抽出し、ドキュメントを解析して中
間ハッシュ・テーブル表現を生成することができる。ジェネレータ・メソッドは
、新しいクラス・インスタンスをインスタンス化し、セット・メソッドを使用し
てハッシュ・テーブル値からインスタンス・オブジェクトを初期化することがで
きる。一実施形態では、クラス型が定義され、ハッシュ・テーブルは汎用なので
、このプロセスは、上のクラス定義にマッチするクラスに対して実行される。一
実施形態では、反転プロセスも実行することができ、クラス・インスタンスを処
理して中間ハッシュ・テーブルの表現にし、ジェネレータ・メソッドを使用して
ハッシュ・テーブル表現からXMLドキュメントを出力することができる。この
プロセスはさらに、上の指定にマッチするXMLドキュメントについて実行でき
るように汎用なものとすることもできる。
In one embodiment, after receiving the document, the class instance generator method can be used to extract the class type and parse the document to generate an intermediate hash table representation. The generator method can instantiate a new class instance and use the set method to initialize the instance object from the hash table values. In one embodiment, the class type is defined and the hash table is generic, so this process is performed for classes that match the above class definition. In one embodiment, a reversal process may also be performed, the class instances may be processed into an intermediate hash table representation and a generator method may be used to output an XML document from the hash table representation. The process can also be general enough to be performed on XML documents that match the above specifications.

【0457】 このメソッドは、Javaクラス・オブジェクトに制限する意図はなく、他の
プログラミング言語のクラス・オブジェクト・インスタンスを含む、他のコンピ
ュータベースのオブジェクトにも適用される。さらに、このメソッドは、オブジ
ェクト・インスタンスのXML表現に制限する意図はなく、他のデータ表現言語
(HTMLなど)など他の表現形式をXMLの代わりに使用することもできる。
This method is not intended to be limited to Java class objects, but also applies to other computer-based objects, including class object instances in other programming languages. Furthermore, this method is not intended to be limited to the XML representation of object instances, and other representation formats such as other data representation languages (such as HTML) may be used instead of XML.

【0458】 XMLベースのプロセスの移行 分散コンピューティング環境では、配布されるアプリケーションの配布および
管理を行える。たとえば、分散コンピューティング環境には、モニタ、プリンタ
、キーボード、およびPDA、携帯電話などのモバイル・デバイスには通常装備
されないさまざまなその他の入出力デバイスを備えるステーションとドッキング
可能なモバイル・クライアントが含まれる。これらのモバイル・クライアントは
、1つまたは複数のアプリケーションを実行し、分散コンピューティング環境に
おいて、一方のステーションから他方のステーションに移行することができる。
したがって、分散コンピューティング環境の一実施形態では、分散コンピューテ
ィング環境内の一方のノードのモバイル・クライアントから他方のノードの同じ
モバイル・クライアントまたは他方のモバイル・クライアントに現在状態全体を
保持したまま実行中アプリケーション(プロセス)を移行する方法を提示する。
XML-Based Process Migration A distributed computing environment allows for distribution and management of distributed applications. For example, a distributed computing environment includes stations and dockable mobile clients that include monitors, printers, keyboards, and various other input / output devices not typically found on mobile devices such as PDAs and cell phones. . These mobile clients run one or more applications and can migrate from one station to another in a distributed computing environment.
Thus, in one embodiment of a distributed computing environment, a mobile client of one node in the distributed computing environment is currently executing with the entire state maintained from the mobile client of the other node to the same mobile client or the other mobile client. Present a method to migrate an application (process).

【0459】 一実施形態では、クライアントまたはサービス上で実行しているプロセスの状
態のXML表現を作成する。一実施形態では、プロセスの状態のXML表現は、
プロセスが実行されているデバイスおよび/または仮想マシンの計算状態を含み
、デバイスおよび/または仮想マシンの計算状態はデバイスおよび/または仮想
マシン上のプロセスの実行状態に関する情報を含む。プロセス状態は、それに限
定されないが、スレッド、スレッドによって参照されているすべてのオブジェク
ト、プロセスの実行中に作成される一時的変数、オブジェクト、およびそのデー
タなどである。一実施形態では、プロセスによってスペースから得られ、プロセ
スが実行されているデバイスおよび/または仮想マシンの外部にある外部サービ
スへのアクセス権の付与を表す1つまたは複数のリースを記述するデータは、X
MLで表され、プロセス状態とともに格納される。リースについては、本書の「
リース」の項で詳述する。
In one embodiment, an XML representation of the state of the process running on the client or service is created. In one embodiment, the XML representation of the process state is
The calculation state of the device and / or the virtual machine in which the process is executed includes the calculation state of the device and / or the virtual machine, and includes the information about the execution state of the process on the device and / or the virtual machine. Process states include, but are not limited to, threads, all objects referenced by threads, temporary variables created during the execution of a process, objects, and their data. In one embodiment, the data obtained from the space by the process and describing one or more leases representing granting access to external services external to the device and / or virtual machine on which the process is running comprises: X
It is represented by ML and is stored with the process state. For leasing, refer to "
Leasing section.

【0460】 ここで説明しているようにXMLおよびメッセージング・システムを使用する
と、プロセスの状態のXML表現を分散コンピューティング環境内のノードから
ノードへ、たとえばインターネット上のノードからノードへ移動することができ
る。プロセスの状態のXML表現はさらに、上述のようにXMLベースのストア
・メカニズムによりXMLオブジェクトとして格納することができ、後から、ス
トア・メカニズムから取り出して、同じノード上、または分散コンピューティン
グ環境内の異なるノード上でプロセスの実行を再開することができる。一実施形
態では、ここで説明しているようにXMLオブジェクトのコンパイル/逆コンパ
イル・プロセスを使用して、プロセスの状態のXML表現を作成(コンパイル)
し、プロセスの状態のXML表現を逆コンパイルすることによりプロセスの状態
を再生成することができる。
Using the XML and messaging system as described herein, it is possible to move an XML representation of the state of a process from node to node in a distributed computing environment, such as node to node on the Internet. it can. The XML representation of the state of the process can also be stored as an XML object by an XML-based store mechanism as described above, and later retrieved from the store mechanism, either on the same node or in a distributed computing environment. Process execution can be resumed on a different node. In one embodiment, the process of compiling / decompiling XML objects is used to create (compile) an XML representation of the state of the process, as described herein.
Then, the process state can be regenerated by decompiling the XML representation of the process state.

【0461】 このメカニズムを使用することにより、プロセスの状態のXML表現を初期ノ
ードから、スペースなどのXMLベースのストア・メカニズムに格納することが
できる。それ以降、他のノードでプロセスの格納済みの状態を特定し、プロセス
の状態をダウンロードし、状態が格納されたときに実行されていた時点のダウン
ロードされた格納済みの状態からプロセスを再開できる。プロセス状態はXML
形式で格納されるので、ここで説明しているXMLベースのストア・メカニズム
でXMLオブジェクトを格納し、特定し、取り出すためのツールおよびサーチ機
能を使用して、プロセスの移行を可能にすることができる。プロセスの状態の格
納されているXML表現の通知をパブリッシュする際に、同じノードまたは別の
ノード上で実行されているプロセスの再開するクライアントが格納されている状
態を特定し、アクセスできるようにする。
By using this mechanism, an XML representation of the process state can be stored from the initial node into an XML-based store mechanism such as space. From then on, other nodes can identify the stored state of the process, download the state of the process, and restart the process from the downloaded stored state at the time it was running when the state was stored. Process status is XML
Since it is stored in the form, tools and search facilities for storing, locating, and retrieving XML objects can be used with the XML-based store mechanism described here to enable process migration. it can. Allows resuming clients of a process running on the same or another node to identify and access the stored state when publishing notifications of a stored XML representation of the state of the process .

【0462】 プロセスの状態のXML表現をXMLベースの永続的ストア・メカニズムに格
納し、プロセスの永続的スナップショットを作成できる。これは、たとえば、ノ
ードを故意にシャットダウンしたり、または故意でなくシャットダウンをしたた
めノード上のプロセスが中断した後、ノード上のプロセス実行を再開するための
方法として使用できる。プロセスの格納されている状態の通知をパブリッシュし
、クライアントが分散コンピューティング環境内の格納されている状態を特定で
きるようにする。一実施形態では、プロセスの格納されている状態のXML表現
の無許可アクセスを防止するために、電子シグネチャや証明書などの承認証明書
を格納されている状態に付属させ、格納されている状態からプロセスを再開する
ことを望んでいるクライアントが格納されている状態にアクセスするための適切
な承認証明書を持つことを義務づける。
An XML representation of the state of a process can be stored in an XML-based persistent store mechanism to create a persistent snapshot of the process. This can be used, for example, as a way to restart process execution on a node after a process on the node has been interrupted due to a deliberate shutdown of the node or an unintentional shutdown. Publishes the stored state notifications of a process and allows clients to identify the stored state in a distributed computing environment. In one embodiment, an authorization certificate, such as an electronic signature or certificate, is attached to the stored state to prevent unauthorized access to the XML representation of the stored state of the process. Require clients wishing to restart the process from having the appropriate authorization credentials to access the stored state.

【0463】 図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状態で記録されているとおりに実行
を再開するのに必要な他の機能を実行する。
FIG. 37 is a diagram illustrating a process transition using an XML representation of the state of a process, according to one embodiment. Process A 1636a is running on node 1630. Process A 1636a is a client or service. At some point during the execution of process A 1636a, the state of execution of process A 1636a is captured and stored in the XML-encapsulated state of process A 1638a. Execution of process A 1636a on node 1630 is stopped. later,
Node 1632 identifies the XML-encapsulated state of process A 1638 and uses it to restart process A 1636b on node 1632. To resume process A, use stored state 1638 to resume thread execution, recalculate temporary variables, reestablish leased resources, and store process 1638 stored XML state. Perform any other functions required to resume execution as recorded in.

【0464】 分散コンピューティング環境で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を再開する。それとは別に、プロ
セスはそれ自体、他のノード上で「サスペンド」していたことを認識し、ユーザ
の入力がなくても格納された状態から再開する。
An example of using XML-based process migration in a distributed computing environment is given below, but is not intended to be limiting. The mobile client device is connected to node 1630 and is executing process A 1636a.
The user of the mobile client device uses process A at node 1630.
I want to stop the execution of 1636a and later resume execution from another (or the same) node. In one embodiment, the user may be asked to store the state of Process A 1636a and determine if he wants to resume execution at a later time. If the user answers in the affirmative, then the XML-encapsulated state of the process is captured and stored in the persistent store 1634. Later, the user is node 1
At 632, connect to the mobile computing device. In one embodiment, the user executes the process 1636b, [Resume from Store].
ed State] option. Next, node 1632 searches for, identifies, and downloads the XML-encapsulated state of process A 1638 and uses it to restart process A 1636b. Apart from that, the process itself recognizes that it was "suspended" on the other node and resumes from the stored state without user input.

【0465】 図48は、分散コンピューティング環境でプロセスのデータ表現言語(XML
など)表現を使用してプロセスを移行するメカニズムを示す。ステップ2260
で、プロセスは第1のデバイス内で実行中である。ステップ2262で、プロセ
スの現在の計算状態が現在の計算状態のデータ表現言語表現に変換され、プロセ
スの計算状態には、第1のデバイス内のプロセスの実行状態に関する情報が含ま
れる。この情報は、それに限定されないが、プロセスの1つまたは複数のスレッ
ドに関する情報、プロセスによって保持されているサービスに対する1つまたは
複数のリースに関する情報、およびプロセス(スレッドによって保持されている
オブジェクトなど)の1つまたは複数のオブジェクトに関する情報を含み、オブ
ジェクトはコンピュータ・プログラミング言語(Javaプログラミング言語な
ど)によるクラスのインスタンスである。
FIG. 48 is a diagram showing a process data expression language (XML) in a distributed computing environment.
Etc.) Depict a mechanism for migrating processes using expressions. Step 2260
And the process is running in the first device. At step 2262, the current computational state of the process is converted to a data representation language representation of the current computational state, the computational state of the process including information regarding a running state of the process in the first device. This information includes, but is not limited to, information about one or more threads of the process, information about one or more leases for services held by the process, and of the process (such as objects held by the thread). Contains information about one or more objects, which are instances of classes in a computer programming language (such as the Java programming language).

【0466】 ステップ2264で、プロセスの現在の計算状態のデータ表現言語表現を格納
する。一実施形態では、この表現はローカルに格納される。一実施形態では、ス
ペース・サービスを使用してプロセスの現在の計算状態のデータ表現言語表現を
スペースに格納する。一実施形態では、プロセスの現在の計算状態のデータ表現
言語表現を1つまたは複数のメッセージでスペース・サービスに送る。
At step 2264, the data representation language representation of the current computational state of the process is stored. In one embodiment, this representation is stored locally. In one embodiment, the space service is used to store a data representation language representation of a process's current computational state in a space. In one embodiment, the data representation language representation of the current computational state of the process is sent to the space service in one or more messages.

【0467】 ステップ2266で、第2のデバイスは、プロセスの現在の計算状態の格納さ
れているデータ表現言語表現にアクセスする。一実施形態では、格納されている
データ表現言語表現について通知を送り、第2のデバイスはその通知を受け取る
かまたはその通知にアクセスし、その通知内の情報を使用して、格納されている
データ表現言語表現を特定しアクセスする。ステップ2268で、プロセスは、
プロセスの現在の計算状態のアクセスされたデータ表現言語表現から第2のデバ
イス内の現在の計算状態で再構成される。プロセスは、次に、現在の計算状態か
ら第2のデバイス内で実行を再開する。
At step 2266, the second device accesses the stored data representation language representation of the process's current computational state. In one embodiment, a notification is sent about the stored data representation language representation and the second device receives or accesses the notification and uses the information in the notification to store the stored data. Expressive language Identify and access expressiveness. At step 2268, the process
Reconstructed from the accessed data representation language representation of the current computational state of the process with the current computational state in the second device. The process then resumes execution in the second device from the current computational state.

【0468】 それとは別に、プロセスの実行は、ステップ2264の後に第1のデバイスで
終了する。その後、第1のデバイスは、続いて、プロセスの現在の計算状態の格
納されているデータ表現言語表現にアクセスする。プロセスは次に、プロセスの
現在の計算状態のデータ表現言語表現から第1のデバイス内の現在の計算状態で
再構成され、プロセスの実行は現在の計算状態から第1のデバイス内で再開され
る。
Alternatively, execution of the process ends at the first device after step 2264. Thereafter, the first device subsequently accesses the stored data representation language representation of the current computational state of the process. The process is then reconfigured from the data representation language representation of the process's current computational state to the current computational state in the first device, and execution of the process is resumed from the current computational state in the first device. .

【0469】 他の実施形態では、ステップ2262で生成されたプロセスの現在の計算状態
のデータ表現言語表現を第2のデバイスに(たとえば、メッセージ・ゲートによ
る1つまたは複数のデータ表現言語メッセージで)直接送る。その後、プロセス
は、プロセスの現在の計算状態の受け取られたデータ表現言語表現から第2のデ
バイス内の現在の計算状態で再構成される。プロセスは、次に、現在の計算状態
から第2のデバイス内で実行を再開する。
In another embodiment, the data representation language representation of the current computational state of the process generated in step 2262 is provided to the second device (eg, in one or more data representation language messages by MessageGate). Send it directly. The process is then reconfigured with the current computational state in the second device from the received data representation language representation of the process's current computational state. The process then resumes execution in the second device from the current computational state.

【0470】 アプリケーション ユーザがリモートの場所からネットワーク・データにアクセスし、ユーザがブ
ラウザにアクセスした場合にリモート・データをユーザにローカル・データのよ
うに見せかける技術が存在する。ただし、このような技術では、クライアント・
デバイスの位置近くのネットワークにクエリを実行する自動的インフラストラク
チャが実現されない。クライアント・デバイス近くにあるネットワークおよびサ
ービスに関する情報を発見するメカニズムがあることが望ましい。たとえば、こ
のようなメカニズムを使用する際に、クライアント・デバイスの一定距離範囲(
半径)内にあるレストラン、天候、地図、交通、映画情報などに関する情報を特
定し、目的の情報をクライアント・デバイスに表示することができる。このメカ
ニズムを使用する例として、ローカル環境、たとえば映画館の中で現在上映中作
品のタイトルや上演時間を表示したり、レストランでメニュー選択と価格を表示
するために、サービスを自動的に特定することができる携帯電話が考えられる。
ここで説明しているような分散コンピューティング環境では、このようなメカニ
ズムを使用してクライアント・デバイスに近接するローカル情報および/または
サービスを含むスペースを発見することができる。このメカニズムはさらに、他
の分散コンピューティング環境、たとえば、Sun Microsystems
,Inc.のJiniシステムで応用することができる。
Application There is a technique in which a user accesses network data from a remote location and makes the remote data look like local data to the user when the user accesses a browser. However, with such technology, the client
There is no automatic infrastructure to query the network near the device location. It would be desirable to have a mechanism for discovering information about networks and services that are close to client devices. For example, when using such a mechanism, the client device's constant range (
Information about restaurants, weather, maps, traffic, movie information, etc. within a radius can be identified and the desired information displayed on the client device. An example of using this mechanism is to automatically identify a service in a local environment, for example to display the title and duration of a currently showing work in a movie theater, or to display menu selections and prices in a restaurant. Possible mobile phones.
In a distributed computing environment as described herein, such a mechanism may be used to discover a space containing local information and / or services in proximity to a client device. This mechanism is also used in other distributed computing environments, such as Sun Microsystems.
, Inc. Can be applied to the Jini system.

【0471】 一実施形態では、モバイル・クライアント・デバイスは、グローバル・ポジシ
ョニング・システム(GPS)機能と無線接続技術を備える。ローカル分散コン
ピューティング・ネットワークを実現できる。たとえば、都市に、全市内分散コ
ンピューティング環境を築くことができる。他の例としては、ローカル分散コン
ピューティング環境を備えるショッピング・モールがある。ローカル分散コンピ
ューティング・ネットワークは、クライアント・デバイスが分散コンピューティ
ング環境に接続し、ローカル環境内でサービスおよびデータを発見することがで
きる発見メカニズムを備える。たとえば、環境内の1つまたは複数のデバイスが
無線接続技術を備え、これによりモバイル・クライアント・デバイスはネットワ
ークに接続し、前述のXMLメッセージング・システムを介して発見メカニズム
にアクセスすることができる。ローカル分散コンピューティング環境は、サービ
スおよび/またはデータをモバイル・クライアントから利用できるようにするた
めの通知を使用する1つまたは複数のスペースを備える。たとえば、全市内分散
コンピューティング環境は、モール、映画館、ローカル・ニュース、ローカルの
天候、交通などのエンティティを表すスペースを含む。スペースは、スペースが
表すエンティティのサービスおよびそれに関する情報にアクセスするための個々
のサービスおよび/またはデータ通知を含む。発見メカニズムは、ローカル分散
コンピューティング環境、環境内のスペース・サービスによって表されるエンテ
ィティ、および/または環境内のスペースで通知されるさまざまなサービスの1
つまたは複数のGPS位置測定機能を含む。
In one embodiment, the mobile client device comprises Global Positioning System (GPS) capabilities and wireless connectivity technology. Achieve local distributed computing network. For example, a city can have a distributed computing environment throughout the city. Another example is a shopping mall with a local distributed computing environment. The local distributed computing network comprises a discovery mechanism that allows client devices to connect to the distributed computing environment and discover services and data within the local environment. For example, one or more devices in the environment may be equipped with wireless connectivity technology that allows mobile client devices to connect to the network and access the discovery mechanism via the XML messaging system described above. The local distributed computing environment comprises one or more spaces that use notifications to make services and / or data available to mobile clients. For example, a city-wide distributed computing environment includes spaces that represent entities such as malls, cinemas, local news, local weather, and traffic. Spaces include individual service and / or data notifications to access the services of the entities they represent and information about them. The discovery mechanism may be one of a local distributed computing environment, an entity represented by a space service in the environment, and / or various services advertised by the space in the environment.
Includes one or more GPS location functions.

【0472】 一実施形態では、ローカル分散コンピューティング・ネットワークへの有線接
続が提供される。この環境では、モバイル・クライアント・デバイスを使用する
ユーザは、有線接続の「ドッキング・ステーション」を使用してネットワークに
直接「プラグイン」することができる。有線接続の例としては、これらに限定さ
れないが、ユニバーサル・シリアル・バス(USB)、FireWire、およ
びツイストペア・インターネットなどがある。一実施形態では、トーキング・ス
テーションはさらに、モバイル・クライアント・デバイス用のキーボード、マウ
ス、およびディスプレイなどの入出力機能を備える。この実施形態では、モバイ
ル・クライアント・デバイスの位置が、ドッキング・ステーションによりルック
アップ・メカニズム又は発見メカニズムに送られる。
In one embodiment, a wired connection to a local distributed computing network is provided. In this environment, users of mobile client devices can "plug in" directly to the network using a wired "docking station". Examples of wired connections include, but are not limited to, Universal Serial Bus (USB), FireWire, and Twisted Pair Internet. In one embodiment, the talking station further comprises input / output capabilities such as a keyboard, mouse, and display for mobile client devices. In this embodiment, the location of the mobile client device is sent by the docking station to a lookup or discovery mechanism.

【0473】 一実施形態では、モバイル・クライアント・デバイスは、分散コンピューティ
ング・ネットワークに接続する。モバイル・クライアント・デバイスのユーザが
分散コンピューティング・ネットワークの無線通信到達範囲内でナビゲートする
ときに、モバイル・クライアント・デバイスは、常時、またはさまざまな間隔で
、ローカル・ルックアップ・メカニズム又は発見メカニズムへの入力として位置
ベクトルを供給する。モバイル・クライアント・デバイスは、モバイル・クライ
アントに組み込まれている、または関連付けられているGPSシステムから位置
ベクトルを取得する。一実施形態では、クライアントは位置情報を(たとえば、
XMLメッセージングを介して)ここで説明したスペース特定メカニズムなどの
ローカル・サービス発見メカニズムに送る。たとえば、クライアントは、クライ
アントの位置の特定の範囲内でサービスを提供するスペースの発見を指定するス
ペース発見プロトコルを実行するか、またはクライアントはクライアントの近傍
に対して提供されるサービスを通知するスペースをサーチするためのスペース・
サーチ・サービスをインスタンス化する。
In one embodiment, mobile client devices connect to a distributed computing network. As the user of the mobile client device navigates within the wireless coverage of the distributed computing network, the mobile client device constantly or at varying intervals may use a local lookup mechanism or discovery mechanism. Supply the position vector as an input to. The mobile client device obtains the position vector from a GPS system built into or associated with the mobile client. In one embodiment, the client may provide location information (eg,
(Via XML messaging) to a local service discovery mechanism such as the space specific mechanism described here. For example, the client may run a space discovery protocol that specifies the discovery of the space to serve within a certain range of the client's location, or the client may specify a space that advertises the services offered to its neighbors. Space to search
Instantiate the search service.

【0474】 モバイル・クライアント・デバイスが分散コンピューティング環境内のスペー
スの指定された範囲内に移動したときに、そのスペース内に格納されているサー
ビスおよび/またはデータをモバイル・クライアント・デバイスから利用できる
ようにする。クライアント・デバイスが定期的にその位置を発見メカニズムに伝
える実施形態では、ローカル・サービスおよび/またはデータは自動的に、クラ
イアントのユーザから利用できるようになる。一実施形態では、モバイル・クラ
イアント・デバイスのユーザは、スペースの指定された範囲を調べる。たとえば
、ユーザは選択により、現在の位置から1マイルの範囲内にあるすべてのレスト
ランを表示することができる。それとは別に、ローカル分散コンピューティング
・ネットワークの構成で範囲を指定することもできる。たとえば、市境から3マ
イル以内にいるすべてのユーザにそのサービスを提供するように、全市内分散コ
ンピューティング・ネットワークを構成することができる。一実施形態では、ス
ペースによって提供されるさまざまなサービスおよび/またはデータを表す視覚
的インジケータ、たとえば、アイコンをモバイル・クライアント・デバイスに表
示することができる。そこで、クライアントは、表示されているサービスおよび
/またはデータの1つまたは複数にアクセスすることができる。一実施形態では
、2つまたはそれ以上のスペースから得た情報を同時に、モバイル・クライアン
ト・デバイスに表示することができる。一実施形態では、ユーザは検出するサー
ビスおよび/またはデータを選択することができる。たとえば、ショッピング・
モールでは、モバイル・クライアント・デバイスを携帯するユーザは選択により
、モール内のすべての靴屋を表示することができる。
When a mobile client device moves within a specified range of space within a distributed computing environment, services and / or data stored within that space are available to the mobile client device. To do so. In embodiments in which the client device periodically communicates its location to the discovery mechanism, local services and / or data are automatically made available to users of the client. In one embodiment, the user of the mobile client device looks at a specified range of spaces. For example, the user can select to display all restaurants within a mile of their current location. Alternatively, the range can be specified in the configuration of the local distributed computing network. For example, an entire city distributed computing network can be configured to provide its services to all users within 3 miles of a city boundary. In one embodiment, visual indicators, such as icons, that represent various services and / or data provided by the space may be displayed on the mobile client device. The client can then access one or more of the services and / or data being displayed. In one embodiment, information from two or more spaces can be displayed simultaneously on the mobile client device. In one embodiment, the user can select the services and / or data to detect. For example, shopping
In the mall, a user carrying a mobile client device can optionally view all shoe stores in the mall.

【0475】 一実施形態では、コードの実行で使用される実行可能コードおよび/またはデ
ータをモバイル・クライアント・デバイスにダウンロードし、ユーザがスペース
内のサービスによって提供されるアプリケーションを実行するようにできる。た
とえば、映画を見に行く人は、モバイル・クライアント・デバイスがあれば、映
画館のスペース内のサービスから対話的な映画レビューをダウンロードし、自分
が見ている映画に関するフィードバックをリアルタイムで送り返すことができる
。一実施形態では、別のところで説明しているように、XMLオブジェクト・コ
ンパイル/逆コンパイル・メカニズムを使用し、コードおよび/またはデータを
コンパイルしてコードおよび/またはデータのXML表現を出力したり、XML
表現を逆コンパイルしてコードおよび/またはデータをモバイル・クライアント
・デバイスに再現することができる。一実施形態では、プロセスの実行可能バー
ジョンがすでにモバイル・クライアント・デバイスに存在し、プロセスの格納さ
れた状態をモバイル・クライアント・デバイスにダウンロードすることにより、
ユーザが格納されている状態を使用してプロセスを実行することができる。一実
施形態では、プロセスの実行可能バージョンがすでにモバイル・クライアント・
デバイスに存在し、プロセスのデータをモバイル・クライアント・デバイスにダ
ウンロードできる。たとえば、データをダウンロードして、モバイル・クライア
ント・デバイスのビューア・プログラムで表示することができる。一実施形態で
は、プロセスを実行するためのコードおよびデータを含むプロセスの実行可能バ
ージョンをダウンロードして、モバイル・クライアント・デバイスで実行するこ
とができる。一実施形態では、モバイル・クライアント・デバイスに代わってサ
ービスがリモートからアプリケーションを実行し、サービスとクライアントが、
データおよびオプションでデータを記述するXMLスキーマを含むXMLメッセ
ージを互いにやり取りすることができる。一実施形態では、サービス上で一部の
コードを実行し、クライアント上で一部のコードを実行することができる。たと
えば、サービスは、数値計算などのデータ・セットに対する演算を行うコードを
実行することができる。モバイル・クライアント・デバイスは、XMLメッセー
ジでサービスからクライアントに渡されたデータの一部を表示し、モバイル・ク
ライアント・デバイスのユーザがデータを入力したり選択したり、またデータを
サービスに送ってデータに対し1つまたは複数の演算を実行できるようにするコ
ードを実行する。
In one embodiment, executable code and / or data used in executing code may be downloaded to a mobile client device to allow a user to execute an application provided by a service in the space. For example, a movie goer can download an interactive movie review from a service in the cinema space and send back real-time feedback on the movie he or she is watching, if he has a mobile client device. it can. In one embodiment, an XML object compile / decompile mechanism is used to compile code and / or data to output an XML representation of the code and / or data, as described elsewhere. XML
The representation can be decompiled to reproduce the code and / or data on the mobile client device. In one embodiment, the executable version of the process already exists on the mobile client device, and by downloading the stored state of the process to the mobile client device,
The user can execute the process using the stored state. In one embodiment, the executable version of the process is already on the mobile client.
Exists on the device and can download process data to the mobile client device. For example, the data can be downloaded and displayed in a viewer program on the mobile client device. In one embodiment, an executable version of the process, including code and data for executing the process, can be downloaded and executed on a mobile client device. In one embodiment, the service remotely executes the application on behalf of the mobile client device, and the service and client:
XML messages that contain data and optionally an XML schema that describes the data can be exchanged with each other. In one embodiment, some code may run on the service and some code may run on the client. For example, the service can execute code that performs operations on a data set, such as numerical calculations. The mobile client device displays a portion of the data passed from the service to the client in an XML message so that the user of the mobile client device can enter or select data, or send the data to the service to send the data. Execute code that allows one or more operations to be performed on.

【0476】 一実施形態では、モバイル・クライアント・デバイスは、分散コンピューティ
ング・ネットワーク内で2つまたはそれ以上のサービスに同時に接続することが
できる。これらのサービスは、独立に使用することも、また一連のタスクを実行
するのと合わせて使用することもできる。たとえば、1つのサービスをリモート
・クライアント・デバイスが使用してデータ・セットに対する演算を特定しかつ
/または実行し、第2のサービスを使用してデータ・セットを印刷する。
In one embodiment, mobile client devices can connect to two or more services simultaneously within a distributed computing network. These services can be used independently or in conjunction with performing a series of tasks. For example, one service is used by a remote client device to identify and / or perform an operation on a data set and a second service is used to print the data set.

【0477】 図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の位置に基づいてサービス通知を
送る(または削除する)。
FIG. 38 is a diagram of a mobile client device accessing space on a local distributed computing network according to one embodiment. G
A user of PS-enabled mobile computing device 1700 moves into the vicinity of a local distributed computing environment. Mobile client
The device 1700 may locate the location provided by the GPS 1702 with one or more discovery mechanisms 1706 within the local distributed computing network.
Send to. The discovery mechanism 1706 uses the provided GPS location of the mobile client device and the predetermined location of the space in the environment to determine when the user
Determine whether one or more spaces in the specified range of one or more spaces or the environment move within the corresponding neighborhood. For example, discovery mechanism 1
706 can determine that mobile client device 1700 has moved within space 1704. The discovery mechanism 1706 then sends one or more notifications 1710 from the space 1704 to the mobile client device 1700. Apart from that, the discovery mechanism 1706 uses space 17
04 or Universal of one or more notifications in space 1704
Send a Resource Identifier (URI) to mobile client device 1700. Icons representing the various services represented in the service notification 1708 and / or the data represented in the content notification 1710 may be displayed on the mobile client device 1700. The user can then select one or more of the advertised services and / or data for execution and / or display on the mobile client device. Mobile computing device 1700 establishes a wireless connection with a device providing the service, communicates with the device, and performs the service using an XML-based messaging system as described above. Alternatively, a user of mobile computing device 1700 connects to the device at the docking station. The location of the docking station is whether the user can locate and use the location of stocking stations within the user's specified range using the lookup or discovery mechanism 1706 and the space containing the docking station's notifications. By determining
To be discovered. The discovery mechanism 1706 can further detect when the mobile client device 1700 has moved within a selected range of space 1714. Various service notifications 1718 and content notifications 172
0 is made available to users of mobile client device 1700. When a mobile client device goes out of one specified range of space, the notification provided by that space is deleted from the display of mobile client device 1700. In one embodiment, the notification on the space includes location information for the service or data provided. Accordingly, the discovery mechanism 1706 determines when the mobile client device 1700 has moved within a specified range of the particular service advertised on the space 1718, and based on the location of the mobile client device 1700, service advertisement. Send (or delete).

【0478】 コンピューティング・デバイスは、同時にパワーと機能を獲得する一方でダウ
ンサイジングを進めている。ストレージ・デバイス、CPU、RAM、I/O
ASICS、電源など、サイズが小さくなり、小型のモバイル・クライアント・
デバイスにフルサイズのパソコンの機能の多くを搭載できる。しかし、コンピュ
ータ・システムのコンポーネントのいくつかは、人的要因およびその他の要因の
せいで簡単には縮小できない。こうしたコンポーネントとしては、それらに限定
されないが、キーボード、モニタ、スキャナ、およびプリンタがある。一部のコ
ンポーネントのサイズを縮小することに限度があるため、モバイル・クライアン
ト・デバイスはパソコンの役割を真に肩代わりすることはできない。
Computing devices are simultaneously downsizing while gaining power and functionality at the same time. Storage device, CPU, RAM, I / O
Small mobile clients such as ASICS and power supplies
You can equip your device with many of the features of a full-size computer. However, some of the components of computer systems cannot be easily scaled down due to human and other factors. Such components include, but are not limited to, keyboards, monitors, scanners, and printers. Due to the limited size of some components, mobile client devices cannot truly take the role of a personal computer.

【0479】 一実施形態では、ユーザがモバイル・クライアント・デバイスを使い、人的要
因やその他の要因によりモバイル・クライアント・デバイスでは利用できないコ
ンポーネントに接続し使用できるようにするドッキング・ステーションが提示さ
れている。たとえば、ドッキング・ステーションは、空港や図書館などの公共の
場所に備えることができる。ドッキング・ステーションは、モニタ、キーボード
、プリンタ、またはモバイル・クライアント・デバイスを使用するユーザ用のそ
の他のデバイスを備える。一実施形態では、ドッキング・ステーションは、ユー
ザが接続しているモバイル・クライアント・デバイスなどの実際のコンピューテ
ィング・デバイスの助けがないと完全には機能しない。ドッキング・ステーショ
ンは、さまざまな入出力機能などのサービスを、モバイル・クライアント・デバ
イスの計算能力を使用するクライアントに提供する。
In one embodiment, a docking station is presented that allows a user to use a mobile client device and connect and use components that are not available on the mobile client device due to human or other factors. There is. For example, docking stations can be provided in public places such as airports and libraries. The docking station comprises a monitor, keyboard, printer, or other device for a user using a mobile client device. In one embodiment, the docking station is not fully functional without the assistance of the actual computing device to which the user is connecting, such as the mobile client device. The docking station provides services such as various I / O capabilities to clients that use the computing power of the mobile client device.

【0480】 ドッキング・ステーションは、1つまたは複数の接続用オプションをモバイル
・クライアント・デバイスに提供する。接続オプションには、無線接続や有線接
続がある。無線接続の例としては、それらに限定されないが、ノートブック・コ
ンピュータのネットワーク・インターフェース・カード(NIC)で提供される
ようなIrDAなどの赤外線や、無線ネットワーク接続がある。有線接続の例と
しては、それらに限定されないが、USB、FireWire、およびツイスト
ペアEthernetなどがある。
The docking station provides mobile client devices with one or more options for connection. Connection options include wireless and wired connections. Examples of wireless connections include, but are not limited to, infrared, such as IrDA, such as that provided by a network interface card (NIC) in a notebook computer, and wireless network connections. Examples of wired connections include, but are not limited to, USB, FireWire, and twisted pair Ethernet.

【0481】 モバイル・クライアント・デバイスは、モバイル・クライアント・デバイスに
ついて上述したものに実質的に似た方法を使用してドッキング・ステーションの
位置を発見する。ローカル分散コンピューティング・ネットワーク内の1つまた
は複数のドッキング・ステーションの位置を発見するには、発見メカニズムを使
用して、ドッキング・ステーションの通知があるスペースを発見する。モバイル
・クライアント・デバイスは、位置を発見メカニズムに送る。一実施形態では、
発見メカニズムまたはルックアップ・メカニズムは、モバイル・クライアント・
デバイスの位置に最も近い1つまたは複数のドッキング・ステーションの位置を
返す。それとは別に、発見メカニズムまたはルックアップ・メカニズムはドッキ
ング・ステーションの通知を含むスペースのURIを返し、その後、モバイル・
クライアント・デバイスはスペースに接続して、デバイスに近いところにある1
つまたは複数のドッキング・ステーションの位置を送る。一実施形態では、モバ
イル・クライアント・デバイスは、ルックアップ・メカニズム又は発見メカニズ
ムに情報を供給し、モニタの解像度、画面サイズ、グラフィック能力、プリンタ
やスキャナなどの使用可能なデバイスなどの要求条件を指定することができる。
一実施形態では、さまざまなドッキング・ステーションの使用可能性(ドッキン
グ・ステーションを使用する他のユーザから)、コンポーネント、および能力な
どの1つまたは複数のドッキング・ステーションに関する情報をモバイル・クラ
イアント・デバイスのユーザに提供する。
The mobile client device locates the docking station using a method substantially similar to that described above for mobile client devices. To discover the location of one or more docking stations within the local distributed computing network, a discovery mechanism is used to discover the space where the docking station's notifications are located. The mobile client device sends the location to the discovery mechanism. In one embodiment,
The discovery or lookup mechanism is a mobile client
Returns the location of the docking station or stations closest to the location of the device. Alternatively, the discovery or lookup mechanism returns the URI of the space containing the docking station's notification, and then the mobile
The client device connects to the space and is close to the device 1
Send the location of one or more docking stations. In one embodiment, the mobile client device provides information to a lookup or discovery mechanism to specify requirements such as monitor resolution, screen size, graphics capabilities, and available devices such as printers and scanners. can do.
In one embodiment, information about one or more docking stations, such as availability of various docking stations (from other users using the docking station), components, and capabilities, of the mobile client device. Provide to users.

【0482】 ユーザがドッキング・ステーションに接近すると請求プロトコルが開始する。
ドッキング・ステーションがその請求を受理すると、セキュリティで保護された
入出力接続が、モバイル・クライアント・デバイスとドッキング・ステーション
との間で確立される。それとは別に、ユーザはモバイル・クライアント・デバイ
スに表示されるルックアップ・メカニズム又は発見メカニズムを使用して発見さ
れた1つまたは複数のドッキング・ステーションのうちからドッキング・ステー
ションを選択する。ユーザがドッキング・ステーションを選択すると請求プロト
コルが開始し請求の持続時間中、ユーザに、ドッキング・ステーションへのセキ
ュリティで保護された排他的接続が与えられる。ユーザがドッキング・ステーシ
ョン上のセッションを終了し、ドッキング・ステーションを開放して他のユーザ
が利用できるようにするドッキング・ステーションの解放方法も定める。一実施
形態では請求プロトコルは、前述のようにドッキング・ステーション・サービス
上のリースとすることができる。
The billing protocol begins when the user approaches the docking station.
When the docking station accepts the request, a secure I / O connection is established between the mobile client device and the docking station. Alternatively, the user selects a docking station from one or more docking stations found using the lookup or discovery mechanism displayed on the mobile client device. When the user selects the docking station, the billing protocol begins and the user is given a secure and exclusive connection to the docking station for the duration of the bill. It also defines how to release the docking station so that the user can end the session on the docking station and open the docking station for use by other users. In one embodiment, the billing protocol can be a lease on the docking station service as described above.

【0483】 図39aは、一実施形態により、モバイル・デバイスのユーザがドッキング・
ステーションの場所を発見することを示す図である。モバイル・クライアント・
デバイス1750は、発見メカニズム1756と接続する。モバイル・クライア
ント・デバイス1750は、GPS 1752を使用して得られた位置を発見メ
カニズム1756に送る。モバイル・クライアント・デバイス1750は、さら
に、ドッキング・ステーションの要求条件を発見メカニズム1756に送る。発
見メカニズム1756は、モバイル・クライアント・デバイス1750の要求条
件を満たすドッキング・ステーション1758の通知に対して1つまたは複数の
スペース1754をサーチする。一実施形態では、ルックアップ・メカニズム又
は発見メカニズムが、通知1758に格納されている位置情報をモバイル・デバ
イス1750の与えられた位置と比較してモバイル・デバイス1750の指定範
囲内にある1つまたは複数のドッキング・ステーションを特定する。発見メカニ
ズム1756は、そこで、モバイル・クライアント・デバイス1750の指定範
囲内にある1つまたは複数のドッキング・ステーションの位置を与える。それと
は別に、発見メカニズム1756はモバイル・クライアント・デバイス1750
に最も近いドッキング・ステーションを特定し、その位置をモバイル・クライア
ント・デバイス1750に送る。
FIG. 39a illustrates a user of a mobile device docking according to one embodiment.
FIG. 6 is a diagram illustrating discovering the location of a station. Mobile client
The device 1750 connects with the discovery mechanism 1756. Mobile client device 1750 sends the location obtained using GPS 1752 to discovery mechanism 1756. Mobile client device 1750 also sends docking station requirements to discovery mechanism 1756. Discovery mechanism 1756 searches one or more spaces 1754 for notifications of docking station 1758 that meet the requirements of mobile client device 1750. In one embodiment, the lookup or discovery mechanism compares the location information stored in the notification 1758 with a given location of the mobile device 1750, one of which is within a specified range of the mobile device 1750 or Identify multiple docking stations. The discovery mechanism 1756 then provides the location of one or more docking stations within the specified range of the mobile client device 1750. Alternatively, the discovery mechanism 1756 may be used by the mobile client device 1750.
Identifies the docking station closest to and sends its location to the mobile client device 1750.

【0484】 図39bは、一実施形態によるドッキング・ステーション1760に接続する
モバイル・クライアント・デバイス1750の図である。一実施形態では、ユー
ザはモバイル・クライアント・デバイス1750をドッキング・ステーション1
760に無線で接続する。他の実施形態では、ユーザはドッキング・ステーショ
ン1760とモバイル・クライアント・デバイス1750とを1つまたは複数の
ケーブルで接続してクッキング・ステーション1760との有線接続を確立する
。一実施形態では、モバイル・クライアント・デバイス1750のユーザはドッ
キング・ステーション1760への請求を確立する。この請求により、接続時間
中、ドッキング・ステーションへのセキュリティで保護された排他的権限を確立
する。一実施形態では請求メカニズムは、前述のようにリソース(ドッキング・
ステーション)のリース・メカニズムである。一実施形態では、ユーザは、ドッ
キング・ステーションの使用に対し対価支払いを請求される。たとえば、ユーザ
は、ドッキング・ステーションを請求するプロセスの一部としてクレジット・カ
ード番号を指定する。「メッセージ・ゲート」の項の請求書ゲートの説明を参照
のこと。いったん接続されると、ユーザはキーボード、モニタ、プリンタなど、
ドッキング・ステーション1760によって提供されるさまざまな機能を使用で
きる。ドッキング・ステーション1760はさらに、ローカル分散コンピューテ
ィング・ネットワークへの接続も含み、ドッキング・ステーション1760に接
続されているモバイル・クライアント・デバイス1750のユーザに対しネット
ワーク内の他のデバイスのサービスおよびコンテンツ通知を特定する発見サービ
スを提供しているため、ユーザは前述のように、分散コンピューティング環境内
のさまざまなサービスおよびコンテンツを特定し、使用することができる。
FIG. 39b is a diagram of a mobile client device 1750 connecting to a docking station 1760 according to one embodiment. In one embodiment, the user connects the mobile client device 1750 to the docking station 1
Wirelessly connect to 760. In other embodiments, a user connects docking station 1760 and mobile client device 1750 with one or more cables to establish a wired connection with cooking station 1760. In one embodiment, the user of mobile client device 1750 establishes a bill to docking station 1760. This solicitation establishes a secure and exclusive authority to the docking station for the duration of the connection. In one embodiment, the billing mechanism uses resource (docking,
Station) leasing mechanism. In one embodiment, the user is charged for the use of the docking station. For example, a user specifies a credit card number as part of the process of billing a docking station. See the description of the Invoice Gate in the "Message Gate" section. Once connected, the user can use a keyboard, monitor, printer, etc.
Various functions provided by docking station 1760 may be used. Docking station 1760 also includes a connection to a local distributed computing network to provide users of mobile client devices 1750 connected to docking station 1760 with service and content notifications of other devices in the network. By providing a discovery service that identifies, users can identify and use various services and content within the distributed computing environment, as described above.

【0485】 ユーザは、終了すると、モバイル・クライアント・デバイス1750をドッキ
ング・ステーション1760から切断する。一実施形態ではドッキング・ステー
ションの解放メカニズムは、モバイル・クライアント・デバイス1750がドッ
キング・ステーション1750から切断されると自動的に開始する。この解放メ
カニズムにより、モバイル・クライアント・デバイス1750のユーザが確立し
たドッキング・ステーション1760の請求がクリアされる。一実施形態では、
この解放メカニズムは、ドッキング・ステーションが利用できることを発見メカ
ニズムに1756および/またはドッキング・ステーション通知1758に通知
する。
When finished, the user disconnects the mobile client device 1750 from the docking station 1760. In one embodiment, the docking station release mechanism starts automatically when the mobile client device 1750 disconnects from the docking station 1750. This release mechanism clears the docking station 1760 billing established by the user of the mobile client device 1750. In one embodiment,
This release mechanism notifies the discovery mechanism 1756 and / or docking station notification 1758 that the docking station is available.

【0486】 一実施形態では、ユーザは発見メカニズムを使用せずにモバイル・クライアン
ト・デバイスをドッキング・ステーションに接続することができる。たとえば、
空港内にいるユーザは、ドッキング・ステーションで目で見て見つけ、モバイル
・クライアント・デバイスを接続する。他の例としては、複数のドッキング・ス
テーションを配置したドッキング・ステーション室を備える図書館が考えられ、
ユーザはそこで利用可能なドッキング・ステーションにアクセスすることができ
る。
In one embodiment, the user can connect the mobile client device to the docking station without using the discovery mechanism. For example,
A user at the airport visually finds at the docking station and connects the mobile client device. Another example would be a library with a docking station room with multiple docking stations,
The user can access the docking stations available there.

【0487】 省スペースおよび/または組み込み型デバイス 単純な組み込み型または省スペース・デバイスでは、プログラムの命令を格納
し実行しようにもメモリ容量が限られている場合がある。単純な組み込み型デバ
イスは、デバイスの機能を開始するための制御入力とデバイスのステータスを報
告するための出力に制限があることを認識する必要がある。単純な組み込み型デ
バイスの一例として、スイッチとそのスイッチにより制御されるデバイスを制御
するための回路を組み込んだ「スマート」スイッチ(照明スイッチなど)がある
。スマート・スイッチは、2つの制御要求(デバイスの状態を変更する、デバイ
スの状態を要求する)を認識し、1つのステータス・メッセージ(デバイスの状
態)を送るだけでよい。スマート・スイッチは、1つまたは複数の制御システム
から制御要求を受け取り、その1つまたは複数の制御システムにステータス・メ
ッセージを報告することにより、接続されているデバイスを管理することができ
る。
Space Saving and / or Embedded Devices Simple embedded or space saving devices may have limited memory capacity to store and execute program instructions. Simple embedded devices need to be aware that they have limited control inputs to initiate device functionality and outputs to report device status. An example of a simple embedded device is a "smart" switch (such as a light switch) that incorporates a switch and circuitry to control the device controlled by the switch. The smart switch need only recognize two control requests (change device state, request device state) and send one status message (device state). The smart switch can manage connected devices by receiving control requests from one or more control systems and reporting status messages to the one or more control systems.

【0488】 一実施形態では、分散コンピューティング環境は、分散コンピューティング環
境の完全なプロトコルを実装するのに必要なリソース(メモリなど)が足りない
小型デバイスを含めるためのフレームワーク(プロトコル)を提供する。一実施
形態では、小型デバイス対応プロトコルと完全なプロトコルとの間にブリッジと
してエージェントを用意する。このエージェントは、小型デバイスのために完全
なプロトコルの発見を実行するので、デバイスは完全な発見プロトコルおよびサ
ービス・アクティブ化を実行する必要がない。一実施形態では、小型デバイスは
サービス特有のメッセージを送るだけでよい。一実施形態では、これらのメッセ
ージは、小型デバイスで事前に加工され、小型デバイスはサービス・アクティブ
化の一部であるメッセージをエージェントに送るだけである。エージェントは、
サービスに対し完全なプロトコルを介してサービス・アクティブ化を実行し、サ
ービスからサービスへ着信メッセージを転送したり、サービス化がクライアント
へ返信を転送したりすることができる。したがって、エージェントは小型クライ
アントのサービス・コネクタとして機能する。分散コンピューティング環境の一
実施形態では、特定の制御要求セットをXMLメッセージの形式で受け取り、要
求、報告ステータスなどを作成する特定のXMLメッセージ・セットを送るよう
に組み込み型デバイスを構成することができる。一実施形態では、制御システム
は、制御される各デバイスまたはデバイスのカテゴリに固有のXML要求メッセ
ージを送り、デバイスからXMLメッセージを受け取ることによりさまざまなデ
バイスを管理するように構成できる。一実施形態では、1つまたは複数のXML
スキーマを使用して、組み込み型デバイスの固有のXMLメッセージ・セットを
定義することができ、スキーマは、XMLメッセージを送受される際に組み込み
型デバイスおよび/または制御システムによって使用される。
In one embodiment, the distributed computing environment provides a framework (protocol) for including small devices that lack the resources (such as memory) needed to implement the complete protocol of the distributed computing environment. To do. In one embodiment, the agent is provided as a bridge between the small device capable protocol and the full protocol. The agent does not need to perform full discovery protocol and service activation as it performs full protocol discovery for small devices. In one embodiment, the small device need only send a service-specific message. In one embodiment, these messages are pre-processed on the small device, which only sends the agent a message that is part of the service activation. The agent
Service activation can be performed on a service over a complete protocol to forward incoming messages from service to service, or servicing can forward replies to clients. Thus, the agent acts as a service connector for small clients. In one embodiment of a distributed computing environment, an embedded device may be configured to receive a particular set of control requests in the form of XML messages and send a particular set of XML messages to create requests, reporting status, etc. . In one embodiment, the control system can be configured to manage various devices by sending XML request messages specific to each device or category of devices being controlled and receiving XML messages from the devices. In one embodiment, one or more XML
The schema can be used to define a unique XML message set for an embedded device, which schema is used by the embedded device and / or control system in sending and receiving XML messages.

【0489】 組み込み型デバイスは、単純な組み込み型デバイスを制御し監視するための特
定のメッセージ・セットをサポートする前述のようなXMLメッセージング・シ
ステムの「軽量(シン)」実装を含む。XMLメッセージング・システムの実装
は、省スペースの単純な組み込み型デバイスで使用できるように手直しされ、省
スペース・デバイスの限られたメモリにも適合する。一実施形態では、XMLメ
ッセージング・システムは、省スペース組み込み型デバイスをターゲットとする
仮想マシン(たとえば、KVM)を備える省スペース・デバイスに実装すること
ができる。ネットワーキング・スタック(1つまたは複数の制御システムとの通
信のためのトランスポート・プロトコルをサポートする)は、仮想マシンと関連
付けられ、XMLメッセージング・レイヤはネットワーキング・スタックの「上
に置かれる」。メッセージング・システムのこのような実装は、省スペース・デ
バイスや組み込み型デバイス以外のデバイスでも使用できることに注意されたい
Embedded Devices include "thin" implementations of XML messaging systems as described above that support specific message sets to control and monitor simple embedded devices. The implementation of the XML messaging system has been adapted for use in space-saving simple embedded devices, and also fits in the limited memory of space-saving devices. In one embodiment, the XML messaging system may be implemented on a space saving device with a virtual machine (eg, KVM) that targets the space saving embedded device. A networking stack (supporting a transport protocol for communication with one or more control systems) is associated with the virtual machine, and the XML messaging layer is "on top" of the networking stack. Note that such implementations of the messaging system can be used with devices other than space-saving devices and embedded devices.

【0490】 一実施形態では、静的メッセージまたは事前に生成されたメッセージを、制御
システムから組み込み型デバイスへの要求に使用する。静的メッセージは、プリ
コンパイルされ、組み込み型デバイス内に格納される。着信メッセージを格納さ
れている静的メッセージと比較し、メッセージのマッチがないか調べてメッセー
ジで要求された機能を実行するので、着信メッセージを解析するためのコードの
必要性が減じられるか、またはその必要がない。発送メッセージは、格納されて
いる静的メッセージから直接読み取られるため、発送メッセージを動的にコンパ
イル必要は少ないか、またはその必要がない。したがって、静的メッセージは、
組み込み型システムのメッセージング・レイヤのコード量を減らすために使用さ
れる。たとえば、静的なJavaオブジェクト(Java opコード)を要求
メッセージとステータス・メッセージに使用できる。
In one embodiment, static or pre-generated messages are used to request embedded devices from the control system. Static messages are precompiled and stored in embedded devices. Reduces the need for code to parse incoming messages by comparing incoming messages to stored static messages and checking for message matches to perform the function requested in the message, or There is no need for that. Since the shipping message is read directly from the stored static message, there is little or no need to dynamically compile the shipping message. So the static message is
Used to reduce the amount of code in the messaging layer of embedded systems. For example, static Java objects (Java opcodes) can be used for request and status messages.

【0491】 図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の自動制御を行うためのソフトウェアおよび/またはハードウェアを
備える。
FIG. 40a illustrates one embodiment of embedded devices 1804a and 1804b controlled by control system 1800, according to one embodiment. Control system 18
00 is networked in various ways with devices 1804a and 1804b controlled by the system. The network 1810 is wired (Et
hernet, coaxial, twisted pair, power grid, etc. and / or wireless (IrD
A, microwave, etc.) can be used. In one embodiment, embedded device 18
04a and 1804b comprise a thin implementation of the XML messaging system for communicating with control system 1800 over network 1810. The control system 1800 sends a request to the embedded devices 1804a and 1804b,
Prepare an XML messaging system implementation to receive the response from it. In one embodiment, the control system 1800 allows the user to embed the embedded device 1
It is equipped with software and hardware configured to display the status of 804a and 1804b and to provide an interface for remote control. In one embodiment, control system 1800 comprises software and / or hardware for automatic control of embedded devices 1804a and 1804b.

【0492】 一実施形態では、組み込み型デバイス1804aと1804bは、他の環境の
一部である。それらのデバイスは、分散ネットワーク環境で実装されているメッ
セージ通信モデルをサポートしていない。たとえば、これらのデバイスは、Lo
nWorksネットワークなどのネットワークで接続されたオートメーションお
よび制御システム内のノードである。制御システム1800は、他の環境内のデ
バイスを制御するための制御システムのハードウェアおよび/またはソフトウェ
アを含む。制御システム1800は、分散コンピューティング環境と他の環境と
の間のブリッジとして使用される。分散コンピューティング環境ではさらに、分
散コンピューティング環境からアクセスするデバイスを発見するため既存のデバ
イス発見プロトコルをラップする1つまたは複数の方法も備える。ブリッジおよ
びラップを行うプロトコルについては「ブリッジ」の項で詳述する。
In one embodiment, embedded devices 1804a and 1804b are part of another environment. These devices do not support the messaging model implemented in distributed network environments. For example, these devices are Lo
A node in an automation and control system connected by a network, such as the nWorks network. Control system 1800 includes control system hardware and / or software for controlling devices in other environments. Control system 1800 is used as a bridge between a distributed computing environment and other environments. The distributed computing environment also includes one or more methods of wrapping existing device discovery protocols to discover devices to access from the distributed computing environment. The bridging and wrapping protocols are detailed in the "Bridge" section.

【0493】 制御システム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のステータスを表示し、遠隔制御することができる。
The control system 1800 connects remotely or locally to one or more other systems in a distributed computing environment. 40a shows a control system 18 connected to a client 1806 via the Internet 1802.
00 is shown. The client 1806, through the control system 1800,
It indirectly requests the status of embedded devices 1804a and 1804b and sends its control request. Accordingly, the control system 1800 is used as a proxy or bridge for embedded devices 1804a and 1804b.
See the "Bridge" section. Client 1806 and control system 180
To enable advanced communication with 0, the client and control system comprises an implementation of the XML messaging system that is different from the thin implementation on embedded devices 1804a and 1804b. In one embodiment, the client 1806
Includes software and hardware configured to provide an interface for a user to view and remotely control the status of embedded devices 1804a and 1804b. In one embodiment, the client 1806 needs to present the correct authorization certificate to the control system 1800 to allow the client 1806 access to the embedded devices 1804a and 1804b. In one embodiment, clients 1806 are given different levels of access. For example, client 1806 may be embedded device 1804.
Only the status of a and 1804b can be displayed, and the device cannot be remotely controlled. In one embodiment, the control system 1800 is a service and service notifications are published in a distributed computing environment so that the client 1806 can be accessed using the client-service approach as described above. In one embodiment, the client 1806 is the control system 180.
A status of 0 can be displayed and controlled remotely.

【0494】 図40bは、一実施形態により、インターネット1802を介して組み込み型
デバイス1804cおよび1804dに接続されているクライアント制御システ
ム1808を示している。一実施形態では、組み込み型デバイス1804cおよ
び1804dは、ネットワーク1802上でクライアント制御システム1808
と通信するためXMLメッセージング・システムのシン実装を備える。クライア
ント制御システム1808は、組み込み型デバイス1804cおよび1804d
に要求を送り、そこから応答受け取るためのXMLメッセージング・システムの
実装を用意する。一実施形態では、クライアント制御システム1808は、ユー
ザが組み込み型デバイス1804cと1804dのステータスを表示し、遠隔制
御するためのインターフェースを備えるように構成されたソフトウェアおよびハ
ードウェアを搭載する。一実施形態では、クライアント制御システム1800は
、組み込み型デバイス1804cおよび1804dの自動制御を行うためのソフ
トウェアおよび/またはハードウェアを備える。
FIG. 40b illustrates a client control system 1808 connected to embedded devices 1804c and 1804d via the Internet 1802, according to one embodiment. In one embodiment, embedded devices 1804c and 1804d are connected to client control system 1808 over network 1802.
A thin implementation of the XML messaging system for communicating with. Client control system 1808 includes embedded devices 1804c and 1804d.
Prepare an XML messaging system implementation to send requests to and receive responses from. In one embodiment, client control system 1808 includes software and hardware configured to provide an interface for a user to view and remotely control the status of embedded devices 1804c and 1804d. In one embodiment, client control system 1800 comprises software and / or hardware for automatic control of embedded devices 1804c and 1804d.

【0495】 図40aと図40bとの違いは、図40bに示されている実施形態では、組み
込み型デバイス1804cと1804dは、プロキシ(たとえば、制御システム
)なしで分散コンピューティング環境内の1つまたは複数のクライアントにより
アクセスされるという点である。組み込み型デバイス1804cおよび1804
dは、デバイスの機能にアクセスするためのサービスを備え、分散コンピューテ
ィング環境内でサービス通知をパブリッシュし、前述のようにクライアント−サ
ービス手法を介してアクセスされる。
The difference between FIG. 40a and FIG. 40b is that in the embodiment shown in FIG. It is accessed by multiple clients. Embedded devices 1804c and 1804
d comprises services for accessing device functionality, publishes service notifications within a distributed computing environment, and is accessed via a client-service approach as described above.

【0496】 分散コンピューティング環境は、リソースが制限されているクライアントがU
niversal Resource Identifier(URI)アドレ
ス指定リソースを取り出すためのメカニズムを備える。たとえば、IrDA接続
を介してでないとメッセージを送受できないクライアントは、URI接続を確立
して、結果スペースから結果を取り出すことができない。一実施形態では、クラ
イアントとURIリソースとの間のブリッジとしてサービスを提供する。ブリッ
ジ・サービスは、XMLメッセージを介してクライアントと対話し、入力パラメ
ータを集める。以下に、XML入力メッセージシンタックスの一例を示したが、
何らかの形で制限することを意図していない。 <type name="HttpGet"> <element name="urlstring" type="string"/> </type>
In a distributed computing environment, a client whose resources are limited is U
A mechanism for retrieving a universal resource identifier (URI) addressing resource is provided. For example, a client that can only send and receive messages over an IrDA connection cannot establish a URI connection and retrieve the results from the results space. In one embodiment, it serves as a bridge between the client and the URI resource. The bridge service interacts with the client via XML messages and collects input parameters. Below is an example of the XML input message syntax.
It is not intended to be limited in any way. <type name = "HttpGet"><element name = "urlstring" type = "string"/></type>

【0497】 次に、分散コンピューティング環境の外部で、ブリッジ・サービスはURI接
続を確立し、リソースを取り出す。リソースは、1つまたは複数のXMLメッセ
ージでペイロードとしてカプセル化され、ブリッジ・サービスによってクライア
ントに送られる。
Next, outside the distributed computing environment, the bridge service establishes a URI connection and retrieves the resource. The resource is encapsulated as a payload in one or more XML messages and sent to the client by the bridge service.

【0498】 XMLメッセージング・システムのシン実装を備える組み込み型デバイスの可
能な使い方の一例を説明のため掲載しているが、制限することを意図していない
。建物には、エネルギーを消費する複数のエレクトロニクス・デバイス(たとえ
ば、照明、空調、事務機器)が置かれているため、最適なエネルギー消費レベル
を維持するためのシステムを必要とする。このような複数のデバイスはそれぞれ
、エレクトロニクス・デバイスを制御するための組み込み型デバイスを備える。
これらの組み込み型デバイスは、XMLメッセージング・システムのシン実装を
備える。1つまたは複数の制御システムを、ネットワーク、たとえば、建物内L
ANやさらにはインターネット内のデバイスに結合する。制御システムでは、建
物管理ソフトウェア・パッケージおよびデバイスを監視し制御するためソフトウ
ェア・パッケージによって使用されるように構成されているXMLメッセージン
グ・システムの実装を格納し、実行する。制御システムは、ユーザからの入力を
受け付け、複数のデバイスのそれぞれのステータス情報はじめとする、建物内エ
ネルギー消費システムのステータス情報を表示し、他の何らかの方法で出力する
。エネルギー消費は、複数のデバイスのそれぞれからXMLステータス・メッセ
ージを受け取ることにより監視する。エネルギー消費レベルを調整する必要があ
る場合、XML制御メッセージを1つまたは複数のデバイスに送ってエネルギー
消費を変更させる。
[0498] An example of a possible use of an embedded device with a thin implementation of an XML messaging system is provided for illustrative purposes, but is not intended to be limiting. Buildings have multiple energy consuming electronic devices (eg, lighting, air conditioning, office equipment) and thus require a system to maintain optimal energy consumption levels. Each such plurality of devices comprises an embedded device for controlling an electronic device.
These embedded devices comprise a thin implementation of the XML messaging system. One or more control systems can be connected to a network, for example L in a building.
Coupling to devices in the AN or even the Internet. The control system stores and executes the building management software package and an implementation of the XML messaging system that is configured to be used by the software package to monitor and control the device. The control system receives input from the user, displays status information of the in-building energy consumption system, including status information of each of the plurality of devices, and outputs the status information by some other method. Energy consumption is monitored by receiving XML status messages from each of the multiple devices. If the energy consumption level needs to be adjusted, an XML control message is sent to one or more devices to change the energy consumption.

【0499】 サービスの実装 一実施形態では、分散コンピューティング環境はサービスをサーブレットとし
て実装するためのメカニズムを備える。このメカニズムは、分散コンピューティ
ング環境向けにサービスを開発するための機能を備える。
Service Implementation In one embodiment, the distributed computing environment comprises a mechanism for implementing a service as a servlet. This mechanism provides functionality for developing services for the distributed computing environment.

【0500】 一実施形態では、スペース内でサービスを初期化し登録するための機能を備え
るアプリケーション・プログラミング・インターフェース(API)が提供され
る。一実施形態では、このAPIを使用して、サービスの初期化機能を呼び出し
、サービスのステータスを定義する初期化ステータス・ページ、たとえば、HT
MLページを生成することができる。ユーザは、ブラウザからステータス・ペー
ジにアクセスすることによりサービスのステータスにアクセスできる。一実施形
態では、APIを使用して、着信メッセージを処理し、そのメッセージに応答し
てドキュメントを生成する。 サーブレット・メカニズムの実施形態では、それに限定されないが、以下のよ
うな複数の機能を提供する。 サービスへのクライアント接続の管理(一意的なセッションID) 結果通知を格納するために使用されるアクティブ化スペースの管理 アクティブ化スペースの接続セッションおよび結果に対するリースの管理 セッションおよび結果のガベージ・コレクション クライアントの認証 セッションごとのクライアント機能の生成
In one embodiment, an application programming interface (API) is provided that has the functionality to initialize and register services in the space. In one embodiment, this API is used to call the service's initialization function and define the status of the service, such as an initialization status page, eg, HT.
ML pages can be generated. The user can access the status of the service by accessing the status page from the browser. In one embodiment, APIs are used to process incoming messages and generate documents in response to the messages. Embodiments of the servlet mechanism provide multiple functions, including, but not limited to: Managing Client Connections to Services (Unique Session ID) Managing Activation Spaces Used to Store Result Notifications Managing Activation Space Connection Sessions and Leases for Results Session and Result Garbage Collection Clients Generating client function for each authentication session

【0501】 一実施形態では、分散コンピューティング環境は、新しい複雑なサービスを他
の既存のサービスから構築するためのサービス・カスケード接続メカニズムを備
える。たとえば、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>
In one embodiment, the distributed computing environment comprises a service cascading mechanism for building new complex services from other existing services. For example, the conversion and print services are combined from the JPEG-PostScript conversion service and the print service to create a third cascade-connected service. In one embodiment, two or more services are combined to form a complex service by defining the access methods of the two or more services as the access methods of the cascaded services. The following service notifications for Cascade Connection Service are
It is provided for illustrative purposes only and is not intended to be limiting in any way. <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>

【0502】 結論 さまざまな実施形態はさらに、キャリア媒体に関する前述の説明により実装さ
れた命令および/またはデータを受け取り、送り、または格納することを含む。
一般に、キャリア媒体には、磁気または光媒体などの記憶媒体やメモリ媒体、た
とえば、ディスクやCD−ROM、RAM(SDRAM、RDRAM、SRAM
など)、ROMなどの揮発性または不揮発性媒体、さらに、ネットワークおよび
/または無線リンクなどの通信媒体を介して伝達される電気信号、電磁信号、ま
たはデジタル信号などの伝送媒体または信号が含まれる。
Conclusion Various embodiments further include receiving, sending, or storing instructions and / or data implemented in accordance with the above description of carrier media.
Generally, the carrier medium is a storage medium or memory medium such as a magnetic or optical medium, for example, a disk, a CD-ROM, a RAM (SDRAM, RDRAM, SRAM).
Etc.), volatile or non-volatile media such as ROM, as well as transmission media or signals such as electrical, electromagnetic or digital signals that are communicated over communication media such as networks and / or wireless links.

【0503】 本開示を利用しようとする当業者には明白なように、さまざまな修正および変
更が可能である。本発明はそのような全ての修正および変更を包括的に取り入れ
ることを意図しており、したがって、明細書、付録、および図面は、制限のため
ではなく、説明のためであるとみなすべきである。
Various modifications and changes will be apparent to those of ordinary skill in the art who wish to utilize the present disclosure. The present invention is intended to embrace all such modifications and alterations in its entirety, and therefore the specification, appendices, and drawings should be regarded as illustrative rather than restrictive. .

【図面の簡単な説明】[Brief description of drawings]

【図1】 従来の分散コンピューティング技術の積み重ねの図である。[Figure 1]   FIG. 1 is a stacking diagram of conventional distributed computing technology.

【図2】 一実施形態による分散コンピューティング環境プログラミング・モデルの図で
ある。
FIG. 2 is a diagram of a distributed computing environment programming model according to one embodiment.

【図3】 一実施形態による分散コンピューティング環境のメッセージング・レイヤおよ
びネットワーキング・レイヤの図である。
FIG. 3 is a diagram of messaging and networking layers of a distributed computing environment in accordance with one embodiment.

【図4】 一実施形態により分散コンピューティング環境でオブジェクトまたはサービス
を通知するスペースを見つけるための発見サービスの図である。
FIG. 4 is a diagram of a discovery service for finding space to advertise objects or services in a distributed computing environment according to one embodiment.

【図5】 一実施形態による分散コンピューティング環境の静的メッセージおよび書式付
きメッセージをサポートするクライアント・プロファイルの図である。
FIG. 5 is a diagram of a client profile supporting static and formatted messages in a distributed computing environment according to one embodiment.

【図6】 一実施形態によるXMLメッセージングを採用する分散コンピューティング・
モデルの図である。
FIG. 6 is a distributed computing system employing XML messaging according to one embodiment.
It is a figure of a model.

【図7】 一実施形態によるプラットフォーム独立の分散コンピューティング環境の図で
ある。
FIG. 7 is a diagram of a platform independent distributed computing environment according to one embodiment.

【図8】 一実施形態によりスペース内でサービスが通知される分散コンピューティング
・モデルの図である。
FIG. 8 is a diagram of a distributed computing model in which services are advertised within a space according to one embodiment.

【図9】 一実施形態によりスペース内に結果が格納される分散コンピューティング・モ
デルの図である。
FIG. 9 is a diagram of a distributed computing model in which results are stored in space according to one embodiment.

【図10】 a:一実施形態による分散コンピューティング・モデル内のメッセージング・
エンドポイントとしてのクライアントおよびサービス・ゲートの図である。 b: 一実施形態によりサービスにアクセスするためスキーマに従ってメッセ
ージ・エンドポイントを生成することを示す図である。
FIG. 10 a: Messaging in a distributed computing model according to one embodiment
FIG. 3 is a diagram of a client and a service gate as endpoints. b: illustrates creating a message endpoint according to a schema to access a service according to one embodiment.

【図11】 a:一実施形態による分散コンピューティング環境におけるゲート作成の図で
ある。 b:一実施形態による分散コンピューティング環境におけるゲート作成とゲー
ト・ペアの図である。
FIG. 11 a: Diagram of gate creation in a distributed computing environment according to one embodiment. b: A diagram of gate creation and gate pairs in a distributed computing environment according to one embodiment.

【図12】 一実施形態による分散コンピューティング環境での可能なゲート構成要素の図
である。
FIG. 12 is a diagram of possible gating components in a distributed computing environment according to one embodiment.

【図13】 一実施形態による分散コンピューティング環境に参加する従来のプラウザ用の
プロキシ・クライアントの図である。
FIG. 13 is a diagram of a proxy client for a conventional browser that participates in a distributed computing environment according to one embodiment.

【図14】 一実施形態により分散コンピューティング環境でメソッド・ゲートを使用して
リモート・メソッド呼び出しインターフェースをサービスに提供する方法を示す
図である。
FIG. 14 illustrates a method for providing a remote method invocation interface to a service using a method gate in a distributed computing environment according to one embodiment.

【図15】 一実施形態により分散コンピューティング環境でスペースを使用する方法を示
す図である。
FIG. 15 illustrates a method of using space in a distributed computing environment according to one embodiment.

【図16】 一実施形態による通知構造を示す図である。FIG. 16   FIG. 6 illustrates a notification structure according to one embodiment.

【図17】 一実施形態により通知がその存続期間中に置かれる通知状態遷移の一例を示す
図である
FIG. 17 illustrates an example notification state transition in which a notification is placed during its lifetime, according to one embodiment.

【図18】 一実施形態による分散コンピューティング環境でのさまざまなスペース特定メ
カニズムの図である。
FIG. 18 is a diagram of various space identification mechanisms in a distributed computing environment according to one embodiment.

【図19】 一実施形態による分散コンピューティング環境でのスペース連合の図である。FIG. 19   FIG. 6 is a diagram of a space federation in a distributed computing environment according to one embodiment.

【図20】 一実施形態により分散コンピューティング環境でクライアントがスペース・サ
ービスによりセッションを形成する方法を示す流れ図である。
FIG. 20 is a flow diagram illustrating a method for a client to create a session with a space service in a distributed computing environment according to one embodiment.

【図21】 一実施形態のスペース・イベント型階層の図である。FIG. 21   FIG. 6 is a diagram of a space event type hierarchy of one embodiment.

【図22】 一実施形態による分散コンピューティング環境でのサービス・インスタンス化
を示す流れ図である。
FIG. 22 is a flow diagram illustrating service instantiation in a distributed computing environment according to one embodiment.

【図23】 一実施形態による分散コンピューティング環境でのデフォルトのスペースの図
である。
FIG. 23 is a diagram of a default space in a distributed computing environment according to one embodiment.

【図24】 一実施形態により、近傍ベースのデバイスから提供されるサービスをデバイス
の近傍の範囲外にあるデバイスでアクセスできるようにする近傍ベースのデバイ
スを他のトランスポート・メカニズムにブリッジするデバイスの一例を示す図で
ある。
FIG. 24 illustrates a device for bridging a proximity-based device to another transport mechanism that allows services provided by the proximity-based device to be accessed by devices outside the device's proximity, according to one embodiment. It is a figure which shows an example.

【図25】 一実施形態により分散コンピューティング環境でリース更新メッセージを使用
する方法を示す図である。
FIG. 25 illustrates a method of using a lease renewal message in a distributed computing environment according to one embodiment.

【図26】 a:一実施形態により、認証証明書をクライアントに提供する認証サービスを
示す流れ図である。 b:一実施形態により、図26aのステップ1002上で展開し、認証証明書
を生成する認証サービスを示す流れ図である。
FIG. 26 a: A flow chart illustrating an authentication service for providing an authentication certificate to a client according to one embodiment. b: is a flow diagram illustrating an authentication service that evolves on step 1002 of FIG. 26a to generate an authentication certificate, according to one embodiment.

【図27】 ブリッジ・メカニズムの一実施形態の図である。FIG. 27   FIG. 6 is a diagram of one embodiment of a bridging mechanism.

【図28】 一実施形態により外部発見サービスにマップされるスペース発見プロトコルの
一例の図である。
FIG. 28 is an illustration of an example space discovery protocol mapped to an external discovery service according to one embodiment.

【図29】 一実施形態により、分散コンピューティング環境の外部にあるクライアントを
分散コンピューティング環境内のスペースにブリッジする方法を示す図である。
FIG. 29 illustrates a method of bridging a client external to a distributed computing environment to a space within the distributed computing environment according to one embodiment.

【図30】 一実施形態によるプロキシ・メカニズムの図である。FIG. 30   FIG. 6 is a diagram of a proxy mechanism according to one embodiment.

【図31】 一実施形態による関連するディスプレイおよび表示サービスを備えるクライア
ントの一実施形態の図である。
FIG. 31 is a diagram of an embodiment of a client with associated display and display services according to one embodiment.

【図32】 一実施形態により動的表示オブジェクトのスキーマを使用する例を示す図であ
る。
FIG. 32 is a diagram illustrating an example of using a schema of a dynamic display object according to an embodiment.

【図33】 A:Cプログラミング言語による代表的文字列表現の図である。 B:従来の文字列関数の例を示す図である。 C:一実施形態により、一般には文字列を、具体的には組み込み型システムな
どの省スペース・システムを表現し管理する効率的な方法を示す図である。
FIG. 33 is a diagram of a representative string representation in the A: C programming language. B: It is a figure which shows the example of the conventional character string function. C: Shows an efficient way to represent and manage strings in general and space-saving systems in particular, such as embedded systems, according to one embodiment.

【図34】 一実施形態により、クライアントとサービスの間でオブジェクトを移動するプ
ロセスを示す図である。
FIG. 34 illustrates a process of moving an object between a client and a service, according to one embodiment.

【図35】 仮想マシン(たとえば、JVM)がオブジェクト(たとえば、Javaオブジ
ェクト)をオブジェクトのXML表現にコンパイルする拡張機能および(Jav
a)オブジェクトのXML表現を(Java)オブジェクトに逆コンパイルする
拡張機能を含む実施形態を示すデータ流れ図である。
FIG. 35. An extension for a virtual machine (eg, JVM) to compile an object (eg, Java object) into an XML representation of the object and (Java
6 is a data flow diagram illustrating an embodiment that includes a) an extension that decompiles an XML representation of an object into a (Java) object.

【図36】 一実施形態により分散コンピューティング環境でストア・メカニズムにアクセ
スするクライアントおよびサービスの図である。
FIG. 36 is a diagram of clients and services accessing a store mechanism in a distributed computing environment in accordance with one embodiment.

【図37】 一実施形態によりプロセスの状態のXML表現を使用するプロセス移行を示す
図である。
FIG. 37 illustrates a process transition using an XML representation of the state of a process according to one embodiment.

【図38】 一実施形態によりローカルの分散コンピューティング・ネットワークでスペー
スにアクセスするモバイル・クライアント・デバイスの図である。
FIG. 38 is a diagram of a mobile client device accessing space on a local distributed computing network according to one embodiment.

【図39】 a:一実施形態により、モバイルデバイスのユーザがドッキング・ステーショ
ンの場所を発見すること示す図である。 b:一実施形態によるドッキング・ステーションに接続するモバイル・クライ
アント・デバイスの図である。
FIG. 39 a: A mobile device user discovers the location of a docking station, according to one embodiment. b: A diagram of a mobile client device connecting to a docking station according to one embodiment.

【図40】 a:一実施形態により、制御システムにより制御され、分散コンピューティング
環境内でアクセス可能な組み込み型デバイスの一実施形態を示す図である。 b:一実施形態により、ネットワーク(たとえば、インターネット)を介して
分散コンピューティング環境内でアクセス可能な組み込み型デバイスに接続する
デバイス制御システムの図である。
FIG. 40 a: illustrates one embodiment of an embedded device controlled by a control system and accessible within a distributed computing environment, according to one embodiment. b: is a diagram of a device control system for connecting to embedded devices accessible in a distributed computing environment via a network (eg, the Internet), according to one embodiment.

【図41】 一実施形態によるゲートを作成する方法を示す流れ図である。FIG. 41   6 is a flow chart illustrating a method of making a gate according to one embodiment.

【図42a】 一実施形態によりクライアントがメッセージをサービスに送る方法を示す流れ
図である。
FIG. 42a is a flow diagram illustrating a method for a client to send a message to a service according to one embodiment.

【図42b】 一実施形態によりクライアントからメッセージ受け取り、認証サービスを使用
してメッセージを認証するサービスを示す流れ図である。
FIG. 42b is a flow diagram illustrating a service for receiving a message from a client and authenticating the message using an authentication service according to one embodiment.

【図42c】 一実施形態によりクライアントおよびサービスがメッセージを埋め込まれた認
証証明書と交換する一般的プロセスを示す流れ図である。
FIG. 42c is a flow diagram illustrating a general process by which clients and services exchange messages with embedded authentication credentials according to one embodiment.

【図43】 一実施形態によりメッセージの完全性を確認するメカニズムを示す流れ図であ
る。
FIG. 43 is a flow diagram illustrating a mechanism for verifying message integrity according to one embodiment.

【図44】 一実施形態によるリソースをリースするメカニズムを示す流れ図である。FIG. 44   6 is a flow diagram illustrating a mechanism for leasing resources according to one embodiment.

【図45a】 メソッド・ゲートを使用するクライアントとサービスとの間の通信のメカニズ
ムのさまざまな実施形態を示す流れ図である。
FIG. 45a is a flow diagram illustrating various embodiments of a mechanism of communication between a client and a service using method gates.

【図45b】 メソッド・ゲートを使用するクライアントとサービスとの間の通信のメカニズ
ムのさまざまな実施形態を示す流れ図である。
FIG. 45b is a flow chart illustrating various embodiments of a mechanism of communication between a client and a service using a method gate.

【図45c】 メソッド・ゲートを使用するクライアントとサービスとの間の通信のメカニズ
ムのさまざまな実施形態を示す流れ図である。
FIG. 45c is a flow chart illustrating various embodiments of a mechanism of communication between a client and a service using a method gate.

【図45d】 メソッド・ゲートを使用するクライアントとサービスとの間の通信のメカニズ
ムのさまざまな実施形態を示す流れ図である。
FIG. 45d is a flow chart illustrating various embodiments of a mechanism of communication between a client and a service using a method gate.

【図46】 オブジェクトのXML表現を使用してサービスからクライアントにオブジェク
トを送るメカニズムを示す流れ図である。
FIG. 46 is a flow diagram illustrating a mechanism for sending an object from a service to a client using an XML representation of the object.

【図47】 クライアント・デバイスでセキュリティで保護されたオブジェクト逆コンパイ
ルのメカニズムを示す流れ図である。
FIG. 47 is a flow diagram illustrating a mechanism for secure object decompilation at a client device.

【図48】 分散コンピューティング環境でプロセスのデータ表現言語表現を使用してプロ
セスを移行するメカニズムを示す流れ図である。
FIG. 48 is a flow diagram of a mechanism for migrating a process using a data representation language representation of the process in a distributed computing environment.

───────────────────────────────────────────────────── フロントページの続き (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)優先権主張番号 09/663,563 (32)優先日 平成12年9月15日(2000.9.15) (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 (72)発明者 ドゥイゴウ,マイケル・ジェイ アメリカ合衆国・94555・カリフォルニア 州・フリーモント・カプレット サーク ル・33928 Fターム(参考) 5B081 CC01 【要約の続き】 を受け付けることができ、これは、オブジェクトの表現 とその参照されているすべてのオブジェクト(オブジェ クト・グラフ)を含み、オブジェクト(およびそのオブ ジェクト・グラフ内のすべてのオブジェクト)を出力す る。一実施形態では、中間形式を使用してデータ表現言 語ドキュメントを表し、この中間形式を動的に処理し、 データ表現言語ドキュメントからクラス・インスタンス を生成することができる。─────────────────────────────────────────────────── ─── Continued front page    (31) Priority claim number 60 / 209,430 (32) Priority date June 2, 2000 (June 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 60 / 209,140 (32) Priority date June 2, 2000 (June 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 663,563 (32) Priority date September 15, 2000 (September 15, 2000) (33) Priority claiming countries United States (US) (81) Designated countries 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) Inventor Soulpuff, Thomas Yee             United States95120California             State San Jose Brett Heart Dry             B 6938 (72) Inventor Traversat, Bernard A.             United States94109California             State / San Francisco / California             Street 2055 Apartment 402 (72) Inventor Abderazis, Mohammed Em             United States95051 California             State Santa Clara Cabot Aveni             U 78 (72) Inventor Duigo, Michael Jay             United States · 94555 · California             State / Fremont Caplet Sark             Le 33928 F-term (reference) 5B081 CC01 [Continued summary] Can be accepted, which is a representation of the object And all its referenced objects (objects Object graph (and its object Output all objects in the eject graph) It In one embodiment, an intermediate format is used to represent the data representation language. Represents a word document, dynamically processing this intermediate form, Data representation language document to class instance Can be generated.

Claims (90)

【特許請求の範囲】[Claims] 【請求項1】 データ表現言語でコンピュータ・プログラミング言語オブジ
ェクトを表現する方法であって、 第1のコンピュータ・プログラミング言語オブジェクトを仮想マシンのコンパ
イル・プロセスに送る仮想マシン内で実行されプロセスであって、第1のオブジ
ェクトがコンピュータ・プログラミング言語によるクラスのインスタンスである
、プロセスと、 第1のオブジェクトを第1のオブジェクトのデータ表現言語表現に変換する仮
想マシンのコンパイル・プロセスを含み、 第1のオブジェクトのデータ表現言語表現が第1のオブジェクトのコピーを生
成する際に使用するように構成される方法。
1. A method of expressing a computer programming language object in a data representation language, the process executing in a virtual machine that sends a first computer programming language object to a compilation process of a virtual machine, the method comprising: A first object is an instance of a class in a computer programming language, and a process of compiling a virtual machine for converting the first object into a data representation language representation of the first object; A method in which a data representation language representation is configured for use in generating a copy of a first object.
【請求項2】 第1のオブジェクトが1つまたは複数のコンピュータ・プロ
グラミング言語オブジェクトを参照し、第1のオブジェクトを第1のオブジェク
トのデータ表現言語表現に変換する仮想マシンのコンパイル・プロセスが1つま
たは複数のオブジェクトをその1つまたは複数のオブジェクトのデータ表現言語
表現に変換するコンパイル・プロセスを含む請求項1に記載の方法。
2. A virtual machine compilation process in which a first object references one or more computer programming language objects and transforms the first object into a data representation language representation of the first object. The method of claim 1 or including a compilation process for converting a plurality of objects into a data representation language representation of the one or more objects.
【請求項3】 第1のオブジェクトを第1のオブジェクトのデータ表現言語
表現に変換する仮想マシンのコンパイル・プロセスが、 第1のオブジェクトを処理して、第1のオブジェクトの中間テーブル表現にす
るステップと、 第1のオブジェクトの中間テーブル表現を処理して、第1のオブジェクトのデ
ータ表現言語表現にするプロセスとを含む請求項1に記載の方法。
3. A virtual machine compilation process for converting a first object into a data representation language representation of the first object processing the first object into an intermediate table representation of the first object. The method of claim 1, comprising: processing an intermediate table representation of the first object into a data representation language representation of the first object.
【請求項4】 第1のオブジェクトが1つまたは複数のインスタンス変数を
含み、第1のオブジェクトを中間テーブル表現に処理する前記ステップが、 第1のオブジェクト内の1つまたは複数のインスタンス変数のそれぞれについ
て、第1のオブジェクトの中間テーブル表現のエントリを生成するステップを含
み、1つまたは複数のインスタンス変数のそれぞれのエントリがインスタンス変
数の識別子とインスタンス変数の値を含む請求項3に記載の方法。
4. The first object includes one or more instance variables, and the step of processing the first object into an intermediate table representation includes each of the one or more instance variables in the first object. A method according to claim 3, including the step of generating an entry of an intermediate table representation of the first object for each of the one or more instance variables, each entry including an identifier of the instance variable and a value of the instance variable.
【請求項5】 第1のオブジェクトが同じ識別子を持つ複数のインスタンス
変数を含み、同じ識別子を持つ複数のインスタンス変数のそれぞれのエントリが
さらに同じ識別子を持つ複数のインスタンス変数でインスタンス変数を一意に識
別する列挙型値を含む請求項4に記載の方法。
5. The first object includes a plurality of instance variables having the same identifier, and each entry of the plurality of instance variables having the same identifier further uniquely identifies the instance variable by the plurality of instance variables having the same identifier. 5. The method of claim 4, including enumerated values that:
【請求項6】 第1のオブジェクトの中間テーブル表現を第1のオブジェク
トのデータ表現言語表現に処理するステップが、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、第1のオブジェクトのデータ表現言語表現で対応する要素を生成
するステップを含み、第1のオブジェクトのデータ表現言語表現内の要素がイン
スタンス変数の識別子とインスタンス変数の値を含む請求項4に記載の方法。
6. The step of processing the intermediate table representation of the first object into a data representation language representation of the first object includes, for each of the one or more entries in the intermediate table representation of the first object, 5. The method of claim 4, including the step of generating a corresponding element in the data representation language representation of the one object, the elements in the data representation language representation of the first object including an instance variable identifier and an instance variable value. .
【請求項7】 第1のオブジェクトのコピー内の1つまたは複数の対応する
インスタンス変数を初期化する際に使用するように第1のオブジェクトのデータ
表現言語表現の1つまたは複数の要素を構成する請求項6に記載の方法。
7. Configuring one or more elements of a data representation language representation of a first object for use in initializing one or more corresponding instance variables in a copy of the first object. The method according to claim 6, wherein
【請求項8】 さらに、コンパイル・プロセスにアプリケーション・プログ
ラミング・インターフェース(API)を提供するステップを含み、このAPI
はコンピュータ・プログラミング言語オブジェクトをオブジェクトのデータ表現
言語表現に変換する仮想マシン内で実行されるプロセスにより使用されるように
構成されたコンパイル・プロセスの1つまたは複数のメソッドとインターフェー
スする請求項1に記載の方法。
8. The method further comprising providing an application programming interface (API) to the compilation process, the API
Interface with one or more methods of a compilation process configured for use by a process executing within a virtual machine that transforms a computer programming language object into a data representation language representation of the object. The method described.
【請求項9】 前記データ表現言語が拡張マークアップ言語(XML)であ
る請求項1に記載の方法。
9. The method of claim 1, wherein the data representation language is Extensible Markup Language (XML).
【請求項10】 前記コンピュータ・プログラミング言語がJava(登録
商標)プログラミング言語である請求項1に記載の方法。
10. The method of claim 1, wherein the computer programming language is the Java® programming language.
【請求項11】 仮想マシンがJava仮想マシン(JVM)である請求項
1に記載の方法。
11. The method of claim 1, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項12】 オブジェクトのデータ表現言語表現からコンピュータ・プ
ログラミング言語オブジェクトを生成する方法であって、 仮想マシンが第1のプロセスから第1のコンピュータ・プログラミング言語オ
ブジェクトのデータ表現言語表現を受け取り、 仮想マシンの逆コンパイル・プロセスが、コンピュータ・プログラミング言語
内のクラスのインスタンスである第1のオブジェクトのデータ表現言語表現から
第1のオブジェクトを生成し、 その仮想マシンの逆コンパイル・プロセスが第1のオブジェクトを仮想マシン
内で実行される第2のプロセスに送ることを含む方法。
12. A method of generating a computer programming language object from a data representation language representation of an object, the virtual machine receiving a data representation language representation of a first computer programming language object from a first process, the method comprising: A decompilation process of the machine produces a first object from a data representation language representation of a first object that is an instance of a class in a computer programming language, and the decompilation process of the virtual machine produces the first object To a second process executing in the virtual machine.
【請求項13】 第1のオブジェクトが1つまたは複数のコンピュータ・プ
ログラミング言語オブジェクトを参照し、第1のオブジェクトの表現が1つまた
は複数の参照されているオブジェクトの表現を含む請求項12に記載の方法。
13. The method of claim 12, wherein the first object refers to one or more computer programming language objects and the representation of the first object includes a representation of one or more referenced objects. the method of.
【請求項14】 第1のオブジェクトの表現から第1のオブジェクトを生成
する仮想マシンの逆コンパイル・プロセスが第1のオブジェクトの表現に含まれ
る1つまたは複数の参照されているオブジェクトの表現から1つまたは複数の参
照されているオブジェクトを生成する逆コンパイル・プロセスを含む請求項13
に記載の方法。
14. A decompilation process of a virtual machine that generates a first object from a representation of a first object is one of a representation of one or more referenced objects included in the representation of the first object. 14. A decompilation process that produces one or more referenced objects.
The method described in.
【請求項15】 第1のオブジェクのデータ表現言語表現から第1のオブジ
ェクトを生成する逆コンパイル・プロセスが、 第1のオブジェクトのデータ表現言語表現を第1のオブジェクトの中間テーブ
ル表現に処理し、 第1のオブジェクトを第1のオブジェクトの中間テーブル表現から生成する請
求項12に記載の方法。
15. A decompilation process that generates a first object from a data representation language representation of a first object processes the data representation language representation of the first object into an intermediate table representation of the first object, The method of claim 12, wherein the first object is generated from an intermediate table representation of the first object.
【請求項16】 第1のオブジェクトのデータ表現言語表現が、それぞれが
第1のオブジェクトのインスタンス変数を表す1つまたは複数の要素を含み、デ
ータ表現言語表現内の各要素がその要素によって表されるインスタンス変数の識
別子とその要素によって表されるインスタンス変数の値を含む請求項15に記載
の方法。
16. A data representation language representation of a first object includes one or more elements each representing an instance variable of the first object, each element in the data representation language representation being represented by that element. 16. The method of claim 15 including the instance variable identifier represented by the instance variable and the value of the instance variable represented by the element.
【請求項17】 第1のオブジェクトのデータ表現言語表現を第1のオブジ
ェクトの中間テーブル表現に処理することが第1のオブジェクトのデータ表現言
語表現内の1つまたは複数の要素のそれぞれについて第1のオブジェクトの中間
テーブル表現内にエントリを生成することを含む請求項16に記載の方法。
17. Processing a data representation language representation of a first object into an intermediate table representation of the first object is a first for each of one or more elements in the data representation language representation of the first object. 17. The method of claim 16 including creating an entry in the intermediate table representation of the object of the.
【請求項18】 第1のオブジェクを第1のオブジェクトの中間テーブル表
現から生成することが、 第1のオブジェクトをクラスのインスタンスとしてインスタンス化し、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、そのエントリに従って第1のオブジェクト内の対応するインスタ
ンス変数を初期化することを含む請求項17に記載の方法。
18. Generating a first object from an intermediate table representation of a first object instantiates the first object as an instance of a class, one or more in the intermediate table representation of the first object. 18. The method of claim 17, comprising, for each of the entries of, initialize a corresponding instance variable in the first object according to the entry.
【請求項19】 第1のオブジェクトの中間テーブル表現を第1のオブジェ
クに処理することが、 第1のオブジェクトをクラスのインスタンスとしてインスタンス化し、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、第1のオブジェクト内の対応するインスタンス変数をエントリか
らのインスタンス変数の値に初期化するエントリからのインスタンス変数の識別
子に対応するメソッドを呼び出すことを含む請求項17に記載の方法。
19. Processing an intermediate table representation of a first object into a first object instantiating the first object as an instance of a class, one or more in the intermediate table representation of the first object. 18. For each of the entries of, including invoking a method corresponding to the identifier of the instance variable from the entry that initializes the corresponding instance variable in the first object to the value of the instance variable from the entry. Method.
【請求項20】 第1のオブジェクトのデータ表現言語表現が第1のオブジ
ェクトのクラスの識別子を含み、第1のオブジェクトを第1のオブジェクトのデ
ータ表現言語表現から生成する逆コンパイル・プロセスが第1のオブジェクトを
クラス識別子と関連するクラスのインスタンスとしてインスタンス化することを
含む請求項12に記載の方法。
20. A decompilation process for generating a first object from a data representation language representation of a first object, wherein the data representation language representation of the first object includes an identifier of a class of the first object, and 13. The method of claim 12 including instantiating the object in the object as an instance of the class associated with the class identifier.
【請求項21】 さらに、逆コンパイル・プロセスにアプリケーション・プ
ログラミング・インターフェース(API)を提供することを含み、このAPI
はコンピュータ・プログラミング言語オブジェクトをオブジェクトのデータ表現
言語表現から生成する仮想マシン内で実行されるプロセスにより使用されるよう
に構成された逆コンパイル・プロセスの1つまたは複数のメソッドとインターフ
ェースする請求項12に記載の方法。
21. The API further comprising providing an application programming interface (API) to the decompilation process.
13. Interface with one or more methods of a decompilation process configured for use by a process executing within a virtual machine that generates a computer programming language object from a data representation language representation of an object. The method described in.
【請求項22】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項12に記載の方法。
22. The method of claim 12, wherein the data representation language is Extensible Markup Language (XML).
【請求項23】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項12に記載の方法。
23. The method of claim 12, wherein the computer programming language is the Java programming language.
【請求項24】 仮想マシンがJava仮想マシン(JVM)である請求項
12に記載の方法。
24. The method of claim 12, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項25】 分散コンピューティング環境内のプロセス間でコンピュー
タ・プログラミング言語オブジェクトを受け渡す方法であって、 第1の仮想マシンが第1のプロセスからコンピュータ・プログラミング言語オ
ブジェクトを受け取り、その際、オブジェクトがコンピュータ・プログラミング
言語のクラスのインスタンスであり、 第1の仮想マシンが前記受け取りの後にデータ表現言語でオブジェクトの表現
を生成し、 オブジェクトのデータ表現言語表現を含むメッセージをデータ表現言語で生成
し、 メッセージを第2のプロセスに送り、 第2のプロセスがコンピュータ・プログラミング言語オブジェクトのコピーを
メッセージに含まれるオブジェクトのデータ表現言語表現から生成することを含
む方法。
25. A method of passing a computer programming language object between processes in a distributed computing environment, wherein a first virtual machine receives a computer programming language object from a first process, wherein the object Is an instance of a class of computer programming language, the first virtual machine generating a representation of the object in the data representation language after said receiving, and generating a message in the data representation language containing the data representation language representation of the object, A method comprising sending a message to a second process, the second process generating a copy of a computer programming language object from a data representation language representation of an object included in the message.
【請求項26】 オブジェクトが1つまたは複数のコンピュータ・プログラ
ミング言語オブジェクトを参照し、オブジェクトの表現をデータ表現言語で生成
することが1つまたは複数のオブジェクトのデータ表現言語表現を生成すること
を含む請求項25に記載の方法。
26. An object refers to one or more computer programming language objects, and generating a representation of the object in a data representation language includes generating a data representation language representation of the one or more objects. The method of claim 25.
【請求項27】 オブジェクトが1つまたは複数のインスタンス変数を含み
、オブジェクトの表現をデータ表現言語で生成することが、 オブジェクト内の1つまたは複数のインスタンス変数のそれぞれについて、要
素を第1のオブジェクトのデータ表現言語表現で生成することを含み、1つまた
は複数のインスタンス変数のそれぞれの要素がインスタンス変数の識別子とイン
スタンス変数の値を含む請求項25に記載の方法。
27. The object includes one or more instance variables, and generating a representation of the object in a data representation language includes providing an element for each of the one or more instance variables in the object as a first object. 26. The method of claim 25, wherein each element of the one or more instance variables comprises an identifier of the instance variable and a value of the instance variable, the method comprising:
【請求項28】 オブジェクトのコピーを生成する第2のプロセスが、 オブジェクトのデータ表現言語表現を含むメッセージを受け取り、 オブジェクトのデータ表現言語表現を第2の仮想マシンに送り、 第2の仮想マシンがオブジェクトのコピーをオブジェクトのデータ表現言語表
現から生成し、 第2の仮想マシンがオブジェクトのコピーを第2のプロセスに送ることを含む
請求項25に記載の方法。
28. A second process of creating a copy of an object receives a message containing a data representation language representation of an object and sends the data representation language representation of the object to a second virtual machine, the second virtual machine 26. The method of claim 25, comprising generating a copy of the object from a data representation language representation of the object, the second virtual machine sending the copy of the object to a second process.
【請求項29】 第1のオブジェクトが1つまたは複数のコンピュータ・プ
ログラミング言語オブジェクトを参照し、第1のオブジェクトのデータ表現言語
表現が1つまたは複数の参照されているオブジェクトのデータ表現言語表現を含
み、オブジェクトのコピーをオブジェクトのデータ表現言語表現から生成するこ
とが1つまたは複数の参照されているオブジェクトのコピーを1つまたは複数の
参照されているオブジェクトのデータ表現言語表現から生成することを含む請求
項28に記載の方法。
29. A first object refers to one or more computer programming language objects, and a data representation language representation of the first object is a data representation language representation of one or more referenced objects. Generating a copy of the object from the data representation language representation of the object, including generating a copy of the one or more referenced objects from the data representation language representation of the one or more referenced objects. 29. The method of claim 28, including.
【請求項30】 オブジェクトのデータ表現言語表現が、それぞれがオブジ
ェクトのインスタンス変数を表す1つまたは複数の要素を含み、オブジェクトの
コピーをオブジェクトのデータ表現言語表現から生成することが、 オブジェクトのコピーをクラスのインスタンスとしてインスタンス化し、 オブジェクトのデータ表現言語表現内の1つまたは複数の要素のそれぞれにつ
いて、その要素に従ってオブジェクトのコピー内の対応するインスタンス変数を
初期化することを含む請求項28に記載の方法。
30. A data representation language representation of an object includes one or more elements, each of which represents an instance variable of the object, and generating a copy of the object from the data representation language representation of the object creates a copy of the object. 29. The method of claim 28, including instantiating as an instance of the class and for each of one or more elements in the data representation language representation of the object, corresponding instance variables in the copy of the object according to the element. Method.
【請求項31】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項25に記載の方法。
31. The method of claim 25, wherein the data representation language is Extensible Markup Language (XML).
【請求項32】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項25に記載の方法。
32. The method of claim 25, wherein the computer programming language is the Java programming language.
【請求項33】 第1の仮想マシンがJava仮想マシン(JVM)である
請求項25に記載の方法。
33. The method of claim 25, wherein the first virtual machine is a Java Virtual Machine (JVM).
【請求項34】 分散コンピューティング環境内のプロセス間でコンピュー
タ・プログラミング言語オブジェクトを受け渡す方法であって、 データ表現言語によるメッセージであって、コンピュータ・プログラミング言
語オブジェクトを表す情報が含まれるメッセージを第1のプロセスが第2のプロ
セスから受け取り、 第1のプロセスがオブジェクトを表す情報を仮想マシンに送り、 仮想マシンが、コンピュータ・プログラミング言語のクラスのインスタンスで
あるオブジェクトを表す情報からそのオブジェクトを生成し、 仮想マシンが、生成されたオブジェクトを第1のプロセスに提供することを含
む方法。
34. A method of passing a computer programming language object between processes in a distributed computing environment, the method comprising: a message in a data representation language, the message including information representative of the computer programming language object. One process receives from a second process, the first process sends information representing an object to a virtual machine, and the virtual machine creates the object from the information representing the object that is an instance of a class of computer programming language. , A virtual machine providing the created object to a first process.
【請求項35】 オブジェクトを表す情報がオブジェクトの1つまたは複数
のインスタンス変数を表す情報を含み、1つまたは複数のインスタンス変数のそ
れぞれを表す情報がインスタンス変数の識別子とインスタンス変数の値を含む請
求項34に記載に方法。
35. The information representing the object includes information representing one or more instance variables of the object, and the information representing each of the one or more instance variables includes an identifier of the instance variable and a value of the instance variable. Item 34. The method according to Item 34.
【請求項36】 オブジェクをそのオブジェクトを表す情報から生成するこ
とが、 オブジェクトをクラスのインスタンスとしてインスタンス化し、 1つまたは複数のインスタンス変数のそれぞれについて、インスタンス変数を
表す情報に従ってオブジェクト内の対応するインスタンス変数を初期化すること
を含む請求項35に記載の方法。
36. Generating an object from information representing its object instantiates the object as an instance of a class, and for each of one or more instance variables, a corresponding instance in the object according to the information representing the instance variable. 36. The method of claim 35, including initializing a variable.
【請求項37】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項34に記載の方法。
37. The method of claim 34, wherein the data representation language is Extensible Markup Language (XML).
【請求項38】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項34に記載の方法。
38. The method of claim 34, wherein the computer programming language is the Java programming language.
【請求項39】 仮想マシンがJava仮想マシン(JVM)である請求項
34に記載の方法。
39. The method of claim 34, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項40】 プロセッサと、 プロセッサで実行可能な仮想マシン・プログラム命令を含むメモリと を備え、前記命令が コンピュータ・プログラミング言語のクラスのインスタンスである第1のコン
ピュータ・プログラミング言語オブジェクトを第1のオブジェクトのデータ表現
言語表現に変換し、 第1のオブジェクトのデータ表現言語表現が第1のオブジェクトのコピーを生
成する際に使用するように構成されているデバイス。
40. A first computer programming language object comprising a processor and a memory containing virtual machine program instructions executable by the processor, the first computer programming language object being an instance of a class of the computer programming language. A device configured to convert to a data representation language representation of an object and to be used by the data representation language representation of the first object to create a copy of the first object.
【請求項41】 仮想マシン・プログラム命令が、 仮想マシンを設け、 第1のコンピュータ・プログラミング言語オブジェクトを仮想マシン内で実行
されるプロセスから受け取るようにさらに実行可能である請求項40に記載のデ
バイス。
41. The device of claim 40, wherein the virtual machine program instructions are further executable to provide a virtual machine and receive a first computer programming language object from a process executing within the virtual machine. .
【請求項42】 第1のオブジェクトを第1のオブジェクトのデータ表現言
語表現に変換する際に、仮想マシン・プログラム命令が、 第1のオブジェクトを第1のオブジェクトの中間テーブル表現に処理し、 第1のオブジェクトの中間テーブル表現を第1のオブジェクトのデータ表現言
語表現に処理するように実行可能である請求項40に記載のデバイス。
42. In converting the first object into a data representation language representation of the first object, virtual machine program instructions process the first object into an intermediate table representation of the first object, 41. The device of claim 40, wherein the device is executable to process an intermediate table representation of one object into a data representation language representation of a first object.
【請求項43】 第1のオブジェクトが1つまたは複数のインスタンス変数
を含み、第1のオブジェクトを中間テーブル表現に処理する際に、仮想マシン・
プログラム命令が、 第1のオブジェクト内の1つまたは複数のインスタンス変数のそれぞれについ
て第1のオブジェクトの中間テーブル表現のエントリを生成するように実行可能
であり、1つまたは複数のインスタンス変数のそれぞれのエントリがインスタン
ス変数の識別子とインスタンス変数の値を含む請求項42に記載のデバイス。
43. A virtual machine, when the first object contains one or more instance variables, the first object being processed into an intermediate table representation.
Program instructions are executable to generate an entry for an intermediate table representation of the first object for each of the one or more instance variables in the first object, and for each of the one or more instance variables. 43. The device of claim 42, wherein the entry comprises an instance variable identifier and an instance variable value.
【請求項44】 第1のオブジェクトの中間テーブル表現を第1のオブジェ
クトのデータ表現言語表現に処理する際に、仮想マシン・プログラム命令が、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、第1のオブジェクトのデータ表現言語表現で対応する要素を生成
るように実行可能であり、第1のオブジェクトのデータ表現言語表現内の要素が
インスタンス変数の識別子とインスタンス変数の値を含み、 第1のオブジェクトのデータ表現言語表現の1つまたは複数の要素が、第1の
オブジェクトのコピー内の1つまたは複数の対応するインスタンス変数を初期化
する際に使用するように構成されている請求項43に記載のデバイス。
44. In processing the intermediate table representation of the first object into a data representation language representation of the first object, the virtual machine program instructions include one or more virtual machine program instructions in the intermediate table representation of the first object. For each of the entries of the first object, the element in the data representation language representation of the first object is executable, and the element in the data representation language representation of the first object is an instance variable identifier and an instance variable A value, configured to be used by one or more elements of the first object's data representation language representation in initializing one or more corresponding instance variables in the copy of the first object 44. The device of claim 43, which is:
【請求項45】 メモリがさらに、 仮想マシン・プログラム命令へのアプリケーション・プログラミング・インタ
ーフェース(API)を含み、APIは、 入力として、オブジェクトのデータ表現言語表現に変換するためのコンピュー
タ・プログラミング言語オブジェクトを受け取り、 出力として、オブジェクトのデータ表現言語表現を送るように構成されている
請求項44に記載のデバイス。
45. The memory further comprises an application programming interface (API) to virtual machine program instructions, the API receiving as input a computer programming language object for converting a data representation language representation of the object. 45. The device of claim 44, configured to receive and, as output, send a data representation language representation of an object.
【請求項46】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項40に記載のデバイス。
46. The device of claim 40, wherein the data representation language is Extensible Markup Language (XML).
【請求項47】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項40に記載のデバイス。
47. The device of claim 40, wherein the computer programming language is the Java programming language.
【請求項48】 仮想マシン・プログラミング命令が、バイトコードをプロ
セス上で実行可能なプログラム命令に処理するように構成されている仮想マシン
を実現するように実行可能である請求項40に記載のデバイス。
48. The device of claim 40, wherein the virtual machine programming instructions are executable to implement a virtual machine configured to process bytecodes into process-executable program instructions. .
【請求項49】 仮想マシンがJava仮想マシン(JVM)である請求項
48に記載のデバイス。
49. The device of claim 48, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項50】 プロセッサと、 プロセッサ上で実行可能な仮想マシン・プログラム命令を含むメモリと を備え、前記命令が 第1のコンピュータ・プログラミング言語オブジェクトのデータ表現言語表現
を受け取り、 コンピュータ・プログラミング言語内のクラスのインスタンスである第1のオ
ブジェクトのデータ表現言語表現から第1のオブジェクトを生成するデバイス。
50. A processor and a memory containing virtual machine program instructions executable on the processor, the instructions receiving a data representation language representation of a first computer programming language object, the computer programming language comprising: A device that creates a first object from a data representation language representation of a first object that is an instance of a class of.
【請求項51】 仮想マシン・プログラム命令が、 仮想マシンを用いて、 生成された第1のオブジェクトを仮想マシン上で実行されるプロセスに送るよ
うに実行可能である請求項50に記載のデバイス。
51. The device of claim 50, wherein the virtual machine program instructions are executable to use the virtual machine to send the created first object to a process executing on the virtual machine.
【請求項52】 第1のオブジェクトが1つまたは複数のコンピュータ・プ
ログラミング言語オブジェクトを参照し、第1のオブジェクトの表現が1つまた
は複数の参照されているオブジェクトの表現を含み、第1のオブジェクトを第1
のをオブジェクトの表現から生成する際に、仮想マシン・プログラム命令が、1
つまたは複数の参照されているオブジェクトを第1のオブジェクトの表現に含ま
れる1つまたは複数の参照されているオブジェクトの表現から生成するようにさ
らに実行可能である請求項50に記載のデバイス。
52. A first object refers to one or more computer programming language objects, and a representation of the first object includes a representation of one or more referenced objects, the first object The first
When a virtual machine program instruction is generated from the representation of an object,
51. The device of claim 50, further executable to generate one or more referenced objects from a representation of one or more referenced objects contained in a representation of the first object.
【請求項53】 第1のオブジェクトを第1のオブジェクトのデータ表現言
語表現を生成する際に、仮想マシン・プログラム命令が 第1のオブジェクトのデータ表現言語表現を第1のオブジェクトの中間テーブ
ル表現に処理し、 第1のオブジェクトを第1のオブジェクトの中間テーブル表現から生成するよ
うにさらに実行可能である請求項50に記載のデバイス。
53. When generating a data representation language representation of a first object for a first object, a virtual machine program instruction converts the data representation language representation of the first object into an intermediate table representation of the first object. 51. The device of claim 50, further operable to process and generate a first object from an intermediate table representation of the first object.
【請求項54】 第1のオブジェクトのデータ表現言語表現が、それぞれが
第1のオブジェクトのインスタンス変数を表す1つまたは複数の要素を含み、デ
ータ表現言語表現内の各要素がその要素によって表されるインスタンス変数の識
別子とその要素によって表されるインスタンス変数の値を含む請求項50に記載
のデバイス。
54. A data representation language representation of a first object includes one or more elements each representing an instance variable of the first object, each element in the data representation language representation being represented by that element. 51. The device of claim 50, comprising the instance variable identifier represented by the instance variable and the value of the instance variable represented by the element.
【請求項55】 第1のオブジェクトのデータ表現言語表現を第1のオブジ
ェクトの中間テーブル表現に処理する際に、仮想マシン・プログラム命令が、第
1のオブジェクトのデータ表現言語表現内の1つまたは複数の要素のそれぞれに
ついて第1のオブジェクトの中間テーブル表現内にエントリを生成するようにさ
らに実行可能である請求項54に記載のデバイス。
55. In processing the data representation language representation of the first object into an intermediate table representation of the first object, a virtual machine program instruction causes one or more of the data representation language representation of the first object to be processed. 55. The device of claim 54, further executable to create an entry in the intermediate table representation of the first object for each of the plurality of elements.
【請求項56】 第1のオブジェクトの中間テーブル表現を第1のオブジェ
クトに処理する際に、仮想マシン・プログラム命令が、 第1のオブジェクトをクラスのインスタンスとしてインスタンス化し、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、エントリからインスタンス変数の識別子に対応するメソッドを呼
び出すりょうにさらに実行可能であり、このメソッドは第1のオブジェクト内の
対応するインスタンス変数をエントリからのインスタンス変数の値に初期化する
請求項55に記載のデバイス。
56. In processing an intermediate table representation of a first object into a first object, a virtual machine program instruction instantiates the first object as an instance of a class, the intermediate table of the first object. For each of the one or more entries in the representation, the method can further be executed from the entry by calling the method corresponding to the identifier of the instance variable, which method returns the corresponding instance variable in the first object from the entry. 56. The device of claim 55, which initializes to the value of an instance variable.
【請求項57】 さらに、仮想マシン・プログラム命令へのアプリケーショ
ン・プログラミング・インターフェース(API)を含み、APIは、 入力として、第1のオブジェクトのデータ表現言語表現を受け取り、 出力として、生成された第1のオブジェクトを送るように構成されている請求
項51に記載のデバイス。
57. Further comprising an application programming interface (API) to virtual machine program instructions, the API receiving as input a data representation language representation of a first object and, as output, a generated first representation. 52. The device of claim 51 configured to send an object of 1.
【請求項58】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項50に記載のデバイス。
58. The device of claim 50, wherein the data representation language is Extensible Markup Language (XML).
【請求項59】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項50に記載のデバイス。
59. The device of claim 50, wherein the computer programming language is the Java programming language.
【請求項60】 仮想マシン・プログラミング命令が、バイトコードをプロ
セス上で実行可能なプログラム命令に処理するように構成されている仮想マシン
を実現するようにさらに実行可能である請求項50に記載のデバイス。
60. The virtual machine programming instructions are further executable to implement a virtual machine configured to process bytecodes into program instructions executable on a process. device.
【請求項61】 仮想マシンがJava仮想マシン(JVM)である請求項
60に記載のデバイス。
61. The device of claim 60, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項62】 分散コンピューティング・システムであって、 第1のプロセッサと、 第1のメモリとを 備える第1のデバイスを備え、 第1メモリが 第1の仮想マシンを実現するために第1のプロセッサ上で実行可能な仮想マシ
ン・プログラム命令と、 第1の仮想マシン内で実行可能な第1のプロセスを含み、 第1の仮想マシンが、 オブジェクトがコンピュータ・プログラミング言語のクラスのインスタンスで
あるとき、第1のプロセスからコンピュータ・プログラミング言語オブジェクト
を受け取り、 前記受け取りの後にデータ表現言語でオブジェクトの表現を生成するように動
作し、 第1のプロセスが、 オブジェクトのデータ表現言語表現を含むメッセージをデータ表現言語で生成
する分散コンピューティング・システム。
62. A distributed computing system comprising: a first device comprising a first processor and a first memory, the first memory for implementing a first virtual machine. A virtual machine program instructions executable on a processor of the first virtual machine and a first process executable on the first virtual machine, the first virtual machine being an instance of an object of a class of a computer programming language. When receiving a computer programming language object from the first process and operative to generate a representation of the object in a data representation language after said receiving, the first process sending a message containing the data representation language representation of the object. A distributed computing system generated by a data expression language.
【請求項63】 さらに、 第2のプロセッサと、 第2のメモリとを備える第2のデバイスを備え、 第2のメモリが、 第2の仮想マシンを実現するために第2のプロセッサ上で実行可能な仮想マシ
ン・プログラム命令と、 第2の仮想マシン内で実行可能な第2のプロセスを含み、 第1のプロセスがさらに、メッセージを第2のプロセスに送るように動作可能
な請求項62に記載のシステム。
63. A second device further comprising a second processor and a second memory, the second memory executing on the second processor to implement a second virtual machine. 63. The method of claim 62, comprising possible virtual machine program instructions and a second process executable in a second virtual machine, the first process further operable to send a message to the second process. The system described.
【請求項64】 第2のプロセスが、 オブジェクトのデータ表現言語表現を含むメッセージを受け取り、 オブジェクトのデータ表現言語表現を第2の仮想マシンに送るように動作可能
であり、 第2の仮想マシンが、 オブジェクトのコピーをオブジェクトのデータ表現言語表現から生成し、 オブジェクトのコピーを第2のプロセスに送るように動作可能な請求項63に
記載のシステム。
64. A second process is operable to receive a message containing a data representation language representation of an object and send the data representation language representation of the object to a second virtual machine, the second virtual machine 64. The system of claim 63, wherein the system is operable to generate a copy of the object from the data representation language representation of the object and send the copy of the object to the second process.
【請求項65】 第1の仮想マシンおよび第2の仮想マシンがさらに、バイ
トコードをプロセス上で実行可能なプログラム命令に処理するように動作可能な
請求項63に記載のシステム。
65. The system of claim 63, wherein the first virtual machine and the second virtual machine are further operable to process the bytecode into program instructions executable on the process.
【請求項66】 第1の仮想マシンおよび第2の仮想マシンがJava仮想
マシン(JVM)である請求項63に記載のシステム。
66. The system of claim 63, wherein the first virtual machine and the second virtual machine are Java virtual machines (JVM).
【請求項67】 第1のオブジェクトが1つまたは複数のコンピュータ・プ
ログラミング言語オブジェクトを参照し、第1のオブジェクトのデータ表現言語
表現が1つまたは複数の参照されているオブジェクトのデータ表現言語表現を含
み、オブジェクトのコピーをオブジェクトのデータ表現言語表現から生成する際
に、第2の仮想マシンが1つまたは複数の参照されているオブジェクトのコピー
を1つまたは複数の参照されているオブジェクトのデータ表現言語表現から生成
するようにさらに動作可能な請求項62に記載のシステム。
67. A first object refers to one or more computer programming language objects, and a data representation language representation of the first object is a data representation language representation of one or more referenced objects. A second virtual machine, in generating a copy of the object from the data representation language representation of the object, the second virtual machine includes a copy of the referenced object or data representations of the referenced object or objects. 63. The system of claim 62, further operable to generate from a linguistic representation.
【請求項68】 オブジェクトのデータ表現言語表現が、それぞれがオブジ
ェクトのインスタンス変数を表す1つまたは複数の要素を含み、オブジェクトの
コピーをオブジェクトのデータ表現言語表現から生成する際に、第2の仮想マシ
ンがさらに、 オブジェクトのコピーをクラスのインスタンスとしてインスタンス化し、 オブジェクトのデータ表現言語表現内の1つまたは複数の要素のそれぞれにつ
いて、その要素に従ってオブジェクトのコピー内の対応するインスタンス変数を
初期化するように動作可能な請求項62に記載のシステム。
68. A second virtual representation in generating a copy of an object from a data representation language representation of an object, the data representation language representation of the object including one or more elements, each representing an instance variable of the object. So that the machine further instantiates a copy of the object as an instance of the class, and for each one or more elements in the data representation language representation of the object, initializes the corresponding instance variable in the copy of the object according to that element. 63. The system of claim 62 operable with.
【請求項69】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項62に記載のシステム。
69. The system of claim 62, wherein the data representation language is Extensible Markup Language (XML).
【請求項70】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項62に記載のシステム。
70. The system of claim 62, wherein the computer programming language is the Java programming language.
【請求項71】 プログラム命令を格納するキャリア媒体であって、そのプ
ログラム命令が、 第1のオブジェクトがコンピュータ・プログラミング言語によるクラスのイン
スタンスであるとき、第1のコンピュータ・プログラミング言語オブジェクトを
仮想マシンのコンパイル・プロセスに送る仮想マシン内で実行されプロセスと、 第1のオブジェクトを第1のオブジェクトのデータ表現言語表現に変換する仮
想マシンのコンパイル・プロセスと を実施するようにコンピュータで実行可能であり、 第1のオブジェクトのデータ表現言語表現が第1のオブジェクトのコピーを生
成する際に使用するように構成されるキャリア媒体。
71. A carrier medium storing program instructions, the program instructions being the first computer programming language object of a virtual machine when the first object is an instance of a class in the computer programming language. Computer-executable to perform a process executed in a virtual machine that sends to a compilation process and a virtual machine compilation process that translates a first object into a data representation language representation of the first object; A carrier medium that is configured for use by a data representation language representation of a first object in generating a copy of the first object.
【請求項72】 第1のオブジェクトを第1のオブジェクトのデータ表現言
語表現に変換する際に、プログラム命令が、 第1のオブジェクトの中間テーブル表現に第1のオブジェクトを処理し、 第1のオブジェクトの中間テーブル表現を第1のオブジェクトのデータ表現言
語表現に処理することを実施するようにさらにコンピュータで実行可能である請
求項71に記載のシステム。
72. When converting the first object into a data representation language representation of the first object, program instructions process the first object into an intermediate table representation of the first object, the first object 72. The system of claim 71, which is further computer-executable to perform processing the intermediate table representation of to the data representation language representation of the first object.
【請求項73】 第1のオブジェクトが1つまたは複数のインスタンス変数
を含み、第1のオブジェクトを中間テーブル表現に処理する際に、プログラム命
令が、 第1のオブジェクト内の1つまたは複数のインスタンス変数のそれぞれについ
て、第1のオブジェクトの中間テーブル表現のエントリを生成することを実施す
るようにさらにコンピュータで実行可能であり、1つまたは複数のインスタンス
変数のそれぞれのエントリがインスタンス変数の識別子とインスタンス変数の値
を含む請求項72に記載のキャリア媒体。
73. The first object includes one or more instance variables, and in processing the first object into an intermediate table representation, a program instruction causes one or more instances in the first object. For each of the variables, further computer-executable to implement generating an entry of an intermediate table representation of the first object, each entry of one or more instance variables being an identifier of the instance variable and the instance 73. The carrier medium of claim 72, including the value of a variable.
【請求項74】 第1のオブジェクトの中間テーブル表現を第1のオブジェ
クトのデータ表現言語表現に処理する際に、プログラム命令が、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、第1のオブジェクトのデータ表現言語表現で対応する要素を生成
することを実施するようにさらにコンピュータで実行可能であり、第1のオブジ
ェクトのデータ表現言語表現内の要素がインスタンス変数の識別子とインスタン
ス変数の値を含む請求項73に記載のキャリア媒体。
74. In processing the intermediate table representation of the first object into a data representation language representation of the first object, a program instruction causes one or more entries in the intermediate table representation of the first object to be processed. For each, it is further computer-executable to perform generating a corresponding element in the data representation language representation of the first object, the element in the data representation language representation of the first object being an identifier of an instance variable. 74. The carrier medium of claim 73, including a value of an instance variable.
【請求項75】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項71に記載のキャリア媒体。
75. The carrier medium of claim 71, wherein the data representation language is Extensible Markup Language (XML).
【請求項76】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項71に記載のキャリア媒体。
76. The carrier medium of claim 71, wherein the computer programming language is the Java programming language.
【請求項77】 仮想マシンがJava仮想マシン(JVM)である請求項
71に記載のキャリア媒体。
77. The carrier medium of claim 71, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項78】 プログラム命令を格納するキャリア媒体であって、プログ
ラム命令は 仮想マシンが第1のプロセスから第1のコンピュータ・プログラミング言語オ
ブジェクトのデータ表現言語表現を受け取り、 仮想マシンの逆コンパイル・プロセスが、コンピュータ・プログラミング言語
内のクラスのインスタンスである第1のオブジェクトのデータ表現言語表現から
第1のオブジェクトを生成し、 仮想マシンの逆コンパイル・プロセスが第1のオブジェクトを仮想マシン内で
実行される第2のプロセスに送ること を実施するコンピュータで実行可能なキャリア媒体。
78. A carrier medium for storing program instructions, the program instructions comprising: a virtual machine receiving a data representation language representation of a first computer programming language object from a first process, the virtual machine decompilation process. Generates a first object from a data representation language representation of a first object that is an instance of a class in a computer programming language and a decompilation process of the virtual machine executes the first object in the virtual machine. A computer-executable carrier medium that implements sending to a second process.
【請求項79】 第1のオブジェクトを第1のオブジェクトのデータ表現言
語表現から生成する際に、プログラム命令が、 第1のオブジェクトのデータ表現言語表現を第1のオブジェクトの中間テーブ
ル表現に処理し、 第1のオブジェクトを第1のオブジェクトの中間テーブル表現から生成するこ
とをさらにコンピュータで実行可能である請求項78に記載のキャリア媒体。
79. When generating the first object from the data representation language representation of the first object, program instructions process the data representation language representation of the first object into an intermediate table representation of the first object. 79. The carrier medium of claim 78, wherein generating the first object from the intermediate table representation of the first object is further computer-executable.
【請求項80】 第1のオブジェクトを第1のオブジェクトの中間テーブル
表現から生成する際に、プログラム命令が、 第1のオブジェクトをクラスのインスタンスとしてインスタンス化し、 第1のオブジェクトの中間テーブル表現内の1つまたは複数のエントリのそれ
ぞれについて、そのエントリに従って第1のオブジェクト内の対応するインスタ
ンス変数を初期化することをさらにコンピュータで実行可能である請求項79に
記載のキャリア媒体。
80. In generating the first object from the intermediate table representation of the first object, a program instruction instantiates the first object as an instance of the class and stores the first object in the intermediate table representation of the first object. 80. The carrier medium of claim 79, wherein for each of the one or more entries, initializing a corresponding instance variable in the first object according to the entry is further computer-executable.
【請求項81】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項78に記載のキャリア媒体。
81. The carrier medium of claim 78, wherein the data representation language is Extensible Markup Language (XML).
【請求項82】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項78に記載のキャリア媒体。
82. The carrier medium of claim 78, wherein the computer programming language is the Java programming language.
【請求項83】 仮想マシンがJava仮想マシン(JVM)である請求項
78に記載のキャリア媒体。
83. The carrier medium of claim 78, wherein the virtual machine is a Java Virtual Machine (JVM).
【請求項84】 プログラム命令を格納するキャリア媒体であって、プログ
ラム命令は、 オブジェクトがコンピュータ・プログラミング言語のクラスのインスタンスで
あるとき、第1の仮想マシンが第1のプロセスからコンピュータ・プログラミン
グ言語オブジェクトを受け取り、 第1の仮想マシンが前記受け取りの後にデータ表現言語でオブジェクトの表現
を生成し、 オブジェクトのデータ表現言語表現を含むメッセージをデータ表現言語で生成
し、 メッセージを第2のプロセスに送り、 第2のプロセスがコンピュータ・プログラミング言語オブジェクトのコピーを
メッセージに含まれるオブジェクトのデータ表現言語表現から生成すること をコンピュータで実行可能であるキャリア媒体。
84. A carrier medium storing program instructions, the program instructions comprising: a first virtual machine from a first process to a computer programming language object when the object is an instance of a class of the computer programming language. The first virtual machine generates a representation of the object in a data representation language after the receipt, generates a message in the data representation language that includes the data representation language representation of the object, and sends the message to the second process, A carrier medium that is computer-executable for a second process to generate a copy of a computer programming language object from a data representation language representation of an object contained in a message.
【請求項85】 オブジェクトが1つまたは複数のインスタンス変数を含み
、オブジェクトの表現をデータ表現言語で生成する際に、プログラム命令が、 オブジェクト内の1つまたは複数のインスタンス変数のそれぞれについて、第
1のオブジェクトのデータ表現言語表現で要素を生成することを実施するように
さらにコンピュータで実行可能であり、1つまたは複数のインスタンス変数はそ
れぞれの要素がインスタンス変数の識別子とインスタンス変数の値を含む請求項
84に記載のキャリア媒体。
85. The object includes one or more instance variables, and when generating the representation of the object in a data representation language, program instructions include a first instruction for each of the one or more instance variables in the object. A computer-implementable to effectuate generating an element in a data representation language representation of an object of the one or more instance variables, each element including an identifier of the instance variable and a value of the instance variable. Item 84. The carrier medium according to Item 84.
【請求項86】 オブジェクトのコピーを生成する際に、プログラム命令が
、 第2のプロセスがオブジェクトのデータ表現言語表現を含むメッセージを受け
取り、 第2のプロセスがオブジェクトのデータ表現言語表現を第2の仮想マシンに送
り、 第2の仮想マシンがオブジェクトのコピーをオブジェクトのデータ表現言語表
現から生成し、 第2の仮想マシンがオブジェクトのコピーを第2のプロセスに送る ことをさらにコンピュータで実行可能である請求項84に記載のキャリア媒体。
86. In producing a copy of an object, a program instruction receives a message in which a second process includes a data representation language representation of the object and the second process receives a data representation language representation of the object. It is further computer executable to send to the virtual machine, the second virtual machine generating a copy of the object from the data representation language representation of the object, and the second virtual machine sending the copy of the object to the second process. A carrier medium according to claim 84.
【請求項87】 オブジェクトのデータ表現言語表現が、それぞれがオブジ
ェクトのインスタンス変数を表す1つまたは複数の要素を含み、オブジェクトの
コピーをオブジェクトのデータ表現言語表現から生成する際に、プログラム命令
が、 オブジェクトのコピーをクラスのインスタンスとしてインスタンス化し、 オブジェクトのデータ表現言語表現内の1つまたは複数の要素のそれぞれにつ
いて、その要素に従ってオブジェクトのコピー内の対応するインスタンス変数を
初期化することをさらにコンピュータで実行可能である請求項86に記載のキャ
リア媒体。
87. A program instruction in generating a copy of an object from a data representation language representation of an object, wherein the data representation language representation of the object includes one or more elements, each representing an instance variable of the object. Further computerizing instantiating a copy of the object as an instance of the class, and for each of one or more elements in the data representation language representation of the object, initializing the corresponding instance variable in the copy of the object according to that element 87. The carrier medium of claim 86, which is executable.
【請求項88】 前記データ表現言語が拡張マークアップ言語(XML)で
ある請求項84に記載のキャリア媒体。
88. The carrier medium of claim 84, wherein the data representation language is Extensible Markup Language (XML).
【請求項89】 前記コンピュータ・プログラミング言語がJavaプログ
ラミング言語である請求項84に記載のキャリア媒体。
89. The carrier medium of claim 84, wherein the computer programming language is the Java programming language.
【請求項90】 第1の仮想マシンがJava仮想マシン(JVM)である
請求項84に記載のキャリア媒体。
90. The carrier medium of claim 84, wherein the first virtual machine is a Java Virtual Machine (JVM).
JP2001583309A 2000-05-09 2001-05-09 Transform objects between computer programming languages and data representation languages Pending JP2003533767A (en)

Applications Claiming Priority (11)

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
US20943000P 2000-06-02 2000-06-02
US20914000P 2000-06-02 2000-06-02
US60/209,140 2000-06-02
US60/209,430 2000-06-02
US09/663,563 US7426721B1 (en) 2000-05-09 2000-09-15 Transformation of objects between a computer programming language and a data representation language
US09/663,563 2000-09-15
PCT/US2001/015276 WO2001086427A2 (en) 2000-05-09 2001-05-09 Transformation of objects between a computer programming language and a data representation language

Publications (1)

Publication Number Publication Date
JP2003533767A true JP2003533767A (en) 2003-11-11

Family

ID=29554518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001583309A Pending JP2003533767A (en) 2000-05-09 2001-05-09 Transform objects between computer programming languages and data representation languages

Country Status (1)

Country Link
JP (1) JP2003533767A (en)

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
US9110711B2 (en) Dynamic displays in a distributed computing environment
US7243356B1 (en) Remote method invocation with secure messaging in a distributed computing environment
EP1281119B1 (en) Mechanism and apparatus for returning results of services 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 (en) Method and apparatus for service proximity discovery
WO2001086419A2 (en) Method and apparatus to discover services using flexible search criteria
WO2001086428A2 (en) Mechanism and apparatus for uri-addressable repositories of service advertisements and other content in a distributed computing environment
WO2001086487A2 (en) Mechanism and apparatus for web-based searching of uri-addressable repositories in a distributed computing environment
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 (en) Transform objects between computer programming languages and data representation languages