JP5277251B2 - モデル・ベースのコンポジット・アプリケーション・プラットフォーム - Google Patents

モデル・ベースのコンポジット・アプリケーション・プラットフォーム Download PDF

Info

Publication number
JP5277251B2
JP5277251B2 JP2010531209A JP2010531209A JP5277251B2 JP 5277251 B2 JP5277251 B2 JP 5277251B2 JP 2010531209 A JP2010531209 A JP 2010531209A JP 2010531209 A JP2010531209 A JP 2010531209A JP 5277251 B2 JP5277251 B2 JP 5277251B2
Authority
JP
Japan
Prior art keywords
component
service
application
message
applications
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.)
Active
Application number
JP2010531209A
Other languages
English (en)
Other versions
JP2011501854A (ja
Inventor
エフ.ボックス ドナルド
ダブリュ.フッド デストリー
エイチ.ラブリング ブラッドフォード
ティ.シュワルツ スティーブン
エス.ピンクストン ジェフリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011501854A publication Critical patent/JP2011501854A/ja
Application granted granted Critical
Publication of JP5277251B2 publication Critical patent/JP5277251B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

データ駆動型のコンポジット・アプリケーション、すなわち、複数のモジュールを組み合わせることによって構築されるアプリケーションを開発しデプロイすることは、特に分散環境でのデプロイメントを考える場合は、困難な作業である可能性がある。
今日まで、具体的な低レベルのプログラミングを知る必要があることが、データ駆動のコンポジット・アプリケーションの開発とデプロイメントに対する厄介な障壁となってきた。
本要約は、抽出した概念を簡潔な形で導入するために提供する。その概念は、後ほど「発明を実施するための形態」でさらに説明する。本要約はクレーム主題の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
諸実施形態では、自律的なコンポジット・アプリケーションおよびサービスを構築およびデプロイできるようにするアーキテクチャが提供される。さらに、分散アプリケーションとサービスの間の通信を可能にするためのインフラが提供される。
1つまたは複数の実施形態では、例示的なアーキテクチャが、接続性サービス、プロセス・サービス、アイデンティティ・サービス、ライフサイクル・サービス、およびツールを含む5つの論理モジュールを備えるかまたは利用する。
図面全体に渡って同じ番号を使用して同様の機能を参照する。
1つまたは複数の実施形態に従うアーキテクチャまたはプラットフォームの高レベルなビューの例を示す図である。 1つまたは複数の実施形態に従うサービス・バスの例の態様を示す図である。 1つまたは複数の実施形態に従って連合名前空間コンポーネントが動作できる環境を示す図である。 1つまたは複数の実施形態に従うセキュリティ・アーキテクチャの例を示す図である。 1つまたは複数の実施形態に従うトランザクション・サービス環境の例を示す図である。 1つまたは複数の実施形態に従うメッセージング・サービス・ノードの例を示す図である。 1つまたは複数の実施形態に従うメッセージング・サービス相互接続の例を示す図である。 1つまたは複数の実施形態に従うプロセス・サービス・コンポーネントの例を示す図である。 1つまたは複数の実施形態に従うプロセス・サービス環境の例を示す図である。 1つまたは複数の実施形態に従うディレクトリ・サービス環境の例を示す図である。 1つまたは複数の実施形態に従うアクセス・サービス環境の例を示す図である。 1つまたは複数の実施形態に従う統合サービス環境の例を示す図である。 1つまたは複数の実施形態に従うアプリケーション・ライフサイクル・サービス環境の例を示す図である。 1つまたは複数の実施形態に従うリポジトリの例を示す図である。 1つまたは複数の実施形態に従う実行コンポーネントの例を示す図である。 1つまたは複数の実施形態に従う分析サービス環境の例を示す図である。 1つまたは複数の実施形態の実装に利用できるシステムの例を示す図である。
概要
上述のように、複数のモジュールを組み合わせることによって構築されたアプリケーションを「コンポジット・アプリケーション」と称する。コンポジット・アプリケーションの様々な部分(例えば、クライアント部、ビジネス処理部、データ記憶部、等)を全く異なる環境(例えば、ASP.NET、BizTalk、SQL Server)で実行することができ、このことが、アプリケーションを全体的に扱うことを非常に難しくしている。さらに、コンポジット・アプリケーションのライフサイクルの様々な場面はしばしば、仮に自動化されていても、その自動化は貧弱である。今日まで、コンポジット・アプリケーションのインフラは現在その要望に追いついていない。例えば、リッチなコンポジット・アプリケーションの作成者が、インフラのコードを書くことに自身の90パーセントを超えるリソースを費やしていると報告するのも、稀なことではない。分散処理および帯域幅がますますありふれたものになると、企業その他は、自身が心に描くことと、自身が構築し、デプロイし、管理する余裕があるものとの間の歯痒いギャップに直面する。
コンポジット・アプリケーションのモデルの開発により、非伝統的なプログラミングのコミュニティが重要なアプリケーションの構築に参加できるようになるはずである。これは、人々が必ずしもスクリプトまたはコードを書かずにアプリケーションに取り組むことができるようにすることで可能となる。ルールまたはワークフロー(後述)のような関数抽象は、コードやインストール・スクリプトよりも人々が実際にシステムについて考える方法の方に幾分近いものである。
以下の議論では、プラットフォームまたはアーキテクチャの概念を導入する。プラットフォームは、統一された対象を宣言型プログラミングのエクスペリエンスとドメイン固有言語に提供することができる。宣言型のエクスペリエンスをアプリケーションのライフサイクルに渡って提供することができるので、プログラミングを行うエンド・ユーザは、コードまたはスクリプトではなく宣言型の抽象概念の観点から自身の特定のシステムを扱える。後述するように、アプリケーション、ツール、サービスで共有される共通なリポジトリを利用し、アプリケーションのライフサイクルに関与する様々な記憶域の数を減らすことによって開発および管理を簡略化する。このリポジトリのさらなる価値は、このリポジトリがモデルの形でスキーマおよびコンテンツを含むことである。リポジトリを継続的に使用することで、アプリケーションの書き手にモデルの観点から考えることを教えることができる。アプリケーションの態様がますますリポジトリ内のコンテンツのように見えると、各部分間の新しい相乗効果が、以前は決して可能でなかった形で明らかとなり、利用可能となる。
今日では、コンポジット・アプリケーションの管理および分析には、アプリケーションの部分ごとに全く異なるエクスペリエンスが関与する。後述の実施形態によれば、コンポジット・アプリケーションを、別々の部分としてではなく、全体として管理および分析することができる。少なくとも幾つかの実施形態では、アプリケーションを単一のインタフェースを介してエンティティ全体としてデプロイし、管理し、分析することが可能である。さらに、これらのアプリケーションの個々の部分を、記述するアプリケーションを用いて漸進的にバージョン管理することができる。1つまたは複数の実施形態では、観測モデルをアプリケーション全体の視点から確立することができ、その結果、コンポジット・アプリケーションの実行を、アプリケーションの様々な部分を介して、分析者に適した、統一されたメタファの観点から理解することができる。
後述の実施形態では、1つのアーキテクチャを説明する。そのアーキテクチャにより、自律的なコンポジット・アプリケーションおよびサービスを構築し、デプロイし、管理することができる。このアーキテクチャにより、様々な種類のコンポジット・アプリケーションをモデルの観点から説明することができる。コンポジット・アプリケーションは、データ変更イベントによって駆動されるアプリケーションである。コンポジット・アプリケーションは、一般的に、どのような種類のデータ変更が興味深いか厳密に規定するルールと、データが変化したときに引き起こされる動作との観点から規定される。例えば、メッセージ駆動型のコンポジット・アプリケーションは、メッセージの交換によって駆動されるアプリケーションである。このグループは、n層式の(要求応答型の)コンポジット・アプリケーション、待ち行列型のコンポジット・アプリケーション、パブサブ(pub−Sub)型またはイベント駆動型のコンポジット・アプリケーションに分解される。スケジュール型のコンポジット・アプリケーションは、スケジューラによって駆動されるアプリケーションである。スケジューラは、モジュールを介した制御フローを記述するモデルによってプログラムされる。ワークフロー・アプリケーションは、この種のアプリケーションの良い例である。これらの種類のアプリケーションごとに、対応する通信インフラ、より厳密には、対応する通信インフラの利用パターンがある。
さらに、分散アプリケーションとサービスの間の通信を可能とするためのインフラが提供される。このアーキテクチャは、「プラットフォーム」とも称するが、開発者がリッチで自律的なコンポジット・アプリケーションとサービスを構築できるようにする機構を提供する。コンポジット・アプリケーションはデータによりモデルの形で記述され、そのモデルは、アプリケーションのコンポーネントを分散的に構築およびデプロイするために使用される。説明したプラットフォームまたはアーキテクチャを使用して、1組のマシンもしくはコンピューティング装置、およびそれらの上で動作する1組のアプリケーションを管理することができる。
1つまたは複数の実施形態では、例示的なアーキテクチャが、接続性サービス、プロセス・サービス、アイデンティティ・サービス、ライフサイクル・サービス、およびツールを含む5つの論理モジュールを備えるかまたは利用するが、これらのモジュールによって具現化される機能を必ずしもこの特定のアーキテクチャによって表す必要はない。むしろ、クレーム主題の趣旨および範囲を逸脱しない他のアーキテクチャを利用することができる。
以下の議論では、「コンポジット・アプリケーション」というタイトルのセクションを提供し、コンポジット・アプリケーションの概念と、「コンポジット・アプリケーション」が意味するところとを論ずる。これに続いて、「例示的なアーキテクチャまたはプラットフォーム」というタイトルのセクションを提供し、1つまたは複数の実施形態に従って、コンポジット・アプリケーションの開発およびデプロイメントを可能とするために利用できるアーキテクチャまたはプラットフォームの1例を説明する。このセクションでは、アーキテクチャの様々な態様を説明するために幾つかのサブセクションを提供する。最後に、「システムの例」というタイトルのセクションを提供し、説明した実施形態の1つまたは複数の態様の実装に利用できるコンピューティング装置の例を説明する。
コンポジット・アプリケーション
上述のように、コンポジット・アプリケーションは、モデルによって記述されるアプリケーションである。次に、モデルを使用してアプリケーションの構成部分を選択し、対応するアプリケーションのインスタンスを構築し、アプリケーションのインスタンスを適切な環境にデプロイすることができる。したがって、プラットフォームの1つの目標は、コンポジット・アプリケーションをモデルで記述し、これらのアプリケーションをプラットフォーム上で設計、開発、デプロイ、および管理できるようにすることである。
具体的には、少なくとも幾つかの実施形態では、接続されたアプリケーションの全体構造が分散モデルの観点から説明される。このモデルでは、限定ではなく例として、メッセージ駆動型モデル、データ駆動型モデル、スケジュール型(またはワークフロー)モデル、等のような数種のモデルのうち1つまたは複数のモデルを想定することができる。或る粒度レベルにあるアプリケーションの各コンポーネントは、次の粒度レベルでは、接続されたアプリケーション全体であることができる。より詳細に見ようとすると、アプリケーションの部分を記述するためのモデルの種類が非常に劇的に変化することがある。従って、例えば、或るレベルには、ウェブ・ページ、何らかのビジネス・ロジック、およびデータベースからなるメッセージ駆動型または呼出し駆動型のアプリケーションがあるかもしれない。このアプリケーションは、或る種のモデルによって記述されるはずである。アプリケーションのビジネス・ロジックの態様を詳細に見ると、この態様が、ルールと宣言型ワークフローから構成される第2の種類のモデルによって記述されることに気付くかもしれない。少なくとも幾つかの実施形態においては、アプリケーションをルールおよび宣言型ワークフローの観点から表現することによって、より高いレベルの抽象概念が開発者に提供され、その結果、開発者は低レベルのプログラミングの細部を必ずしも理解しなくてもよい。従って、低レベルのプログラミング言語の知識を必ずしももたない者にも開発プロセスを開放することによって、柔軟性が高まる。
幾つかの実施形態では、アプリケーション・シェル(または、後述するツールのような他の何らかのツール)がユーザ・インタフェースの形で提供され、これにより、開発者はアプリケーションを開発することができる。アプリケーション・シェルを介して、開発者は自身のアプリケーションを宣言的に記述したものを提供することができ、コマンド、文書、視覚化、ジョブまたはタスク、通信規約、アイデンティティ、等のようなものを定義することができる。従って、シェルは、開発者がそれによって自身のアプリケーションを開発しプラグインできる機構を提供することができる。そうすると、アプリケーション・シェルは実行時に低レベルのアーキテクチャを使用するための機構を有することになる。これらの低レベルの機構は開発者に対して透過的であることができる。
コンポジット・アプリケーションの一般的な概念を論じたので、次に、係るアプリケーションを開発しデプロイできるアーキテクチャまたはプラットフォームの例を論ずる。
アーキテクチャまたはプラットフォームの例
以下の議論では、アーキテクチャまたはプラットフォームの例を説明する。説明したアーキテクチャまたはプラットフォームは本明細書で説明する機能を説明する1つの方法を構成するにすぎないことは理解されよう。従って、クレーム主題の趣旨と範囲を逸脱しない他のアーキテクチャまたはプラットフォームを利用することができる。
図1は、1つまたは複数の実施形態に従うアーキテクチャまたはプラットフォームの高レベルなビューの例を一般的に100で示す。本例では、アーキテクチャ100は5つの論理コンポーネント、すなわち、接続性サービス・コンポーネント102、プロセス・サービス・コンポーネント104、アイデンティティ・サービス・コンポーネント106、ライフサイクル・サービス・コンポーネント108、およびツール・コンポーネント110を備える。これらの各アーキテクチャ・コンポーネントは独自のサブコンポーネントを有し、その各々を、後述の対応するサブセクションで説明する。
簡潔に述べると、本例では、接続性サービス・コンポーネント102は、サービス・バス・コンポーネント112、トランザクション・サービス・コンポーネント114、およびメッセージング・サービス・コンポーネント116を備える。プロセス・サービス・コンポーネント104は、ワークフロー/ルール・コンポーネント118を備える。アイデンティティ・サービス・コンポーネント106は、ディレクトリ・サービス・コンポーネント120とアクセス・サービス・コンポーネント122を備える。ライフサイクル・サービス・コンポーネント108は、リポジトリ・コンポーネント124、統合コンポーネント126、実行コンポーネント128、および分析コンポーネント130を備える。ツール・コンポーネント110は、(Visual Studioのような)コード・ベース・コンポーネント132、(Quadrantのような)モデル・ベース・コンポーネント134、および(システム・センタ・コンポーネントのような)エンタープライズ管理ツール136を備える。
以下で明らかになるように、アーキテクチャ100とその構成部分により集合的に、コンポジット・アプリケーションを開発しデプロイすることができる。
接続性サービス・コンポーネント
1つまたは複数の実施形態において、本例では、接続性サービス・コンポーネント102は、サービス・バス・コンポーネント112、トランザクション・サービス・コンポーネント114、およびメッセージング・サービス・コンポーネント116を備える。
サービス・バス・コンポーネント
1つまたは複数の実施形態では、サービス・バス・コンポーネント112(またはより単純に、「サービス・バス」)は、アプリケーションとサービスが互いと通信できるようにするインフラを提供する。この点で、サービス・バスをサービスとアプリケーションの間の接続回路とみなすことができる。
機能的な観点からは、サービス・バスは、多様な「エンドポイント」間の転送、発見、同期を仮想化するために利用される。少なくとも幾つかの実施形態では、サービス・バスはまた、変換、フィルタリング、アセンブリおよびディスアセンブリ、ならびにプロトコル/トランスポート・ブリッジングをエンドポイント側で提供することに特に留意されたい。
エンドポイントは、その例を後で提供するが、説明したアーキテクチャ上で構築されるかまたは説明したアーキテクチャを利用するアプリケーションを備えることができる。サービス・バスは階層型のデータ・モデル上で構築され、名前ベースの探索および発見機能および予測ベースの探索および発見機能、ならびに後述する所謂クレーム・ベースのセキュリティを提供する。本例では、エンドポイントの特徴(すなわち、監視作業を行う場所の特徴)を、階層型の拡張可能なメタデータ・スタックを介してモデル化する。サービス・バスは、その作業を達成するために、様々なプラグ可能なエンティティを利用するか、またはそのエンティティを提供することができる。例えば、プラグ可能トランスポート(pluggable transport)を利用して、エンドポイントの動作には依存しないでメッセージ転送を仮想化することができる。プラグ可能エンコーダを利用して、ローカルのデータ・モデルには依存しないでメッセージ表現を仮想化することができる。さらに、プラグ可能アダプタを使用してメタデータとメッセージを1組のエンドポイントからバスへブリッジすることができる。
実際には、アプリケーションはサービス・バスを利用してサービスまたは他のアプリケーションと通信する。サービスとアプリケーションに関して、以下の類似性を考察する。サービスは、オブジェクトがローカル・アプリケーションのコンポーネントであるのと同様に、コンポジット・アプリケーションのコンポーネントである。オブジェクト指向アプリケーションを書いている場合、アプリケーション全体はオブジェクトであり、そうするとそのオブジェクトは他のオブジェクトの観点から書かれる。全く同様に、サービス指向アプリケーションを書いている場合、アプリケーションがサービスであることがあり、そうするとこのサービスは他のサービスの観点から書かれるはずである。最終的に、サービスはローカルの実装を有し、サービスはオブジェクトを用いて書かれる。別のアプリケーションまたはサービスと通信する前に、アプリケーションは、幾つかの実施形態では、通信が望まれる特定のエンティティを探して見つける。この目的で、サービス・バスは、アプリケーションが通信したいアプリケーションまたはサービスを(例えば、ネットワーク・アドレスを介して)発見することを可能とする、検索および発見コンポーネントを提供する。代替または追加として、通信パターンをモデル化することができ、通信したいエンティティを特定のモデルにおいて発見することができる。さらに、サービス・バスは、サービス・バスを介して通信するエンティティ間のデータが同期されることを保証するように機能する同期機能を備える。すなわち、サービス・バスは、幾つかの実施形態において、メッセージ・ベースの通信パターンとデータ・ベースの通信パターンの両方を提供することができる。メッセージ・ベースの通信パターンでは、例えば、AがメッセージをBに送信すること、またはAがメッセージをB1、B2、B3、B4、等にマルチキャストすることを規定できるかもしれない。他方、データ・ベースの通信パターンでは、Aがデータを変更した場合、そのデータに対する変更に関心がある全ての関係者がトリガされる。その後、関心がある任意の関係者はデータを任意の時点で読むかまたは修正することができる。この情報またはデータを通信するために使用されるプロトコルは構成可能かつ拡張可能である。
1つまたは複数の実施形態では、サービス・バスはさらに、アプリケーション、リソース、等が一貫して名付けられることを保証する連合ネーミング・コンポーネントを備えることができる。メッセージング・アダプタおよびメッセージング・フレームワークが、異なるソースから来るデータが情報の同じ論理的な部分であるかもしれないという概念を扱う。しかし、サービス・バスにいる者が認識できるように、データを変換する必要があるかもしれない。従って、メッセージング・アダプタおよびメッセージング・フレームワークは、クロス・プラットフォームでのデータの一貫性と互換性を保証するためのデータ変換を扱う。例えば、少なくとも幾つかの実施形態では、アプリケーションは、そのアプリケーションによって使用される1組の名前を生成することができる。次いで、名前はメタデータに関連付けられ、アプリケーションはそのメタデータに関して問い合わせることによって名前を検索することができる。アプリケーションはメッセージを名前に直接送信することができ、名前空間をクレーム・ベースの機構によって保護することができる。サービス・バスは送信者と受信者の概念を抽象化する。従って、受信者はデータがどこから生ずるかを気にすることなくデータに基づいて行動することができる。マルチキャスト版のサービス・バスでは、送信者は名前に送信し、受信者が名前で監視することができる。従って、少なくとも幾つかの実施形態では、送信者は「0人」または「N人」が監視していたかどうかが分からず、受信者は誰が特定のメッセージを送信したかが分からない。
さらに、少なくとも幾つかの実施形態では、サービス・バスのエンドポイントは、メッセージを送信者の形式からそのエンドポイントでアプリケーションが期待する形式に変換するために利用される、様々な機能をサポートすることができる。これらの機能は、限定ではなく例として、生の変換、フィルタリング、集約および分解(しばしば「バッチング」とも呼ばれる。例えば、単一のメッセージから多くのメッセージを引き出すこと、または多数のメッセージを単一のメッセージへと構築すること)、そして(エンドポイントに到着したメッセージをサービス・バスの異なるインスタンスに再送信する)プロトコル・ブリッジングを含むことができる。
サービス・バスはまた、サービス・バスを利用する様々なエンティティ間の通信を保護することに関するメッセージング機能およびチャネル・セキュリティ機能を備える。例えば、メッセージ交換とサービス・バスのリソース(例えば、構成、名前空間)へのアクセスとの両方を保護することができる。機能に対するセキュリティは、限定ではなく例として、認証(すなわち、その人は、その人が言っている本人であるか?)および認可(すなわち、その人は、その人が要求していることをできるよう許可されているか?)を含むことができる。さらに、セキュリティ機能はまた、個々のメッセージおよび/またはメッセージ部分に対する暗号化および他のDRM(digital rights management)を提供することができる。
1つまたは複数の実施形態に従うサービス・バスの1例にすぎないが、図2を考察する。図2では、サービス・バス・コンポーネントの例が一般的に200で示されている。本例では、サービス・バス・コンポーネント200は、エンコーダ層202、チャネル層204、ならびに上述および後述の機能を提供する他の様々な高レベルのコンポーネントを備える。具体的には、本例では、サービス・バス・コンポーネント200は、発見コンポーネント206、連合名前空間コンポーネント208、連合アイデンティティ・コンポーネント210、および中継コンポーネント212を備える。中継コンポーネントをサービス・バスに統合する場合は、ファイアウォールで分離されているかまたは相互にアドレス不可能であるエンドポイント間でサービス・バスの参加者が通信することが可能である。当業者に明らかなように、この目的を達成するために、中継機能を高度なネットワーキング機能と両方のエンドポイントに可視である中間装置との組合せを用いて実装することができる。
本例では、エンコーダ層202とチャネル層204は、ポイント・ツー・ポイント通信を可能とする機能を提供する。この点で、エンコーダ層202は幾つかの異なるエンコーディング標準、例えば、SOAP、XBIN、POX/RSS、等ならびに文字セットをサポートする。チャネル層204は、ポイント・ツー・ポイント通信を促進する様々なコンポーネントを備える。限定ではなく例として、これらのコンポーネントには、リスナ・コンポーネント、トランスポート・コンポーネント、アダプタ・コンポーネント、および機能コンポーネントが含まれる。
1つまたは複数の実施形態では、リスナ・コンポーネントは、通信システムを監視し、メッセージがシステム上で利用可能になったときにイベントを発行する責任を負う。リスナ・コンポーネントは、ホスト・システムにおける起動のような事柄をトリガするために使用される。
トランスポート・コンポーネントは、或るエンドポイントと別のエンドポイントの間でメッセージを移動させる役割を果たす。定義によれば、トランスポート・コンポーネントは、TCPまたはHTTPのような生のトランスポート・システムを使用する。トランスポート・コンポーネントを、対応するリスナ・コンポーネントと直接に接続することができる。例えば、リスナ・コンポーネントは「接続利用可能」イベントを発行することができ、そうするとアプリケーションはそのイベントに対するトランスポート・チャネルを作成することができる。次いで、アプリケーションは、リスナ・コンポーネントによってその存在が伝えられた新しいメッセージをその接続上で読むことができる。
アダプタ・コンポーネントは、そのユーザにはトランスポート・コンポーネントのように見えることができる。アダプタ・コンポーネントはメッセージのソースまたはシンクをラップし、それらをトランスポート・コンポーネントのように見えるようにする。少なくとも幾つかの実施形態では、様々な種類のアダプタ・コンポーネントが存在しうる。例えば、LOB(line of business)アダプタ・コンポーネントはSAPまたはPeoplesoftのような業務システムのシリーズをラップする。メッセージング・アダプタ・コンポーネントは、DCOM、MSMQ、MQ、またはTibCoのようなメッセージング・インフラまたは中間装置をラップする。
機能コンポーネントは、エンコーダでもトランスポートでもない、エンドポイントにある機能を実装するコンポーネントである。機能コンポーネントは、WS−SecurityまたはWS−RMのようなプロトコル・コンポーネント、BizTalkパイプラインにあるような変換コンポーネントおよびフィルタリング・コンポーネント、ならびにプロトコル・ブリッジング・コンポーネントを含む。
当業者に理解されるように、1つまたは複数の実施形態では、メッセージを受け取るかまたは取得する同じソフトウェア・アーキテクチャを使用してアプリケーションを他のアプリケーション、メッセージング・インフラ、等に接続できるように、各アダプタをトランスポート・チャネルとして書くことができる。
エンコーダ層202とチャネル層204は、集合的に、データをプラットフォームによって送信されるかまたはプラットフォームに受信されるメッセージの形で送信し、受信し、処理するメッセージ・バスと考えることができる。メッセージ・バスは、メッセージを処理し、様々な形のメッセージ、例えばインフォセット表現もしくはバイナリ表現のメッセージの変換を実施し、かつ/またはメッセージ内容をプラットフォームの他のコンポーネントに利用可能とすることができる。
メッセージ処理に加えて、および低レベルのポイント・ツー・ポイント転送サービスとしての役割に加えて、サービス・バス・コンポーネント200はまた、図示した発見コンポーネント206、連合名前空間コンポーネント208、連合アイデンティティ・コンポーネント210、および中継コンポーネント212のような、高レベルのコンポーネントを備える。
図示および説明した実施形態において、発見コンポーネント206は、サービス・バスへの独立した問合せを可能とし、それらの問合せにマッチする結果を返す機能を備える。例えば、アプリケーションはプリンタを見つけるための問合せ、購入注文を扱うサービスを見つけるための問合せ、等を発行することができる。発見コンポーネントにより、係る問合せと関連する結果とを、問い合わせた関係者に返すことができる。従って、発見コンポーネント206は、接続されたアプリケーション内のモジュール間のインダイレクションをサポートする。例えば、前の議論では、名前付けの概念を論じた。少なくとも幾つかの実施形態では、ここで2種類の名前を考えることが適当である。第1に、エンドポイントは名前を有することができる。従って、サービス・バスに、通信したい名前を提供することができる。他のエンティティと通信したいエンティティは、具体的なアドレスではなく関連する名前を使用する。第2に、サービス・バスのインフラはそれ自体の内部に名前、例えば、どの特定のエンドポイントよりも寿命の長いリソースの名前を有する。これらの名前は、限定ではなく例として、(単一の読み手と単一の書き手を伴う名前である)問合せの名前であることができ、かつ/または(複数の読み手および/または複数の書き手を伴う名前である)トピックの名前であることができる。これらの名前に「メタデータ」を関連付けることができる。「メタデータ」は、名付けられたものを記述する構造化されたデータを意味する。発見は、発見コンポーネントによって実装され、サービス・バス内の名前を、(既知であれば)名前によって直接的に、または(例えば、「購入注文を処理する」人が必要であることが分かっていれば)メタデータを問い合わせることにより間接的に見つける業務に関する。
発見を、独自の修飾された名前をもつインフラをラップするアダプタを扱う場合には、メッセージング・インフラによって実装することができる。軽量トランスポート(HTTP)を用いるサービスが名前をサービス・バスに登録したい場合には、発見を発見サーバによって実装することもできる。図3は、1つまたは複数の実施形態に従って連合名前空間コンポーネントが動作できる環境を一般的に300で示す。ここで、連合名前空間コンポーネントは2つの層、すなわち、合流層302(rendezevous layer)と名前空間層304を備える。これらの層は、(図2のメッセージ・バスのチャネル層204に対応し、ポイント・ツー・ポイント通信に使用される)チャネル層306と名前空間層304の上に構築できる幾つかの機能との間に論理的に挟まれるとして示されている。これらの追加の機能は308で論理的に表され、限定ではなく例として、発見サービス、通知サービス、ディレクトリ・サービスおよびメッセージ・サーバ・サービスを含む。これらのサービスの全ては名前空間層304を利用して、本質的に、プラットフォームに「プラグインする」ことができ、名前空間の機能を使用してリッチな機能群を提供することができる。図示し説明した実施形態では、合流層302は広域近接性認識型のルーティング(wide−area proximity−aware routing)を実装する。図示し説明した実施形態では、合流層302は連合アドレス空間を提供する。マシンまたは装置は特定のアドレス空間に、そのマシンまたは装置が実際にそのアドレス空間において他のマシンまたは装置に「見える」かどうかに関わらず、参加することができる。例えば、マシンまたは装置はファイアウォールによって分離され、外部からアドレス可能でない企業のサブネットに配置されることがある、等である。マシンまたは装置は、連合アドレス空間上の特定のマシンまたは装置にアドレスで送信することができ、そのアドレス空間内の全てのマシンまたは装置にマルチキャストすることができる。従って、幾つかの事例では、TCPサブネットの機能が提供される。但し、それらの機能は動的に構築および破棄されることがあり、それらの機能を同じ場所に配置する必要はない。
名前空間層304は合流層302の上に論理的に配置され、連合アドレス空間における特定のアドレスまたはアドレス群に関する名前をサポートする。複数のサービスが同じ名前を監視することができ、名前にメタデータを関連付けることができる。名前を、そのメタデータに基づいて検索することができる。連合アドレス空間を使用する場合に、名前により或るレベルのインダイレクション(関節性)がユーザに与えられる。名前を動的かつアプリケーションごとに作成および破棄することができる。
308で一般的に示す追加の機能は、このインフラまたはその上に構築されたサービスの何れかの使用に相当する。例えば、「発見」はしばしば、或る種のメタデータに関連付けられた名前を見つけるためにアドレス空間の上にある名前を調べる能力を指す。「発見」はまた、メタデータまたはアドレスの関連を追跡し続け、その情報をUDDI、WS−Discovery、等のような標準発見プロトコルを介して提供する、このインフラの頂上にあるサービスを指すことができる。「通知」は、通知の宛先である名前のところにサービスを登録するための能力を指す。「ディレクトリ」は、1組のリポジトリの管理サービス(例えば、アクセス制御、複製制御、等)を提供するアプリケーションを指す。「メッセージ・サーバ」はコンポーネント内またはそのコンポーネント上に存在するサービスを指し、そのサービスは、信頼性および/または耐久性をそのコンポーネントのユーザに提供する。
1つまたは複数の実施形態では、連合アイデンティティ・コンポーネント210(図2)はセキュリティのアーキテクチャとパラダイムをプラットフォームに提供する。セキュリティ・アーキテクチャの1例として図4を考察する。図4では、セキュリティ・アーキテクチャまたはセキュリティ・システムの例が一般的に400で示されている。ここで、システム400は、トークンを管理する1つまたは複数のサーバ技術サービス・コンポーネント402、ポリシ・マネージャ404、カード・スペース・システム406、カード・スペース・エージェント408、セキュリティ・トークン・マネージャ410、418、クライアント412、サービス414、およびサービス認証マネージャ416を備える。
動作に際して、1つまたは複数の実施形態によれば、セキュリティ・アーキテクチャ400は以下のように動作する。メッセージング・スタックにおいて、クライアント412がサービス414を使用したい場合、クライアント412はクレーム、例えば鍵、を利用することによってそれを行う。クレームは、基本的なレベルにおいて、何らかの事実の主張を構成するデータとみなすことができる。クレームの整合性と秘匿性は、セキュリティ技法によって保護される。従って、本例では、クライアント412はセキュリティ・トークン・マネージャ410と通信して、サービス414を利用するためにクライアント412が使用できるサービス414に関連付けられたクレームまたは鍵が存在するかどうかを確かめる。サービス414に関連付けられたポリシにより、サービス414にアクセスするのに必要なクレームが特定され、または、セキュリティ・プロトコルを使用して、どのようなクレームが必要とされているかをサービス414に問い合わせることができる。クライアント412は、自身がもつクレームと、自身が必要とするそのクレームに関する情報とをクライアント412のセキュリティ・トークン・マネージャ410に渡す。セキュリティ・トークン・マネージャは、通信において使用するためにどのようなクレームをクライアント412に提供できるかを確かめるために、(カード・スペース・システム406および/またはポリシ・マネージャ404のような)様々なクレーム・ポリシ記憶域を参照する。この時点で、クライアント412は、クライアント412によって提供されたクレームをとるサービス414と通信する。サービス414は、同様なクレーム解決プロセスを、サービス認証マネージャ416を用いて行う。再度、クライアント412によって提供された1組のクレームを、サーバのポリシ記憶域内のクライアントのクレームに関連付けられたクレームにより、サーバ側で補うことができる。やがてこのプロセスは完了し、最終的なクライアントのクレーム・セットが計算される。クレーム・セットが、サービス414と通信するために必要なクレームを含む場合、アクセスが許可される。
少なくとも幾つかの実施形態では、サービス414は別のレベルの再帰を行うことができ、その再帰の中で、クライアントは、クレームを取得するために使用できる中間クレーム・サーバを指すことができる。中間クレーム・サーバは、さらに別のクレーム・サーバ等にリダイレクトすることができる。最終的に、再帰は、実施すべきステップがもうないときまたは要求されたクレームが取得されたときに停止する。
従って、或る意味では、サービス側の機構はクライアント側の機構と同じである。すなわち、サービス414はクレームで開始し、そのクレームをポリシ記憶域(例えば、ポリシ・マネージャ404)に提供し、クレームを補う。ポリシ記憶域は別のポリシ記憶域にリダイレクトすることができる、等である。
トランザクション・サービス・コンポーネント
トランザクション・サービス・コンポーネント114(図1)は、分散アプリケーション内のモジュールの、そのモジュールのうち1つまたは複数において期待される状態と期待されない状態との両方に対する応答を調整する。遭遇しうる1つの基本パターンは以下の通りである。1組のリソース・マネージャが、トランザクションを介して調整することを決定する。これらのリソース・マネージャは自身の状態を、その状態をトランザクション結果に集約するトランザクション・マネージャに送信し、その結果がリソース・マネージャに送信し戻される。より実行時間が長いステートフルなビジネス・プロセスまたはサービス指向アプリケーションの文脈では、このパターンを以下のように一般化することができる。分散アプリケーション・モデルからの情報を使用して、トランザクションに関与する1組のリソース・マネージャを特定することができる。ステートフルなアプリケーション・モジュールは、論理的なリソース・マネージャとして振る舞う必要がある。リソース・マネージャとトランザクションの間のプロトコルはリッチでアプリケーション固有である必要があり、ローカル状態をトランザクション状態に集約することは一般的でポリシ駆動型である必要がある。
トランザクション・サービス・プロセスの1例にすぎないが、図5に関連して以下を考察する。図5では、トランザクション・サービス環境を一般的に500で示す。本例では、環境500はプログラミング・モデル502、トランザクション・スタック504およびリソース506を備える。これらの各々は、個々の構成部分またはプロセスを有する。
具体的には、プログラミング・モデルはマネージ・コード508とネイティブ・コード510の両方を含むことができる。トランザクション・スタック504は、システム・トランザクションAPI512、分散トランザクション・コーディネータ(DTC)514、および図示するようにカーネル・モードKTMコンポーネント518と通信するKTMRMコンポーネント516を備える。リソース506は、データベース・リソース520、MDACリソース522、ローカルおよびリモートの分散トランザクション・コーディネータ524、HISリソース526、TM/RMとの相互運用機能528、リモートTM530、TxF532、およびTxR534のような、幾つかの異なる種類のリソースを含むことができる。
動作に際して、プログラミング・モデル502が他のソフトウェアと協調したい場合、プログラミング・モデル502はシステム・トランザクションAPI512を利用する。システム・トランザクションAPI512は、システムと対話するために使用できるローカルなAPIまたはフレームワークである。このケースでは、API512は分散トランザクション・コーディネータ514に対するフロント・エンドの役割を果たす。従って、例えば、プログラミング・モデル502はこのAPIを使用してエラーを調整するためのドメインを確立する。API512は、調整ドメインの名前を返す。次いで、調整ドメインはプログラミング・モデル502が通信する他のエンティティに回される。次いで、これらの他のエンティティは図示したように分散トランザクション・コーディネータ514と通信し、この特定のドメイン内で動作していることを示す。次いで、分散トランザクション・コーディネータ514は、データベース・リソース520等のような他のリソースと通信してエラーを調整することができる。
図示および説明した実施形態では、DTC514は、例えば、トランザクションを生成し、トランザクションの一部である全てのリソースを追跡し続け、トランザクション上の投票を処理し、リソースに投票の結果を通知することによってトランザクションを調整する。トランザクションは、DTC514によって作成された「トランザクションID」を有する。トランザクションIDは、個々のトランザクションと、それを作成したトランザクション・コーディネータの両方を一意に特定する。
図示した実施形態では、様々なトランザクション・マネージャまたはトランザクション・コーディネータとの5つの異なる対話パターンの例が示されている。本例では、KTM518は、カーネル・コードに対するトランザクション・マネージャであり、主にファイルおよびレジストリと関連して使用される。KTM518はDTC518と連携することができ、DTC514を介して他のリモート・トランザクション・マネージャ(すなわち、ローカルおよびリモートのDTC524、HIS526、TM/RMとの相互運用機能528、リモートTM530)と連携することができる。KTM518はファイルおよびレジストリ設定に対する変更を可能とすることができる。図示した例では、他のトランザクション・コーディネータ(例えば、Ole TX、LU6.2、等)と通信するために使用される機構と通信が行われるトランザクション・コーディネータの種類の両方が示されている。トランザクション・コーディネータは或る種のマスタ・スレーブ戦略を使用し、作成者がマスタであって他のコーディネータがスレーブである。
データベース520とMDAC522は、状態の変化がDTC514によって調整されるリソースの例である。他のリモート・トランザクション・コーディネータは他のリソース・マネージャを扱う。リソース・マネージャにトランザクション「の中の」状態を変更するように問い合わせると、リソース・マネージャは必ず、同じトランザクションをもたらす全ての者にその変更が行われたかのように、その状態のビューを提示しなければならない。さらに、トランザクション・マネージャは他の任意のエンティティに対してその状態へのアクセスをロックする。これを行い、次いでその状態への変更に従うことで、良好な状態の条件が保たれる。
トランザクションの寿命の例として、以下を考察する。最初に、トランザクションが作成され、その作成者がトランザクションを関与する全てのリソース・マネージャに回す。各リソース・マネージャは、トランザクションの約束事項を履行するか、または不良な状態に入る。最後に、トランザクションを作成したコードは、トランザクションが完了したことを通知する。次いで、各リソース・マネージャは自身の変更を一度に行うことができる。何らかの理由で、リソース・マネージャが自身の状態を変更することを選択しなかった場合は、障害が存在し、変更は行われない。
プログラミング・モデル502は、このプロセスをプログラマから抽象する。プログラミング・モデルは、トランザクションの存続期間(作成と完了)におけるトランザクション・マネージャとの交渉を扱い、リソース・マネージャがトランザクションを利用できるようにする。プログラミング・モデルはまた、いつトランザクションが終わるかを知っている。ローカルにエラーが発生しなかった場合は、プログラミング・モデルは適切な投票をトランザクション・マネージャに送信し戻す。
メッセージング・サービス・コンポーネント
1つまたは複数の実施形態では、メッセージング・サービス・コンポーネント116(図1)は、耐久性およびスタンディング・クエリ(standing query)のような高レベルのメッセージ仲介サービスを提供する。メッセージング・サービス・コンポーネントを、スタンドアロン・モードで、幾つかのサービスが直接通信する「クラスタ」モードで、またはサービスをクライアント上、エンタープライズ・サーバ上、および/もしくはインターネットのようなネットワークによってホストされたサーバ上で実行できる「分散」モードで動作できる、ホストされたサービスとして実装することができる。1つまたは複数の実施形態では、メッセージング・サービス・コンポーネントは、待ち行列およびパブリケーション/サブスクリプション(「パブサブ」とも呼ばれる)のような共通のメッセージング・パターン、ならびにコンテンツ・ベースのルーティングおよびイベント相関分析のようなよりリッチな機能を実装する。図示し説明した実施形態では、メッセージング・サービスに(上述の)メッセージ・バスのチャネルの抽象化を介してアクセスする。この抽象化では、プロトコルおよび統合に関する限り、標準APIと柔軟性の両方が提供される。以下の議論では、メッセージ・ノードの例が図6に関連して最初に説明されている。これに従うと、説明したアーキテクチャが提供する柔軟性と堅牢な相互接続性を示すために、どのようにメッセージ・ノードを接続できるかの例が提供されている。
すぐ上で説明した機能を実装するために利用できるアーキテクチャの1例にすぎないが、図6を考える。図6では、システム600は所謂個々のメッセージ・ノード602を備える。本例では、メッセージ・ノード602は、幾つかのコンポーネントまたはコンポーネント部分を備える。具体的には、ノードの第1層はサブスクリプション管理コンポーネント604、キャプチャ・コンポーネント606、および配送コンポーネント608を備え、それらの各々はその機能を実装するための1組の柔軟なAPI(application program interface)を公開する。この層は、主に、ノードに入りノードから出て行くメッセージの処理を扱う。
具体的には、本例では、サブスクリプション管理コンポーネント604は、サブスクリプション・エンドポイントを表し、メッセージおよび他のイベントの登録を管理する責任を負う。例えば、メッセージ・ノードは、図示したようにメッセージまたはイベントを1つまたは複数の異なるアプリケーションから登録することができる。キャプチャ・コンポーネント606は、ノードに与えられたメッセージを受け取る責任を負うキャプチャ・エンドポイントを表す。配送コンポーネント608は、メッセージをメッセージ・ノードから送信または配送する責任を負う配送エンドポイントを表す。
ノードの第2層は、メッセージおよびイベントを待ち行列に入れ、メッセージおよびイベントを正しいエンティティに送る責任を負う、待ち行列およびルーティング層610を備える。パブサブをこの層で行うこともできる。さらに、少なくとも幾つかの実施形態では、フィルタリングおよび変換のような機能をこの層で実装することもできる。フィルタリングは、メッセージをスタンディング・クエリと比較し、メッセージがそのクエリを満たす場合にのみ送達コンポーネントを介してメッセージを渡すものである。変換は、入ってくるメッセージを、送達モジュールを介して送信する前に変換するマップを登録するものである。変換は、単一のメッセージに作用する(すなわち、全ての文字列を特定の形式に変換する)か、メッセージのグループに作用する(例えば、誰かが、無数のメッセージ・グループに対してメッセージに含まれる整数の平均を問い合わせることができる)ことがある。
さらに、1つまたは複数の実施形態では、個々の待ち行列とパブサブのトピックにチャネルのアドレスの観点から名前を付けることができる。チャネル・スタック内のフィルタ・チャネルおよび変換チャネルはフィルタおよび変換をローカル・スタック内のメッセージ・プロパティに取り付けることができる。次いで、このメッセージ・プロパティをメッセージ・サービスのトランスポート・チャネルによってメッセージ・サービスのノードに送信することができる。メッセージが配送された場合、トランスポートは、チャネル・スタックのフィルタおよび/または変換が適用された場合は、メッセージ内のフラグに印を付ける。フィルタおよび/または変換チャネルは、トランスポートが出力メッセージに作用しなかった場合は、その出力メッセージに作用するだけでよい。
ノード602の第3または最下層の層は、他のノードと接続するために使用できる様々なコンポーネントを備える。例えば、転送コンポーネント612を使用して、他のノードとポイント・ツー・ポイント式に接続することができる。追加または代替として、転送コンポーネント612を使用して、サービス・バスに対して実行される合流ネットワーク(rendezvous network)に接続することができる。さらに、転送コンポーネント612は、それを様々な他の方式で接続するために使用できる点で拡張可能である。
1つまたは複数の実施形態では、第3層が、コンテンツ・ベースのルーティングを実装できるコンテンツ・ベースのルーティング・モジュール614を備える。当業者に理解されるように、コンテンツ・ベースのルーティングは、特定のコンテンツに基づいてコンテンツを他のノードに送信する概念に関する。これにより、ノードにおいて、大規模な分散待ち行列システムに対する処理を簡素化することができる。例えば、メッセージがパブサブ・システムに送信されそのメッセージがニューヨーク州の天気に関する場合、カリフォルニア州にいる人がそのメッセージを気にする可能性は低い。従って、コンテンツ・ベースのルーティングは次いでそのメッセージをニューヨーク州のみにあるコンピューティング装置に送信することができる。
1つまたは複数の実施形態では、第3層はイベント相関分析サービス・コンポーネント616を備える。コンポーネント616は、長期にわたってメッセージを保持し、メッセージに対して動作を行い、特定のイベントに応答してメッセージを送出するといった、1組のリッチなサービスを可能とすることができる。例えば、1つまたは複数の実施形態では、各メッセージ・サービス・ノードは、メッセージ・ストリームが流れている間にそのメッセージ・ストリームに或る特定の方法で作用するようにプログラムできる、イベント相関分析サービス・コンポーネントを有する。「ストリーム」部分に関して、以下を考える。1つまたは複数の実施形態では、イベント相関分析サービス・コンポーネントはシステム内の待ち行列と対話し、従って、個々のメッセージだけでなく過去の一連のメッセージに作用することができる。イベント相関分析サービス・コンポーネントがメッセージまたはメッセージ・ストリームに適用できる機能には、あまり具体的でないケースで上述した変換およびフィルタリングが含まれる。
さらに、1つまたは複数の実施形態では、イベント相関分析サービス・コンポーネントは比較的分かりやすい抽象的な要求(例えば、「メッセージ呼出しに対する平均応答時間を測定せよ」)をとって、その要求を1組の分散されたイベント相関分析サービス・モジュール上で実行される動作に変換することができる。これは、或る意味では、計算を「上流へ」もっていくものである。例えば、呼出しが大量のマシン上で行われている場合は、各マシン上のイベント相関分析サービス・ノードは、自身のマシン上の平均呼出し回数を計算し、そのノードでの平均呼出し数と呼出し回数を含む定期的なメッセージを下流へ送信することができる。これにより、下流のコール・バックごとにメッセージを「内外に」送出するものである、あまり分散化されていない代替手段と比較した場合に、ネットワーク負荷を劇的に削減することができる。
メッセージ・ノードの概念を説明したので、次に、図7に関連してメッセージ・ノードを接続できる様々な方法を考える。図7では、接続性環境700が一般的に700で示されている。環境700は、1つまたは複数の実施形態に従う幾つかの異なる接続性パラダイムを含む。ここで、幾つかのホスト、すなわち、ホスト1〜8があり、その各々がメッセージ・サービス・ノード602(図6)を実行している。
本例では、図の右上方から開始すると、ホスト3がメッセージ・ノードを実行しており、このノードに関連付けられたインタフェースが分散インタフェースであるのでホスト4は、単純にメッセージをホスト3上のノードに直接送ることによって、メッセージ・ノード・システムを使用することができる。
ホスト2および3は、転送コンポーネント612(図6)を用いて2つのノードを直接に接続できることを示す。従って、ホスト2で捕捉されるかもしれないメッセージをシステムに挿入することができる。メッセージがホスト3上のサブスクリプションを満たす場合、メッセージを単純にホスト3に送信することができる。
多数の異なる人が協調できるSOAPシナリオのような、広範囲の協調シナリオを、ホスト1、2、5、8の間に示すもののような接続によってサポートすることができる。この接続は、合流環(rendezvous circle)を構成し、メッセージ・ノードがサービス・バスにプラグインされサービス・バスの上に構築される例である。いったんプラグインされると、ノードの1つがメッセージを捕捉した場合に、そのノードはそのメッセージを、その環に参加している他のノードの全てにマルチキャストすることができる。従って、多数の異なるサービスを接続することができ、それらのサービスがブロードキャスト・メッセージを受け取ることができる。この特定の配置構成では、メッセージを環のメンバに非常に迅速に送ることができ、この場合、メンバ・ノードは、効率的かつ簡潔な方法で、メッセージを受け取り、処理し、必要ならば他のメンバに送ることができる。
従って、上の例では、ホスト3と2の間の関係により、どのように小規模に直接接続を利用できるかを示す。他方、環は、どのようにメッセージ・サービス・ノードをより広いシナリオで利用できるかを示す。
ホスト5、7、8は他のシナリオを示す。例えば、ホスト5は、他のパブサブ・システム、ここではBizTalk Serverと通信するためにどのように専用プロトコルを利用できるかを示す。ホスト7は、メッセージ・サービス・ノードと、やはりたまたま相互運用可能プロトコルを理解する他の何らかの異なる待ち行列サービスとの間で通信するために、WS−*相互運用プロトコルのような他の相互運用プロトコルをどのように使用できるかを示す。上記の他の何らかの異なる待ち行列サービスは、次いで、メッセージを任意の形で自身のアプリケーションに配送することができる。
ホスト8は、たとえメッセージ・サービス・ノードが独自のキャプチャおよびサブスクライブのプロセスを有していても、RSSフィードまたはREST接続を介してのような一般に標準的な方法で通信するためにどう接続できるかを示す。
接続性サービス・コンポーネント102(図1)を論じたので、次に、プロセス・サービス・コンポーネント104(図1)を考える。
プロセス・サービス・コンポーネント
1つまたは複数の実施形態では、プロセス・サービス・コンポーネント104は、ワークフローまたはルール・セットのような、寿命が長いステートフルな動作を実行するために使用する機能を含んだホストとしての役割を果たす。プロセス・サービス・コンポーネントは、ワークフローまたはルール・セットを実行できるワークフロー/ルール・ランタイム118を備える。従って、プロセス・サービス・コンポーネントは、プログラムが実行されるランタイム環境を提供する、統合されたフレームワークおよびサービスの集合を提供する。ランタイム環境は、限定ではなく例として、起動、スケジューリング、エラー処理、状態管理、環境とのインタフェース、等を含む。1つまたは複数の実施形態では、この定義によれば、全てのプログラムがランタイム環境において実行される。例えばWin32アプリケーションを実行できる非マネージ型のランタイム環境が存在する。さらに、CLR(common language runtime)アプリケーションを実行できるマネージ型のランタイム環境が存在する。本例では、ランタイム環境はコード・サービスを実行できるが、モデル(例えば、ワークフロー、ルール・セット、等)を実行するようにカスタマイズされている。
プロセス・サービス・コンポーネントの例として図8を考える。図8は、1つまたは複数の実施形態に従う、プロセス・サービス・コンポーネントが動作できる実行環境を一般的に800で示す。本例では、環境800はプロセス・サーバ・コンポーネント802、(上述の)サービス・バス804、(後述の)リポジトリ806、およびインスタンス・データ記憶域808を備える。
本例では、プロセス・サーバ・コンポーネント802は、アプリケーション、ネイティブ・コード、またはルールもしくはワークフローを実行するように使用される。すなわち、1つまたは複数の実施形態では、プロセス・サーバ・コンポーネントは宣言型のコード(例えば、グラフィカルなワークフロー、等)および命令型のコード(例えば、C#)を実行することができる。プロセス・サーバ・コンポーネントは、寿命が1回の起動と等価な「ステートレスな」プロセスを実行することができ、寿命の長いプロセス、すなわち、渚在的に間隔が長い多数の起動に渡って生存するプロセスを実行することができる。
プロセス・サーバ・コンポーネントの構成部分には、限定ではなく例として、起動サービス810、インスタンス/セッション相関分析コンポーネント812、共通言語ランタイム・コンポーネント814を備えるランタイム環境、(状態の変化を条件としてアクティビティを実行する)ルール・エンジン816、(ルール・エンジンによって実行される、単一のアクティビティまたはアクティビティのグループの何れかの規定を可能とする)ワークフロー・エンジン818、および(予め定義されたまたは予め構成されたアクティビティを構成する)アクティビティ・ライブラリ820が含まれる。プロセス・サーバはまた、ドメイン固有言語プログラム822を含む。
動作に際して、本例では、プロセス・サーバ・コンポーネントでの作業を引き起こすために到着するメッセージの全ては、メッセージまたはサービス・バス804から到着する。インスタンス/セッション相関分析コンポーネント812は、受信メッセージを調べ、そのメッセージをランタイムの既存のインスタンスとユーザ・アプリケーション・モジュールとに送ることができるかどうかを判定する。これらのインスタンスはメモリ内にあるかもしれず、またはディスク上にあるかもしれない。起動サービス810はまた、入ってくるメッセージ・ストリームの要求に応じて、ランタイムの新しいインスタンスとユーザ・プログラムを作成する(すなわち、既存のインスタンスがまだ適切でない場合に、新しいインスタンスが作成される)。プロセス・サーバは、宣言型プログラム(ワークフロー、ルール)、マネージ型の命令型プログラム(C#、VB.NET)、および非マネージ型の命令型プログラム(C++、C)に適したランタイムを有する。さらに、プロセス・サーバは実際のプログラム(DSLであることもあればDSLでないこともある)を有する。
メッセージがサービス・バスから到着すると、インスタンス/セッション相関分析コンポーネント812は、実行しているランタイムインスタンスを受け入れることができるかどうか、または新しいランタイムインスタンスが適当かどうかを判定する。起動サービスの責任は、メッセージの送信対象であるプロセスを実行するために使用できる新しい環境を必要に応じて提供することである。起動サービスはリポジトリ806と通信可能にリンクされ、リポジトリ806には、アプリケーション、モデル、ルール、ワークフローの全てが存在する。メッセージが到着し、自身が新しいアプリケーションを起動する必要があることを起動サービスが分かっている場合は、アプリケーションをリポジトリ806から取り出す。
1つまたは複数の実施形態では、プロセスが非常に長い時間実行されている可能性があり、このため、メッセージが到着すると、インスタンス/セッション相関分析コンポーネント812は入ってくるメッセージを処理し、実行されているかもしれないプロセスにそのメッセージを関連付けることを試みる。インスタンス/セッション相関分析コンポーネント812が適切なプロセスを発見すると、コンポーネント812はそのプロセスの最新の状態をインスタンス・データ記憶域808から取り出し、そのプロセスをロードし、ワークフローの次の部分を実行する。
リッチなリソース集合を用いてプロセスを構築することができる。具体的には、プロセスを、CLR(common language runtime)コンポーネント814を用いて構築することができる。ルール・エンジン816はワークフロー基盤を提供し、ルール・エンジン816をルールのみを用いてプロセスを実行するように拡張することができる。従って、ルールのみを用いてプログラムを構築することができる。ワークフロー・エンジン818をルールの上に構築することができ、ワークフロー・エンジン818の上に、開発者がコードを書かずにプログラムを書けるようにするのに十分なアクティビティ・ライブラリを構築することができ、これにより、少なくとも幾つかの事例において、パッケージ化されたコンポーネントとモデルを備えるプログラムが提供される。このプログラムは実行可能なモデルである。このモデルを、グラフィカルに、テキスト言語として、またはリポジトリ内で、表すことができる。図示および説明した実施形態では、CLRは、.NETのコアを構築する共通言語ランタイムである。CLRは、C#およびVB.NETのコードをコンパイルした論理的な命令コードを一体となって実行できる、仮想マシンおよびランタイムである。ルールは、条件とアクティビティの対である。条件はデータに結び付けられ、このデータは固定データである場合もあればルールに提供されるデータである場合もある。アクティビティは、ルールがそのデータとマッチするときに起動する。
CLRとこの特定のシステムの間の関連は、アクティビティを構成するものを考えると最も良く理解される。具体的には、アクティビティは、良く知られたインスタンスに対して実装されるコード(すなわち、ルールが満たされた場合に起動されるコード)の一部か、またはあたかもコードの集合であるかのように動作するルール/アクティビティのグラフである。アクティビティ・ライブラリ820は、.NETに同梱される基本クラス・ライブラリまたは他の任意のソフトウェア環境に同梱されるライブラリ、すなわち、別個に作成する必要のない共通ライブラリと、或る意味で等価である。
DSL(domain specific language)プログラムは、タスクの特定のサブセットに対して定義および利用される言語に関する。従って、或る種のプロセスの構築を便利にするルールまたはアクティビティのサブセットを構築するDSLプログラムを作成することができる。原則として、DSLは、特定の種類のアプリケーションの構築を容易にするより一般的なシステムの限定またはサブセットである、特定のプリパッケージ型のアクティビティおよびルールである。
プロセス・サーバ・コンポーネントの一般的な概念を論じたので、次に、プロセス・サーバ・コンポーネントを図9と関連してどのように使用できるかを考える。図9は、図8のシステムを複数の異なるマシンにどのように拡張できるかを示す。図9のシステムによって解決される問題の1つは、マシン障害のためインスタンスがリサイクルされたかまたは紛失した可能性があるシステムのコンテクストにおいて、現在たまたまインスタンスを管理している場所にメッセージを届ける方法に関する。
図9では、環境の例が一般的に900で示されている。動作に際して、メッセージは、ルータ904に関連付けられた所謂ポート902を介してサービス・バスから到着する。従って、メッセージはポートからルータに流れる。ポートは、サービス・バスに関連付けられたエンドポイントであり、図2で説明したチャネル・スタックに対応する。ルータは、本実施形態では、図8のインスタンス・マネージャと非常に類似した、分散された世界における機能を有する。ルータは、インスタンスが既にプロセス・サーバの1つに存在するかどうか、またはインスタンスが新しいインスタンスかどうかを解明する。メッセージが既存のインスタンスに関するものである場合は、ルータはメッセージを、そのインスタンスを保持しているプロセス・サーバに送信する。メッセージが新しいインスタンスに関するもの(または、特定のプロセス・サーバに現在固定されていないインスタンスに関するもの)である場合は、ルータはプロセス・サーバを選択し、そのメッセージを転送する。プロセス・サーバのインスタンス部はルータにマップされる。
少なくとも幾つかの実施形態では、長く実行されているプロセスのインスタンスにメッセージを関連付けるためのプロトコルを使用することができる。図示および説明した実施形態では、このプロトコルが動作できる幾つかの方法がある。例えば、メッセージは、特定のインスタンス化プロトコルに関するヘッダを含むことがある。これにより、インスタンスと場所に関するロジックを扱うことが容易になる。他方、メッセージがインスタンス化プロトコルのヘッダを含まない場合、マッピング機能が、インスタンスを一意に特定するメッセージ内の情報(例えば、購入注文)に基づいて、プロトコル内にあるはずである情報を作成する。マッピング機能は、これを、識別プロパティ906のデータベースを利用することによって行うことができる。このプロパティは、ポート内での変換を介してメッセージがどのようにインスタンスにマップされるかを定義することができる。続いて、メッセージがポートに入り、ルータ904に送信される。ルータは、どのプロセス・サーバが実行しているかを、プロセス・サーバ・データベース908を介して確かめる。本例では、これは、実行中のプロセス・サーバを追跡するテーブルを用いて行われる。インスタンス・マッピング・データベースまたはインスタンス・マッピング記憶域910は、プロセス・サーバの1つに関連付けられたインスタンスを追跡し続ける。ルータは、どのプロセス・サーバにメッセージが送られるかを確かめる。これは、プロセス・インスタンスのプロセス・サーバへのマッピングを維持するインスタンス・マッピング記憶域910を介して行われる。次いで、ルータはメッセージを正しいプロセス・サーバに送ることができる。次いで、そのプロセス・サーバはメッセージを正しいインスタンスに送ることができる。既存のインスタンスに対して、ルータ904は、ルータ904がメッセージを正しいプロセス・サーバ912、914、916に送信できるように、インスタンスがどこで実行されているかを確かめる。インスタンスが新しいかインスタンスが現在プロセス・サーバにマップされていない場合は、ルータ904は実行中のプロセス・サーバからプロセス・サーバを選択する。追加または代替として、メッセージが特定のインスタンスに到着してから長時間(例えば、3週間)経過している場合があるかもしれない。このケースでは、特定のインスタンスはインスタンス状態記憶域918に戻されているかもしれない。その場合は、その時点の状態を取り出し、適切なプロセス・サーバのメモリに入れる。
識別プロパティ記憶域906とインスタンス状態記憶域918の間のリンクを維持して、識別プロパティ記憶域が、実行中の個々のインスタンスのマッピングを有することができるようにする。
アイデンティティ・サービス・コンポーネント
1つまたは複数の実施形態では、アイデンティティ・サービス・コンポーネント106(図1)は、本例では、ディレクトリ・サービス・コンポーネント120とアクセス・サービス・コンポーネント122を備える。アイデンティティ・サービス・コンポーネントは、比較的複雑なアイデンティティの操作を実施するために使用できるサービスを提供する。
ディレクトリ・サービス・コンポーネントの1例にすぎないが、システムの例を一般的に100で示す図10を考える。本例では、ディレクトリ・サービス・コンポーネントは、アクセス層1002およびディレクトリ・スタック1004とみなすことができるものを備える。アクセス層1002は1つまたは複数のコンポーネントを備え、それらのコンポーネントを介してディレクトリ・スタックを公開することができる。図示および説明した実施形態では、これらのコンポーネントにはAPIコンポーネント1006、MAPI(Messaging API)コンポーネント1008、KDCコンポーネント1010および/またはサービス・バス・コンポーネント1012が含まれる。
APIコンポーネント1006を、場合によってはディレクトリ・スタックにアクセスするために使用できるレガシーAPIまたは標準APIとみなすことができる。ここで、APIコンポーネントのAPIは、より具体的には、ディレクトリ・スタック内で利用可能なデータにリンクされている。
MAPIコンポーネント1008は、MAPIサブシステムによって、クライアント・アプリケーションの作成者によって、およびサービス・プロバイダの作成者によって使用されるプログラミング・インタフェースを指す。主要なプログラミング・インタフェースは、MAPIプログラミング・インタフェースとして知られるオブジェクト・ベースのインタフェースである。当業者に理解されるように、OLEコンポーネント・オブジェクト・モデルに基づいて、MAPIプログラミング・インタフェースは、MAPIサブシステムによって、CまたはC++で書かれたメッセージング・ベースのクライアント・アプリケーションによって、使用される。
KDCコンポーネント1010は、ディレクトリ内のアイデンティティと特定の個人に対して発行できるセキュリティ鍵との間でマップするポリシを含む鍵配信局である。個人がディレクトリにアプローチするときは、一般にその個人は鍵を求める。ポリシは個人に対して実行され、そのポリシに応じて鍵を返しても返さなくてもよい。
サービス・バス・コンポーネント1012を利用してディレクトリ・スタック1004にアクセスすることができる。ここで、サービス・バス・コンポーネントは、多種多様なエンティティと通信できるようにする1組のより汎用化されたAPIを備える。汎用化されたAPIは、ディレクトリ・スタック内のデータまたはディレクトリ・スタックを介してアクセス可能なデータを作成し、読取り、更新し、削除する機能を提供する。
図示および説明した実施形態では、ディレクトリ・スタック1004は種々のコンポーネントを備え、そのコンポーネントには、複製コンポーネント1016を含むディレクトリ・サービス・エージェント1014、データ・アクセス・コンポーネント1018、およびコア・セキュリティ・モジュール1020が含まれる。さらに、ディレクトリ・スタックはまた、リポジトリ1022および記憶域1024を備える。本例では、リポジトリは、本明細書で説明したプラットフォームによって利用できる形でデータを記憶するエンティティである。従って、リポジトリを、データを「新しい形式」で記憶するための記憶域としての役割を果たすとみなすことができる。同様に、記憶域1024は、レガシー・データまたはレガシー形式で存在するデータと見なすことができるものに対する記憶域の役割を果たす。この特定の例では、コア・セキュリティ・モジュール1020は、それがデータ・アクセス・コンポーネント1018に正しく提供できるように、セキュリティ層を記憶域1024に提供する。
ディレクトリ・サービス・エージェント1014を、様々なアクセスAPIの全てがデータベース・システムとインタフェースするために使用する一般的な層とみなすことができる。このソフトウェア層は、システム内の他のデータ記憶域の位置を理解する。従って、このソフトウェア層は、(例えば、APIが、ローカルな記憶域では利用できない何らかの情報を得ようとしている場合は)データ・アクセス用にこの知識を使用し、また、複製(例えば、データを、それが必要とされる場所から効率的にアクセスできるように、ネットワーク周りの戦略的な位置に置くこと)用にこの情報を使用する。この分散アクセスの動作は、様々なディレクトリ・サービス・エージェント(例えば、図中の「他のDSA」)の間で行われる。この情報がたまたまこの層で利用可能であるので、マシン名、IPアドレス、サブネット、等を追跡し続けるためにドメイン情報もディレクトリ・サービス・エージェントからDNSシステムへ提供される。
本例では、データ・アクセス・コンポーネント1018を利用して、当初はアクセスするように設計されていなかったデータにAPIコンポーネント1006(すなわち、レガシーAPI)がアクセスできるようにするだけでなく、サービス・バス・コンポーネント1012がレガシー・データにアクセスできるようにもする。
アクセス・サービスは、アクセス・サービス・コンポーネント122(図1)を介して、分散アプリケーション内のアイデンティティの管理と使用に対するリッチなサポートを提供する。図示および説明した実施形態では、このアプローチは、クレーム、すなわち、エンティティに関するクレーム、リソースに関するクレーム、リソース上のエンティティが行うアクションに関するクレーム、およびこれらのアクションがその中で行われうる環境に関するクレームを対象とする。ルールまたはポリシをこれらのクレーム上で表現することができる。次いで、これらのルールを様々なコンテクストで、すなわち、リソースに対する権限チェック(そのエンティティは所与の環境内のリソースを見ることができるか?)を行う方法として、またはより一般的には、ビジネス・ルール(エンティティの管理者が所与の量の購入注文を許可したか?)として、評価することができる。これらのルールをローカルに完全に処理することができるか、またはこれらのルールが、将来の分析用に何らかの連合処理機関に渡される部分的な結果をもたらすかもしれない。
1つまたは複数の実施形態では、アクセス・サービス・コンポーネントは、上述および後述の目的のためにプロセス・サーバの能力を使用する、図4のシステムを拡張したものを構成する。この点で、以下の議論では図4の一般的なアーキテクチャの具体的な応用例を説明する。
アクセス・サービス・アーキテクチャの例として、システムを一般的に1100で示す図11を考える。ここで、システム1100はリポジトリ1102、サービス・バス1104、およびリポジトリとサービス・バスの間に論理的に挟みこんだサーバ技術サービス1106を備える。ここで、サービス1106はアクセス・ポリシ・コンポーネント1108とプロセス・サーバ1110を備える。プロセス・サーバ1100はワークフロー・コンポーネント1112とルール・コンポーネント1114を備える。ここで、アクセス・ポリシ・コンポーネント1108は、リソースにアクセスするための関連するポリシを含む。ワークフロー・コンポーネント1112とルール・コンポーネント1114はアクセス関係を定義するかまたは記述する。これらのコンポーネントは、リソースへのアクセスを提供するサーバ技術サービスを実装するためにサーバ内で実行される。具体的には、1つまたは複数の実施形態では、アクセス・サービスは、アクセス・サービス・アーキテクチャによって実装され、図4のアーキテクチャにプラグインするための適切なインタフェースを伴う特定のプログラムを実行するプロセス・サーバを備える。
ライフサイクル・サービス・コンポーネント
1つまたは複数の実施形態では、ライフサイクル・サービス・コンポーネント108(図1)は、リポジトリ・コンポーネント124、統合コンポーネント126、実行コンポーネント128、分析コンポーネント130を備える。図示および説明した実施形態では、これらのコンポーネントは協調的に動作して、分散型の不均一なアプリケーションを実行できる環境を提供する。
先ず、統合コンポーネントを図12に関連して考える。図12では、システム1200が統合コンポーネントを、リポジトリ1204、メタバース・コンポーネント1206、複数のデータ・ソース1208の間に論理的に挟みこんだ統合サーバ1202の形で備える。統合コンポーネントの試みの1つは、企業内の様々な記憶域に存在しうるデータの調整を可能とすることである。これを行うために、後述するように、統合コンポーネントを、企業にわたって使用されうる様々なデータ記憶域の全てに「引っ掛ける」ことができる。さらに、統合コンポーネント内で実行されている特定の種類の宣言的プログラムの目的は、潜在的な衝突を扱うための、企業が使用するポリシを実装することである。さらに、統合コンポーネントの別の試みは、アプリケーションに対する統一されたまたは単一のビューを、様々なデータベース、様々なLOBアプリケーション、等のような様々な場所に存在するデータの上に構築することである。従って、この試みにおいては、アプリケーションはデータの動作ビューを定義および確立し、アプリケーションのビューと基礎となるデータ記憶域との間のマッピングを特定し、次いでデータ記憶域内の変更をアプリケーションのビュー内の変更と調整するためのポリシを確立する。これらのポリシは一般にアプリケーション・ロジック内に存在する。
この点で、説明しようとしている統合サーバは、少なくとも幾つかの実施形態において、図8に示すプロセス・サーバの修正形を構成する。
本例では、統合サーバ1202は同期ポリシ・コンポーネント1210、ならびにワークフロー・コンポーネント1214およびルール・コンポーネント1216を備えるプロセス・サーバ1212を備える。
動作に際して、特定のコンポジット・アプリケーションによって利用されるデータは多数の場所に存在することができ、それらの場所のうち幾つかがデータ・ソース1208によって示されている。しかし、一般に、プログラムはデータが、ローカルのコンピューティング装置のような1つの場所に見つかることを期待する。図示および説明した実施形態では、データに幾つかの異なる場所(すなわち、データ・ソース1208)からアクセスすることができ、メタバース1206と称する中心位置に対する同期ポリシ・コンポーネント1210を介してデータを処理することができる。メタバースは、アプリケーションが見ることを期待するデータのビューを構成し、同期ポリシ・コンポーネント1210は様々なソースからのデータを処理しそのデータをアプリケーションが見ることを期待する形式で置く責任をもつ。適切な形式になると、その構成部分がリポジトリ1204内に存在するアプリケーションは、メタバース1206内のデータに対して動作することができる。
アプリケーションがメタバース内のデータに対して動作すると、そのデータをその適切なデータ・ソースに送り戻すことができる。同期ポリシ・コンポーネント1210は、そのプロセス・サーバ1212ならびに関連するワークフロー・コンポーネント1214およびルール・コンポーネント1216とともに、データが同期されデータが同期されたままであることを保証するように動作する。データが同期されると、データをその適切なデータ・ソース(複数可)に戻すことができる。メタバース・コンポーネント1206に関して、以下を考える。上の調整シナリオ(すなわち、述べた試みのうち最初のもの)において、メタバースは、調整されている全てのシステム内にある全てのデータの組合せであるデータ・ビューを構成する。調整ポリシは、通常、メタバース・スキーマと元のソースの観点から扱われる。統一されたビューのシナリオ(すなわち、述べた試みのうち第2のもの)では、メタバースは、アプリケーションが関心をもつビュー、すなわち、特定のアプリケーションに関連する周囲の記憶域全ての中にあるデータの特定のサブセットを構成する。
1つまたは複数の実施形態では、実行されるプログラムの一部は、プロセス・サーバのようなコンピューティング装置によって実行される部分と、所謂ピープル・レディ・プロセスを用いて個人が実行する部分を含むことができる。ピープル・レディ・プロセスの例を、ビジネスで一般に実装できるプロセスと考えることができる。このシナリオでは、ピープル・レディ・プロセスの一部を、ユーザ・インタフェース・プロセスを介して、個人が作業の一部を実施できるようにする特定のユーザ・インタフェースに提示することができる。例えば、特定のプロセスに3つのステップ、すなわち完全に自動化されたプロセスでA→B→Cが関与する場合、AとBとCはコード、ルールまたはワークフローによって規定されるはずである。ピープル・レディ・プロセスでは、恐らく、Bがメールをレポートのコピーを求める人に送信し、Cは管理者がレポートを読んで承認することを求めるタスクをOutlook「登録商標」に挿入する。図13は、アプリケーション・ライフサイクル・サービス環境の例を一般的に1300で示す。ここで、環境1300は実行コンポーネント1302、リポジトリ1304、分析コンポーネント1306、およびアプリケーション1308、およびリポジトリに流れ込む様々なオーサリング・ツールまたは開発ツール1308を備える。
ここで、コード・モジュールを、様々な開発ツール1310を用いて書き、テスト用にソース制御システムに格納し、最終的にリポジトリ1304に発行することができる。ソース制御システムを、例えば履歴および改訂を追跡し続け、システムを構築およびテストするプロセスに流れ込むために係るシステムを一般に使用するという理由で、使用することができる。開発ツールでは、個人がコード・モジュールを作成できる幾つかの異なる粒度レベルを提供することができる。
アプリケーションをデプロイするとき、実行コンポーネント1302はリポジトリ1304からアプリケーションにアクセスし、そのアプリケーションの実行準備を行う。これを行うために、実行コンポーネントは、アプリケーションが実行されるマシン、使用されるトランスポート、セキュリティ証明書、等を決定する。この点で、実行コンポーネントは、本例ではワークフローによって駆動されるプロセス改善として知られるものを実装する。実行コンポーネントがその作業を完了し、全てのデプロイメント・パラメータが決定されると、アプリケーションを実行することができる。この点で、実行コンポーネント1302は接続されたアプリケーションに様々な状態変更を受けさせる。係る状態変更は、限定ではなく例として、「構築」状態から「改善」状態に移動させること、「改善」状態から「デプロイ」状態に移動させること、および/または「デプロイ」状態から「実行」状態に移動させることを含むことができる。これは、或る意味では、アプリケーションが受けうる1組の状態を一般化させたものである。図示および説明した実施形態では、個々の状態変化は、状態変化を引き起こす作業を行うワークフローとして実装される。
動作に際して、実行コンポーネントはアプリケーションのコンポーネントを様々なマシンに分散させ、それらのコンポーネントを1つの論理単位として扱うことができる。1つまたは複数の実施形態では、実行コンポーネントはコンポーネントを様々な環境(例えば、IIS、WAS、BizTalk、SQL)で実行することができる。これらの環境は異なるマシン上にあるかもしれないが、異なるオペレーティング・システム上にあることもあるかもしれない。実行コンポーネントは、他の技術と比べて、調整インフラのプログラミングをより指向したインフラにはとらわれない。
このように、リポジトリ1304は多様な情報源、特に、モデル(主として分散モデルを含む)をリポジトリに寄せ集める。リポジトリは、そのリポジトリが統一されたモデルのビューをインフラとアプリケーションに提供できるようにそのリポジトリを他のデータ・ソースにプラグインさせる、アダプタを有する。
実行コンポーネントの視点からは、リポジトリは統一されたアプリケーションのビューを提供する。実行コンポーネントの作業は、そのアプリケーションを改良すること、そのアプリケーションをデプロイすること、そのアプリケーションをオンにすること、等によってそのアプリケーションを実行できる状態にすることである。
実行コンポーネントが扱う多様性は、ホスティングと、アプリケーションがその中またはその上で実行する必要がある他のインフラ・サブシステムの多様性である。この点で、実行コンポーネントを、この多様性を連合させ、これらの異なる種類のソフトウェア・インフラ全ての上に単一の論理的なホストのビューを提供するものとみなすことができる。
特定の種類のインフラの知識を実行コンポーネントに直接構築することを避けるため、実行コンポーネントは、実行コンポーネントが基礎となるインフラを扱うために使用する「ドライバ」と呼ばれるモデルを有する。実行コンポーネントは、インフラの部分ごとに命令を生成し、その命令を対応するドライバに送信することによって、分散モデルに作用する。個々のドライバは同じインタフェースを実装し、従って、実行コンポーネントは、ドライバのインタフェースと通信することによって基礎となるインフラを抽象的に扱うことができる。
これを、実行コンポーネントの「命令制御」部分と考えることができる。作業を分散モデルで実施したい場合、実行コンポーネントに通知する。次いで、実行コンポーネントは適切なモデルを分析し、ホストおよびインフラ・モジュールごとにコマンドを生成する。次いで、実行コンポーネントはドライバを介してこれらのコマンドを基盤に送信する。従って、実行コンポーネントでは、実行コンポーネントがコマンドをモデル全体に与えていると考えることができ、全ての多様性をランタイム環境に隠蔽する。
実行コンポーネント1302、アプリケーション1308、分析コンポーネント1306、およびリポジトリ1304の間のループに留意されたい。このループに対する1つの具体的な理由は、アプリケーションが問合せに答える仕方と時期を定義するサービス・レベル・アグリーメントという概念があることである。例えば、分析コンポーネントに問い合わせて、どれくらい迅速にアプリケーション1308が問合せに答え、または他の何らかの作業を実施しているかを確かめることができる。アプリケーションの性能が望ましくないかまたは何らかの性能指標を満たさない場合、アプリケーションがその性能指標を満足できるように、モデルをリポジトリ内で調節することができる。そうすると、実行コンポーネント1302は実行中のモデルを更新してアプリケーションをより効率的にすることができる。従って、動的なフィードバック・ループが、目標指向の振舞いを実現することができ、アプリケーションのエンド・ユーザが必ず良い性能を享受しているようにすることができる。しかし、より一般には、連合された命令制御をサポートすることに加えて、実行コンポーネント1302はまた、アプリケーションに関する連合された知識収集をサポートする。アプリケーションに関する知識を収集するために、「観測モデル」を分散アプリケーション・モデルの一部としてリポジトリ1304に追加することができる。実行コンポーネントは観測モデルを分析し、アプリケーションの各部でどのデータを収集すべきかを確かめ、これらの要求をドライバに送る。次いで、ドライバは、そのドライバが担当するシステムの部分に適切なデータを収集させるための作業を実施する。
アプリケーションが実行されると、アプリケーションはその部分の各々においてイベントを発信する。各部分が発信するイベントの形式は一般に様々である可能性がある。例えば、データベースは一種のイベント、すなわちウェブ・ページを毎秒送信する、等である。アプリケーションの知識収集側では、ドライバの作業はこれらの多様なイベントを収集し、それらのイベントを汎用的な形式に変換し、変換したイベントを分析コンポーネント1306に挿入することである。分析コンポーネントは観測モデルに従ってイベントに対して処理を行う。例えば、平均応答時間に関して報告するように求められた場合は、分析コンポーネントは「入口」イベントおよび「出口」イベントを応答時間イベントに変え、次いでそれらを平均するはずである。これらの結果は、最終的には、リポジトリ1304を介して利用可能になるはずである。従って、行われることは、アプリケーションと観測モデルとに相関する1組のイベントが実行コンポーネントによって生成されることである。
上のサービス・レベル・アグリーメントの例は、本システムの特定の具体的な使用方法を構成する。サービス・レベル・アグリーメントは、関連データと、分析コンポーネントから来るイベントの流れを監視するイベント・ハンドラとを測定し、サービス・レベル・アグリーメントに違反した場合は何らかの措置を講ずるための観測モデルとして実装される。その措置は、例えば、人間のプロセス(例えば、誰かに送信される電子メール、ポータル上で生成される警告、等)に相当することもあれば、または、アプリケーションの再調節のような自動化されたプロセスであることもある。
図14は、1つまたは複数の実施形態に従うリポジトリ環境の例を一般的に1400で示す。ここで、リポジトリ1304は開発ツール1310と統合サービス・コンポーネント1402の間に論理的に挟まれているとして示されている。リポジトリはアプリケーション、その性能、ライフサイクル、要件、および他の全ての関連情報に関する情報を含む。従って、リポジトリ1304はそのデータを、1404で一般的に指定した様々なソースから受け取ることができる。例えば、1406で示したもののような多種多様な機構を用いてアプリケーション・データを記述することができる。代替または追加として、1408では、アプリケーションがSQLテーブルまたはストアド・プロシージャを使用する場合は、SQLカタログが適切であるかもしれない。代替または追加として、1410では、様々なソース・コード制御システムまたはサードパーティの記述を1412で用いてアプリケーション・データを記述してもよい。このように、開発ツール1310は、一般に、リポジトリと主要な関係にあり、リポジトリは他のデータ記憶域と主要な関係にある。リポジトリは、統合サービス・コンポーネントを用いて、これらの様々なデータ記憶域にわたる連合されたビューを生成する。
1つまたは複数の実施形態では、統合サービス・コンポーネント1402はこのデータの全てを処理し、リポジトリ1304を介して見えるようにすることができる。実際には、リポジトリをSQLアプリケーションとして実装することができる。従って、リポジトリにアクセスするために利用されるAPIはSQLのAPIであることができる。どのようにこれらが全て連動できるかの例として、以下を考える。アプリケーションがウェブ・ページ、ワークフロー、データベースを有するとする。ユーザは、一般に、既存のツールを使用して、ウェブ・ページと、ソース・コード制御においてこれらのアーチファクトを格納するデータベースとを構築することがある。ユーザは、リポジトリ内のワークフローと分散アプリケーション・モデルとを構築するためにモデリング・ツールを使用するはずである。分散アプリケーション・モデルは、ソース・コード制御システムにおいてウェブ・ページとワークフローを指し示す。実行コンポーネントがモデルを読みに行くと、データベース記述が実際には他の記憶域にあり統合サービス・コンポーネント1402を介してリポジトリに橋渡しされている場合には、リポジトリ1304はそのモデルがウェブ・ページのように見せ、そのデータベース記述がリポジトリ内にあるように見せる。
図15は、1実施形態に従う実行環境の例を一般的に1500で示す。環境1500は、本例では、リポジトリ1504とサービス・バス1506の間に論理的に挟まれている実行部1502を備える。
1つまたは複数の実施形態では、実行部1502は、SharePoint、IIS/WAS、BizTalk、SQL Serverのようなホストまたはコンテナを連合させて、アプリケーションをスコープとする(すなわち、アプリケーション全体の)指令、制御、および監視を分散アプリケーションに提供する。実行部1502が実施する機能の中には、限定ではなく例として、モデル全体のスコープでコマンドおよび制御要求を、分散モデルの一部が実行されるコンテナ上のコマンドおよび制御要求に変換することが含まれる。図示および説明した実施形態では、この変換は、カスタマイズ可能なビジネス・プロセスによって推進される。さらに、実行部1502は、モデル全体のスコープで規定された観測モデルを、個々のコンテナが特定の種類のイベントを生成するという要求に変換する。これらのイベントがコンテナ内で生成されると、実行部はそれらのイベントを標準形式に変換し、サービス・バス1502を介して、リポジトリ1504の一部として公開された稼動記憶域(performant store)に送信する。実行部1502は、実行中のモデルのパラメータ構成の一部に対する変更をリアルタイムにサポートし、その結果、アプリケーションを調整することができ、基礎となるアプリケーションを再起動せずに観測モデルを変更することができる。「デプロイ」および「実行」のような動詞をモデルに適用する能力をサポートすることによって、およびモデルに関する観測された情報を集約することによって、実行部は、既存のコンテナを連合させ、単一のシステム上で実行されている分散モデルのエクスペリエンスを提供する。
図15の実例をより具体的に参照すると、リポジトリ1504は、アプリケーションと、そのアプリケーションが従うルールであるポリシ・アサーションを保持する。リポジトリはまた、アプリケーションに関連付けられたリソースの全てを含む。例えば、この特定のアプリケーションを、これらの特定の8個のコンピュータ、4つのSQLサーバ、および2つのウェブ・サーバ上で実行することができる。これらのアプリケーション、リソース、および他のリポジトリ・データを幾つかの異なる方法でアクセスすることができる。例えば、ポータルを介して、管理コンソール(MMC)を介して、またはQuadrant(または、リポジトリを直接対象とした他の何らかのモデリング・ツール)を介して、アクセスを行うことができる。従って、実行部は、リポジトリからアプリケーションにアクセスし、そのアプリケーションに関して他の機能を改良し、デプロイし、開始、停止し、バージョン管理し、実施する、エンティティである。
動作に際して、実行部1502は、それぞれを異なるマシン上で実行できる、幾つかの異なるサービスから構成される。この特定の例では、デプロイされたアプリケーション・モデルは、図示したようにプロセスがプロセス・サーバおよびSQLデータベースによって管理されるSharepointアプリケーションであってもよい。実行部は、一般に、アプリケーション・モデルをとって、どの特定のSQLサーバおよびプロセス・サーバが使用されようとしているかを確かめる等のような何らかの改良を実施する。どの特定のサーバまたはサービスが使用されるかを確かめた後は、実行部は、デプロイに使用するドライバを知っており、モデルをデプロイすることができる。実行部のドライバ管理機能により、実行部に、アプリケーションを実行できる様々な場所の全て、例えばSharepoint、SQL、COM+、SQL、Windows Shell等、を扱う能力が提供される。
このように、アプリケーションはリポジトリ内に存在し、考えられる限り多数の異なるコンポーネント・モジュールから構築されている。実行部はこれらのモジュールを理解し、モジュールまたはモジュールの知識を獲得し、そのモジュールを、そのモジュールが実行される場所にデプロイする。
次いで、これらのコンポーネント・モジュールは2つの異なる目的でサービス・バス1506を使用することができる。第1に、コンポーネント・モジュールは、サービス・バスを用いて互いに通信することができる。さらに、コンポーネント・モジュールは関連するイベント・データを獲得し、サービス・バスを使用して図13の分析コンポーネントのような分析コンポーネントを介してリポジトリにイベント・データを戻すことができる。これにより、観測モデルをアプリケーションと関連して使用することができる。観測モデルは、どのイベントを生成すべきかを伝える命令を、ホスト内で実行されているアプリケーション・モジュールに提供する。観測モデルはまた、イベントが観測モデルの観測要求に答えるようにそのイベントを後処理する方法に関して分析コンポーネントに指示する。このように、観測モデルは、アプリケーションの実行に関する分析を行うために使用できる、アプリケーションに関する情報を選択的に収集する。係る情報を使用して、アプリケーションを改良するか、またはアプリケーションの実行を改善する変更をオンザフライで行うことができる。係る情報は、より一般的には、ロギング、ガバナンス、監視、等のようなものに有用である。
図16は、1つまたは複数の実施形態に従う環境の例を一般的に1600で示す。ここで、必要に応じて、図15の実施形態と同じ番号を、同じコンポーネントを示すために使用している。環境1600は、実行部1502、リポジトリ1504、サービス・バス1506以外にも、システムの分析サービスの一部とみなしうるものを備える分析コンポーネント1602を備える。
具体的には、ここで、分析コンポーネント1602は、イベント・データ(すなわち、イベントのインスタンス)をリポジトリ1504から読み出し、そのイベント・データに何らかの方法で作用するように構成される。イベント・データは以前に作成されており、サービス・バスを介してリポジトリに提供されたことを思い出すこと。
動作に際して、分析コンポーネント1602はイベント・データを任意の適切な方法で処理することができる。例えば、分析コンポーネントは、アプリケーションの性能に関する質問に答えるために、統計分析をイベントに対して実行することができる。さらに、ユーザは、分析コンポーネントによって作成されたデータに、特定のアプリケーションがどのように動作しているかを記述するユーザ・インタフェースを提供するポータルを介して、アクセスすることができる。
さらに、分析コンポーネントをまた、KPI(key performance indicator)およびSLA(service level agreement)を読み、これらをアプリケーションの性能の分析において使用するように構成することができる。係るKPIおよびSLAを使用して、例えば、アプリケーションまたはそのコンポーネントの1つを再構成し、アプリケーションを再デプロイすることによって、アプリケーションの性能を向上させることができる。
ツール・コンポーネント
1つまたは複数の実施形態では、ツール・コンポーネント110(図1)は様々なツールを備え、その例には、Visual Studioコンポーネント132のようなコード・ベースのツール、Quadrantコンポーネント134のようなモデル・ベースのツール、およびSystem Centerコンポーネント136のようなエンタープライズ管理ツールが含まれる。
1つまたは複数の実施形態では、利用できる幾つかの異なるモデルがあり、それぞれを密接に関連付けることができる。具体的には、アプリケーションはモデル、コード・アーチファクトから構築され、エンタープライズ管理ツールというより大きなコンテクストで管理される。Visual Studioのようなコード・ベースのツールは、コード・アーチファクトの作成、テスト、更新をサポートする。Quadrantのようなモデル・ベースのツールは、モデルの作成、テスト、更新をサポートする。モデル・ベースのツールは、モデル間の関係、モデルとコード・アーチファクトの間の関係を認識する。なぜならば、これらの関係がモデルにおいて記述されているからである。
基本的には、モデル・ベースのツールは、モデルの一定の品質を明らかにするビュー(ボックス・ライン(box−and−line)、フォーム、テーブル、等)を介して全てのモデルを見えるようにする、汎用的な編集エクスペリエンスを提供する。ユーザはこの汎用的な編集エクスペリエンスをカスタマイズして、カスタマイズしたビューを格納し、将来同様なデータを扱うときにそのビューを呼び出すことができる。開発者は、特定のモデル用にカスタマイズした新しいエディタを構築することができる。これらのエディタはカスタムな編集エクスペリエンスを提供することができるか、または或る特定のモデルに固有な機能(例えば、ワークフローをワークフロー・エディタでデバッグできること)を提供することができる。
リポジトリ1504は、モデルに対するスキーマとモデルのインスタンスの両方を含む。モデル・スキーマは単なるモデルでありリポジトリはスキーマを有するので、様々なモデル・ベースのツールを使用して、新しいモデルと、既存のモデルのインスタンスを生成することができる。
システムの例
図17は、上述の様々な実施形態を実装できるコンピューティング装置の例1700を示す。コンピューティング装置1700は、例えば、クライアント装置および/またはサーバ装置のような任意の適切なコンピューティング装置であることができる。
コンピューティング装置1700は、1つまたは複数のプロセッサもしくは演算装置1702、1つまたは複数のメモリおよび/もしくは記憶装置1704、1つまたは複数のI/O(input/output)装置1706、ならびに様々なコンポーネントおよび装置が互いに通信できるようにするバス1708を備える。バス1708は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、様々なバス・アーキテクチャの何れかを用いたプロセッサ・バスまたはローカル・バスを含む、任意の数種のバス構造のうち1つまたは複数を表す。バス1708は、有線バスおよび/または無線バスを含むことができる。
メモリ/記憶域コンポーネント1704は、1つまたは複数のコンピュータ記憶媒体を表す。コンポーネント1704は、(RAM(random access memory)のような)揮発性媒体および/または(ROM(read only memory)、フラッシュ・メモリ、光ディスク、磁気ディスク、等のような)不揮発性媒体を備えることができる。コンポーネント1704は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ、等)、および取外し可能媒体(例えば、フラッシュ・メモリ・ドライブ、取外し可能ハード・ドライブ、光ディスク、等)を備えることができる。
1つまたは複数の入出力装置1706により、ユーザはコマンドと情報をコンピューティング装置1700に入力することができ、情報をユーザおよび/またはコンポーネントもしくは装置に提示することができる。入力装置の例には、キーボード、カーソル制御装置(例えば、マウス)、マイクロフォン、スキャナ、等が含まれる。出力装置の例には、表示装置(例えば、モニタまたはプロジェクタ)、スピーカ、プリンタ、ネットワーク・カード、等が含まれる。
本明細書では様々な技法をソフトウェアまたはプログラム・モジュールの一般的なコンテクストで説明することができる。一般に、ソフトウェアは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。これらのモジュールおよび技法の実装形態を、何らかの形のコンピュータ読取可能媒体に記憶するか、またはその媒体にわたって送信することができる。コンピュータ読取可能媒体は、コンピューティング装置がアクセス可能な任意の利用可能な1つまたは複数の媒体であることができる。限定ではなく例として、コンピュータ読取可能媒体は、「コンピュータ記憶媒体」と「通信媒体」を備えることができる。
「コンピュータ記憶媒体」には、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CD−ROM、DVD(digital versatile disk)もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用できコンピュータがアクセスできる他の任意の媒体が含まれるがこれらに限らない。
「通信媒体」は、一般に、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータを搬送波または他の伝送機構のような変調データ信号で具現化する。通信媒体はまた、任意の情報配送媒体を含む。「変調データ信号」という用語は、1つまたは複数のその特性集合を有するか信号内の情報をエンコードするよう変化した信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、RF、赤外線および他の無線媒体のような無線媒体が含まれる。上の何れかの組合せもコンピュータ読取可能媒体の範囲内に含まれるべきである。
結論
諸実施形態では、コンポジット(複合)型の、自律的なアプリケーションおよびサービスを構築しデプロイできるようにするアーキテクチャを提供する。さらに、分散型のアプリケーションとサービスの間での通信を可能とするインフラが提供される。
1つまたは複数の実施形態では、例示的なアーキテクチャが、接続性サービス、プロセス・サービス、アイデンティティ・サービス、ライフサイクル・サービス、およびツールを含む5つの論理モジュールを備えるかまたは利用する。
主題を構造的特徴および/または方法論的動作に固有な言葉で説明したが、添付の特許請求の範囲で定義した主題は必ずしも上述の特定の特徴または動作に限定されないことは理解されよう。そうではなく、上述の特定の特徴および動作は諸請求項を実装する形態の例として開示されている。

Claims (5)

  1. コンポジット・アプリケーションとサービスが互いに通信できるようにするための接続性サービス・コンポーネントであって、前記接続性サービス・コンポーネントは、1つまたは複数のアプリケーション・モジュールにおける期待される状態と期待されない状態に対する応答調整をサポートし、メッセージ仲介サービスを提供し、複数のエンドポイントを介した転送、発見、および同期を仮想化し、前記接続性サービス・コンポーネントはさらに、複数の異なるエンコード標準をサポートし、メッセージ・ベースのポイント・ツー・ポイント通信を促進し、問合せをサポートし、アプリケーションが一貫して名付けられることを保証し、コンポジット・アプリケーションのためのセキュリティ・アーキテクチャを提供し、前記接続性サービス・コンポーネントは、広域近接性認識型のルーティングを実装し、連合名前空間を提供する、接続性サービス・コンポーネントと、
    コンポジット・アプリケーションに関するランタイムを提供するプロセス・サービス・コンポーネントであって、前記プロセス・サービス・コンポーネントは、メッセージを受け取り、それに応答して、メッセージが送信されたプロセスを実行するように使用できる環境を提供し、メッセージを処理し、実行されているかもしれないプロセスにメッセージを関連づけることを試みる、プロセス・サービス・コンポーネントと、
    コンポジット・アプリケーションに関連付けられたアイデンティティ操作を実施するアイデンティティ・サービス・コンポーネントであって、前記アイデンティティ・サービス・コンポーネントは、アクセス層と前記アクセス層を介してアクセス可能なディレクトリ・スタックとを含み、前記アクセス層は、前記ディレクトリ・スタック内のデータにアクセスするための複数の異なる種類のAPIと、コンポジット・アプリケーションと関連してアイデンティティを管理し使用するためのアクセス・サービスとを備える、アイデンティティ・サービス・コンポーネントと、
    コンポジット・アプリケーションを実行できる環境を提供するライフサイクル・サービス・コンポーネントであって、前記ライフサイクル・サービス・コンポーネントは、コンポジット・アプリケーションに関連付けられた情報を保持し、複数の異なるデータ・ソースとコンポジット・アプリケーションの間でデータを同期し、コンポジット・アプリケーションにアクセスし、前記コンポジット・アプリケーションを異なるマシンに配布し、1つまたは複数のコンポジット・アプリケーションの性能を分析する、ライフサイクル・サービス・コンポーネントと、
    を含む、コンピュータに実装されたシステム
  2. 実行時に、コンピュータを、
    コンポジット・アプリケーションとサービスが互いに通信できるようにするための接続性サービス・コンポーネントであって、前記接続性サービスは、1つまたは複数のアプリケーション・モジュールにおける期待される状態と期待されない状態に対する応答調整をサポートし、メッセージ仲介サービスを提供し、複数のエンドポイントを介した転送、発見、および同期を仮想化する、接続性サービス・コンポーネントと、
    コンポジット・アプリケーションにランタイムを提供するプロセス・サービス・コンポーネントであって、前記プロセス・サービス・コンポーネントは、メッセージを受け取り、それに応答して、メッセージが送信されたプロセスを実行するように使用できる環境を提供し、メッセージを処理し、実行されているかもしれないプロセスにメッセージを関連づけることを試みる、プロセス・サービス・コンポーネントと、
    コンポジット・アプリケーションに関連付けられたアイデンティティ操作を実施するアイデンティティ・サービス・コンポーネントであって、前記アイデンティティ・サービス・コンポーネントは、アクセス層と前記アクセス層を介してアクセス可能なディレクトリ・スタックとを含み、前記アクセス層は、前記ディレクトリ・スタック内のデータにアクセスするための複数の異なる種類のAPIと、コンポジット・アプリケーションと関連してアイデンティティを管理し使用するためのアクセス・サービスとを備える、アイデンティティ・サービス・コンポーネントと、
    コンポジット・アプリケーションを実行できる環境を提供するライフサイクル・サービス・コンポーネントであって、前記ライフサイクル・サービス・コンポーネントは、コンポジット・アプリケーションに関連付けられた情報を保持し、複数の異なるデータ・ソースとコンポジット・アプリケーションの間でデータを同期し、コンポジット・アプリケーションにアクセスし、前記コンポジット・アプリケーションを異なるマシンに配布し、1つまたは複数のコンポジット・アプリケーションの性能を分析する、ライフサイクル・サービス・コンポーネントと、
    として機能させるためのプログラム格納した、1つまたは複数のコンピュータ読取可能記憶媒体。
  3. 前記接続性サービス・コンポーネントは、複数の異なるエンコード標準をサポートし、メッセージ・ベースのポイント・ツー・ポイント通信を促進し、問合せをサポートし、アプリケーションが一貫して名付けられることを保証し、コンポジット・アプリケーションにセキュリティ・アーキテクチャを提供する、請求項2に記載の1つまたは複数のコンピュータ読取可能記憶媒体。
  4. 前記接続性サービス・コンポーネントは、広域近接性認識型のルーティングを実装し、連合名前空間を提供する、請求項3に記載の1つまたは複数のコンピュータ読取可能記憶媒体。
  5. 前記接続性サービス・コンポーネントは、メッセージおよびイベントの登録を管理し、メッセージ・ノードを対象としたメッセージを受け取り、メッセージ・ノードからのメッセージを送信する、請求項2に記載の1つまたは複数のコンピュータ読取可能記憶媒体。
JP2010531209A 2007-10-23 2008-10-22 モデル・ベースのコンポジット・アプリケーション・プラットフォーム Active JP5277251B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US98203207P 2007-10-23 2007-10-23
US60/982,032 2007-10-23
US12/247,829 US8751626B2 (en) 2007-10-23 2008-10-08 Model-based composite application platform
US12/247,829 2008-10-08
PCT/US2008/080823 WO2009055492A1 (en) 2007-10-23 2008-10-22 Model-based composite application platform

Publications (2)

Publication Number Publication Date
JP2011501854A JP2011501854A (ja) 2011-01-13
JP5277251B2 true JP5277251B2 (ja) 2013-08-28

Family

ID=40579984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010531209A Active JP5277251B2 (ja) 2007-10-23 2008-10-22 モデル・ベースのコンポジット・アプリケーション・プラットフォーム

Country Status (7)

Country Link
US (1) US8751626B2 (ja)
EP (1) EP2203848A4 (ja)
JP (1) JP5277251B2 (ja)
CN (1) CN101836200B (ja)
BR (1) BRPI0816893A2 (ja)
RU (1) RU2502127C2 (ja)
WO (1) WO2009055492A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090165021A1 (en) * 2007-10-23 2009-06-25 Microsoft Corporation Model-Based Composite Application Platform
US8806185B2 (en) * 2008-05-29 2014-08-12 International Business Machines Corporation System and method for automatic configuration of portal composite applications
US8138247B2 (en) 2008-08-29 2012-03-20 E.I. Du Pont De Nemours And Company Polyoxymethylene compositions and articles made from these
WO2011074492A1 (ja) * 2009-12-18 2011-06-23 株式会社 村田製作所 薄膜形成方法、及び量子ドットデバイス
US8996692B2 (en) * 2009-12-18 2015-03-31 International Business Machines Corporation Forming configuration information about components of systems which include components for which acquisition of configuration information is restricted
US8595344B2 (en) * 2010-10-22 2013-11-26 Sap Ag Integration middleware virtualization
US20120158819A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Policy-based application delivery
US9286037B2 (en) * 2010-12-29 2016-03-15 Microsoft Technology Licensing, Llc Platform for distributed applications
US9817657B2 (en) * 2011-10-05 2017-11-14 Hartigen Solutions, Llc. Integrated software development and deployment architecture and high availability client-server systems generated using the architecture
US8706684B2 (en) * 2011-11-30 2014-04-22 Tata Consultancy Services Limited System and method for managing enterprise data
US9304746B2 (en) * 2012-06-07 2016-04-05 Carmel-Haifa University Economic Corporation Ltd. Creating a user model using component based approach
JP6276273B2 (ja) * 2012-09-07 2018-02-07 オラクル・インターナショナル・コーポレイション 分散型データグリッドクラスタにおけるメッセージ前処理をサポートするシステムおよび方法
US9569274B2 (en) 2012-10-16 2017-02-14 Microsoft Technology Licensing, Llc Distributed application optimization using service groups
CN103136350B (zh) * 2013-02-01 2017-02-08 江苏易合大成网络科技有限公司 一种在系统平台上运行多个应用的方法及装置
WO2015082083A1 (en) * 2013-12-04 2015-06-11 Nec Europe Ltd. Method and system for generating a virtual device resource accessible by an application
JP6211722B2 (ja) 2014-06-26 2017-10-11 グーグル インコーポレイテッド 最適化されたブラウザレンダリング処理
WO2015196414A1 (en) 2014-06-26 2015-12-30 Google Inc. Batch-optimized render and fetch architecture
CN106462561B (zh) 2014-06-26 2020-06-09 谷歌有限责任公司 优化浏览器渲染过程
US9571414B2 (en) * 2014-06-27 2017-02-14 Amazon Technologies, Inc. Multi-tiered processing using a distributed strict queue
US9356913B2 (en) * 2014-06-30 2016-05-31 Microsoft Technology Licensing, Llc Authorization of joining of transformation chain instances
US9396698B2 (en) * 2014-06-30 2016-07-19 Microsoft Technology Licensing, Llc Compound application presentation across multiple devices
US9577972B1 (en) * 2014-09-09 2017-02-21 Amazon Technologies, Inc. Message inspection in a distributed strict queue
US9819573B2 (en) 2014-09-11 2017-11-14 Microsoft Technology Licensing, Llc Method for scalable computer network partitioning
US9544225B2 (en) * 2014-09-16 2017-01-10 Microsoft Technology Licensing, Llc Method for end point identification in computer networks
GB2531037A (en) * 2014-10-08 2016-04-13 Ibm Deployment management of composite applications
CN107430606B (zh) * 2014-12-01 2021-06-29 信息科学有限责任公司 具有并行持久性的消息代理系统
JP6622309B2 (ja) * 2014-12-12 2019-12-18 ビザ インターナショナル サービス アソシエーション マシンツーマシン装置のためのプロビジョニング・プラットフォーム
US10230600B2 (en) * 2014-12-19 2019-03-12 Oracle International Corporation Performance analysis and bottleneck detection in service-oriented applications
US10305762B2 (en) 2014-12-19 2019-05-28 Oracle International Corporation Techniques for determining queue backlogs, active counts, and external system interactions in asynchronous systems
JP6507643B2 (ja) 2015-01-05 2019-05-08 富士通株式会社 アプリ提供方法、アプリ提供サーバおよびアプリ提供プログラム
US9311083B1 (en) * 2015-04-10 2016-04-12 CypressX LLC Machine interface configuration system for coerced inconsistencies on different machine platforms
US10089159B2 (en) 2016-11-03 2018-10-02 Microsoft Technology Licensing, Llc Processing non-spatial input by multiple program elements of a computer program executed on a computer
US11175802B2 (en) * 2018-09-21 2021-11-16 Sap Se Configuration object deletion manager
US10430179B1 (en) * 2019-03-07 2019-10-01 Capital One Services, Llc Methods and systems for managing application configurations
US11163537B1 (en) * 2020-05-01 2021-11-02 Mastercard Technologies Canada ULC Tiered application pattern
US12081543B2 (en) 2022-05-31 2024-09-03 Bank Of America Corporation System and method for user authentication for information security
US12112438B2 (en) 2022-07-29 2024-10-08 Bank Of America Corporation Virtual environment-to-virtual environment communication

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156814A1 (en) 1997-01-13 2002-10-24 Ho Bruce K. Method and apparatus for visual business computing
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US6167564A (en) 1998-09-17 2000-12-26 Unisys Corp. Software system development framework
US6415384B1 (en) 1998-10-30 2002-07-02 Lucent Technologies Inc. Hardware/software co-synthesis of dynamically reconfigurable embedded systems
US20020104067A1 (en) 1999-12-29 2002-08-01 Green David W. Method and system and article of manufacture for an N-tier software component architecture application
WO2001061542A1 (en) 2000-02-16 2001-08-23 Bea Systems, Inc. Message routing system for enterprise wide electronic collaboration
US20020035584A1 (en) 2000-05-09 2002-03-21 Paul Scheier icFoundation web site development software and icFoundation biztalk server 2000 integration
US7188158B1 (en) 2000-07-15 2007-03-06 Hewlett-Packard Development Company, L.P. System and method for component-based software development
US6907395B1 (en) 2000-10-24 2005-06-14 Microsoft Corporation System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
US20020078003A1 (en) 2000-12-15 2002-06-20 Krysiak Bruce R. Method and system for identifying one or more information sources based on one or more trust networks associated with one or more knowledge domains
US20020116454A1 (en) * 2000-12-21 2002-08-22 William Dyla System and method for providing communication among legacy systems using web objects for legacy functions
US6986145B2 (en) 2001-03-13 2006-01-10 Dipayan Gangopadhyay In-context access to relevant services from multiple applications and information systems by object schema traversal
US20030208527A1 (en) 2001-07-20 2003-11-06 Lino Lglesais Method for smart device network application infrastructure (SDNA)
US7316000B2 (en) 2001-08-27 2008-01-01 International Business Machines Corporation Interactive agent for a topological multi-tier business application composer
US20030074482A1 (en) 2001-10-16 2003-04-17 Christensen Erik B. Composable messaging protocol
US7454750B2 (en) 2001-10-19 2008-11-18 Amberpoint, Inc. Integrator adaptor and proxy based composite application provisioning method and apparatus
CN1421799A (zh) * 2001-11-30 2003-06-04 英业达股份有限公司 实时数据客户服务系统及其方法
US6826568B2 (en) 2001-12-20 2004-11-30 Microsoft Corporation Methods and system for model matching
US7363612B2 (en) 2002-03-06 2008-04-22 Sun Microsystems, Inc. Application programs with dynamic components
FR2838217B1 (fr) 2002-04-05 2004-06-25 De Chelle Yvonne Auberlet Procede et dispositif de generation de logiciels executables sur mesure et evolutifs sans programmation informatique
US7096459B2 (en) * 2002-09-11 2006-08-22 International Business Machines Corporation Methods and apparatus for root cause identification and problem determination in distributed systems
US7395536B2 (en) * 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US20040122693A1 (en) 2002-12-23 2004-06-24 Michael Hatscher Community builder
US20040162741A1 (en) 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7730446B2 (en) 2003-03-12 2010-06-01 Microsoft Corporation Software business process model
US20040230447A1 (en) 2003-03-14 2004-11-18 Sven Schwerin-Wenzel Collaborative workspaces
US20040181425A1 (en) 2003-03-14 2004-09-16 Sven Schwerin-Wenzel Change Management
US20040187140A1 (en) 2003-03-21 2004-09-23 Werner Aigner Application framework
US20050010893A1 (en) * 2003-07-11 2005-01-13 Schmidt John G.E. Process for creating middleware adapters
US7523220B2 (en) * 2003-09-17 2009-04-21 Microsoft Corporation Metaspace: communication middleware for partially connected mobile ad hoc networks
US20050091259A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Redmond Wa. Framework to build, deploy, service, and manage customizable and configurable re-usable applications
US20070011334A1 (en) 2003-11-03 2007-01-11 Steven Higgins Methods and apparatuses to provide composite applications
US20050144226A1 (en) 2003-11-10 2005-06-30 Churchill Software Services Systems and methods for modeling and generating reusable application component frameworks, and automated assembly of service-oriented applications from existing applications
US20050125738A1 (en) 2003-12-04 2005-06-09 Biplav Srivastava Composite network-accesible services
US7665085B2 (en) 2004-03-15 2010-02-16 Ramco Systems Limited Flexible deployment of software applications
US7665064B2 (en) 2004-05-14 2010-02-16 Gt Software, Inc. Systems and methods for web service function, definition, implementation, and/or execution
US20050267947A1 (en) 2004-05-21 2005-12-01 Bea Systems, Inc. Service oriented architecture with message processing pipelines
US7774485B2 (en) 2004-05-21 2010-08-10 Bea Systems, Inc. Dynamic service composition and orchestration
US7653008B2 (en) 2004-05-21 2010-01-26 Bea Systems, Inc. Dynamically configurable service oriented architecture
US8069443B2 (en) 2004-06-29 2011-11-29 Novell, Inc. Techniques for providing services and establishing processing environments
US20060015584A1 (en) * 2004-07-13 2006-01-19 Teneros, Inc. Autonomous service appliance
US7373355B2 (en) 2004-09-03 2008-05-13 Metallect Corporation System and method for relating applications in a computing system
US7580915B2 (en) 2004-12-14 2009-08-25 Sap Ag Socket-like communication API for C
US8533717B2 (en) 2004-12-14 2013-09-10 Sap Ag Fast platform independent inter-process communication
US7593930B2 (en) * 2004-12-14 2009-09-22 Sap Ag Fast channel architecture
US7853959B2 (en) 2005-02-08 2010-12-14 Sap Ag Business process extension for productivity suite application
US7421716B1 (en) 2005-02-09 2008-09-02 Cerylion, Inc. System and method for providing composite applications
US7895566B2 (en) 2005-03-10 2011-02-22 Research In Motion Limited System and method for building a deployable component based application
US20070011126A1 (en) 2005-03-21 2007-01-11 Primitive Logic, Inc. Service-oriented architecture
US20070033571A1 (en) 2005-08-02 2007-02-08 Sap Ag Dynamic work center
US7873422B2 (en) 2005-09-02 2011-01-18 Sap Ag Event-based coordination of process-oriented composite applications
US7693586B2 (en) 2005-09-02 2010-04-06 Sap Ag Process model transformation for event-based coordination of composite applications
US8464214B2 (en) 2005-09-15 2013-06-11 Ca, Inc. Apparatus, method and system for building software by composition
US20070118844A1 (en) 2005-11-23 2007-05-24 Jin Huang Designer and player for web services applications
US7697073B2 (en) * 2005-12-06 2010-04-13 Raytheon Company Image processing system with horizontal line registration for improved imaging with scene motion
US8122427B2 (en) 2006-01-04 2012-02-21 Microsoft Corporation Decentralized system services
US8296408B2 (en) 2006-05-12 2012-10-23 Sap Ag Distributing relocatable services in middleware for smart items
US7496893B2 (en) 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US20070294364A1 (en) 2006-06-15 2007-12-20 International Business Machines Corporation Management of composite software services
US20080313090A1 (en) 2007-06-18 2008-12-18 Leonid Portman Interaction-management methods and platform for client-agent interaction-related environments
US20090165021A1 (en) 2007-10-23 2009-06-25 Microsoft Corporation Model-Based Composite Application Platform

Also Published As

Publication number Publication date
CN101836200B (zh) 2013-03-27
EP2203848A1 (en) 2010-07-07
US8751626B2 (en) 2014-06-10
BRPI0816893A2 (pt) 2015-03-24
EP2203848A4 (en) 2011-09-28
RU2010116037A (ru) 2011-10-27
CN101836200A (zh) 2010-09-15
WO2009055492A1 (en) 2009-04-30
JP2011501854A (ja) 2011-01-13
US20090157872A1 (en) 2009-06-18
RU2502127C2 (ru) 2013-12-20

Similar Documents

Publication Publication Date Title
JP5277251B2 (ja) モデル・ベースのコンポジット・アプリケーション・プラットフォーム
US20090165021A1 (en) Model-Based Composite Application Platform
Volter et al. Remoting patterns
Fidler et al. The PADRES Distributed Publish/Subscribe System.
JP5026415B2 (ja) データセントリックワークフロー
Krishnan et al. GSFL: A workflow framework for grid services
US8135668B2 (en) Service composition environment
Niblett et al. Events and service-oriented architecture: The oasis web services notification specification
JP2002517829A (ja) エンタープライズ内または間におけるファイアウォールを介してクライアントコールバックを行う方法及びシステム
KR20080084966A (ko) 서비스 계약 문서의 웹 서비스 구현 변경 방법 및 이를구현하는 데 사용되는 컴퓨터 프로그램 제품
Bianco et al. Architecting service-oriented systems
Harrison et al. WS-RF workflow in Triana
Perucci et al. Distributed composition of highly-collaborative services and sensors in tactical domains
US8161055B2 (en) Filter extraction in a service registry environment
Szepielak REST-based service oriented architecture for dynamically integrated information systems
US8041722B2 (en) Refining collections of entities in a service registry environment
Friese et al. A robust business resource management framework based on a peer-to-peer infrastructure
Hentrich et al. A pattern language for process execution and integration design in service-oriented architectures
Kyriazis et al. Achieving real-time in distributed computing: From grids to clouds
Parimala et al. Non-functional Properties of a Webservice
Ibrahim et al. Literature survey on enhancement of MOM for intelligent cross-platform communications in service oriented architecture
Krishnan Web Service Interface for Legacy Virtual Product Lifecycle Management System
Lie Enabling the compatible evolution of services based on a cloud-enabled ESB solution
Akshaya et al. Dycsr: Dynamic composition of soap services and restful services in e-governance applications
Goovaerts Distributed authorization middleware for service-oriented architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130327

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130419

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5277251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250