JP5063899B2 - サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用 - Google Patents

サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用 Download PDF

Info

Publication number
JP5063899B2
JP5063899B2 JP2006012639A JP2006012639A JP5063899B2 JP 5063899 B2 JP5063899 B2 JP 5063899B2 JP 2006012639 A JP2006012639 A JP 2006012639A JP 2006012639 A JP2006012639 A JP 2006012639A JP 5063899 B2 JP5063899 B2 JP 5063899B2
Authority
JP
Japan
Prior art keywords
service
description
network
act
tree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006012639A
Other languages
English (en)
Other versions
JP2006216030A (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 JP2006216030A publication Critical patent/JP2006216030A/ja
Application granted granted Critical
Publication of JP5063899B2 publication Critical patent/JP5063899B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Description

本発明は、分散アプリケーション・プログラミング・モデルに関し、さらに詳細には、抽象的な記述を利用して、サービスおよびクライント・ランタイムを生成、交換、構成することに関する。
コンピュータ・システムおよび関連技術は、社会の多くの面に影響を及ぼしている。実際に、コンピュータ・システムの情報処理能力は、我々の生活の仕方と働き方とを変化させた。コンピュータ・システムの登場前には手動で行っていた多くのタスク(例えば、ワード・プロセッシングや、スケジュール管理、データベース管理)は、今では普通、コンピュータ・システムによって行われる。さらに最近では、コンピュータ・システムを別のコンピュータ・システムおよび他の電子デバイスに結合して、有線および無線のコンピュータ・ネットワークを形成し、これを介してコンピュータ・システムおよび他の電子デバイスが電子データを転送することができる。結果として、1つのコンピュータ・システムで行われる多くのタスク(例えば、音声コミュニケーションや、電子メールへのアクセス、家庭用電化製品の制御、ウェブ・ブラウズ、文書の印刷)には、有線および/または無線のコンピュータ・ネットワークを介した多数のコンピュータ・システム間および/または多数の電子デバイス間での電子メッセージを交換することが含まれる。
実際、ネットワークの数が増えたので、ネットワーク可能な簡単なコンピューティング・システムが、「インターネット」と呼ばれることの多いネットワークの集合上で、世界中に広がる無数の他のコンピューティング・システムのいずれとも通信できる。このようなコンピューティング・システムは、デスクトップ型、ラップトップ型、タブレット型のコンピュータ、パーソナル・デジタル・アシスタント(「PDA」)、電話、またはネットワーク上で通信できる他の任意のコンピュータもしくはデバイスを、含むことができる。
例えばサービス指向アーキテクチャなどのいくつかの環境において、接続エンド・ポイント(「サービス」と呼ばれることが多く、以下そのように呼ぶ)が互いに通信しあって、所望の機能性を実装する。所望の機能性は、2つのサービスがデータを交換するのと同程度に単純である。例えば、あるサービス・コンシューマが、サービス・プロバイダにサービス要求メッセージを送信し、サービス・プロバイダは、そのサービス要求メッセージを受信、処理し、対応するサービス応答メッセージをサービス・コンシューマに戻すことができる。一方、所望の機能性は、さらに複雑にすることもできる。例えば、メッセージを交換する多くのサービスを関係させることで、アクティビティのいくつかを調整することもできる。サービスは通常、対応する提供された接続をサポートするある種のコンピュータ・システム(ハードウェアとソフトウェアの両方)を有する。
交換されるメッセージ(例えば、サービス要求メッセージおよびサービス応答メッセージ)は、所望の機能性を実装することに関わる各サービス(例えば、1つまたは複数のサービス・コンシューマ、および1つまたは複数のサービス・プロバイダ)が理解できるように、方法で、定義することができる。一般に、メッセージは、例えば分散コンポーネント・オブジェクト・モデル(「DCOM」)または、共通オブジェクト・リクエスト・ブローカー・アーキテクチャ(「CORBA」)、ウェブ・サービスなどの何らかの標準規格に従って定義することができる。さらに、ウェブ・サービスは、例えばウェブ・サービス記述言語(「WSDL」)、ウェブ・サービス・ポリシー・フレームワーク(「WS−Policy」)などの各種のウェブ・サービスの仕様に従って定義することができる。
例えば、WSDLを使用して、あるサービス・プロバイダは、自身のサービスを記述することができる。サービス・プロバイダは、その記述を、例えばユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション(UDDI)を使用するディレクトリ・サービスにサービスの公開することができる。サービス・コンシューマは、このディレクトリに対し、クエリを発行してサービスの位置を見出し、そのサービスとの通信方法を決定することができる。サービス・プロバイダによって提供されたWSDLの一部は、クエリへの応答内でサービス・コンシューマに渡される。サービス・コンシューマは、WSDLのこの部分を使用してサービス・プロバイダに要求を送信する。そしてサービス・プロバイダは、サービス・コンシューマに適切な応答を提供する。
いくつかの環境では、サービスを生成するために、開発者は特定のプログラミング・モデルに従ってソース・コード(例えばC#あるいは、C++、Visual Basic)を書く。このソース・コードはサービス型(service type)にコンパイルされ、このサービス型は、サービス・コンシューマにサービスを提供するサービス・ランタイムで実行されることができる。しかしながら、サービス・ランタイムは異なる方法で作成することもでき、かつ異なるプログラミング・モデルは異なる方法で分散メッセージング機能を実装できる。例えば、1つのプログラミング・モデルが、要求メッセージを1つ目のインターフェースを使用して実装し、対応応答メッセージを2つ目の異なるインターフェースを使用して実装することができる。一方で、別のプログラミング・モデルでは、要求メッセージおよび対応する応答メッセージの両方を、別個のメソッドを有する単一インターフェースを用いて実装することができる。その単一のインターフェースは、要求メッセージ用に1つ目のメソッドを有し、対応応答メッセージ用に2つ目のメソッドを有することができる。
異なるプログラミング・モデルは、例えば、セキュリティ・オプションや、高信頼性メッセージング・オプション、メッセージ・ロギング・オプション、接続制限オプションなどの異なる構成オプションに従って、構成することもできる。このように、同じ機能性(例えば、数学的操作を行うこと)を実装するように設計された2つのサービスは、その機能性を異なる方法で実装することができる。
さらに、分散アプリケーションは、通常、そのプログラミング・モデルに固定的であり、サービス・ランタイムに密結合した1つのプログラミング・モデルしか許容しない。その結果、互換性のために、(例えば、サービス・コンシューマで)クライアント・ランタイムは、サーバ・ランタイムと同じプログラミング・モデルに従って開発されたクライアント・プログラムまたはクライアント・モジュールを利用することが必要となる。例えば、要求メッセージと応答メッセージに対して別個のインターフェースを使用するか、または特別なセキュリティ・メカニズムを使用してサービスが開発された場合、サービス・コンシューマもそれらを同じように実装しなくてはならない。同じプログラミング・モデルに従って開発されたクライアント・プログラムまたはクライアント・モジュールを使用することをしない場合、クライアント・ランタイムがサービス・ランタイムと通信できない可能性がある。
多くの環境において、サービス記述(またはプログラミング・モデル)および対応するランタイムは固定的に結合している。つまり、サーバが自身のコードを定義し、記述を生成する。そのサービス・ランタイムを利用するために、クライアントはそのサービス記述をダウンロードし、プロキシを生成する。しかし、ダウンロード後にサーバでコードが変化すると、たとえそれが非常に小さな変化であっても、クライアントとサーバの互換性がなくなってしまう。つまり、サービス記述とサービス・ランタイムとが固定的に結合しているために、記述文書の中の構成オプションの1つまたは、定義されるメッセージング・パターン1つを変更するだけで、クライアント・ランタイムが互換性を失う。
あるサービス・ランタイムのプログラミング・モデルを変更すると、既存のクライアント・ランタイムとの互換性がなくなる可能性もある。さらに、その新規のプログラミング・モデルに関連した情報を広めることが難しくなる可能性がある。例えば、あるクライアント・ランタイムの開発者は、その新規のクライアント・ランタイムの開発を始める前に、新規のサービス記述文書が公開されるのを待たなければならない可能性がある。サービス記述文書を生成することは、そのサービスが完成するまで無いことになり、そのためサービス記述文書の生成は、新規プログラミング・モデルに基づく新規サービス・ランタイムの開発に対し遅れる可能性がある。
残念なことに、サービス記述文書を入手不能か、サービス記述文書がどこかで不完全な場合、非互換性の諸問題を識別し、補正することはクライアント・ランタイムの開発者にとって困難である可能性がある。さらに、クライアント・ランタイムの開発者が、サービス・ランタイムの開発者によって書かれたサービス型のソース・コードにアクセスできない可能性がある。そのため、クライアント・ランタイムの開発者は、新規のプログラミング・モデルに関連付けられた新規のメッセージ・パターンあるいは他の新規の構成オプションを決定できない。その結果、クライアント・ランタイムの開発者は、試行錯誤することでしか非互換性の諸問題を識別し、補正することができない。
従って、抽象的な記述を利用してサービスおよびクライアント・ランタイムを生成、交換、構成するシステムと、方法と、コンピュータ・プログラム製品とがあれば有利である。
当分野の従来技術に関する前述の問題は、本発明の原理によって克服される。本発明の原理は、抽象的な記述を利用してサービスおよびクライアント・ランタイムを生成し、交換し、構成する方法、システム、およびコンピュータ・プログラム製品とに向けられる。いくつかの実施形態では、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述をコンピュータ・システムが生成する。このコンピュータ・システムは、特定のプログラミング・モデルに従ってサービスを実装するために、サービス型(例えばコンパイルされたコードを含む)および対応するサービス構成にアクセスする。そしてこのコンピュータ・システムは、サービス型および対応するサービス構成を構文解析して記述情報を識別する。この記述情報は、特定のプログラミング・モデルに基づくそのサービスを記述する。このコンピュータ・システムは識別した記述情報に基づくサービスのサービス記述ツリーを作成する。サービス記述ツリーの形式は、どのプログラミング・モデルからも独立し、かつ1つまたは複数の他の変換モジュールがこのサービス記述ツリーを消費してそのサービスの追加的な表現を他形式で作成することができるようにすることができる。
他の実施形態では、コンピュータ・システムが、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を、そのサービスを表現するコードに変換する。このコンピュータ・システムは、あるサービス用のサービス記述ツリーにアクセスする。このサービス記述ツリーの形式は、どのプログラミング・モデルからも独立しており、対応するサービス型およびサービス構成から構文解析した記述情報から生成されたものである。このコンピュータ・システムは、このサービス記述ツリーを異なる表現形式にコンバートし、これによりこの記述情報は、この異なる表現形式に従って定義されるサービス記述情報を処理するモジュールに対し、互換性を保って転送されることができる。このコンピュータ・システムは、この異なる表現形式でこの記述情報を出力する。
追加の実施形態では、コンピュータ・システムが、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述からのサービス・ランタイムを初期化する。このコンピュータ・システムは、あるサービスのためのサービス記述ツリーにアクセスする。このサービス記述ツリー形式は、どのプログラミング・モデルからも独立しており、対応するサービス型およびサービス構成から構文解析した記述情報から生成されたものである。このコンピュータ・システムは、そのサービス記述ツリーに関連付けられたサービス・ホストの初期化メソッドを呼び出し、その対応するサービス型およびサービス構成から構文解析したその記述情報に従って、そのサービス用のサービス・ランタイムを初期化する。
さらに別の実施形態では、コンピュータ・システムがチャネル用のソース・コードを生成する。このコンピュータ・システムは、サービスを記述するメタデータにアクセスし、そのメタデータをチャネル用のチャネル記述ツリーにインポートする。このチャネル記述ツリーの形式は、いずれのプログラミング・モデルからも独立している。コンピュータ・システムは、そのチャネル記述ツリーからコード文書オブジェクト・モデルおよび対応するサービス構成を生成する。生成されたコード文書オブジェクト・モデルおよび対応するサービス構成は、特定のプログラミング・モデルに従ってチャネルを実装するためのものである。このコンピュータ・システムは、生成したコード文書オブジェクト・モデルをソース・コードとして出力し、対応するサービス構成を出力する。これにより、コード文書オブジェクト・モデルおよび対応するサービス構成を使用して特定のプログラミング・モデルによりチャネルを開始する(initiate)ことができるようにする。
本発明の目的および特徴は、下記の説明および請求の範囲からいっそう明らかになるであろう。あるいは本発明の目的および特徴は、以下に記載した本発明の実施によって理解することができる。
本発明の上述した利点や、他の利点、特性をさらに明らかにするために、添付図面に示した本発明の特定実施形態を参照することで、本発明をさらに詳しく説明する。添付図面は、本発明の代表的な実施形態を図示したものに過ぎず、そのため本発明を制限するものとして捉えるべきでないことが理解されよう。本発明は、付属図面を使用して、さらに具体的かつ詳細に説明される。
当分野の従来技術に関する前述の問題は、本発明の原理によって克服される。本発明の原理は、抽象的な記述を利用してサービスおよびクライアント・ランタイムを生成し、交換し、構成する方法、システム、およびコンピュータ・プログラム製品とに向けられる。いくつかの実施形態では、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述をコンピュータ・システムが生成する。このコンピュータ・システムは、特定のプログラミング・モデルに従ってサービスを実装するために、サービス型(例えばコンパイルされたコードを含む)および対応するサービス構成にアクセスする。そしてこのコンピュータ・システムは、サービス型および対応するサービス構成を構文解析して記述情報を識別する。この記述情報は、特定のプログラミング・モデルに基づくサービスを記述する。このコンピュータ・システムは識別した記述情報に基づくサービスのサービス記述ツリーを作成する。サービス記述ツリーの形式は、どのプログラミング・モデルからも独立し、かつ1つまたは複数の他の変換モジュールがこのサービス記述ツリーを消費してそのサービスの追加的な表現を他形式で作成することができるようにすることができる。
他の実施形態では、コンピュータ・システムが、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を、そのサービスを表現するコードに変換する。このコンピュータ・システムは、あるサービス用のサービス記述ツリーにアクセスする。このサービス記述ツリーの形式は、どのプログラミング・モデルからも独立しており、対応するサービス型およびサービス構成から構文解析した記述情報から生成されたものである。このコンピュータ・システムは、このサービス記述ツリーを異なる表現形式にコンバートし、これによりこの記述情報は、この異なる表現形式に従って定義されるサービス記述情報を処理するモジュールに対し、互換性を保って転送されることができる。このコンピュータ・システムは、この異なる表現形式でこの記述情報を出力する。
追加の実施形態では、コンピュータ・システムが、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述からサービス・ランタイムを初期化する。このコンピュータ・システムは、あるサービスのためのサービス記述ツリーにアクセスする。このサービス記述ツリー形式は、どのプログラミング・モデルからも独立しており、対応するサービス型およびサービス構成から構文解析した記述情報から生成されたものである。このコンピュータ・システムは、そのサービス記述ツリーに関連付けられたサービス・ホストの初期化メソッドを呼び出し、その対応するサービス型およびサービス構成から構文解析したその記述情報に従って、そのサービス用のサービス・ランタイムを初期化する。
さらに別の実施形態では、コンピュータ・システムがチャネル用のソース・コードを生成する。このコンピュータ・システムは、サービスを記述するメタデータにアクセスし、そのメタデータをチャネル用のチャネル記述ツリーにインポートする。このチャネル記述ツリーの形式は、いずれのプログラミング・モデルからも独立している。コンピュータ・システムは、そのチャネル記述ツリーからコード文書オブジェクト・モデルおよび対応するサービス構成を生成する。生成されたコード文書オブジェクト・モデルおよび対応するサービス構成は、特定のプログラミング・モデルに従ってチャネルを実装するためのものである。このコンピュータ・システムは、生成したコード文書オブジェクト・モデルをソース・コードとして出力し、対応するサービス構成を出力する。これにより、コード文書オブジェクト・モデルおよび対応するサービス構成を使用して特定のプログラミング・モデルによりチャネルを開始する(initiate)ことができるようにする。
本発明の範囲内の実施形態には、コンピュータ可読媒体が含まれ、当媒体は、その上に格納されたコンピュータ実行可能命令またはデータ構造を搭載あるいは有する。このようなコンピュータ可読媒体は、汎用コンピュータ・システムまたは特殊目的用コンピュータ・システムが、アクセスすることができて利用可能な媒体であれば何でもよい。制限ではなく例として、このようなコンピュータ可読媒体は、RAM、ROM、EPROM、CD−ROMまたは他の光ディスク・ストレージ、磁気ディスク・ストレージまたは他の磁気ストレージ・デバイスまたは、次の条件を満たす任意の媒体のような、物理ストレージ・メディアを備えることができる。前記条件とは、コンピュータ実行可能命令またはコンピュータ可読命令またはデータ構造の形で所望のプログラム・コード手段を搭載または格納するように使用されること、および汎用コンピュータ・システムまたは特殊目的用コンピュータ・システムによりアクセスできることである。
本説明と請求の範囲において、「ネットワーク」とは、コンピュータ・システムおよび/またはモジュールの間で電子データの転送を可能にする1つまたは複数のデータリンクであると定義される。ネットワークまたは別の通信接続(ハードワイヤード、無線、それらの組合せのいずれか)上で情報がコンピュータ・システムに転送または提供される場合、その接続は、コンピュータ可読媒体とみるのが妥当である。従って、このような接続すべては妥当的にコンピュータ可読媒体と呼ばれる。上述の組合せもコンピュータ可読媒体の範囲に含まれるべきである。例えば、コンピュータ実行可能命令には、汎用コンピュータ・システムまたは特殊目的用コンピュータ・システムにある機能または機能群を行わせる命令およびデータが含まれる。コンピュータ実行可能命令は、例えば、バイナリや、アセンブリ言語またはソース・コードのような中間言語形式の命令であってもよい。
本説明とそれに続く請求の範囲において、「コンピュータ・システム」とは、1つまたは複数のソフトウェア・モジュール、1つまたは複数のハードウェア・モジュール、あるいはこの2つの組合せであると定義され、これらは協働して電子データに対して操作(operation)を実行する。例えば、コンピュータ・システムの定義には、パーソナル・コンピュータのハードウェア・コンポーネントに加え、そのパーソナル・コンピュータのオペレーティング・システムなどのソフトウェア・モジュールが含まれる。モジュールの物理的なレイアウトは、重要ではない。コンピュータ・システムには、ネットワークを介して結合された1つまたは複数のコンピュータが含まれてもよい。同様に、コンピュータ・システムには、(メモリおよびプロセッサなどの)内部モジュールが協働して電子データに対して操作を実行する(携帯電話またはパーソナル・デジタル・アシスタント「PDA」などの)単一の物理デバイスが含まれてもよい。
パーソナル・コンピュータや、ラップトップ・コンピュータ、ハンドヘルド・デバイス、マルチ・プロセッサ・システム、ミニ・プロセッサ・ベースまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、携帯電話、PDAや、ポケットベル等を含む多種のコンピュータ・システム構成を有するネットワーク・コンピューティング環境において、本発明を実施可能であることが当業者には理解できるであろう。本発明は、ネットワークを通して(ハードワイヤード・データリンク、無線データリンク、またはそれらの組合せのいずれかによって)リンクされたローカル・コンピュータ・システムおよびリモート・コンピュータ・システム両方がタスクを行うような分散環境で、実施されてもよい。分散システム環境においてプログラム・モジュールが、ローカル・メモリ・ストレージ・デバイスおよびリモート・メモリ・ストレージ・デバイスの両方に存在することができる。
図1を参照する。図1は、抽象的な記述を利用してサービスおよびクライアント・ランタイムを生成し、交換し、構成することを容易にするコンピュータ・アーキテクチャの例100を示す。コンピュータ・アーキテクチャ100に示されているように、コンピュータ・システム101および121がネットワーク141に接続されている。ネットワーク141は、ローカル・エリア・ネットワーク(「LAN」)あるいは、広域エリア・ネットワーク(「WAN」)であることができ、さらにインターネットであることさえできる。ネットワーク141に接続されたコンピュータ・システムは、ネットワーク141に接続された他のコンピュータ・システムに対してデータを送受信できる。従って、コンピュータ・システム101および121は、接続された他のコンピュータシステム(図示せず)と同様に、ネットワーク141上で、メッセージ関連データ(例えば、インターネット・プロトコル(「IP」)データグラムおよび転送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)、簡易メール転送プロトコル(「SMTP」)、簡易オブジェクト・アクセス・プロトコル(「SOAP」)などのIPデータグラムを利用する他の高層プロトコル・メッセージ)を生成し、交換することができる。
コンピュータ・システム101は、サービス・ローダ104と、メタデータ・エクスポータ107と、メタデータ・インポータ108と、コントラクト・ジェネレータ113とを含む。一般に、サービス・ローダ104は、サービス型(例えば、共通言語ランタイム(「CLR」)型)あるいは、ネットワーク・ベースのサービスを表現する他のオブジェクト指向プログラミング・モデル・オブジェクトを受信するように構成される。また、サービス・ローダ104は、対応するオプション的なサービス構成情報を受信するように構成することもできる。サービス・ローダ104は、サービス型(あるいは他のオブジェクト)および対応するサービス構成情報(ロードされていれば)を抽象的なサービスの記述にコンバートすることができる。
いくつかの実施形態では、ネットワーク・ベースのサービスが、特定のプログラミング・モデルに従って表現される。特定のプログラミング・モデルは、1つまたは複数のインターフェースを実装する型(type)であることができる。各インターフェースは、さらに1つまたは複数のメソッドを実装することができる。型(type)に含まれるインターフェースおよびメソッドに対して、それらの処理方法および公開方法と、それらを用いて特定のランタイム処理を行う方法と、を示す属性で注釈付けすることが可能である。代わりに、この注釈属性と組合せて、サービス構成情報は、インターフェースおよびメソッドの処理方法および公開方法と、そのインターフェースおよびメソッドを用いてランタイム処理を行う方法とを示すこともできる。
従って、サービス・ローダ104は、サービス型および対応するサービス構成情報をロードすることができる。サービス・ローダ104は、プログラミング・モデルおよび対応するサービス構成情報を表現するコンパイルされたコードを構文解析して、表現されているネットワーク・ベースのサービスの機能性を識別することができる。例えば、サービス・ローダ104は、サービス型および対応する構成情報から、エンド・ポイントと、チャネル・スタックと、バインディングとを識別することができる。サービス・ローダ104は、他のランタイム・オプション、例えば、セキュリティ・オプションおよび、高信頼性メッセージング・オプション、メッセージ・ロギング・オプション、接続制限オプションなどを識別することもできる。サービス・ローダ104は識別した機能性から、その機能性を記述する抽象的なサービスの記述を作成することができる。
いくつかの実施形態では、抽象的なサービスの記述は、ネットワーク・ベースのサービスを記述する記述情報のツリーとして整理(arrange)される。例えば、図2を参照する。図2は、抽象的なサービスの記述の例201を示す。サービス記述201は、サービス記述201によって記述されたネットワーク・ベースのサービスの型(例えばCLR型)を示す、サービス型202を含む。示されたサービス型は、記述されたネットワーク・ベースのサービスを提供するためのインターフェースおよびメソッドを実装する型(type)であることができる。サービス型202は、サービス型および対応するサービス構成情報を構文解析して識別された型(type)であることができる。
サービス記述201は、IServiceBehavior203Aおよび203Bも含む。しかし、1つまたは複数の追加のIServiceBehaviorを含むこともできる。IServiceBehavior203Aおよび203Bは、例えばサービス制限(即ち、記述されたサービスへの同時要求数を制限すること)のような、サービス記述201によって記述されたネットワーク・ベースのサービスがランタイムに実施する挙動を、表現する。IServiceBehavior203Aおよび203Bは、あるサービス型および対応するサービス構成情報を構文解析して識別された挙動であることができる。
サービス記述201は、サービス・エンド・ポイント204Aおよび204Bも含む。しかし、1つまたは複数の追加サービス・エンド・ポイントを含むこともできる。サービス・エンド・ポイント204Aおよび204Bは、エンド・ポイント・アドレスと、バインディングと、1つまたは複数のコントラクト記述を含む(エンド・ポイント・クラスの)エンド・ポイントを表現する。サービス・エンド・ポイント204Aおよび204Bは、あるサービス型および対応するサービス構成情報を構文解析して識別されたサービス・エンド・ポイントであることができる。
エンド・ポイント・アドレスとは、記述されたサービスと通信する(例えば、その記述されたサービスの位置を示す)ための電子アドレス(例えば、ユニフォーム・リソース・ロケータ(「URL」))である。例えば、エンド・ポイント・アドレス214は、サービス記述201によって記述されたネットワーク・ベースのサービスと通信するための電子アドレスであることができる。エンド・ポイント・アドレス214は、サービス型および対応するサービス構成情報を構文解析して識別されたエンド・ポイント・アドレスであることができる。
バインディングは、記述されたサービスと通信する時のデータの転送方法を示す。バインディングは、異なる転送特性(transfer characteristics)に適用できるような、複数の異なるバインディング要素を含むことができる。その要素には、例えば、転送バインディング要素(例えば、ハイパーテキスト転送プロトコル(“HTTP”)または転送制御プロトコル(“TCP”)を使用)、エンコーダ・バインディング要素(例えば、UTF−8またはUTF−16を使用)、セキュリティ・バインディング要素(例えば、特定の型(type)の暗号化を使用)がある。例えば、バインディング216は、サービス記述201によって記述されたネットワーク・ベースのサービスへの、データの転送方法を示すことができる。バインディング216は、サービス型および対応するサービス構成情報を構文解析して識別されたバインディングであることができる。
コントラクト記述は、記述されたサービスと通信する時にどのデータ(例えば、メッセージの対話(interaction)パターン)が転送されるべきかを示す。コントラクト記述には、1つまたは複数の操作(operation)を含めることができる。例えば、ネットワーク・ベースの数学サービス用のコントラクト記述は、加算、減算、乗算、除算用の操作を含めることができる。各操作は、1つまたは複数のメッセージを含むことができる。例えば、加算操作には、2つの整数を含む要求メッセージと、その2つの整数の和を含む応答メッセージとを含むことができる。
このように、コントラクト記述217Aは、サービス記述201によって記述されたネットワーク・ベースのサービスと通信するための複数のメッセージ対話パターンを示すことができる。操作(例えば、操作218)には、例えば、1つの入力メッセージまたは1つの出力メッセージなどの単一メッセージ(例えば、メッセージ228)を含むものもある。他の操作(例えば、操作219)には、例えば、1つの要求メッセージおよび1つの応答メッセージなどの2つのメッセージが含まれるものもある。
明示していないが、コントラクト記述217Bは、サービス記述201によって記述されたネットワーク・ベースのサービスと通信するための複数のメッセージ対話パターンも示す。このように、コントラクト記述217Bは、1つまたは複数の操作を含むことができ、各操作は1つまたは複数のメッセージを含むことができる。
図1を再度参照すると、メタデータ・エクスポータ107は、例えばサービス記述201などの抽象的なサービスの記述を、例えばウェブ・サービス記述言語(「WSDL」)文書などの対応するメタデータにエクスポートすることができる。一般に、メタデータ・エクスポータ107は、抽象的なサービスの記述を調べて、その抽象的なサービスの記述を、対応するメタデータ、例えばWSDL文書などに変換するように構成される。
メタデータ・エクスポータ107は、拡張可能マークアップ言語(「XML」)にシリアライズ可能なオブジェクト・モデルをターゲットにすることができる。そのため、メタデータ・エクスポータ107は、抽象的なサービスの記述を、メタデータを表現するオブジェクトにエクスポートすることも可能である。その後、そのメタデータを表現しているオブジェクトを生のメタデータへとシリアライズ化することができる。例えば、メタデータ・エクスポータ107は、抽象的なサービスの記述を、WSDL文書を表現するオブジェクトにエクスポートすることができる。その後、このオブジェクトをWSDL文書へとシリアライズ化することができる。代わりに、メタデータ・エクスポータ107は、生のWSDL文書(または他のメタデータ)をエクスポートすることができる。
ある抽象的なサービスの記述をメタデータにエクスポートすることは、その抽象的なサービスの記述の構成体(constructs)をメタデータ形式の適切な構成体とマッチさせることを含むことができる。例えば、メタデータ・エクスポータ107は、抽象的なサービスの記述のバインディング要素(例えばバインディング216のバインディング要素)を適切なWSDLバインディング要素とマッチさせることができる。
メタデータ・インポータ108は、例えばWSDL文書などのメタデータを例えばサービス記述201などの対応する抽象的なサービスの記述にインポートすることができる。一般に、メタデータ・インポータ108は、メタデータを調べて、そのメタデータを対応する抽象的なサービスの記述へと変換するように構成される。
メタデータ・インポータ108は、拡張マークアップ言語(「XML」)にシリアライズ可能なオブジェクトを受信することができる。例えば、メタデータ・インポータ108は、WSDLオブジェクトを表現するオブジェクトを受信することができる。メタデータ・インポータ108はそのオブジェクトを調べて、表現されたネットワーク・ベースのサービスの機能性を識別することができる。メタデータ・インポータ108は、サービス型および対応する構成情報から、例えば、エンド・ポイントと、チャネル・スタックと、バインディングとを識別することができる。また、メタデータ・インポータ108は、例えば、セキュリティ・オプション、高信頼性メッセージング・オプション、メッセージ・ロギング・オプション、接続制限オプションなどの他のランタイム・オプションを識別することもできる。メタデータ・インポータ108は、識別された機能性から、その機能性を記述する抽象的なサービスの記述を作成することができる。代わりに、メタデータ・インポータ108は、生のWSDL(または他のメタデータ)を受信し、同様の操作を行って、抽象的なサービスの記述を作成することができる。
メタデータを抽象的なサービスの記述にインポートすることには、そのメタデータ形式の構成体を抽象的なサービスの記述の適切な構成体とマッチさせることを含むことができる。例えば、メタデータ・インポータ108は、あるメタデータ形式のバインディング要素を抽象的なサービスの記述の適切なバインディングとマッチさせることができる。
メタデータ・エクスポータ107およびメタデータ・インポータ108は共に、抽象的なサービスの記述からメタデータへのコンバートおよびその逆を行う場合に、拡張性を促進するサード・パーティのプラグインをサポートするように構成することができる。サード・パーティのプラグインは、抽象的なサービスの記述とメタデータ間のカスタマイズされた変換を実装できる。例えば、プラグインは、WS−Policy、WS−RM(高信頼性メッセージング)などのウェブ・サービス仕様に従って定義されるポリシー・ステートメントの変換を容易にすることができる。WS−Policyを使用して、例えば、ある方法で暗号化を行うために、鍵の情報を提供するなどの任意のポリシーを仮想的に表現するXML要素を定義することができる。WS−RMを使用して、例えばタイムアウト値などの高信頼性メッセージングの特性を定義することができる。
この結果、拡張可能なポリシー・ステートメントを、WSDL文書にエクスポートすること、およびWSDL文書からインポートすることができる。例えば、メタデータ・エクスポータ107へのエクスポータ・プラグインは、ポリシー要素の抽象的なサービスの記述を調べ、適切なポリシー・アサーションをWSDL文書内に挿入することができる。このように、抽象的なサービスの記述の中のバインディングが、定義されたRMバインディング要素を含む場合、エクスポータ・プラグインは、そのRMバインディング要素を見つけ、適切なRMポリシー・アサーションをエクスポートされるメタデータに加えることができる。一方、メタデータ・インポータ108へのインポータ・プラグインは、WSDL文書を調べてポリシー・アサーションを探し、適切なポリシー要素を抽象的なサービスの記述内に挿入することができる。このように、メタデータがバインディング要素に対するRMポリシー・アサーションを含む場合、インポータ・プラグインは、そのRMポリシー・アサーションを見つけ、適切な定義されたRMバインディング要素を、インポートされた抽象的なサービスの記述に加えることができる。
プラグインは、抽象的なサービスの記述の一部分を、WSDL文書中の任意のXML要素および属性へエクスポートすること、およびWSDL文書中の任意のXML要素および属性を抽象的なサービスの記述の適切な部分にインポートすることを、容易にすることもできる。
なお図1を参照すると、コントラクト・ジェネレータ113は、抽象的なサービスの記述をコード文書オブジェクト・モデルおよび対応するサービス構成情報にコンバートすることができる。一般に、コントラクト・ジェネレータ113は、抽象的なサービスの記述を調べ、その抽象的なサービスの記述を対応するコード文書オブジェクト・モデルおよびサービス構成情報に変換するように構成される。
サービス・コントラクト・ジェネレータ113は、例えばコード文書オブジェクト・モデル(「CodeDOM」)などのパブリック・オブジェクト・モードをターゲットにすることができる。言語プロバイダがCodeDOMを使用して、そのCodeDOMに基づくコード(例えば、C#または、C++、Visual Basic)を生成することができる。このように、抽象的なサービスの記述を、コントラクト記述を表現するインターフェースと、操作を表現するメソッドと、メッセージを表現するパラメータおよび戻り値と、にコンバートすることができる。結果的に、言語に中立な形式の中のソース・コードが、ワイヤ上にXMLがどう現れるべきかを示すこと、および何らかのセキュリティ情報を含むことができる。
サービス・コントラクト・ジェネレータ113は、対応するサービス構成情報、例えば、サービス・エンド・ポイント、エンド・ポイント・アドレス、バインディング、チャネルの挙動などをサービス構成ファイルに格納することもできる。ソース・コードから生成されたサービス型(コンパイルされたコード)が、抽象的なサービスの記述とやりとりするために構文解析される際に、この構成ファイルがサービス・ローダに提供されることができる。いくつかの実施形態において、コード文書オブジェクト・モデルおよび構成ファイルは、クライアントで使用されて、記述されたサービスと通信するためのチャネルを構築することができる。
コンピュータ・システム121は、チャネル・ローダ124と、メタデータ・インポータ128と、コントラクト・ジェネレータ133と、コード・コンバータ138と、コンパイラ143とを含む。
チャネル・ローダ124は、サービス・ローダ104と同様に機能する。チャネル・ローダ124は、チャネル型および対応するチャネル構成情報をロードすることができる。チャネル・ローダ124は、プログラミング・モデルおよび対応するチャネル構成情報を表現するコンパイルされたコードを構文解析して、ネットワーク・ベースのサービスと通信するための機能性を識別することができる。例えば、チャネル・ローダ104は、エンド・ポイントと、チャネル・スタックと、バインディングとを、チャネル型および対応する構成情報から識別することができる。チャネル・ローダ124は、例えば、セキュリティ・オプション、高信頼性メッセージング・オプション、メッセージ・ロギング・オプション、接続制限オプションなどの、他のランタイム・オプションを識別することもできる。識別した機能性から、チャネル・ローダ124は、その機能性を記述する抽象的なチャネルの記述を作成することができる。
いくつかの実施形態では、抽象的なチャネルの記述は、ネットワーク・ベースのサービスとの通信方法を記述する記述情報ツリーとして整理される。例えば、図3を参照する。図3は、抽象的なチャネルの記述の例301を示す。チャネル記述301は、チャネル記述301によって記述されたネットワーク・ベースのチャネルの型(例えばCLR型)を示すチャネル型302を含む。示されたチャネル型は、対応するネットワーク・ベースのサービスと通信するためのインターフェースおよびメソッドを実装する型であることができる。チャネル型302は、サービス型および対応するサービス構成情報を構文解析して識別された型であることができる。
チャネル記述301は、IChannelBehavior303Aおよび303Bも含む。しかし、1つまたは複数のIChannelBehaviorを含むこともできる。IChannelBehavior303Aおよび303Bは、例えば高信頼性メッセージングおよび権限付与のような、チャネル記述301によって記述されたネットワーク・ベースのチャネルがランタイムに実施する挙動を、表現する。IChannelBehavior303Aおよび303Bは、チャネル型および対応するサービス構成情報を構文解析して識別された挙動であることができる。
チャネル記述301は、サービス・エンド・ポイント304も含む。サービス・エンド・ポイント304は、1つのエンド・ポイント・アドレスと、1つのバインディングと、1つまたは複数のコントラクト記述とを含む(エンド・ポイント・クラスの)エンド・ポイントを表現する。サービス・エンド・ポイント304は、チャネル型および対応するサービス構成情報を構文解析して識別されたサービス・エンド・ポイントであることができる。
エンド・ポイント・アドレス314は、チャネル記述301によって記述されたネットワーク・ベースのチャネルと通信するための電子アドレスであることができる。エンド・ポイント・アドレス314は、チャネル型および対応するサービス構成情報を構文解析して識別されたエンド・ポイント・アドレスであることができる。バインディング316は、チャネル記述301によって記述されたネットワーク・ベースのチャネルへの、データの転送方法を示すことができる。バインディング316は、サービス型および対応するサービス構成情報を構文解析して識別されたバインディングであることができる。コントラクト記述317は、サービス記述301によって記述されたネットワーク・ベースのチャネルと通信するための複数のメッセージ対話(interaction)パターンを示すことができる。操作の中には(例えば操作318)、例えば、入力または出力メッセージのような単一メッセージ(例えばメッセージ328)を含むものがある。他の操作(例えば操作319)には、例えば、1つの要求メッセージと1つの応答メッセージのように、2つのメッセージ(例えば、メッセージ329および339)を含むことができるものがある。
メタデータ・インポータ128は、メタデータ・インポータ108と同様に機能する。そのため、メタデータ・インポータ128は、例えば、WSDL文書などのメタデータを、例えばチャネル記述201などの対応する抽象的なチャネルの記述にインポートすることができる。一般に、メタデータ128は、メタデータを調べて、そのメタデータを対応する抽象的なチャネルの記述に変換するように構成される。メタデータ・インポータ128は前述のように、シリアライズ可能なオブジェクトまたは生のメタデータをインポートすることができ、拡張可能なサード・パーティのプラグインを含むことができる。メタデータ・インポータ128は、メタデータ形式の構成体を、抽象的なサービスの記述の適切な構成体にマッチさせることもできる。例えば、メタデータ・インポータ128は、あるメタデータ形式のバインディング要素を適切な抽象的なチャネルの記述バインディングにマッチさせることができる。
コントラクト・ジェネレータ133は、コントラクト・ジェネレータ113と同様に機能する。そのため、コントラクト・ジェネレータ133は、抽象的なチャネルの記述をコード文書オブジェクト・モデルおよび対応するサービス構成情報にコンバートすることができる。一般に、コントラクト・ジェネレータ133は、抽象的なチャネルの記述を調べて、その抽象的なチャネルの記述を対応するコード文書オブジェクト・モデルおよびサービス構成情報に変換するように構成される。コントラクト・ジェネレータ133は、ソース・コードを言語に中立な形式で表現するパブリック・オブジェクトをターゲットにすることができ、続いてサポートされたプログラミング言語にそのコードをコンバートすることができる。このように、抽象的なチャネルの記述を、コントラクト記述を表現するインターフェースと、操作を表現するメソッドと、メッセージを表現するパラメータおよび戻り値と、にコンバートすることができる。結果的に、言語に中立な形式のソース・コードが、ワイヤ上でXMLがどう現れるべきかを示すことができ、いくつかのセキュリティ情報を含むことができる。
コントラクト・ジェネレータ133は、例えば、サービス・エンド・ポイント、エンド・ポイント・アドレス、バインディング、チャネルの挙動などの対応するサービス構成情報をサービス構成ファイルに格納することができる。ソース・コードから生成されたチャネル型(コンパイルされたコード)が、抽象的なチャネルの記述とやりとりするために構文解析される際に、この構成ファイルがチャネル・ローダに提供されることができる。いくつかの実施形態において、コード文書オブジェクト・モデルおよび構成ファイルは、クライアントで使用されて、記述されたサービスと通信するためのチャネルを構築することができる。
コード・コンバータ138は、コード文書オブジェクト・モデルをプログラミング言語のソース・コードにコンバートするように構成される。コード・コンバータ138は、コード文書オブジェクト・モデルの生成に使用される同じオブジェクト・モデルの一部分とすることができる。コンパイラ143は、プログラミング言語をチャネル型のコンパイルされたコードにコンパイルするように構成される。コンパイラ143は、例えば、C#、C++、またはVisual Basicのコンパイラであり、統合開発環境(“IDE”)の一部分とすることができる。
図5は、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を生成するメソッドの例500のフローチャートを示す。メソッド500は、コンピュータ・アーキテクチャ100およびサービス記述201に図示された、コンポーネントおよびデータに関連して記述される。
メソッド500は、特定のプログラミング・モデルに従ってサービスを実装するために、サービス型および対応するサービス構成にアクセスする動作(act)(動作501)を含む。例えば、サービス・ローダ104は、サービス型102および構成103にアクセスすることができる。サービス型102は、何らかのプログラミング言語(C#、C++、Visual Basicなど)のソース・コードからコンパイルされたコンパイル済コードを表現することができる。サービス型102に含まれるインターフェースおよびメソッドに対して、サービスを記述する属性で注釈付けすることができる。構成103は、このサービスを記述する追加のサービス構成情報を含むことができる。
メソッド500は、アクセスしたサービス型および対応するサービス構成を構文解析して記述情報を識別する動作(act)(動作502)を含む。例えば、サービス・ローダ104は、サービス型102および構成103を構文解析して、サービス型102によって表現されたサービスに対応する記述情報を識別することができる。識別された記述情報は、例えば、サービス型や、サービスの挙動(例えば、セキュリティ・オプション、高信頼性メッセージング・オプション、メッセージ・ロギング・オプション、接続制限オプション)、サービス・エンド・ポイント(例えば、操作およびメッセージを含むエンド・ポイント・アドレスや、バインディング、コントラクト記述)などの様々な接続および/または通信プロトコル・オプションを含むことができる。
メソッド500は、識別した記述情報に基づくサービス用のサービス記述ツリーを、生成する動作(act)(動作503)を含む。例えば、サービス・ローダ104は、サービス型102および構成103から識別された記述情報に基づき、サービス記述106を生成することができる。サービス記述106は、サービス記述201と同様のサービス記述ツリーであることができる。識別されたサービス型と、識別されたサービスの挙動と、識別されたサービス・エンド・ポイントとは、対応するツリー構造中の適切な位置で生成されることができる。
図6は、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述をそのサービスを表現するコードに変換するメソッドの例600のフローチャートを示す。コンピュータ・アーキテクチャ100内に図示されたコンポーネントおよびデータとの関連で、メソッド600を説明する。
メソッド600は、サービス用のサービス記述ツリーにアクセスする動作(act)(動作601)を含む。例えば、メタデータ・エクスポータ107は、サービス記述106にアクセスすることができる。代わりに、コントラクト・ジェネレータ113が、サービス記述106にアクセスすることもできる。
メソッド600は、このサービス記述ツリーを異なる表現形式にコンバートする動作(act)を含み、そうすることでこの記述情報を、この異なる表現形式に従って定義されるサービス記述情報を処理するモジュールに対し、互換性を保って転送されることができるようにする動作(act)(動作602)を含む。例えば、メタデータ・エクスポータ107は、メタデータ・インポータ(例えば、メタデータ・インポータ128)が引き続いてメタデータ109(またはメタデータ109を表現するオブジェクト)をサービス(またはチャネル)記述にインポートし直せるように、サービス記述106をメタデータ109(またはメタデータ109を表現するオブジェクト)にエクスポートできる。
代わりに、コントラクト・ジェネレータ113が、サービス記述106をコード文書オブジェクト・モデル114と構成116とにコンバートすることができる。続いて、コード文書オブジェクト・モデル114を使用して、プログラミング言語のソース・コードを生成することができる。そのコードを開発者が適宜修正して、適切な機能性を保障するか、あるいは追加の機能性を加えることができる。そして、このプログラミング言語のソース・コードをコンパイルすることができる。構成116は、構成103からの構成情報のサブセットを少なくとも1つ含む。例えば、構成116は、サービス型102に基づくサービス・ランタイムと通信するチャネルを構築するための適切な構成設定を含むことができる。
メソッド600は、記述情報を異なる表現形式で出力する動作(act)(動作603)を含む。例えば、メタデータ・エクスポータ107は、メタデータ109をメタデータ・インポータ128に送信することができる。代わりに、コントラクト・ジェネレータ113が、コード文書オブジェクト・モデル114と構成116とをコンピュータ・システム121に送信できる。引き続いてコンピュータ・システム121において、メタデータ109と、コード文書オブジェクト・モデル114および構成116のいずれもチャネルへとコンバートし、修正し、および/またはコンパイルすることができる。
図7は、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述からのランタイムを初期化するメソッドの例700のフローチャートを示す。コンピュータ・アーキテクチャ100内に図示されたコンポーネントおよびデータとの関連でメソッド700を説明する。
メソッド700は、サービス用のサービス記述ツリーにアクセスする動作(act)(動作701)を含む。このサービス記述ツリーは、対応するサービス型および対応するサービス構成から構文解析された記述情報から生成されたものである。例えば、コンピュータ・システム101は、サービス型102および構成103から構文解析した記述情報から生成されたサービス記述106にアクセスすることができる。
メソッド700は、サービス記述ツリーに関連付けられた初期化サービス・ホスト・メソッドを呼び出す動作(act)を含む(動作702)。例えば、コンピュータ・システム101は、サービス記述106に関連付けられたサービス・イニシャライザ111を呼び出すことができる。いくつかの実施形態では、この初期化(イニシャライズ)サービス・ホストは、サービス記述106に含まれる実行可能なコードである。そのため、サービス記述106が、サービス・イニシャライザ111を呼び出してもよい。
メソッド700は、対応するサービス型および対応するサービス構成から構文解析された記述情報に従ってサービス用のサービス・ランタイムを初期化する動作(act)(動作703)を含む。例えば、サービス・ランタイム112を、サービス型102および構成103から構文解析した記述情報に従って初期化することができる。
図8は、チャネル用のソース・コードを生成するためのメソッドの例800のフローチャートを示す。コンピュータ・アーキテクチャ100内に図示したコンポーネントおよびデータとの関連でメソッド800を説明する。
メソッド800は、サービスを記述するメタデータにアクセスする動作(act)(動作801)を含む。例えば、メタデータ・インポータ128は、メタデータ109にアクセスすることができる。メソッド800は、このメタデータをチャネル用のチャネル記述ツリーにインポートする動作(act)(動作802)を含む。
メソッド800は、このチャネル記述ツリーから、コード文書オブジェクト・モデルおよび対応するサービス構成を生成する動作(act)(動作803)を含む。例えば、コントラクト・ジェネレータ133は、コード文書オブジェクト・モデル134および構成136をチャネル記述126から生成することができる。
メソッド804は動作(act)(動作804)を含む。この動作(act)は、生成されたコード文書オブジェクト・モデルおよび対応するサービス構成が特定のプログラミング・モデルによるチャネル初期化に使用されるように、それらを出力する。例えば、コード・コンバータ138は、コード文書オブジェクト・モデル134を使用して、ソース・コード139を生成することができる。コンパイラ143は、ソース・コード139をチャネル型132にコンパイルすることができる。
チャネル・ローダ124は次いで、チャネル型132および構成136を構文解析して、リファインされたチャネル記述126を生成することができる。続いて、チャネル記述126は、チャネル・イニシャライザ131を呼び出して、チャネル型132および構成136から構文解析した記述情報に従って、チャネル132を初期化することができる。その後、チャネル132およびサービス・ランタイム112は通信し、サービス型102によって表現されたサービスを利用することができる。
本発明の実施形態は、サービス記述情報の柔軟な交換を容易にする。例えば、サービス・ランタイムと互換性のある通信を行うためのチャネル構成方法を示すメタデータおよび/またはソース・コードを、サーバがクライアントに提供することができる。さらに、サード・パーティのプラグインは、サーバとクライアントとの間で、ポリシー・アサーションおよび任意のXMLをインポートおよびエクスポートすることを容易にする。従って、本発明は、サービス・ランタイムと、対応するチャネルとの間の相互操作性(interoperability)を向上させる。
図4は、本発明の原理に適合したオペレーティング環境を示す。図4および下記の記述は、本発明を実装することができる好適なコンピューティング環境の簡単で一般的な説明を提供するよう意図したものである。必須要件ではないが、本発明は、プログラム・モジュールなどのコンピュータ・システムによって実行されるコンピュータ実行可能命令の一般的なコンテキストで説明される。一般に、プログラム・モジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは、特定のタスクを行うか、あるいは特定の抽象データ型を実装する。コンピュータ実行可能命令と、関連するデータ構造と、プログラム・モジュールとが、本明細書に開示したメソッドの動作(act)を実行するプログラム・コード手段の例を表現する。
図4を参照すると、本発明を実装するシステム例には、コンピュータ・システム420の形で汎用コンピューティング・デバイスが含まれ、コンピュータ・システム420は、処理ユニット421、システム・メモリ422と、システム・メモリ422を含む各種のシステム・コンポーネントを処理ユニット421に結合するシステム・バス423とを含む。処理ユニット421は、コンピュータ・システム420の特徴を実装するよう設計されたコンピュータ実行可能命令を実行することができる。コンピュータ・システム420の特徴は、本発明の特徴を含む。システム・バス423は、メモリ・バスまたはメモリ・コントローラ、周辺バス、様々なバス・アーキテクチャのいずれかを使用するローカル・バスを含む数種類のバス構造のいずれかであればよい。システム・メモリは、リード・オンリ・メモリ(「ROM」)424およびランダム・アクセス・メモリ(「RAM」)425を含む。起動時などに、コンピュータ・システム420内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力/出力システム(「BIOS」)426をROM424に格納してもよい。
コンピュータ・システム420は、磁気ハードディスク439から読み取りかつそこへ書き込む磁気ハードディスク・ドライブ427と、取り外し可能な磁気ディスク429から読み取りかつそこへ書き込む磁気ディスク・ドライブ428、取り外し可能な光ディスク431、例えばCD−ROMまたは他の光媒体などから読み取りかつそこへ書き込む光ディスク・ドライブ428とを含んでもよい。磁気ハードディスク・ドライブ427、磁気ディスク・ドライブ428、光ディスク・ドライブ430は、それぞれハードディスク・ドライブ・インターフェース432、磁気ドライブ・インターフェース433、光ドライブ・インターフェース434によってシステム・バス423に接続されている。このドライブとそれぞれに関連付けられたコンピュータ可読媒体は、コンピュータ実行可能命令、データ構造、プログラム・モジュール、他のデータの不揮発性のストレージをコンピュータ・システム420に提供する。ここで説明する環境例は、磁気ハードディスク439および、取り外し可能な磁気ディスク429、取り外し可能な光ディスク431を採用するが、データを格納する他種のコンピュータ可読媒体を使用することもできる。他種のコンピュータ可読媒体は、磁気カセットやフラッシュ・メモリ・カード、デジタル多用途ディスク、Bernoulli cartridges、RAM、ROMなどを含む。
ハードディスク439、磁気ディスク429、光ディスク431、ROM424、RAM425のいずれかに、1つまたは複数のプログラム・モジュールを備えるプログラム・コード手段を格納してもよい。1つまたは複数のプログラム・モジュールは、オペレーティング・システム435と、1つまたは複数のアプリケーション・プログラム436と、他のプログラム・モジュール437と、プログラム・データ438とを含む。キーボード440、ポインティング・デバイス442または、例えばマイクもしくは、ジョイスティック、ゲームパッド、スキャナなどの他の入力デバイス(図示せず)を介して、ユーザはコマンドおよび情報をコンピュータ・システム420に入力することができる。システム・バス423に結合された入力/出力インターフェース446を介して、これら入力デバイスと他の入力デバイスを処理ユニット421に接続することができる。入力/出力インターフェース446は、任意の多種多様な異なるインターフェース、例えば、シリアル・ポート・インターフェース、PS/2インターフェース、パラレル・ポート・インターフェース、ユニバーサル・シリアル・バス(「USB」)インターフェースまたはIEEE(米国電気電子学会)1394インターフェース(すなわちファイヤー・ワイヤ・インターフェース)などを論理的に表現し、場合によっては、異なるインターフェースの組合せを論理的に表現してもよい。
モニタ447と他の表示デバイスもまた、ビデオ・インターフェース448経由でシステム・バス423に接続されている。コンピュータ・システム420には、例えば、スピーカおよびプリンタなどの他の周辺出力デバイス(図示せず)を接続することもできる。
コンピュータ・システム420は、例えば、事業所規模か企業規模のコンピュータ・ネットワークや、ホームネットワーク、イントラネットおよび/またはインターネットなどのネットワークに接続することが可能である。コンピュータ・システム420は、例えば、このようなネットワーク上で、リモート・コンピュータ・システムや、リモート・アプリケーションおよび/またはリモート・データベースなどの外部ソースとデータを交換することができる。
コンピュータ・システム420は、ネットワーク・インターフェース453を含み、ネットワーク・インターフェース453を介して、コンピュータ・システム420は、外部ソースからデータを受信し、および/または外部ソースにデータを送信する。図4に図示したように、ネットワーク・インターフェース453によって、リンク451経由でリモート・コンピュータ・システム483とデータ交換することが容易になる。ネットワーク・インターフェース453は、例えば、ネットワーク・インターフェース・カードおよび対応するネットワーク・ドライバ・インターフェース仕様(「NDIS」)スタックなどの1つまたは複数のソフトウェア・モジュールおよび/またはハードウェア・モジュールを論理的に表示することができる。リンク451は、ネットワーク(例えば、イーサネット(登録商標)のセグメント)の一部を表現し、リモート・コンピュータ・システム483は、そのネットワークのノードを表現する。
同様に、コンピュータ・システム420は、入力/出力インターフェース446を含み、入力/出力インターフェース446によって、コンピュータ・システム420は、外部ソースからデータを受信し、および/または外部ソースにデータを送信する。入力/出力インターフェース446は、リンク459経由でモデム454(例えば、スタンダード・モデムまたは、ケーブル・モデム、デジタル加入者回線(「DSL」)モデム)に結合され、この結合によって、コンピュータ・システム420は、外部ソースからデータを受信し、および/または外部ソースにデータを送信する。図4に図示したように、入力/出力インターフェース446およびモデム454によって、リンク452経由でリモート・コンピュータ・システム493とデータを交換することが容易になる。リンク452は、ネットワークの一部を表現し、リモート・コンピュータ・システム493は、そのネットワークのノードを表現する。
図4は、本発明に適したオペレーティング環境を表現するが、本発明の原理を、必要であれば適宜修正して本発明の原理を実装することができるいずれのシステムにも採用してもよい。図4に示した環境は、例示に過ぎず、本発明を実装することができる多様な環境のほんの一部のみを表現するものではない。
本発明に従って、サービス型、構成、コード文書オブジェクト・モデル、メタデータ、サービス記述、チャネル記述を含む関連データに加えて、サービス・ローダ、コントラクト・ジェネレータ、メタデータ・インポータ、メタデータ・エクスポータ、サービス・イニシャライザ、サービス・ランタイム、チャネルを含むモジュールも、コンピュータ・システム420に関連付けられたコンピュータ可読媒体のいずれにも格納され、そこからアクセスされてもよい。例えば、このようなモジュールの一部と関連プログラム・データの一部は、システム・メモリ422内のストレージのために、オペレーティング・システム435、アプリケーション・プログラム436、プログラム・モジュール437、および/またはプログラム・データ438内に含めることができる。
例えば、磁気ハードディスク439などの大容量ストレージ・デバイスがコンピュータ・システム420に結合した場合、このようなモジュールおよび関連プログラム・データを大容量ストレージ・デバイスに格納してもよい。ネットワーク環境において、コンピュータ・システム420に関して図示されたプログラム・モジュールあるいはこのプログラム・モジュールの一部を、リモート・コンピュータ・システム483および/またはリモート・コンピュータ・システム493に関連付けられたシステム・メモリおよび/または大容量ストレージ・デバイスなどのリモート・メモリ・ストレージ・デバイスに格納することができる。前述した分散環境で、このようなモジュールの実行を行ってもよい。
本発明の精神または本質的な特徴から逸脱せずに、他の特定の形で本発明を具体化してもよい。説明した実施形態は、どの観点においても、制限ではなく例示に過ぎないものとみなされたい。従って、本発明の範囲は、前述の説明よりむしろ請求の範囲によって示される。請求の範囲の意味の範囲内にあり、請求の範囲と同等の範囲内にある変更は、請求項の範囲内に包含される。
抽象的な記述を利用して、サービスおよびクライアント・ランタイムを生成、交換、構成することを容易にするコンピュータ・アーキテクチャの一例を示す図である。 抽象的なサービスの記述の例を示す図である。 抽象的なチャネルの記述の例を示す図である。 本発明の原理に適合する動作環境を示す図である。 ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を生成するためのメソッドの例を示すフローチャートである。 ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を、そのネットワーク・ベースのサービスを表現するコードに変換するメソッドの例を示すフローチャートである。 ネットワーク・ベースのサービスを記述する抽象的なサービスの記述からサービス・ランタイムを初期化するメソッドの例を示すフローチャートである。 チャネル用のソース・コードを生成するメソッドの例を示すフローチャートである。
符号の説明
101 コンピュータ・システム
102 サービス型
103 構成
104 サービス・ローダ
106 サービス記述
107 メタデータ・エクスポータ
108 メタデータ・インポータ
109 メタデータ
111 サービス・イニシャライザ
112 サービス・ランタイム
113 コントラクト・ジェネレータ
114 コード文書オブジェクト・モデル
116 構成
121 コンピュータ・システム
124 チャネル・ローダ
126 チャネル記述
128 メタデータ・インポータ
131 チャネル・イニシャライザ
132 チャネル
133 コントラクト・ジェネレータ
134 コード文書オブジェクト・モデル
136 構成
138 コード・コンバータ
139 ソース・コード
143 コンパイラ
201 サービス記述
202 サービス型
203A、B IServiceBehavior
204A、B サービス・エンド・ポイント
214 エンド・ポイント・アドレス
216 バインディング
217A、B コントラクト記述
218 操作
228 メッセージ
219 操作
229 メッセージ
239 メッセージ
301 チャネル記述
302 チャネル型
303A、B IChannelBehavior
304 サービス・エンド・ポイント
314 エンド・ポイント・アドレス
316 バインディング
317 コントラクト記述
318 操作
328 メッセージ
319 操作
329 メッセージ
339 メッセージ
422 システム・メモリ
435 オペレーティング・システム
436 アプリケーション・プログラム
437 他のプログラム・モジュール
438 プログラム・データ
421 処理ユニット
423 システム・バス
432 ハードディスク・ドライブ・インターフェース
433 磁気ディスク・ドライブ・インターフェース
434 光ドライブ・インターフェース
440 キーボード
446 シリアル・ポート・インターフェース
453 ネットワーク・インターフェース
454 モデム
435 オペレーティング・システム
436 アプリケーション・プログラム
437 他のプログラム・モジュール
438 プログラム・データ
447 モニタ
483 リモート・コンピュータ
493 リモート・コンピュータ

Claims (20)

  1. コンピュータ・システムによって実行される、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を生成する方法であって、前記コンピュータ・システムは少なくとも1つのプロセッサおよびシステムメモリを含み、前記方法は、
    前記プロセッサが、第1のプログラミング言語に従ってネットワーク・ベースのサービスを実装するための、前記第1のプログラミング言語によって記述されたソース・コードから実行形式にコンパイルされた実行コードを含むサービス型および対応するサービス構成にアクセスする動作であって、前記コンパイルされた実行コードは、前記コンパイルされた実行コードによって実装される少なくとも1つのインターフェースの処理方法および公開方法と前記少なくとも1つのインターフェースを用いてランタイム処理を行う方法とを記述する少なくとも1つの注釈を含む、アクセスする動作
    前記プロセッサが、前記サービス型および前記対応するサービス構成を構文解析して、前記第1のプログラミング言語に基づくネットワーク・ベースのサービスを使用するための情報を記述する記述情報を識別する動作であって、前記識別する動作は前記少なくとも1つの注釈を含む前記サービス型の前記コンパイルされた実行コードを構文解析して前記記述情報を識別することを含む、識別する動作、および
    前記プロセッサが、前記サービス型の前記コンパイルされた実行コードを構文解析することによって識別された記述情報に基づく前記ネットワーク・ベースのサービスについてのサービス記述ツリーを作成する動作であって、
    前記サービス記述ツリーの形式は、ネットワーク・ベースのサービスについてのいずれのプログラミング言語からも独立しており、
    1つまたは複数のほかの変換モジュールが前記サービス記述ツリーを消費して、前記ネットワーク・ベースのサービスの追加的な表現を他形式で作成することができるように、前記サービス記述ツリーは消費可能であり、
    前記1つまたは複数のほかの変換モジュールは、前記サービス記述ツリーを消費して、第2のプログラミング言語に従って前記ネットワーク・ベースのサービスを実装するために前記第2のプログラミング言語によって記述されたソース・コードと、前記第2のプログラミング言語に従って実装される前記ネットワーク・ベースのサービスを記述するWSDL文書とを作成し、前記ソース・コードは実行形式にコンパイルされるよう構成された前記第2のプログラミング言語によって記述される、サービス記述ツリーを作成する動作
    を備えることを特徴とする方法。
  2. サービスを実装するために、サービス型および対応するサービス構成にアクセスする前記動作は、共通言語ランタイム型にアクセスする動作を備えることを特徴とする請求項1に記載の方法。
  3. サービスを実装するために、サービス型および対応するサービス構成にアクセスする前記動作は、ランタイムでの前記サービス型に含まれるインターフェースおよびメソッドの実装方法を示す属性で注釈付けされたサービス型にアクセスする動作を備えることを特徴とする請求項1に記載の方法。
  4. サービス型を実装するために、サービス型および対応するサービス構成にアクセスする前記動作は、セキュリティ・オプション、高信頼性のメッセージング・オプション、メッセージ・ロギング・オプション、および接続制限オプションのうちから選択されるサービス構成情報にアクセスする動作を備えることを特徴とする請求項1に記載の方法。
  5. 前記サービス型および対応するサービス構成を構文解析して、記述情報を識別する前記動作は、前記サービス型を構文解析して、エンド・ポイント・アドレス、バインディング、およびコントラクト記述のうちから選択される記述情報を識別する動作を備えることを特徴とする請求項1に記載の方法。
  6. 前記サービス型および対応するサービス構成情報を構文解析して、記述情報を識別する前記動作は、前記サービス構成を構文解析して、セキュリティ・オプション、高信頼性のメッセージング・オプション、メッセージ・ロギング・オプション、および接続制限オプションのうちから選択される記述情報を識別することを備えることを特徴とする請求項1に記載の方法。
  7. 前記識別した記述情報に基づいて前記サービス用のサービス記述ツリーを作成する前記動作は、対応する操作および対応するメッセージを含むコントラクト記述の表現を作成する動作を備えることを特徴とする請求項1に記載の方法。
  8. 前記識別した記述情報に基づいて前記サービス用のサービス記述ツリーを作成する前記動作は、サービスの挙動の表現を作成する動作を備えることを特徴とする請求項1に記載の方法。
  9. コンピュータ・システムによって実行される、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を、前記ネットワーク・ベースのサービスを表現するソース・コードに変換する方法であって、前記コンピュータ・システムは少なくとも1つのプロセッサおよびシステムメモリを含み、前記方法は、
    前記プロセッサが、ネットワーク・ベースのサービス用のサービス記述ツリーにアクセスする動作であって、前記サービス記述ツリーの形式は、ネットワーク・ベースのサービスについてのいずれのプログラミング言語からも独立しており、前記サービス記述ツリーは、前記ネットワーク・ベースのサービスを実装するための対応するサービス型およびサービス構成から構文解析した前記ネットワーク・ベースのサービスを使用するための情報を記述する記述情報から生成され、前記記述情報の少なくとも一部は、前記サービス型の前記コンパイルされた実行コードから構文解析され、前記コンパイルされた実行コードは、第1のプログラミング言語によって記述されたソース・コードから実行形式にコンパイルされ、前記コンパイルされた実行コードは、前記コンパイルされた実行コードによって実装される少なくとも1つのインターフェースの処理方法および公開方法と前記少なくとも1つのインターフェースを用いてランタイム処理を行う方法とを記述する少なくとも1つの注釈を含む、アクセスする動作、
    前記プロセッサが、前記サービス記述ツリーを異なる表現形式にコンバートする動作であって、前記記述情報、前記異なる表現形式に従って定義されるサービス記述情報を処理するモジュールに対し、互換性を保って転送され、前記コンバートする動作は前記サービス記述ツリーをWSDL以外の形式からWSDLの形式へエキスポートすることを含む、コンバートする動作、および
    前記プロセッサが、前記異なる表現形式で前記記述情報を出力する動作
    を備えることを特徴とする方法。
  10. サービス用のサービス記述ツリーにアクセスする前記動作は、前記サービス用の挙動にアクセスする動作を備えることを特徴とする請求項9に記載の方法。
  11. サービス用のサービス記述ツリーにアクセスする前記動作は、対応する操作および対応するメッセージを含む前記サービス用のコントラクト記述にアクセスする動作を備えることを特徴とする請求項9に記載の方法。
  12. 前記サービス記述ツリーを異なる表現形式にコンバートする前記動作は、前記サービス記述ツリーをメタデータにエクスポートする動作を備えることを特徴とする請求項9に記載の方法。
  13. 前記サービス記述ツリーをメタデータにエクスポートする前記動作は、前記サービスツリーをWSDL文書にエクスポートする動作を備えることを特徴とする請求項12に記載の方法。
  14. 前記サービス記述ツリーをメタデータにエクスポートする前記動作は、サード・パーティのプラグインが、ポリシー・アサーションを前記メタデータに挿入する動作を備えることを特徴とする請求項12に記載の方法。
  15. 前記サービス記述ツリーをメタデータにエクスポートする前記動作は、サード・パーティのプラグインが、任意のXMLを前記メタデータに挿入する動作を備えることを特徴とする請求項12に記載の方法。
  16. 前記サービス記述ツリーを異なる表現形式にコンバートする前記動作は、前記サービス記述ツリーをコード文書オブジェクト・モデルおよび対応するサービス構成にコンバートする動作を備えることを特徴とする請求項9に記載の方法。
  17. 前記サービス記述ツリーをコード文書オブジェクト・モデルおよび対応するサービス構成にコンバートする前記動作は、前記サービス記述ツリーをソース・コードにコンバートする動作を備えることを特徴とする請求項16に記載の方法。
  18. 前記サービス記述ツリーをコード文書オブジェクト・モデルおよび対応するサービス構成にコンバートする前記動作は、サービス・エンド・ポイントを表現する言語に中立なソースに前記サービス記述ツリーをコンバートする動作を備えることを特徴とする請求項16に記載の方法。
  19. 前記サービス記述ツリーをコード文書オブジェクト・モデルおよび対応するサービス構成にコンバートする前記動作は、セキュリティ・オプション、信頼性の高いメッセージング・オプション、メッセージ・ロギング・オプション、および接続制限オプションの中から選択されるサービスの挙動を表現するサービス構成に、前記サービス記述ツリーをコンバートする動作を備えることを特徴とする請求項16に記載の方法。
  20. コンピュータ・システムに、ネットワーク・ベースのサービスを記述する抽象的なサービスの記述を生成する方法を実行させるためのコンピュータ・プログラムであって、前記方法は、
    第1のプログラミング言語に従ってネットワーク・ベースのサービスを実装するための、前記第1のプログラミング言語によって記述されたソース・コードから実行形式にコンパイルされた実行コードを含むサービス型および対応するサービス構成にアクセスすることであって、前記コンパイルされた実行コードは、前記コンパイルされた実行コードによって実装される少なくとも1つのインターフェースの処理方法および公開方法と前記少なくとも1つのインターフェースを用いてランタイム処理を行う方法とを記述する少なくとも1つの注釈を含む、アクセスすること
    前記サービス型および前記対応するサービス構成を構文解析して、前記第1のプログラミング言語に基づくネットワーク・ベースのサービスを使用するための情報を記述する記述情報を識別することであって、前記記述情報の少なくとも一部は、少なくとも1つの注釈を含む前記サービス型の前記コンパイルされた実行コードから構文解析される、識別すること、および
    前記サービス型の前記コンパイルされた実行コードを構文解析することによって識別された記述情報に基づく前記ネットワーク・ベースのサービスについてのサービス記述ツリーを作成することであって、
    前記サービス記述ツリーの形式は、ネットワーク・ベースのサービスについてのいずれのプログラミング言語からも独立しており、
    1つまたは複数のほかの変換モジュールが前記サービス記述ツリーを消費して、前記ネットワーク・ベースのサービスの追加的な表現を他形式で、作成させることができるように前記サービス記述ツリーは消費可能であり、
    前記1つまたは複数のほかの変換モジュールは前記サービス記述ツリーを消費して、第2のプログラミング言語に従って前記ネットワーク・ベースのサービスを実装するために前記第2のプログラミング言語によって記述されたソース・コード、および前記第2のプログラミング言語に従って実装される前記ネットワーク・ベースのサービスを記述するWSDL文書を作成し、前記ソース・コードは実行形式にコンパイルされるよう構成された前記第2のプログラミング言語によって記述される、サービス記述ツリーを作成すること
    含むコンピュータ・プログラム
JP2006012639A 2005-02-04 2006-01-20 サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用 Expired - Fee Related JP5063899B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/051,041 US7950023B2 (en) 2005-02-04 2005-02-04 Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US11/051,041 2005-02-04

Publications (2)

Publication Number Publication Date
JP2006216030A JP2006216030A (ja) 2006-08-17
JP5063899B2 true JP5063899B2 (ja) 2012-10-31

Family

ID=36215532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006012639A Expired - Fee Related JP5063899B2 (ja) 2005-02-04 2006-01-20 サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用

Country Status (9)

Country Link
US (1) US7950023B2 (ja)
EP (1) EP1688836A1 (ja)
JP (1) JP5063899B2 (ja)
KR (1) KR101220000B1 (ja)
CN (1) CN1816050A (ja)
AU (1) AU2005242150A1 (ja)
BR (1) BRPI0600007A (ja)
CA (1) CA2530249A1 (ja)
RU (1) RU2405202C2 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067384A1 (en) * 2005-09-21 2007-03-22 Angelov Dimitar V System and method for web services configuration creation and validation
US7774463B2 (en) * 2006-07-25 2010-08-10 Sap Ag Unified meta-model for a service oriented architecture
US7676586B2 (en) * 2006-10-05 2010-03-09 Microsoft Corporation Hierarchical federation metadata
US8843881B2 (en) * 2007-01-12 2014-09-23 Microsoft Corporation Transporting and processing foreign data
US8539046B2 (en) * 2007-06-15 2013-09-17 Microsoft Corporation Delegated pre-configuration
US20090235282A1 (en) * 2008-03-12 2009-09-17 Microsoft Corporation Application remote control
KR101036861B1 (ko) * 2008-05-29 2011-05-25 한국산업기술평가관리원 예상되는 사용 정보로 확장된 서비스 기술정보
US8032633B2 (en) * 2008-06-10 2011-10-04 International Business Machines Corporation Computer-implemented method for implementing a requester-side autonomic governor using feedback loop information to dynamically adjust a resource threshold of a resource pool scheme
US8250212B2 (en) * 2008-06-10 2012-08-21 International Business Machines Corporation Requester-side autonomic governor
US8239419B2 (en) * 2009-08-04 2012-08-07 Oracle International Corporation Generating service component definition language from metadata
US9086932B2 (en) * 2009-10-14 2015-07-21 Sap Se System landscape aware inter-application communication infrastructure
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US20110289515A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Generating service-access activities for workflow applications
US8832175B2 (en) * 2010-09-21 2014-09-09 Sourcecode Technology Holdings, Inc. Methods and apparatus for dynamic endpoint generators and dynamic remote object discovery and brokerage
US8434070B2 (en) * 2010-10-26 2013-04-30 International Business Machines Corporation Generating specifications of client-server applications for static analysis
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US10331765B2 (en) 2013-05-24 2019-06-25 Sourcecode Technology Holdings, Inc. Methods and apparatus for translating forms to native mobile applications
ES2527566B1 (es) * 2013-07-26 2015-09-29 Sourcecode Technology Holdings, Inc. Método, medio y sistema de generación de un punto final dinámico
US9459986B2 (en) * 2013-08-28 2016-10-04 International Business Machines Corporation Automatic generation of analysis-equivalent application constructs
US20150074678A1 (en) * 2013-09-09 2015-03-12 Avraham Vachnis Device and method for automating a process of defining a cloud computing resource
US20150186193A1 (en) * 2013-12-27 2015-07-02 Microsoft Corporation Generation of client-side application programming interfaces
EP2988217A1 (en) 2014-08-21 2016-02-24 licobo GmbH Method and system with client side adaptive universal service interface support
CN104133717A (zh) * 2014-08-26 2014-11-05 中电海康集团有限公司 一种用于数据开放系统的服务自动化生成和部署方法
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9747082B2 (en) 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US10585675B2 (en) 2017-10-30 2020-03-10 EMC IP Holding Company LLC Systems and methods of running different flavors of a service provider in different host environments
US10871768B2 (en) * 2018-10-18 2020-12-22 Wärtsilä North America, Inc. Apparatus, device and computer implemented method for automatic generation of SCADA slave interface
CN109885290B (zh) * 2019-01-09 2022-07-12 远光软件股份有限公司 应用程序服务描述信息生成与发布方法、装置和存储介质
CN110083342B (zh) * 2019-04-26 2023-04-18 重庆紫光华山智安科技有限公司 一种程序生成方法、装置以及计算机可读存储介质
CA3084976A1 (en) * 2019-07-01 2021-01-01 Next Pathway Inc. System and method for automated source code generation to provide service layer functionality for legacy computing systems in a service-oriented architecture
CN110427175A (zh) * 2019-08-05 2019-11-08 深圳科蓝金信科技发展有限公司 基于通讯接口的前端界面及后台服务生成方法及系统
CN114003232B (zh) * 2021-10-25 2024-04-12 中国航空无线电电子研究所 一种基于航电数据模型的传输服务实现方法
CN114363792A (zh) * 2021-11-26 2022-04-15 赛因芯微(北京)电子科技有限公司 传输音轨格式串行元数据生成方法、装置、设备及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002365594A1 (en) * 2001-11-28 2003-06-10 Bow Street Software, Inc. Method and apparatus for creating software objects
US7962925B2 (en) * 2002-02-22 2011-06-14 Oracle International Corporation System and method for XML data binding
US7159224B2 (en) * 2002-04-09 2007-01-02 Sun Microsystems, Inc. Method, system, and articles of manufacture for providing a servlet container based web service endpoint
WO2004003770A1 (en) 2002-06-27 2004-01-08 Bea Systems, Inc. System and method for web services java api-based invocation
JP2004118374A (ja) * 2002-09-25 2004-04-15 Keio Gijuku 変換装置及び変換方法及び変換プログラム及び変換プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2005022417A2 (en) * 2003-08-27 2005-03-10 Ascential Software Corporation Methods and systems for real time integration services
US7437374B2 (en) * 2004-02-10 2008-10-14 International Business Machines Corporation Efficient XML schema validation of XML fragments using annotated automaton encoding
US7313575B2 (en) * 2004-06-14 2007-12-25 Hewlett-Packard Development Company, L.P. Data services handler

Also Published As

Publication number Publication date
US7950023B2 (en) 2011-05-24
AU2005242150A1 (en) 2006-08-24
KR101220000B1 (ko) 2013-01-08
RU2005141463A (ru) 2007-07-20
EP1688836A1 (en) 2006-08-09
CA2530249A1 (en) 2006-08-04
JP2006216030A (ja) 2006-08-17
KR20060089616A (ko) 2006-08-09
RU2405202C2 (ru) 2010-11-27
BRPI0600007A (pt) 2006-09-19
US20060179425A1 (en) 2006-08-10
CN1816050A (zh) 2006-08-09

Similar Documents

Publication Publication Date Title
JP5063899B2 (ja) サービスおよびクライアント・ランタイムを生成、交換、構成するための抽象的な記述の利用
KR101159364B1 (ko) 분산형 애플리케이션의 객체 지향 표현과 서비스 지향 표현 간의 매핑
US11409949B2 (en) Mobile device resource provisioning system and method
JP5420139B2 (ja) ダイナミック・サービス・サロゲート
JP5242887B2 (ja) 型付きアプリケーションデータのフレキシブルな転送
JP4489483B2 (ja) 初期タイプの初期オブジェクトを最終タイプの最終オブジェクトに変形する方法
US7509658B2 (en) System and method for adaptable provisioning of generic application content
WO2007087727A1 (en) System and method for extending a component-based application platform with custom services
US20120246614A1 (en) Automated generation of client/driver communication interfaces
CA2495396A1 (en) System and method for customized provisioning of application content
US20060023688A1 (en) Mobile exchange infrastructure
US7801999B2 (en) Binding heterogeneous transports to a message contract
Brookes et al. GSoC 2015 student contributions to GenApp and Airavata
Leitner et al. Towards flexible interface mediation for dynamic service invocations
MXPA06000108A (es) Utilizacion de descripciones abstratas para generar, intercambiar y configurar tiempos de ejecucion de servicio y del cliente
JP2003076563A (ja) 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
Sward Using ada in a service-Ooriented architecture
Chou Endosymbiotic Computing: Enabling surrogate GUI and cyber-physical connectivity
Vila-Armengol Implementation of Web services architecture in TAPAS
Bahadır Developing jxta applications for mobile devices and invoking web services deployed in jxta platform from mobile devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120502

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: 20120803

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120808

R150 Certificate of patent or registration of utility model

Ref document number: 5063899

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees