[go: up one dir, main page]

JP2006164280A - ウェブサービスを作成し、対話するためのインターフェースインフラストラクチャ - Google Patents

ウェブサービスを作成し、対話するためのインターフェースインフラストラクチャ Download PDF

Info

Publication number
JP2006164280A
JP2006164280A JP2005349475A JP2005349475A JP2006164280A JP 2006164280 A JP2006164280 A JP 2006164280A JP 2005349475 A JP2005349475 A JP 2005349475A JP 2005349475 A JP2005349475 A JP 2005349475A JP 2006164280 A JP2006164280 A JP 2006164280A
Authority
JP
Japan
Prior art keywords
namespace
computer
readable media
common
servicemodel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005349475A
Other languages
English (en)
Other versions
JP2006164280A5 (ja
Inventor
Aaron Abraham Stern
アブラハム スターン アーロン
Alexander Martin Dejarnatt
マーティン デジャネット アレクサンダー
Iv Alfred M Lee
エム.リー ザ フォース アルフレッド
Anastasios Kasiolas
カシオラス アナスタシオス
Chaitanya D Upadhyaya
ディー.ウパディーヤ チャイタンヤ
Christopher G Kaler
ジー.カーラー クリストファー
Craig Andrew Critchley
アンドリュー クリチェリー クレイグ
David Wortendyke
ウォルテンダイク デイヴィッド
David Edwin Levin
エドウィン レヴィン デイヴィッド
David Owen Driver
オーエン ドライバー ディヴィッド
Douglas A Walter
エイ.ウォルター ダグラス
Douglas M Purdy
エム.パーディ ダグラス
Elliot Lee Waingold
リー ウェインゴールド エリオット
Erik Bo Christensen
ボ クリステンセン エリック
Erin P Honeycutt
ピー.ハニーカット エリン
Evgeny Osovetsky
オソヴェトスキー エフゲニー
Geary L Eppley
エル.エプリー ギャリー
Giovanni M Della-Libela
エム.デッラ−リベーラ ジョヴァンニ
James E Johnson
イー.ジョンソン ジェイムズ
Jesus Ruiz-Scougall
ルイス−スコウガル ジーザス
John David Doty
デイヴィッド ドッティ ジョン
Jonathan T Wheeler
ティー.ホイーラー ジョナサン
Kapil Gupta
グプタ カピル
Kenneth David Wolf
デイヴィッド ウォルフ ケネス
Sowmyanarayanan Srinivasan
スリニヴァサン ソウミャナラヤナン
Lance E Olson
イー.オルソン ランス
Matthew Thomas Tavis
トーマス タビス マシュー
Mauro Ottaviani
オッタヴィアーニ マウロ
Max Attar Feingold
アッター フェインゴールド マックス
Michael James Coulson
ジェイムズ コールソン マイケル
Michael Jon Marucheck
ジョン マアルチェック マイケル
Michael Steven Vernal
スティーヴン ヴァーナル マイケル
Michael Thomas Dice
トーマス ダイス マイケル
Mohammad Makarechian
マカレチャン モハマッド
Natasha Harish Jethanandani
ハリシュ ジュサナンダーニ ナターシャ
Richard Douglas Hill
ダグラス ヒル リチャード
Richard Dievendorff
ディーヴェンドルフ リチャード
Ryan Thomas Sturgell
トーマス スターゲル ライアン
Saurab Nog
ノグ サウラブ
Scott Christoper Seely
クリストファー シーリィ スコット
Shy Cohen
コーエン シャイ
Stephen J Millet
ジェイ.ミレット シュテファン
Stephen T Swartz
ティー.シュワルツ シュテファン
Tirunelveli Vishwanath
ヴィシュワナシュ ティルネルヴェーリ
Tomasz Janczuk
ヤンチュク トマシュ
Uday S Hegde
エス.ヘッジ ウダイ
Umesh Madan
マダン ウメシュ
Vijay K Gajjala
ケイ.ガッジャーラ ヴィジャイ
Vipul Arunkant Modi
アルンカント モディ ヴィプール
Yaniv Pessach
ペッサーチ ヤニフ
Yasser Shohoud
ショハウド ヤーシル
Vaithialingam B Balayogan
ビー.バラヨガン ヴァイシャリンガム
Stefan Harrington Pharies
ハリントン ファリエス シュテファン
Stefan Batres
バトレス シュテファン
Siddhartha Puri
プリ シッダールタ
Serge Sverdolov
スヴェルドロフ セルジュ
Mohamed-Hany Essam Ramadan
エッサム ラマダン モハメッド−ハニー
Krishnan Srinivasan
スリニヴァッサン クリシュナン
Eugene Shvets
シュヴェッツ ユージン
Anand Rjagopalan
ラジャゴパラン アナンド
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 JP2006164280A publication Critical patent/JP2006164280A/ja
Publication of JP2006164280A5 publication Critical patent/JP2006164280A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】Web Serviceを作成し、対話するインターフェースインフラストラクチャを提供する。
【解決手段】ウェブサービス名前空間は、様々なアプリケーションの作成を可能にするためのインフラストラクチャに関する。このインフラストラクチャは、様々なスケールおよび複雑さのメッセージベースアプリケーションを構築するための基礎を提供する。このインフラストラクチャまたはフレームワークは、基本的なメッセージング、セキュアメッセージング、信頼性のあるメッセージング、およびトランザクション式メッセージングのためのAPIを提供する。いくつかの実施形態で、関連付けられたAPIが、ユーティリティ、ユーザビリティ、拡張性、およびバージョン性をバランスする仕方で名前空間の階層にファクタ化される。
【選択図】図2

Description

本発明は、ソフトウェア開発に関する。より詳細には、本発明は、アプリケーションプログラムおよびコンピュータハードウェアによるソフトウェアプラットフォームの使用を容易にして、分散コンピューティングアクティビティを作成し、対話するアプリケーションプログラムインターフェース(API)に関する。
コンピューティング技術は、我々の働き方、遊び方を変容した。コンピューティングシステムは今や、デスクトップコンピュータ、ラップトップコンピュータ、タブレットPC、携帯情報端末(PDA)、家庭用デバイスなどを含む様々な形態をとっている。その最も基本的な形態において、コンピューティングシステムは、システムメモリおよび1つまたは複数のプロセッサを含む。システムメモリ中のソフトウェアは、プロセッサによって実行されて、コンピューティングシステムの他のハードウェアに所望のファンクションを実行するように指示することができる。
ソフトウェアは、一般に、「オペレーティングシステム」ソフトウェアと「アプリケーション」ソフトウェアに分けられる。コンピューティングシステムがオペレーティングシステムを有することは絶対的に必要なものではないが、オペレーティングシステムは、汎用コンピューティングシステムにおいて役立つ。というのは、オペレーティングシステムは、コンピューティングハードウェアを管理および制御し、ファイル管理、スレッドスケジューリング、マルチタスキングなどの一般化されたシステムタスクを行うからである。アプリケーションソフトウェアは、より専門化されたタスクを行うことができ、必要なときに、オペレーティングシステムによって提供されるシステムレベルファンクションをコールすることができる。オペレーティングシステムの存在は、アプリケーション開発をはるかに能率的なものにする。というのは、基本的な機能を、アプリケーションごとに再開発する必要がなくなるからである。
オペレーティングシステムは、アプリケーションソフトウェアに対して多くのコアファンクションを利用可能にする。アプリケーションデベロッパは、アプリケーションプログラミングインターフェース(API)に準拠するソースコードを起草することによって、アプリケーションソフトウェアに、オペレーティングシステムによって公開されたファンクションをコールさせることができる。ランタイム中には、アプリケーションプログラムは、そのソースコードからコンパイルされたプロセッサレベルの命令を実行するときに、オペレーティングシステムをコールする。したがって、アプリケーションソフトウェアは、個々のAPIファンクションをコールすることによってリソースを要求する。APIファンクションは、オペレーティングシステムがアプリケーションソフトウェアに任意の関連する情報を提供できる手段としても働く。用語APIは、オペレーティングシステムへの単一のファンクションコールならびにオペレーティングシステムへの可能なファンクションコールの集合を指すのに使用される。さらに、用語APIは、ファンクションコールのソースコード表現ならびにファンクションコールのインメモリ表現の両方に適用される。
過去数年にわたって、インターネットの全地球的な採用およびネットワーキング技術全般が、コンピュータソフトウェアデベロッパのランドスケープを変化させてきた。伝統的に、ソフトウェアデベロッパは、スタンドアローンのデスクトップコンピュータ用またはローカルエリアネットワーク(LAN)を介して限られた数の他のコンピュータに接続されたLANベースのコンピュータ用の単一サイトのソフトウェアアプリケーションにフォーカスしてきた。これらのアプリケーションは、明確に定義されたAPIを利用して、コンピュータの基礎となるオペレーティングシステムにアクセスした。
インターネットが進歩し、広く受け入れられるようになるにつれて、産業界は、ワールドワイドウェブ(または単に「Web」)上の様々なサイトでアプリケーションをホスティングすることの威力を認識し始めた。ネットワーク化された世界では、あらゆる所からのクライアントが、様々なロケーションでホストされるサーバベースのアプリケーションに要求をサブミットし、数分の1秒で応答を受け取ることができる。しかし、これらのWebアプリケーションは、通常は、スタンドアローンコンピューティングマシンまたはローカルにネットワーク化されたコンピュータのために元々開発された同じオペレーティングシステムプラットフォームを使用して開発されたものであった。残念ながら、いくつかの場合には、これらのアプリケーションは、分散コンピューティング体制(distributed computing regime)に十分に移行しない。基礎になるプラットフォームは、単に、限られた数の相互接続されたコンピュータをサポートするという発想で構成されていなかった。
インターネットによって先導される分散コンピューティングン環境へのシフトに対処するために、Microsoft Corporation社は、「.NET」Framework(「ドットネット」と読む)またはMicrosoft(登録商標).NETとして知られているソフトウェアプラットフォームを開発した。Microsoft(登録商標).NETは、人々、情報、システム、およびデバイスを接続するためのソフトウェアである。このプラットフォームは、デベロッパが、インターネットを介して実行することになるWebサービスを作成できるようにする。このダイナミックなシフトには、.NET FrameworkのAPIファンクションのセットが伴っていた。
.NET Frameworkの使用が、ますます一般的になるにつれて、このプラットフォームの効率および/またはパフォーマンスを高める方法が識別されてきた。本発明者は、APIファンクションのユニークなセットを開発して、そのような高められた効率および/またはパフォーマンスを可能にした。
本発明の原理は、ウェブサービス名前空間を用いて.NETフレームワークとインターフェースするときに高められた効率およびパフォーマンスを可能にするAPIファンクションのユニークなセットを対象とする。ウェブサービス名前空間は、様々なアプリケーションの作成を可能にするインフラストラクチャに関し、用語「ウェブ」は、ウェブサービス名前空間を用いるアプリケーションをインターネットアプリケーションに使用されるものに限定するか、いかなる形でも制限することを意図したものではない。このインフラストラクチャは、様々なスケールおよび複雑さのメッセージベースのアプリケーションを構築するための基礎を提供する。このインフラストラクチャまたはフレームワークは、基本的なメッセージング、セキュアなメッセージング、信頼性のあるメッセージング、およびトランザクション式メッセージング(transacted messaging)のためのAPIを提供する。いくつかの実施形態では、関連付けられたAPIが、ユーティリティ、ユーザビリティ、拡張性、およびバージョン性(versionability)をバランスする仕方で名前空間の階層にファクタ化される。
本発明の追加の特徴および利点は、次の説明に示され、部分的にこの説明から明白になり、あるいは本発明の実践によって習得することができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘される手段および組合せによって実現し、得ることができる。本発明のこれらおよび他の特徴は、次の説明および添付の特許請求の範囲から完全に明白になり、あるいは、後に示す本発明の実践によって習得することができる。
本発明の上記および他の利点および特徴を得ることができる形を説明するために、上記で手短に説明した本発明のより詳しい説明を、添付図面に示された具体的な実施形態を参照して提示するが、添付図面では、同様の符号が同様の要素を指す。これらの図面が、本発明の典型的な実施形態を示すのみであり、それゆえその範囲を制限するものと考えてはならないことを理解しつつ、本発明について、添付図面の使用を通じてさらに具体性と詳細と共に記述し、説明することにする。
本発明の原理は、ウェブサービス名前空間を用いて.NETフレームワークとインターフェースするときに高められた効率およびパフォーマンスを可能にするアプリケーションプログラミングインターフェース(API)ファンクションのユニークなセットに関する。ウェブサービス名前空間は、様々なアプリケーションの作成を可能にするためのインフラストラクチャに関する。このインフラストラクチャは、様々なスケールおよび複雑さのメッセージベースのアプリケーションを構築するための基礎を提供する。インフラストラクチャまたはフレームワークは、基本的なメッセージング、セキュアなメッセージング、信頼性のあるメッセージング、およびトランザクション式メッセージングのためのAPIを提供する。いくつかの実施形態では、関連付けられたAPIが、ユーティリティ、ユーザビリティ、拡張性、およびバージョン性をバランスする仕方で名前空間の階層にファクタ化される。
記載の実装形態では、ネットワークプラットフォームが、データを記述するためのオープンな標準規格であるXML(eXtensible Markup Language)を利用する。XMLは、W3C(World Wide Web Consortium)によって管理されている。XMLは、Webページ上およびビジネス−ビジネス(企業間取引)文書上のデータ要素を定義するのに使用される。XMLは、HTMLに似たタグ構造を使用しているが、HTMLは要素がどのように表示されるかを定義するのに対して、XMLはこれらの要素が何を含むかを定義する。HTMLは、事前定義されたタグを使用するが、XMLは、タグが文書のデベロッパによって定義されることを可能にする。このように、事実上いかなるデータアイテムも識別することができ、XML文書がデータベースレコードのように機能できるようにする。XML、およびSOAP(Simple Object Access Protocol)などの他のオープンなプロトコルの使用を通じて、このプラットフォームは、ユーザのニーズに合わせて調整できる広範囲のサービスの統合を可能にする。本明細書で説明する実施形態は、XMLおよび他のオープンな標準規格に関連して説明されるが、これは、特許請求される発明の動作には必須ではない。他の同等に実行可能な技術が、本明細書に記載された発明を実施するのに十分であろう。
本明細書で使用されるように語句アプリケーションプログラムインターフェースまたはAPIには、メソッドまたはファンクションコールを用いる伝統的なインターフェースならびにリモートコール(例えば、プロキシ、スタブ関係)およびSOAP/XML呼び出しが含まれる。
(例示的なネットワーク環境)
図1に、.NET Frameworkなどのネットワークプラットフォームを実施できるネットワーク環境100を示す。ネットワーク環境100は、代表となるWebサービス102(1)、...、102(N)を含み、これらは、ネットワーク104(例えば、インターネット)を介してまたはプロセス間通信を用いてアクセスできるサービスを提供する。Webサービスは、符号102として包括的に参照されるが、再利用可能であり、通常は、XML、SOAP(Simple Object Access Protocol)、WAP(Wireless Application Protocol)、HTTP(HyperText Transport Protocol)、およびSMTP(Simple Mail Transfer Protocol)などの産業標準Webプロトコルを介してネットワーク104を介してプログラム的に対話するプログラム可能なアプリケーションコンポーネントであるが、リモートプロシージャコール(RPC)またはオブジェクトブローカタイプの技術など、ネットワークを介してWebサービスと対話する他の手段を使用することもできる。Webサービスは、自己記述的とすることができ、しばしば、メッセージのフォーマットおよび順序付けに関して定義される。
Webサービス102は、他のサービスによって直接に(通信リンク106によって表されるように)または、Webアプリケーション110などのソフトウェアアプリケーションによって(通信リンク112および114によって表されるように)アクセス可能である。各Webサービス102は、特定のサービスに対する要求を処理するためにソフトウェアを実行する1つまたは複数のサーバを含むものとして図示されている。Webサービスは、様々な異なるサービスのうちの任意の1つを実行するように構成することができる。Webサービスの例には、ログイン検証、通知、データベースストレージ、株価情報(stock quoting)提供、ロケーションディレクトリ、マッピング、音楽、電子ウォレット、カレンダ/スケジューラ、電話表、ニュースおよび情報、ゲーム、チケット購入などが含まれる。Webサービスは、互いにそして他のアプリケーションと組み合わせて、可変の複雑なシステムおよびインテリジェントなインタラクティブ体験を構築することができる。
ネットワーク環境100は、Webサービス102(通信リンク122によって表される)および/またはWebアプリケーション110(通信リンク124、126、および128によって表される)を利用する、代表となるクライアントデバイス120(1)、120(2)、120(3)、120(4)、...、120(M)も含んでいる。クライアントは、クライアント120(3)と120(4)の間の例示的なXMLリンク130によって表されているように、標準的なプロトコルを用いて互いに通信することもできる。
クライアントデバイスは、符合120によって包括的に参照されるが、多くの異なる方法で実装することができる。可能なクライアント実装の例には、限定なしに、ポータブルコンピュータ、ステーショナリコンピュータ、タブレットPC、テレビジョン/セットトップボックス、ワイヤレス通信デバイス、携帯情報端末、ゲーム機、プリンタ、写真複写機、および他のスマートデバイスが含まれる。
Web Serviceアプリケーション110は、ネットワークプラットフォーム上で稼働するように設計されたアプリケーションであり、クライアント120からの要求を処理し、サービスするときにWeb Serviceサービス102を利用することができる。Web Serviceアプリケーション110は、プログラミングフレームワーク132の上で稼働する1つまたは複数のソフトウェアアプリケーション130から構成され、プログラミングフレームワーク132は、1つまたは複数のサーバ134上または他のコンピュータシステム上で実行されている。Web Serviceアプリケーション110の一部が、実際に1つまたは複数のコンピュータ120に常駐できることに留意されたい。あるいは、Web Serviceアプリケーション110が、クライアント120上または他のコンピュータ上の他のソフトウェアと協調して、そのタスクを達成することができる。
プログラミングフレームワーク132は、アプリケーションデベロッパによって開発されたアプリケーションおよびサービスをサポートする構造である。これは、複数のプログラミング言語をサポートすることによって、マルチランゲージ開発およびシームレスな統合を可能にする。これは、SOAPなどのオープンなプロトコルをサポートし、基礎となるオペレーティングシステムおよびオブジェクトモデルサービスをカプセル化する。このフレームワークは、複数のプログラミング言語の堅牢でセキュアな実行環境を提供し、セキュアで統合されたクラスライブラリを提供する。
フレームワーク132は、APIレイヤ142、CLR(common language runtime)レイヤ144、およびオペレーティングシステム/サービスレイヤ146を含む多層状のアーキテクチャである。この層化されたアーキテクチャは、このフレームワークの他の部分に影響することなく、様々なレイヤに対するアップデートおよび変更を可能にする。共通言語仕様(CLS)140は、様々な言語のデザイナが、基礎となるライブラリ機能にアクセスできるコードを書けるようにする。この仕様140は、言語の相互運用性を促進するのに使用できる、言語デザイナとライブラリデザイナの間の契約として機能する。CLSに固執することによって、ある言語で書かれたライブラリが他の言語で書かれたコードモジュールに直接にアクセス可能にして、ある言語で書かれたコードモジュールと別の言語で書かれたコードモジュールの間のシームレスな統合を達成することができる。CLSの1つの例示的な詳細な実装形態が、ECMA TC39/TG3の参加者によって作成されたECMA標準に記載されている。
APIレイヤ142は、アプリケーション130が、レイヤ146によって提供されるリソースおよびサービスにアクセスするためにコールすることができるファンクションのグループを提示する。ネットワークプラットフォームのためのAPIファンクションを公開することによって、アプリケーションデベロッパは、ローカルおよびネットワークリソースと他のWeb Serviceサービスとを完全に利用させる分散コンピューティングシステムのためのWeb Serviceアプリケーションを、これらのネットワークリソースが実際にどのように動作するかまたはどのように利用可能にされるかの複雑な相互作用を理解する必要なく、作成することができる。さらに、Web Serviceアプリケーションは、任意の数のプログラミング言語で書くことができ、共通言語ランタイム144によってサポートされる中間言語に変換でき、共通言語仕様140の一部として含めることができる。このようなにして、APIレイヤ142は、広範で多様なアプリケーションのためのメソッドを提供することができる。
さらに、フレームワーク132は、このフレームワークをホストするサーバ134からリモートに実行されるリモートアプリケーションによって行われたAPIコールをサポートするように構成することができる。クライアント120(3)および120(M)にそれぞれ存在する代表としてのアプリケーション148(1)および148(2)は、ネットワーク104を介してAPIレイヤ142に直接にまたは間接にコールを行うことによって、APIファンクションを使用することができる。
このフレームワークは、クライアントで実装することもできる。クライアント120(3)は、フレームワーク150がクライアントで実装される状況を表している。このフレームワークは、サーバベースのフレームワーク132と同一であっても、クライアントのために変更されてもよい。あるいは、クライアントが、セルラー電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信/コンピューティングデバイスなど、機能を限定され、または専用化された機能のデバイスである場合に、クライアントベースのフレームワークは要約することができる。
(デベロッパのプログラミングフレームワーク)
図2に、プログラミングフレームワーク132をさらに詳細に示す。共通言語仕様(CLS)レイヤ140は、様々な言語130(1)、130(2)、130(3)、130(4)、...、130(K)で書かれたアプリケーションをサポートする。このようなアプリケーション言語には、Visual Basic、C++、C#、COBOL、Jscript、Perl、Eiffel、Pythonなどが含まれる。共通言語仕様140は、それに従う場合に様々な言語が通信できるようにする機能のサブセットまたは機能に関するルールのサブセットを指定する。例えば、一部の言語は、そうでなければ共通言語ランタイム144によってサポートされ得るある所与の型(例えば、「int*」型)をサポートしない。この場合に、共通言語仕様140は、その型を含まない。他方、すべてまたはほとんどの言語によってサポートされる型(例えば、「int[]」型)は、共通言語仕様140に含まれ、そのため、ライブラリデベロッパはそれを自由に使用することができ、それらの言語が処理できることが確実となる。
この通信する能力は、ある言語で書かれたコードモジュールと別の言語で書かれたコードモジュールの間のシームレスな統合をもたらす。異なる言語は、特定のタスクに特によく適するので、言語間のシームレスな統合によって、デベロッパは、異なる言語で書かれたモジュールと共に特定のコードモジュールを使用する能力と共に、そのコードモジュールのために特定の言語を選択できるようになる。共通言語ランタイム144は、言語間継承と共に、シームレスなマルチ言語開発を可能にし、複数プログラミング言語に対する堅牢でセキュアな実行環境を提供する。共通言語仕様140および共通言語ランタイム144に関するさらなる情報について、読者には、参照によって組み込まれる同時係属中の「Method and System for Compiling Multiple Languages」と題され、2000年6月21日に出願された特許出願(米国特許出願番号第09/598,105号)および「Unified Data Type System and Method」と題され、2000年7月10日に出願された特許出願(米国特許出願番号第09/613,289号)を示す。
フレームワーク132は、オペレーティングシステム146(1)(例えば、Windows(登録商標)ブランドのオペレーティングシステム)およびオブジェクトモデルサービス146(2)(例えば、COM(Component Object Model)または分散COM)をカプセル化する。オペレーティングシステム146(1)は、ファイル管理、通知、イベント処理、ユーザインターフェース(例えば、ウィンドウイング、メニュー、ダイアログなど)、セキュリティ、認証、検証、プロセスおよびスレッド、メモリ管理などの通常の機能を提供する。オブジェクトモデルサービス146(2)は、他のオブジェクトとのインターフェーシングを提供して、様々なタスクを行う。APIレイヤ142に対して行われるコールは、オペレーティングシステム146(1)および/またはオブジェクトモデルサービス146(2)によるローカル実行のための共通言語ランタイムレイヤ144に渡される。
API142は、APIファンクションを複数の名前空間にグループ化する。名前空間は、基本的に、クラス、インターフェース、委譲、列挙、および構造体のコレクションを定義し、これらは、集合的に「型」と呼ばれ、これは、関連する機能の特定のセットを提供する。クラスは、参照割り当てセマンティクスを有する、管理されたヒープを割り振られたデータを表す。委譲は、オブジェクト指向のタイプセーフなファンクションポインタである。列挙は、名前付き定数によって表されるいくつかの事前定義された値の1つをとることができる、特別な種類の値型である。構造体は、値割り当てセマンティクスを有する静的に割り振られたデータを表す。インターフェースは、他の型が実装できる契約を定義する。
名前空間を使用することによって、デザイナは、型のセットを階層的な名前空間に編成することができる。デザイナは、型のセットから複数のグループを作成することができ、各グループは、論理的に関連する機能を公開する、少なくとも1つの型を含む。例示的実装では、API142は、3つのルート名前空間を含むように編成される。図2に3つのルート名前空間だけが示されているが、追加のルート名前空間をAPI142に含めることもできることに留意されたい。API142に示された3つのルート名前空間は、プレゼンテーションサブシステムのための第1名前空間200(ユーザインターフェースシェル用の名前空間202を含む)、ウェブサービスのための第2名前空間204、およびファイルシステムのための第3名前空間206である。それで各グループに名前を割り当てることができる。例えば、プレゼンテーションサブシステム名前空間200中の型に、名前「Windows」を割り当てることができ、ファイルシステム名前空間206中の型に、名前「Storage」を割り当てることができる。名前を付けられたグループは、全体的なSystem名前空間など、システムレベルAPIのための単一の「グローバルルート」名前空間の下で編成することができる。
トップレベル識別子を選択し、プレフィックスすることによって、各グループ中の型を、その型を含むグループの名前にプレフィックスされたその選択されたトップレベル識別子を含む階層名によって簡単に参照することができる。例えば、ファイルシステム名前空間206の型は、階層名「System.Storage」を用いて参照することができる。このようにして、個々の名前空間200、204、および206が、System名前空間からの主要な枝になり、個々の名前空間が、「System.」プレフィックスなど、指定子によってプレフィックスされている指定を担うことができる。
プレゼンテーションサブシステム名前空間200は、プログラミングおよびコンテンツ開発に関係する。これは、アプリケーション、文書、メディアプレゼンテーション、および他のコンテンツの生成を可能にする型を供給する。例えば、プレゼンテーションサブシステム名前空間200は、デベロッパがオペレーティングシステム146(1)および/またはオブジェクトモデルサービス146(2)からサービスを得られるようにするプログラミングモデルを提供する。シェル名前空間202は、ユーザインターフェース機能に関係する。これは、デベロッパがそのアプリケーションにユーザインターフェース機能を組み込めるようにし、さらに、デベロッパがユーザインターフェース機能を拡張できるようにする。
ウェブサービス名前空間204は、例えばイントラネット上の2つのピアの間で動作するチャットアプリケーションのように単純なアプリケーションそして/または数百万のユーザのためのスケーラブルなWebサービスのように複雑なアプリケーションなど、様々なアプリケーションの作成を可能にするインフラストラクチャに関係する。記載のインフラストラクチャは、ある特定のソリューションの複雑さに相応しい部分だけを使用する必要があるという点で、有利なことに非常に可変である。このインフラストラクチャは、様々なスケールおよび複雑さのメッセージベースのアプリケーションを構築するための基礎を提供する。このインフラストラクチャまたはフレームワークは、基本的なメッセージング、セキュアなメッセージング、信頼性のあるメッセージング、およびトランザクション式メッセージングのためのAPIを提供する。下記で説明する実施形態では、関連付けられたAPIが、ユーティリティ、ユーザビリティ、拡張性、およびバージョン性をバランスするように入念にクラフトされた形で名前空間の階層にファクタ化されている。
ファイルシステム名前空間206は、ストレージに関係する。これは、情報のストレージおよび取り出しを可能にする型を供給する。
フレームワーク132の他に、プログラミングツール210を提供して、デベロッパがWeb Serviceおよび/またはアプリケーションを構築するのを助ける。プログラミングツール210の1つの例が、Microsoft Corporation社によって提供されるプログラミングツールのマルチ言語スイートであるVisual Studio(登録商標)である。
(ルート名前空間)
図3に、API142と、そのルート名前空間の1つすなわちウェブサービス204を詳細に示す。一実施形態において、名前空間は、名前のストリングがピリオドで連結される階層命名規約(hierachical naming convention)に従って識別される。この命名規約を念頭において、以下では、API142の選択された名前空間の全般的な概要を提供するが、他の命名規約を、同等の効果と共に使用することができよう。
ウェブサービス名前空間204は、ルート名「System.ServiceModel」によって識別される。「System.ServiceModel」名前空間内には、次のサブ名前空間がある。
・ チャネル(すなわち「System.ServiceModel.Channels」)、
・ コンフィギュレーション(すなわち「System.ServiceModel.Configuration」)、
・ 設計(すなわち「System.ServiceModel.Design」)、
・ 診断(すなわち「System.ServiceModel.Diagnostics」)、および
・ セキュリティ(すなわち「System.ServiceModel.Security」)
さらに、「System.ServiceModel.Security」名前空間内には、次のサブ名前空間がある。
・ プロトコル(すなわち「System.ServiceModel.Security.Protocols」)
さらに、メッセージングの外のユーティリティを有し、それ以外の機能をサポートする追加の名前空間がある。これには、「System.Security.Authorization」、「System.Runtime.Serialization」、「System.Transactions」、「System.IO.Log」、「System.Text」、および「System.XML」が含まれる。
これらの示された名前空間のそれぞれおよびそれらに対応するコアクラスを、これからさらに詳細に説明することにする。
(System.ServiceModel)
System.ServiceModelは、Service Modelのすべてをカプセル化するルート名前空間である。具体的には、この名前空間は、Web Serviceメッセージを使用する分散されたメッセージ受け渡しアプリケーションを書くのに利用されるAPIを表す。APIのこのセットが一緒にグループ化されているのは、これが、Service Modelの論理的なコアレイヤを表し、他のService Model名前空間を使用せずにこれらのAPIだけを使用してアプリケーションを書くことが可能であるからである。この名前空間のコアクラスには、次のものが含まれる。
・ BasicProfileHttpBinding − 組み込みWS−I BP 1.1バインディング。
・ BasicProfileHttpsBinding − HTTPSを介した組み込みWS−I BP 1.1バインディング。
・ ChannelFactory<T> − クライアントサイドのランタイムを作成するのに使用される。
・ ContractDescription − サービス契約を記述する。それぞれにMessageDescriptionsのコレクションが入ったOperationDescriptionsのコレクションを含む。
・ EndpointAddress − EndpointAddress(およびそれに含まれるクラスAddressProperties)は、Web Serviceのアドレスの定義を表す。これには、サービスのSOAPアドレス(ActingAs)、そのトランスポートアドレス(Address)、メタデータ寄与ヘッダ(EndpointHeaders)、メタデータ不可知論ヘッダ(InstanceHeaders)、セキュリティアイデンティティ(Identity)、ならびにそのエンドポイントで実装されるバインディングおよび契約に関する情報を含む、サービスのアドレスに関するいくつかの態様が含まれる。
・ IChannelFactory − IChannelFactoryインターフェースは、チャネルをアクティブに作成するための基本インターフェースを表す。これは、その上に2セットのメソッド、すなわち特定の型のIChannelがサポートされているかどうかをユーザが問い合わせられるCanCreateChannel<T>()およびユーザが指定エンドポイントへの特定の型のIChannelを作成できるようにするCreateChannel<T>(...)を有する。
・ IListenerFactory − IListenerFactoryインターフェースは、ネットワークアドレスで聴取し、IListenersを作成するための基本インターフェースを表す。これは、機能の型、すなわちネットワークアドレスを構成する仕方(ListenUri、SetListenUri、SetUniqueListenUri)およびIListenersを作成する仕方(CreateListener<T>(...)、CanCreateListener<T>())を公開する。
IListenersは、一般に、Messageフィルタ中に渡すことによってIListenerFactories上で作成される。Listener Factoryで受け取られるメッセージおよびListenerのフィルタにマッチするメッセージは、そのListenerに配送される。これを、TCP/IPが働く仕方、すなわちコンピュータ(Listener Factory)が特定のIPアドレスを聴取することに類推することができる。ソケットは、特定のTCPポート(Filter)にバインドする。特定のIPアドレスに到着したパケットは、特定のListener Factoryに到着したMessageがFilterに基づいてListenerにデマルチプレックスされる仕方と同様に、ポート番号に基づいてソケットにデマルチプレックスされる。
IListenerFactoriesは、一般に、通信パターンのアクセプタによって使用される。チャネルがどのようにアクティブに作成されるかの詳細については、IChannelFactoryを参照されたい。
・ IntermediaryHttpBinding − 中間HTTPバインディング。
・ IntermediaryTcpBinding − 中間TCPバインディング。
・ Message − Messageは、Service Model中のアプリケーション間の通信の基礎単位である。これは、Web Services間のすべてのデータ交換がカプセル化されるコンテナである。これは、IPパケットのService Model等価物である。メッセージの構造は、SOAPエンベロープのそれとゆるやかに対応する。メッセージは、メッセージヘッダのセットと本体の両方を含み、これらは、それぞれSOAP HeaderブロックおよびSOAP Bodyに対応する。メッセージに含めることのできるヘッダのセットは、拡張可能である。いくつかのデフォルトヘッダ型、具体的にはメッセージアドレッシングおよびメッセージ満了に関係するものが定義され、指定される。その他は、他のService Modelコンポーネントによってそして/またはサードパーティデベロッパによって定義される。
・ MessageDescription − サービスメッセージを記述する。
・ MsmqsBinding − MSMQ統合バインディング。
・ NetMsmqBinding − MSMQバインディング。
・ NetMsmqsBinding − セキュアMSMQバインディング。
・ NetNamedPipeBinding − 名前付きパイプバインディング。
・ NetTcpBinding − 非インターオペラブルTCPバインディング。
・ NetTcpsBinding − 非インターオペラブルTCPSバインディング。
・ OperationAttribute − .NET Framework Attributeモデルに従って使用されるときに、この属性は、サービス契約の一部としてメソッドをマークし、デベロッパがオペレーションの態様を構成できるようにする。
・ OperationDescription − サービスオペレーションを記述する。MessageDescriptionsのコレクションを含む。
・ SecurityBindingElement − このクラスおよびその関連するクラス(SOAPAuthenticationMode、SecurityContextMode、ChannelSecurityCredentials、ServiceSecurityCredentials、ChannelSecurityBehaviors、ServiceSecurityBehaviors)は、チャネルスタック中のSOAPセキュリティを構成するためのフレームワークを提供する。つまり、これらは、メッセージに適用されるセキュリティのタイプを判定する。
・ ServiceContractAttribute − .NET Framework Attributeモデルに従って使用されるときに、この属性は、サービス契約としてインターフェースをマークし、デベロッパがその契約の態様を構成させる。
・ ServiceDescription − 適したランタイム環境の作成、メタデータの生成、およびコードまたはコンフィギュレーション情報を含む様々な目的に使用することのできる、サービスのランタイム要件のインメモリ表現。
・ ServiceEndpoint − 世界と通信するためのポータルを表し、エンドポイントアドレス、契約、およびバインディングを含む。
・ ServiceHost<T> − 通信能力を有する特定のサービスタイプを提供するランタイムのためのコンテナ。
・ WsHttpBinding − HTTPを介したインターオペラブルWS(非BP)バインディング。
・ WsHttpsBinding − HTTPSを介したインターオペラブルWS(非BP)バインディング。
(System.ServiceModel.Channels)
System.ServiceModel.Channelsは、Service Modelトランスポート、信頼性、ならびにChannel FactoriesおよびListener Factoriesのキューイングのためのメイン名前空間である。これらのクラスは、Web Services通信サブシステムの具体的な実装を表す。APIのこのセットは、SOAPメッセージに作用する通信APIの論理的で総合的なレイヤを表すので一緒にグループ化される。この名前空間のコアクラスには、次のものが含まれる。
・ BinaryMessageEncoder − BinaryMessageEncoderは、MessageオブジェクトをMessageの.NET−BinaryFormatエンコーディングを使用して一連のオクテットに変換またはその逆を行うための抽象化を表す。これは、StreamまたはArraySegment<byte>をとり、Messageオブジェクトのインスタンスを返すためのメソッド、およびMessageを取り、そのMessageをStreamまたはArraySegment<byte>に書くためのメソッドを定義する。
・ HttpChannelFactory − HttpChannelFactoryクラスは、HTTPチャネルをアクティブに作成するための基本クラスを表す。HTTPチャネルは、SOAP−over−HTTPプロトコルを使用してサービスにメッセージを送り、おそらくはそのサービスからの応答を受け取るのに使用される。
・ HttpListenerFactory − HttpListenerFactoryクラスは、SOAPメッセージのHTTPアドレスで聴取し、そのアドレスに対して開始されたチャネルを受け入れるための基本クラスを表す。SOAP−over−HTTPプロトコル経由で通信されるメッセージは、HttpListenerFactory(およびそのヘルパIListener)から受け入れられたチャネル上で受け入れることができる。
・ NamedPipeChannelFactory − NamedPipeChannelFactoryクラスは、Named Pipeチャネルをアクティブに作成するための基本クラスを表す。Named Pipeチャネルは、Windows Named Pipeを介して.NET−MessageFramingプロトコルを使用してサービスにメッセージを送り、おそらくはそのサービスから応答を受け取るのに使用される。
・ NamedPipeListenerFactory − NamedPipeListenerFactoryクラスは、SOAPメッセージのNamed Pipeアドレスで聴取し、そのアドレスに対して開始されたチャネルを受け入れるための基本クラスを表す。Windows Named Pipeを介して.NET−MessageFraming経由で通信されるメッセージは、NamedPipeListenerFactory(およびそのヘルパIListener)から受け入れられたチャネル上で受け入れることができる。
・ ReliableChannelFactory − ReliableChannelFactoryクラスは、Reliableチャネルをアクティブに作成するための基本クラスを表す。Reliableチャネルは、サポートされるトランスポートを介してWS−ReliableMessagingプロトコルを使用してサービスにメッセージを送り、おそらくはそのサービスから応答を受け取るのに使用される。
・ ReliableListenerFactory − ReliableListenerFactoryクラスは、新しいReliableチャネルについて聴取するための基本クラスを表す。WS−ReliableMessagingプロトコルを使用して通信されるメッセージは、ReliableListenerFactory(およびそのヘルパIListener)から受け入れられたチャネル上で受け入れることができる。
・ TcpChannelFactory − TcpChannelFactoryクラスは、TCPチャネルをアクティブに作成するための基本クラスを表す。TCPチャネルは、TCPストリームを介して.NET−MessageFramingプロトコルを使用してサービスにメッセージを送り、おそらくはそのサービスから応答を受け取るのに使用される。
・ TcpListenerFactory − TcpListenerFactoryクラスは、SOAPメッセージのTCPアドレスで聴取し、そのアドレスに対して開始されたチャネルを受け入れるための基本クラスを表す。TCPストリームを介して.NET−MessageFramingプロトコル経由で通信されるメッセージは、TcpListenerFactory(およびそのヘルパIListener)から受け入れられたチャネル上で受け入れることができる。
・ TextMessageEncoder − TextMessageEncoderは、MessageオブジェクトをMessageの標準XMLエンコーディングを使用して一連のオクテットに変換およびその逆を行うための抽象化を表す。これは、StreamまたはArraySegment<byte>をとり、インスタンス化されたMessageを返すためのメソッドと、Messageをとり、そのMessageをStreamまたはArraySegment<byte>に書くためのメソッドを定義する。
(System.ServiceModel.Configuration)
System.ServiceModel.Configuration名前空間は、Service Modelアプリケーションの永続設定を格納するクラスを含む。これらのAPIは、主にアプリケーションの開発の後にアクセスされるので、一緒にグループ化される。これらのクラスは、Service Modelアプリケーションを書くときにデベロッパによって使用されるのではなく、アプリケーションが書かれた後に使用される。別個の名前空間が、この区別を明瞭にする。この名前空間のコアクラスには、次のものが含まれる。
・ ServiceBindingsSection − ServiceBindingsSectionは、特定のService Modelバインディングに対するすべてのコンフィギュレーションを含む。これらのコンフィギュレーション設定の機能は、プログラミングモデル中の同等のクラスの機能を密接にミラー化する。
・ ServiceModelSectionGroup − ServiceModelSectionGroupは、すべてのService Modelコンフィギュレーションに対するコンテナクラスである。これは、すべての他のService Modelコンフィギュレーションをプログラム的に読み、書くときに使用されるアクセッサクラスでもある。
・ ServicesSection − ServicesSectionは、.NET Framework AppDomain中に実装されたサービスのためのすべてのコンフィギュレーション設定を含む。
(System.ServiceModel.Design)
System.ServiceModel.Design名前空間は、記述の変換を扱う型(ServiceDescriptionおよびChannelDescription)を含む。これらには、コードおよびコンフィグから記述を作成するServiceLoaderおよびChannelLoaderと、メタデータジェネレータおよびコードジェネレータをインポートし、エクスポートするServiceDescriptionImporterおよびServiceDescriptionExporterが含まれる。これは、ServiceDescriptionおよびChannelDescriptionからランタイム環境を構築する型も含む。これらの型は、これらすべてが何らかの形でServiceDescriptionおよびChannelDescriptionを変換するので、1つの名前空間の下にグループ化される。この名前空間は、Designで終わる。というのは、これがサポートするシナリオの多くが厳密に、いずれのメッセージ交換にも先立つデザインタイムシナリオまたはランタイムシナリオであるからである(これらを、「アプリケーションがそれ自体をセットアップする」シナリオと考えることができる)。この名前空間のコアクラスには、次のものが含まれる。
・ ChannelBuilder − ServiceDescriptionおよびChannelDescriptionに基づいてリスナおよびチャネルスタックを構築する。
・ ChannelLoader − 型付きチャネルおよび関連するバインディングに基づいてChannelDescriptionを構築する。
・ ServiceDescriptionImporter/Exporter − メタデータからServiceDescriptionを生成し、その逆を行う。
・ ServiceLoader − サービス型ならびに関連する契約およびバインディングからServiceDescriptionを作成する。
(System.ServiceModel.Diagnostics)
System.ServiceModel.Diagnostics名前空間は、ランタイム状態の直接の検査および制御を通して、またトレースの永続ストリームを通してService Modelアプリケーションをモニタし診断するのに使用される型を公開する。これらのクラスが使用されるシナリオは、アプリケーションを作成するのではなく、Service Modelアプリケーションの振る舞いを観察し、制御することに関係する。これらのAPIは、機能的区別を明瞭にするためにこの名前空間にグループ化される。この名前空間のコアクラスには、次のものが含まれる。
・ IWSTransferContract − IWSTransferContractは、WS−Transferプロトコルを実装するインターフェースである。WS−Transferは、プロトコルのWS−Managementスイートの一部であり、Web Serviceアプリケーションの稼働中のインスタンスを検査するのに使用される。
・ MessageWriterTraceListener − MessageWriterTraceListenerは、Web Serviceの着信および発信メッセージのロギングに使用される、Systems.Diagnostics.TraceListenerクラスの実装である。
(System.ServiceModel.Security)
System.ServiceModel.Security名前空間は、メッセージセキュリティに関する型を含む。これは、SOAP Messageセキュリティプロトコル、WS−Trustプロトコル、WS−SecureConversationsプロトコル、および他のWS−* Securityプロトコルの実装を含む。これは、セキュリティトークンを得るためのクラス、セキュリティトークンのシリアライゼーションのためのクラス、System.Security.Authorization名前空間中の型の中にコールすることによってセキュリティトークンを検証するためのクラス、およびSystem.Security.Authorization名前空間中の型をコールすることによって認証チェックを行うためのクラスを含む。これは、セキュリティバインディング抽象化を含む(セキュリティバインディングは、メッセージセキュリティパターンである)。この名前空間中のコアクラスには、次のものが含まれる。
・ SecurityBindingFactory − SecurityBindingFactoryは、セキュリティテンプレート(バインディング)を管理するためのフレームワークである。セキュリティテンプレート(バインディング)は、SOAPメッセージセキュリティプロトコルに準拠するセキュアメッセージの特定の定式化である。これは、テンプレート通りに、発信メッセージを保護し、着信メッセージを検証する。このクラスは、すべてのセキュリティバインディングがそれから派生する抽象基本クラスSecurityBindingのインスタンスを作成する。SecurityBindingクラスは、SecureOutgoingMessage機能およびValidateIncomingMessage機能を提供する。
・ SecurityBindingFactoryは、ServiceModel.Security.Protocols名前空間内に特定の実装を有する。その一部を、下にリストする。
○ − AnonymousOverAsymmetricSecurityBindingFactory
○ − BasicOverAsymmetricSecurityBindingFactory
○ − BasicOverSymmetricSecurityBindingFactory
○ − BasicOverTransportSecurityBindingFactory
○ − CryptoOverAsymmetricSecurityBindingFactory
○ − CryptoOverTransportSecurityBindingFactory
○ − SessionSecurityBindingFactory
○ − SoapSecurityBindingFactory
○ − SymmetricSecurityBindingFactory
○ − TransportSecurityBindingFactory
・ SecurityTokenAuthenticator − トークンオーセンティケータは、トークン検証に使用されるべき認証設定を格納し、型固有部分を所与としてトークンをインスタンス化する。
・ SecurityTokenProvider − SecurityTokenProviderは、リモートエンドポイントでプリンシパルを認証する際に使用されるセキュリティトークンを得るための機能を提供する。
・ SecurityTokenResolver − SecurityTokenResolverは、トークンへの参照を作成し、マッチする(そして、予め必要なトークンについて発見する)パブリックフレームワークである。
・ SecurityTokenSerializer − SecurityTokenSerializerは、SecurityTokensをXMLにシリアライズし、トークンXMLを型固有フォーマット中立部分にデシリアライズし、TokenAuthenticatorを呼び出してsecurityTokenを作成する。これは、内部および外部トークン参照をどのようにシリアライズし、デシリアライズするかも知っている。
(System.ServiceModel.Security.Protocols)
この名前空間は、ある特定の明確に定義され分析されたセキュリティパターン(セキュリティバインディングと呼ばれる)とマッチするSOAPメッセージセキュリティの特定の実装を含む。これは、System.ServiceModel.Securityで定義されたフレームワークの具体的な実装を含む。
(System.Security.Authorization)
System.Security.Authorization名前空間は、セキュリティトークン、クレーム、および認証を伴うコアセキュリティ機能に責任を負うすべてのクラスを含む。この機能は、Service Model名前空間とは別個の名前空間で提示されて、他のメッセージングフレームワークが、これが提示するセキュリティ機能を利用できるようにする。この名前空間には、次のコアクラスが含まれる。
・ IClaim − セキュリティモデルの基礎は、クレーム、すなわち発行する当事者によって行われたステートメントである。クレームは、IClaimインターフェースを最小限に実装したオブジェクトによって表される。IClaimインターフェースはそれで、IMatchPolicyインターフェースを実装する。このインターフェースは、Matchメソッドを公開する。これは、指定されたクレームが、Matchメソッドを実装するオブジェクトと「マッチ」するかどうかを判定するために使用される。新しいインターフェースをIClaimから導出して、クラスの分類法(taxonomy)を作成することができる。究極的に、オブジェクトは、これらのインターフェースを実装し、これら自体が、他のインターフェースに導出することができる。この名前空間は、クレームの4つのトップレベルの型、すなわちアイデンティティ、属性、発行、およびアクセス決定を定義する。アイデンティティクレームは、当事者をどのように識別するかに関するステートメントを作る。これは、プリンシパルまたはキーホルダとすることができる。属性クレームは、電話番号または誕生日など、アイデンティティに関するステートメントである。発行クレームは、指定されたアイデンティティが特定の型のクレームを発行することを許可されていることを示す。アクセス決定クレームは、示されたアイデンティティに許可されたか与えられた権利または能力である。
・ IClaimSet − このモデルでは、クレームは単に単一のステートメントである。その結果、次の論理コンポーネントは、クレームのセットである。これらは、IClaimSetインターフェースを実装するオブジェクトによって提供される。クレームのセットは、単一のキーを担うクレームだけを有することができることを除いて、クレームの任意のセットを有することができる。
・ ICrypto − ICryptoインターフェースは、キーホルダが実行できる暗号オペレーションを表す。暗号オペレーションは、対称または非対称のいずれかとすることができよう。
・ ISecurityToken − セキュリティトークンは、IClaimsProviderインターフェースおよびICryptoProviderインターフェースをサポートするオブジェクトであり、これは、クレームセットのコンテナであり、暗号オペレーションの暗号プロバイダを公開することを意味する。Validateメソッドは、トークンをチェックし、検証するためにコールされる。検証は、すべての発行しているオーソリティシグネチャが確認されることを確実にし、発行委譲チェーンを認証の一部として検証できるように、これらのオーソリティのクレームセットをそれ自体のものと事実上マージする。
(System.Runtime.Serialization)
System.Runtime.Serialization名前空間は、XML Formatterクラス(Service Modelのメインシリアライゼーションエンジン)、関連クラス、ならびにシリアライズ可能クラスをマークするのに使用されるカスタム属性およびインターフェースを含み、これらの属性およびインターフェースは、Service Modelのシリアライゼーションプログラミングモデルを形成する。この名前空間には、次のコアクラスが含まれる。
・ DataContractAttribute − このカスタム属性は、型がシリアライズ可能であり、新しいService Modelシリアライゼーションプログラミングモデルに従って注釈を付けられていることを宣言し、その型のある特定のシリアライゼーションプロパティを設定するのに使用される。
・ DataMemberAttribute − 新しいService Modelシリアライゼーションプログラミングモデルでは、このカスタム属性は、ある所与のフィールドまたはプロパティをシリアライズすべきことを宣言するために使用される。これは、フィールドまたはプロパティのある特定のシリアライゼーション設定を制御するためにも使用することができる。
・ KnownTypeAttribute − このカスタム属性は、型を「既知の型のコレクション」に追加するために使用され、これは、シリアライゼーションエンジンがオブジェクトをどの型にデシリアライズすべきかを知らない場合にシリアライゼーションエンジンが試みる型のセットである。
・ UnknownSerializationData − このクラスは、同じオブジェクトの異なるバージョンの間のラウンドトリッピング情報に使用され、オブジェクトの新しいバージョンのインスタンスを古いバージョンにデシリアライズするときに、古いバージョンによって理解されないどの情報もUnknownSerializationDataに格納される。古いオブジェクトがシリアライズされるときに、UnknownSerializationDataに格納されたデータも同様にシリアライズされ、シリアライズされたデータが新しいバージョンにデシリアライズされなければならない場合にデータが失われないことを確実にする。
・ XmlFormatter − このクラスは、Service Modelのメインシリアライゼーションエンジンであり、このクラス上のメソッドをコールすることによって、シリアライゼーションまたはデシリアライゼーションオペレーションを開始することができる。
(System.Transactions)
System.Transactions名前空間は、2つの子名前空間、System.Transactions.IsolationおよびSystem.Transactions.Recoveryを含む。
(System.Transactions.Isolation)
System.Transactions.Isolation名前空間は、アプリケーションに、強調しているクライアントの間でリソースを分離させる能力を与える。その中の型は、揮発性リソースおよび持続可能でロック可能なリソースの分離と、可変粒度リソースサポート(variable−granularity resources support)をサポートする。この名前空間には、次のコアクラスが含まれる。
・ LockContext − クライアントのためにリソースがロックされているクライアントコンテキストを表す。
・ LockManager − ロックのコレクションを表し、ロックのライフタイム管理を提供する。
・ LockScope − リソースに関するオペレーションの境界を表す。
・ ResourceLock − ロックを表す。
(System.Transactions.Recovery)
System.Transactions.Recovery名前空間は、リソースマネージャのデベロッパを助けるロギングオブジェクトモデルを提供する。Logクラスは、異なる作業の単位、補正レコード、およびチェックポイントをサポートする。この名前空間には、次のコアクラスが含まれる。
・ Log − リソースマネージャの回復ログを表す。
・ LogRecord − 回復ログに書き込まれた単一レコードを表す。
・ SavePoint − 作業の単位中のセーブポイントを表し、ログを切り捨て、マージし、およびロールバックするためのメソッドを提供する。
・ UnitOfWork − リソースマネージャのログにおける作業の論理単位を表し、作業の単位を準備し、コミットし、およびロールバックするためのメソッドを提供する。
(System.IO.Log)
System.IO.Log名前空間は、レコード指向のシーケンシャルI/Oシステムへの単純なインターフェースを提供するクラスを含む。これは、WINDOWS(登録商標)CLFS(Common Log File System)への管理されたインターフェースを含む。この名前空間には、次のコアクラスが含まれる。
・ IRecordSequence − レコードシーケンス抽象化を提供するインターフェース。
(System.Text)
System.Text名前空間は、様々な形態のバイナリ/テキストエンコーディングおよびデコーディング(Base64およびBinHex)を行うためにService Model XML Infrastructureコンポーネント(Xml ReadersおよびWriters)によって使用されるヘルパクラスを収容する。この名前空間には、次のコアクラスが含まれる。
・ Base64Encoding − Base64フォーマットのバイナリデータのエンコーディングおよびデコーディングを取り扱う。
・ BinHexEncoding − BinHexフォーマットのバイナリデータのエンコーディングおよびデコーディングを取り扱う。
(System.XML)
System.Xmlは、Service Modelの「XML Infrastructure」、すなわちService Modelシリアライゼーションによって使用されるが、独立に有用でもある最適化されたXML ReadersおよびWritersを含む。現在サポートされているリーダーおよびライタの2つのセットは、UTF8テキストXMLのためのパフォーマンス最適化されたリーダーおよびライタならびにService Model独自のバイナリフォーマットのためのリーダー/ライタである。この名前空間には、次のコアクラスが含まれる。
・ IXmlDictionary − IXmlDictionaryを実装するクラスは、XmlDictionaryStringオブジェクトのリポジトリとして働くことができる。
・ XmlBinaryReader、XmlBinaryWriter − これらのクラスは、Service Modelの独自のバイナリフォーマットのXMLを読み取り、書き込む。
・ XmlDictionaryReader、XmlDictionaryWriter − これらの抽象クラスは、この名前空間のすべての他のリーダーおよびライタの基礎を形成し、標準XMLリーダーおよびライタAPIに、ストリングディクショナリの使用を可能にする新しいメソッドを導入する(XmlDictionaryStringクラスを参照されたい)。すなわち、通常のストリングの代わりにXmlDictionaryStringを用いてWriteStringをコールすることができ、ライタは、サポートされる場合に、ストリングのディクショナリIDだけを書き込むことができ(ストリング全体ではなく)、これによって、サイズ節約を達成する。
・ XmlDictionaryString − このクラスは、基本的に、ストリングをユニークなID番号と組み合わせるように働き、例えばストリングが複数回書き出される(この機能をサポートするXMLライタを使用して)場合に、サイズ節約を達成するために、そのストリングを、1回だけ書き出し、その後、後続のすべての使用でそのユニークIDによって置換することができる。
・ XmlUTF8TextReader、XmlUTF8TextWriter − これらのクラスは、UTF8エンコーディングを用いて、テキストフォーマットでXMLを読み取り、書き込む。これらは、標準テキストXMLリーダーおよびライタに似ているが、パフォーマンスについて最適化されており、XmlDictionaryReader/Writerから派生し、これによって、Service Modelシリアライゼーションエンジンの最適化されたコードパスで使用可能になされている。
(例示的なコンピューティングシステムおよび環境)
図4に、プログラミングフレームワーク132を実施できる(完全または部分的のいずれかで)適切なコンピューティング環境400の一例を示す。コンピューティング環境400は、本明細書に記載のコンピュータおよびネットワークアーキテクチャで利用することができる。
例示的なコンピューティング環境400は、コンピューティング環境の一例にすぎず、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲に関していかなる限定を示唆することが意図されたものではない。コンピューティング環境400を、例示的なコンピューティング環境400に図示されたコンポーネントのいずれかまたはその組合せに関する依存性または要件を有するものと解釈するべきではない。
フレームワーク132は、多くの他の汎用または専用のコンピューティングシステム環境または構成で実装することができる。使用に適する可能性がある周知のコンピューティングシステム、環境、および/または構成には、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらに限定されない。このフレームワークのコンパクトバージョンまたはサブセットバージョンがセルラー電話、携帯情報端末、ハンドヘルドコンピュータ、または他の通信/コンピューティングデバイスなどの限られたリソースのクライアントに実装することもできる。
フレームワーク132を、プログラムモジュールなど、1つまたは複数のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。フレームワーク132を、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に置くことができる。
コンピューティング環境400は、コンピュータ402の形態の汎用コンピューティングデバイスを含む。コンピュータ402のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット404、システムメモリ406、およびプロセッサ404を含む様々なシステムコンポーネントをシステムメモリ406に結合するシステムバス408を含むことができる。
システムバス408は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む複数の可能なタイプのバス構造の1つまたは複数を表す。例として、そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも称するPCI(Peripheral Component Interconnects)バスを含むことができる。
コンピュータ402は、通常、様々なコンピュータ可読媒体を含む。そのような媒体は、コンピュータ402によってアクセス可能で、揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブルの媒体の両方を含む任意の利用可能な媒体とすることができる。
システムメモリ406には、ランダムアクセスメモリ(RAM)410などの揮発性メモリ、および/または読取専用メモリ(ROM)412などの不揮発性メモリの形態のコンピュータ可読媒体が含まれる。起動中などにコンピュータ402内の要素の間で情報を転送するのを助ける基本ルーチンが入った基本入出力システム(BIOS)414は、ROM 412に格納される。RAM410は、通常、処理ユニット404によって即座にアクセス可能および/または現在操作されているデータおよび/またはプログラムモジュールを収容している。
コンピュータ402は、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。例として、図4に、非リムーバブル不揮発性磁気媒体(図示せず)から読み取り、これに書き込むハードディスクドライブ416、リムーバブル不揮発性磁気ディスク420(例えば、「フロッピディスク」)から読み取り、これに書き込む磁気ディスクドライブ418、CD−ROM、DVD−ROM、または他の光媒体などのリムーバブル不揮発性光ディスク424から読み取り、そして/またはこれに書き込む光ディスクドライブ422が示されている。ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422は、それぞれ、1つまたは複数のデータ媒体インターフェース426によってシステムバス408に接続されている。あるいは、ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422を、1つまたは複数のインターフェース(図示せず)によってシステムバス408に接続することができる。
ディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージをコンピュータ402に提供する。この例には、ハードディスク416、リムーバブル磁気ディスク420、およびリムーバブル光ディスク424が示されているが、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)、または他の光ストレージ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)および類似物などの、コンピュータによってアクセス可能なデータを格納できる他のタイプのコンピュータ可読媒体も、例示のコンピューティグシステムおよび環境を実施するのに利用できることを理解されたい。
例として、オペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432を含む、任意の数のプログラムモジュールを、ハードディスク416、磁気ディスク420、光ディスク424、ROM412、および/またはRAM410に格納することができる。オペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432のそれぞれ(あるいはこれらの組合せ)は、プログラミングフレームワーク132の要素を含むことができる。
ユーザは、キーボード434およびポインティングデバイス436(例えば、「マウス」)などの入力デバイスを介してコンピュータ402にコマンドおよび情報を入力することができる。他の入力デバイス438(具体的には図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、シリアルポート、スキャナ、および/または類似物を含むことができる。これらおよび他の入力デバイスは、システムバス408に結合された入出力インターフェース440を介して処理ユニット404に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造によって接続することができる。
モニタ442または他のタイプのディスプレイデバイスも、ビデオアダプタ444などのインターフェースを介してシステムバス408に接続することができる。モニタ442の他に、他の出力周辺デバイスは、入出力インターフェース440を介してコンピュータ402に接続することができるスピーカ(図示せず)およびプリンタ446などのコンポーネントを含むことができる。
コンピュータ402は、リモートコンピューティングデバイス448などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。例えば、リモートコンピューティングデバイス448は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の一般的なネットワークノード、および類似物とすることができる。リモートコンピューティングデバイス448は、コンピュータ402に関して本明細書で説明した要素および特徴の多くまたはすべてを含むことができるポータブルコンピュータとして図示されている。
コンピュータ402とリモートコンピュータ448の間の論理接続は、ローカルエリアネットワーク(LAN)450および一般的な広域ネットワーク(WAN)452として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
LANネットワーキング環境で実施されるときに、コンピュータ402は、ネットワークインターフェースまたはネットワークアダプタ454を介してローカルネットワーク450に接続される。WANネットワーキング環境で実施されるときに、コンピュータ402は、通常、広域ネットワーク452を介する通信を確立する、モデム456または他の手段を含む。モデム456は、コンピュータ402に内蔵するか外付けとすることができるが、入出力インターフェース440または他の適当な機構を介してシステムバス408に接続することができる。図示のネットワーク接続が、例示であり、コンピュータ402と448の間の通信リンクを確立する他の手段を使用できることを理解されたい。
コンピューティング環境400と共に例示されたようなネットワーク化された環境では、コンピュータ402に関して図示されたプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに格納することができる。例として、リモートアプリケーションプログラム458が、リモートコンピュータ448のメモリデバイス上に存在する。例示のために、アプリケーションプログラムと、オペレーティングシステムなどの他の実行可能プログラムコンポーネントが、本明細書では別個のブロックとして示されているが、そのようなプログラムおよびコンポーネントが、ときにコンピューティングデバイス402の異なるストレージコンポーネントに存在し、コンピュータのデータプロセッサによって実行されることを理解されたい。
フレームワーク132の実装、具体的にはAPI142またはAPI142に対して行われるコールを、何らかの形態のコンピュータ可読媒体に格納するか、伝送することができる。コンピュータ可読媒体は、コンピュータによってアクセスできる利用可能な媒体とすることができる。限定ではなく例として、コンピュータ可読媒体には、「コンピュータ記憶媒体」および「通信媒体」を備えることができる。「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージのための方法または技術で実施された、揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体が含まれる。コンピュータ記憶媒体に、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは、所望の情報を保管するのに使用でき、コンピュータによってアクセスできる他のすべての媒体が含まれるが、これらに限定されない。
「通信媒体」は、通常、搬送波または他のトランスポート機構などの変調されたデータ信号で、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具現する。通信媒体には、任意の情報配布媒体も含まれる。用語「変調されたデータ信号」は、信号に情報を符号化する形でその特性の1つまたは複数を設定または変更した信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれる。
あるいは、このフレームワークの一部を、ハードウェアで、またはハードウェア、ソフトウェア、および/もしくはファームウェアの組合せで実装することができる。例えば、1つまたは複数の特定用途向け集積回路(ASIC)またはプログラマブルロジックデバイス(PLD)を設計またはプログラムして、このフレームワークの1つまたは複数の部分を実装することができる。
(プログラミングインターフェース)
プログラミングインターフェースは、コードの1つまたは複数のセグメントが、コードの1つまたは複数の他のセグメントと通信するかこれによって提供される機能にアクセスすることを可能にする機構、プロセス、プロトコルと見なすことができる。プログラミングインターフェースの1タイプが、通常はアプリケーションによってコールされるアプリケーションプログラミングインターフェースである。あるいは、プログラミングインターフェースは、他のコンポーネントの1つまたは複数の機構、メソッド、ファンクションコール、モジュールなどに通信可能に結合できるシステムのコンポーネントの1つまたは複数の機構、メソッド、ファンクションコール、モジュール、オブジェクトなどと見なすことができる。前文での用語「コードのセグメント」は、コードの1つまたは複数の命令または行を含むことが意図されており、適用される用語法にかかわらず、コードセグメントが別個にコンパイルされるかどうかにかかわらず、あるいはコードセグメントがソースコード、中間コード、またはオブジェクトコードとして提供されるかにかかわらず、コードセグメントがランタイムシステムまたはプロセスで利用されるかにかかわらず、あるいはコードセグメントが同じマシンまたは異なるマシンに配置されるか、複数のマシンにわたって分散されるかにかかわらず、あるいはコードのセグメントによって表される機能がソフトウェアだけで、ハードウェアだけで、またはハードウェアとソフトウェアの組合せで実装されるかにかかわらずに、例えば、コードモジュール、オブジェクト、サブルーチン、ファンクションなどを含む。
概念上、プログラミングインターフェースは、総称的に、図5または図6に示されているように見ることができる。図5に、第1および第2のコードセグメントが通信するコンジット(conduit)としてのプログラミングインターフェースInterface1を示す。図6に、インターフェースオブジェクトI1およびI2(第1および第2のコードセグメントの一部であってもそうでなくてもよい)を備えるものとしてプログラミングインターフェースを示し、これらのインターフェースオブジェクトは、システムの第1および第2のコードセグメントが媒体Mを介して通信できるようにする。図6の図面では、プログラミングインターフェースオブジェクトI1およびI2を、同じシステムの別個のプログラミングインターフェースと考えることができ、オブジェクトI1およびI2に加えて媒体Mがプログラミングインターフェースを備えると考えることもできる。図5および6は、双方向のフローと、フローの両側にインターフェースを示しているが、ある特定の実装が、一方向の情報フローだけを有する(または、下記で示すように情報フローを有しない)こともできるし、片側だけにインターフェースオブジェクトを有することもできる。限定ではなく例として、アプリケーションプログラミングインターフェース(API)、エントリポイント、メソッド、ファンクション、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル(COM)インターフェースなどの用語は、プログラミングインターフェースの定義内に包含される。
このようなプログラミングインターフェースの態様は、第1コードセグメントが第2コードセグメントに情報を伝送する(ここで「情報」とは、その最も広義の意味で使用され、データ、コマンド、要求などを含む)方法と、第2コードセグメントが情報を受け取る方法と、情報の構造、シーケンス、シンタックス、編成、スキーマ、タイミング、およびコンテンツを含むことができる。これに関して、基礎になるトランスポート媒体自体は、その媒体が有線、無線、またはそれらの組合せであれ、情報がインターフェースによって定義される仕方でトランスポートされる限り、インターフェースの動作は重要でない場合がある。いくつかの状況では、情報が、通常の意味で一方向または両方向で渡されない場合がある。というのは、情報転送が、別の機構を介する(例えば、コードセグメントの間の情報フローと別個に、バッファ、ファイルなどに置かれた情報)か、1つのコードセグメントが第2コードセグメントによって実行される機能に単純にアクセスするときのように存在しない場合があるからである。これらの態様のいずれかまたはすべてが、例えばコードセグメントが疎結合または密結合された構成のシステムの一部であるかに依存して、所与の状況で重要である場合があり、したがって、このリストは、制限的ではなく例示的と考えられるべきである。
プログラミングインターフェースのこの概念は、当業者に既知であり、本発明の前述の詳細な説明から明らかである。しかし、プログラミングインターフェースを実装する他の方法があり、明示的に除外されない限り、これらも、本明細書と共に示された請求項に包含されることが意図されている。そのような他の方法は、図5および6の単純な図より洗練され、または複雑になるように見えるかもしれないが、それでも、これらは、同じ全体的な結果を達成するための類似の機能を行う。これから、プログラミングインターフェースのいくつかの例示的な代替的な実装形態を簡潔に説明する。
(ファクタリング)
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の個別の通信に分解することによって間接的に達成することができる。これを、概略的に図7および8に示す。図に示すように、いくつかのインターフェースを、機能の分割可能なセットに関して記述することができる。このように、数学的に24を2×2×3×2として提供できるのと同様に、図5および6のインターフェース機能をファクタ化して、同一の結果を達成することができる。したがって、図7に示すように、プログラミングインターフェースInterface1によって提供されるファンクションをサブ分割して、同一の結果を達成しつつ、プログラミングインターフェースの通信を複数のインターフェースInterface 1A、Interface 1B、Interface 1Cなどに変換することができる。図8に示すように、インターフェースI1によって提供されるファンクションを、同一の結果を達成しつつ、複数のプログラミングインターフェースI1a、I1b、I1cなどにサブ分割することができる。同様に、第1コードセグメントから情報を受け取る第2コードセグメントのプログラミングインターフェースI2を、複数のプログラミングインターフェースI2a、I2b、I2cなどにファクタ化することができる。ファクタ化するときに、第1コードセグメントと共に含まれるインターフェースの数が、第2コードセグメントと共に含まれるプログラミングインターフェースの数とマッチする必要はない。図7および8のケースのどちらにおいても、インターフェースInterface1およびI1の機能的趣旨は、それぞれ図5および6と同じままである。プログラミングインターフェースのファクタ化は、結合(associative)、可換(commutative)、および他の数学的プロパティに従うこともあり、ファクタ化が認識し難い場合がある。例えば、オペレーションの順序付けは、重要でない場合があり、その結果、あるプログラミングインターフェースによって履行されるファンクションは、そのインターフェースに達するかなり前に、コードまたはインターフェースの別の断片によって履行されるか、あるいはシステムの別個のコンポーネントによって行うことができる。さらに、プログラミング技術の当業者は、同じ結果を達成する異なるファンクションコールを行う様々な方法があることを理解することができる。
(再定義)
いくつかの場合に、所期の結果を依然として達成しながら、プログラミングインターフェースのある特定の態様(例えば、パラメータ)を無視し、追加し、または再定義することが可能である場合がある。これを、図9および10に示す。例えば、図5のプログラミングインターフェースInterface1に、3つのパラメータ、input、precision、およびoutputを含むコールであり、第1コードセグメントから第2コードセグメントに発行されるファンクションコールSquare(input,precision,output)を含むと仮定する。真中のパラメータprecisionが、ある所与のシナリオに関係しない場合に、図9に示すように、これを単に無視するか、意味のない(この状況で)パラメータと置き換えることさえできる。関係のない追加パラメータを追加することもできる。どの場合でも、inputが第2コードセグメントによって自乗された後にoutputが返される限り、自乗の機能を達成することができる。precisionは、下流またはコンピューティングシステムの他の部分にとって意味のあるパラメータである可能性があるが、自乗を計算する狭い目的のためにprecisionが必要でないことが認識されると、これを置き換えるか無視することができる。例えば、有効なprecision値を渡す代わりに、結果に悪影響を及ぼさずに、誕生日などの無意味な値を渡すことができよう。同様に、図10に示すように、インターフェースI1を、このインターフェースへのパラメータを無視するか追加するために再定義されたプログラミングインターフェースI1’によって置き換える。プログラミングインターフェースI2は、同様に、不要なパラメータまたはどこかで処理され得るパラメータを無視するように再定義されたプログラミングインターフェースI2’として再定義することができる。ここでのポイントは、いくつかの場合には、プログラミングインターフェースが、ある目的に必要でない、パラメータなどの態様を含むことがあり、したがって、これらを無視するか再定義し、あるいは他の目的のためにどこかで処理することができることである。
(インラインコーディング)
2つの別個のコードモジュールの間の「インターフェース」が形態を変えるように、この2つのコードモジュールの機能の一部またはすべてをマージすることが実現可能である場合もある。例えば、図5および6の機能を、それぞれ図11および12の機能に変換することができる。図11では、図5の以前の第1および第2のコードセグメントが、それらの両方を含むあるモジュールにマージされる。この場合に、コードセグメントは、まだ互いに通信することができるが、インターフェースは、単一モジュールにより適する形態に適合させることができる。このように、例えば、形式的なCallおよびReturnステートメントが、もはや必要でないかもしれないが、プログラミングインターフェースInterface1に従う類似の処理または応答が、まだ有効であるかもしれない。同様に、図12に示すように、図6からのインターフェースI2の一部(またはすべて)を、プログラミングインターフェースI1にインラインで書き込んで、プログラミングインターフェースI1”を形成することができる。図示したように、プログラミングインターフェースI2は、I2aおよびI2bに分割され、インターフェース部分I2aは、プログラミングインターフェースI1と共にインラインでコード化されて、プログラミングインターフェースI1”を形成する。具体的な例として、図6からのプログラミングインターフェースI1が、ファンクションコールsquare(input,output)を行い、これは、プログラミングインターフェースI2によって受け取られ、これが、第2コードセグメントによってinput(自乗のため)と共に渡された値を処理した後に、outputと共に自乗した結果を渡すことを考える。そのような場合に、第2コードセグメントによって行われる処理(inputの自乗)を、プログラミングインターフェースへのコールなしで、第1コードセグメントによって行うことができる。
(分離)
あるコードセグメントから別のコードセグメントへの通信は、通信を複数の別個の通信に分解することによって間接的に達成することができる。これを、概略的に図13および14に示す。図13に示すように、ミドルウェア1つまたは複数の断片(機能および/またはインターフェースファンクションを元のインターフェースから分離(divorce)させるのでDivorce Interface)が、第1インターフェースInterface1上での通信を変換して、異なるインターフェース、この例ではプログラミングインターフェースInterface2A、Interface2B、およびInterface2Cに準拠させるように提供されている。これは、例えば、言わばInterface1プロトコルに従ってオペレーティングシステムと通信するように設計されたアプリケーションのインストールベースがあるが、オペレーティングシステムが、異なるインターフェース、この例ではプログラミングインターフェースInterface2A、Interface2B、およびInterface2Cを使用するように変更された場合に、行うことができる。ポイントは、第2コードセグメントによって使用される元のインターフェースが変更され、第1コードセグメントによって使用されるインターフェースともはや互換でなくなり、したがって、仲介物が、古いインターフェースと新しいインターフェースを互換にするのに使用されることである。同様に、図14に示すように、インターフェースI1からの通信を受け取る分離インターフェースDI1と、例えばDI2と共に働くように再設計されたが同じ機能的結果を提供するインターフェースI2aおよびI2bにインターフェース機能を伝送する分離インターフェースDI2と共に第3コードセグメントを導入することができる。同様に、DI1およびDI2は、共に働いて、図6のインターフェースI1およびI2の機能を、同じまたは類似の機能的結果を提供しつつ、新しいオペレーティングシステムに変換することができる。
(リライティング)
もう1つの可能な変形は、コードを動的にリライトして、プログラミングインターフェース機能を、別のものであるが同じ全体的な結果を達成するものに置き換えることである。例えば、中間言語(例えば、Microsoft IL、Java(登録商標)ByteCodeなど)で提示されたコードセグメントを実行環境(「.NET」Frameworkによって提供されるもの、Java(登録商標)ランタイム環境、または他の類似のランタイムタイプ環境)中のジャストインタイム(JIT)コンパイラまたはインタープリタに提供するシステムがある場合がある。JITコンパイラは、第1コードセグメントから第2コードセグメントへの通信を動的に変換する、すなわち第2コードセグメント(元のまたは異なる第2コードセグメントのいずれか)によって必要とされる可能性がある異なるインターフェースにこれらを準拠させるようにリライトすることができる。これを、図15および16に示す。図15からわかるように、このアプローチは、上述した分離シナリオに似ている。これは、例えば、アプリケーションのインストールベースが、Interface1プロトコルに従ってオペレーティングシステムと通信するように設計されているが、オペレーティングシステムが、異なるインターフェースを使用するように変更された場合に行うことができる。JITコンパイラを使用して、通信を、インストールベースアプリケーションからオペレーティングシステムの新しいインターフェースにオンザフライで準拠させることができよう。図16に示されているように、インターフェースを動的にリライトするというこのアプローチを適用して、インターフェースをダイナミックにファクタ化するか他の点で変更することもできる。
代替実施形態を介してプログラミングインターフェースとして同じまたは類似の結果を達成するための上述したシナリオを、様々な仕方で、シリアルにおよび/またはパラレルに、あるいは他の介在するコードと組み合わせることもできることにも留意されたい。このように、上記で提示した代替実施形態は、相互に排他的ではなく、混合し、マッチさせ、組み合わせて、図5および6に提示された総称的なシナリオと同じまたは均等のシナリオを作ることができる。また、ほとんどのプログラミング構成と同様に、本明細書に記載されていないかもしれないが、それでも本発明の趣旨および範囲によって表される、インターフェースの同じまたは類似の機能を達成する他の方法があることに留意されたい、すなわち、それが、少なくとも部分的に、インターフェースの価値の根底にある、インターフェースによって表される機能であり、インターフェースによって可能にされる有利な結果であることに留意されたい。
(結び)
本発明について、構造的特徴および/または方法論的アクトに固有の言葉で説明したが、添付の特許請求の範囲で定義される発明が、記載の具体的な特徴またはアクトに必ずしも限定されないことを理解されたい。むしろ、具体的な特徴およびアクトは、請求される発明を実施する例示的な形態として開示されたものである。
本発明を、その趣旨または本質的特性から逸脱することなく他の具体的な形態で実施することができる。記載の実施形態は、すべての態様において、制限的ではなく例示的であるものと考えられるべきである。それゆえ、本発明の範囲は、前述の説明によるのではなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味および均等の範囲内に入るすべての変更が、その範囲に包摂さえるべきである。
クライアントが従来のプロトコルを用いてWebサービスにアクセスするネットワークアーキテクチャを示す図である。 アプリケーションプログラムインターフェース(API)を含む、ネットワークプラットフォームのためのソフトウェアアーキテクチャを示すブロック図である。 APIによってサポートされるユニークな名前空間を示すブロック図であり、各名前空間は共通の特性を有する1つまたは複数のファンクションクラスを表している。 ソフトウェアアーキテクチャのすべてまたは一部を実行することができる例示的なコンピュータを示すブロック図である。 本発明の1つの実施形態によるプログラミングインターフェースの態様を説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。 一実施形態によるプログラミングインターフェースの態様説明するブロック図である。
符号の説明
100 ネットワーク環境
102(1)〜(N) Webサービス
104 ネットワーク
106 通信リンク
110 Webアプリケーション
120(1)〜(M) クライアント
130 アプリケーション
130(1)〜(4) アプリケーション言語
132 フレームワーク
134 サーバ
140 共通言語仕様(CLS)
142 アプリケーションプログラムインターフェース(API)
144 共通言語ランタイム(CLR)
146 OS/サービス
146(1) オペレーティングシステム(OS)
146(2) オブジェクトモデルサービス
148(1)、(2) アプリケーション
150 フレームワーク
200 プレゼンテーションサブシステム
202 シェル
204 Webサービス
206 ファイルシステム
210 プログラミングツール
400 コンピューティング環境
402 コンピュータ
404 処理ユニット
406 システムメモリ
408 システムバス
410 RAM
412 ROM
414 BIOS
416 ハードディスクドライブ
418 磁気ディスクドライブ
420 リムーバブル不揮発性磁気ディスク
422 光ディスクドライブ
424 リムーバブル不揮発性光ディスク
426 データ媒体インターフェース
426 オペレーティングシステム
428 アプリケーションプログラム
430 他のプログラムモジュール
432 プログラムデータ
434 キーボード
436 マウス
438 入力デバイス
440 入出力インターフェース
442 モニタ
444 ビデオアダプタ
446 プリンタ
448 リモートコンピューティングデバイス
450 ローカルエリアネットワーク(LAN)
452 インターネット
454 ネットワークアダプタ
456 モデム
458 リモートアプリケーションプログラム

Claims (28)

  1. それぞれが分散されたメッセージ受け渡しアプリケーションを書くためのものであり、それぞれが複数のウェブサービスを論理グループ化するための第1の共通名前空間プレフィックスで表される、第1の複数のウェブサービスAPIと、
    それぞれが分散されたメッセージ受け渡しアプリケーションを書くためのものであり、前記第1の複数のウェブサービスAPIのすべてに存在しないある共通の特性を有し、それぞれが前記第1の共通名前空間プレフィックスと前記第1の共通名前プレフィックスのサブ名前空間である第2の共通名前プレフィックスとの両方を有して表される、第2の複数のウェブサービスAPIと
    を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  2. 前記第1の複数のウェブサービスAPIは、ソースコードとして表されることを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  3. 前記第1の複数のウェブサービスAPIは、コンパイルされたコードとして表されることを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  4. 前記第1および第2の複数のウェブサービスAPIは、.NETプラットフォーム上で動作可能であることを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  5. 第1の共通名前空間は、「System.ServiceModel」であるか、テキスト「System.ServiceModel」からコンパイルされることを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  6. 第2の共通名前空間は、「System.ServiceModel.Channels」であるか、テキスト「System.ServiceModel.Channels」からコンパイルされることを特徴とする請求項5に記載の1つまたは複数のコンピュータ可読媒体。
  7. 第2の共通名前空間は、「System.ServiceModel.Configuration」であるか、テキスト「System.ServiceModel.Configuration」からコンパイルされることを特徴とする請求項5に記載の1つまたは複数のコンピュータ可読媒体。
  8. 第2の共通名前空間は、「System.ServiceModel.Design」であるか、テキスト「System.ServiceModel.Design」からコンパイルされることを特徴とする請求項5に記載の1つまたは複数のコンピュータ可読媒体。
  9. 第2の共通名前空間は、「System.ServiceModel.Diagnostics」であるか、テキスト「System.ServiceModel.Diagnostics」からコンパイルされることを特徴とする請求項5に記載の1つまたは複数のコンピュータ可読媒体。
  10. 第2の共通名前空間は、「System.ServiceModel.Security」であるか、テキスト「System.ServiceModel.Security」からコンパイルされることを特徴とする請求項5に記載の1つまたは複数のコンピュータ可読媒体。
  11. 第2の共通名前空間は、「System.ServiceModel.Security.Protocols」であるか、テキスト「System.ServiceModel.Security.Protocols」からコンパイルされることを特徴とする請求項10に記載の1つまたは複数のコンピュータ可読媒体。
  12. それぞれが分散されたメッセージ受け渡しアプリケーションを書くためのものであり、前記第1の複数のウェブサービスAPIのすべてに存在しないある共通の特性を有し、それぞれが前記第1の共通名前空間プレフィックスと、前記第1の共通名前空間プレフィックスのサブ名前空間である第3の共通名前空間プレフィックスとの両方を有して表される、第3の複数のウェブサービスAPI
    をさらに有することを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  13. それぞれが分散されたメッセージ受け渡しアプリケーションを書くためのものであり、前記第3の複数のウェブサービスAPIのすべてに存在しないある共通の特性を有し、それぞれが前記第1の共通名前空間プレフィックス、前記第3の共通名前空間プレフィックス、および前記第3の共通名前空間プレフィックスのサブ名前空間である第4の共通名前空間プレフィックスの両方を有して表される、第4の複数のウェブサービスAPI
    をさらに有することを特徴とする請求項12に記載の1つまたは複数のコンピュータ可読媒体。
  14. それぞれが分散されたメッセージ受け渡しアプリケーションを書くためのものであり、前記第1または第2の複数のウェブサービスAPIのすべてに存在しないある共通の特性を有し、それぞれが前記第1の共通名前空間プレフィックス、前記第2の名前空間プレフィックス、および前記第2の共通名前空間プレフィックスのサブ名前空間である第3の共通名前空間プレフィックスの両方を有して表される、第3の複数のウェブサービスAPI
    をさらに有することを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  15. 前記1つまたは複数のコンピュータ可読媒体は、物理媒体であることを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
  16. それぞれが第1の1つまたは複数の共通の特徴を有するファンクションを実装するためのものであり、それぞれが前記第1の複数のAPIについての論理グループ化のために第1の共通名前空間プレフィックスで表される、第1の複数のAPIと、
    それぞれが第2の1つまたは複数の共通の特徴を有するファンクションを実装するためのものであり、それぞれが前記第1の共通名前空間プレフィックスと前記第1の共通名前空間プレフィックスのサブ名前空間である第2の共通名前空間プレフィックスとの両方を有して表される、第2の複数のAPIと
    を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  17. 前記第1の複数のAPIは、ソースコードとして表されることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  18. 前記第1の複数のAPIは、コンパイルされたコードとして表されることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  19. 前記第1および第2の複数のAPIは、.NETプラットフォーム上で動作可能であることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  20. 第2の共通名前空間は、「System.Security.Authorization」であるか、テキスト「System.Security.Authorization」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  21. 第2の共通名前空間は、「System.Runtime.Serialization」であるか、テキスト「System.Runtime.Serialization」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  22. 第2の共通名前空間は、「System.Transactions」であるか、テキスト「System.Transactions」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  23. 第2の共通名前空間は、「System.IO.Log」であるか、テキスト「System.IO.Log」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  24. 第2の共通名前空間は、「System.Text」であるか、テキスト「System.Text」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  25. 第2の共通名前空間は、「System.Xml」であるか、テキスト「System.Xml」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  26. 第2の共通名前空間は、「System.ServiceModel」であるか、テキスト「System.ServiceModel」からコンパイルされることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  27. メッセージ受け渡しアプリケーションは、Web Serviceを実装することを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
  28. 前記1つまたは複数のコンピュータ可読媒体は、物理媒体であることを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読媒体。
JP2005349475A 2004-12-03 2005-12-02 ウェブサービスを作成し、対話するためのインターフェースインフラストラクチャ Pending JP2006164280A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/003,307 US7512957B2 (en) 2004-12-03 2004-12-03 Interface infrastructure for creating and interacting with web services

Publications (2)

Publication Number Publication Date
JP2006164280A true JP2006164280A (ja) 2006-06-22
JP2006164280A5 JP2006164280A5 (ja) 2009-01-22

Family

ID=36084157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005349475A Pending JP2006164280A (ja) 2004-12-03 2005-12-02 ウェブサービスを作成し、対話するためのインターフェースインフラストラクチャ

Country Status (5)

Country Link
US (1) US7512957B2 (ja)
EP (1) EP1667020A3 (ja)
JP (1) JP2006164280A (ja)
KR (1) KR101159350B1 (ja)
CN (1) CN1783019A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010113538A1 (ja) * 2009-03-31 2010-10-07 日立オートモティブシステムズ株式会社 車載電子制御装置,制御ソフトウェアおよび制御ソフトウェアの開発ツール
JP2011514586A (ja) * 2008-02-08 2011-05-06 エクリオ インコーポレイテッド デジタル電子デバイス上の複数のアプリケーションおよびサービスを制御するためのシステム、方法、ならびに装置
US10503407B2 (en) 2017-09-21 2019-12-10 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10552336B2 (en) 2017-10-27 2020-02-04 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10719437B2 (en) 2017-10-27 2020-07-21 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516054B2 (en) * 2000-12-20 2013-08-20 Aurea Software, Inc. Message handling
US8301800B1 (en) 2002-07-02 2012-10-30 Actional Corporation Message processing for distributed computing environments
US20040205216A1 (en) * 2003-03-19 2004-10-14 Ballinger Keith W. Efficient message packaging for transport
US8296354B2 (en) * 2004-12-03 2012-10-23 Microsoft Corporation Flexibly transferring typed application data
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US8191078B1 (en) 2005-03-22 2012-05-29 Progress Software Corporation Fault-tolerant messaging system and methods
US7840682B2 (en) 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7669205B2 (en) * 2005-07-01 2010-02-23 Microsoft Corporation Using messages to extend CRM functionality
US8301720B1 (en) * 2005-07-18 2012-10-30 Progress Software Corporation Method and system to collect and communicate problem context in XML-based distributed applications
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US20070106804A1 (en) * 2005-11-10 2007-05-10 Iona Technologies Inc. Method and system for using message stamps for efficient data exchange
US7710958B2 (en) 2006-01-20 2010-05-04 Iona Technologies Limited Method for recoverable message exchange independent of network protocols
US7949720B2 (en) * 2006-01-31 2011-05-24 Microsoft Corporation Message object model
US20070255720A1 (en) * 2006-04-28 2007-11-01 Sap Ag Method and system for generating and employing a web services client extensions model
US8656350B2 (en) * 2007-02-06 2014-02-18 Software Ag Event-based process configuration
US9009234B2 (en) 2007-02-06 2015-04-14 Software Ag Complex event processing system having multiple redundant event processing engines
US8276115B2 (en) * 2007-02-06 2012-09-25 Progress Software Corporation Automated construction and deployment of complex event processing applications and business activity monitoring dashboards
US20080201759A1 (en) * 2007-02-15 2008-08-21 Microsoft Corporation Version-resilience between a managed environment and a security policy
US7913264B2 (en) * 2007-02-22 2011-03-22 Amadeus Sas Remote customisation module and system comprising said module
US7644129B2 (en) * 2007-06-01 2010-01-05 Sap Ag Persistence of common reliable messaging data
US7886301B2 (en) 2007-06-29 2011-02-08 Microsoft Corporation Namespace merger
US8875097B2 (en) * 2008-01-25 2014-10-28 Siemens Aktiengesellschaft Subsystem architecture for providing support services for software applications
US8051332B2 (en) 2008-07-15 2011-11-01 Avicode Inc. Exposing application performance counters for .NET applications through code instrumentation
US9104794B2 (en) * 2008-07-15 2015-08-11 Microsoft Technology Licensing, Llc Automatic incremental application dependency discovery through code instrumentation
US8832580B2 (en) 2008-11-05 2014-09-09 Aurea Software, Inc. Software with improved view of a business process
US8276159B2 (en) * 2009-09-23 2012-09-25 Microsoft Corporation Message communication of sensor and other data
US8763089B2 (en) * 2010-01-12 2014-06-24 Microsoft Corporation Flexible authentication and authorization mechanism
US8694956B2 (en) * 2010-10-14 2014-04-08 Red Hat Israel, Ltd. PowerShell cmdlets code generating tool for communicating to the web services
US20120246609A1 (en) 2011-03-24 2012-09-27 International Business Machines Corporation Automatic generation of user stories for software products via a product content space
US8671085B2 (en) 2011-12-09 2014-03-11 Microsoft Corporation Consistent database recovery across constituent segments
US20130198029A1 (en) * 2012-01-26 2013-08-01 Microsoft Corporation Application recommendation and substitution
US9384466B2 (en) * 2012-09-26 2016-07-05 Oracle International Corporation Systems and methods for extending any service to existing systems by using an adaptive common interface
US9183065B1 (en) * 2012-11-01 2015-11-10 Amazon Technologies, Inc. Providing access to an application programming interface through a named pipe
US9292342B2 (en) * 2012-12-26 2016-03-22 Microsoft Technology Licensing, Llc Schedule based execution with extensible continuation based actions
US9141379B2 (en) 2013-01-15 2015-09-22 International Business Machines Corporation Automated code coverage measurement and tracking per user story and requirement
US9069647B2 (en) 2013-01-15 2015-06-30 International Business Machines Corporation Logging and profiling content space data and coverage metric self-reporting
US9087155B2 (en) 2013-01-15 2015-07-21 International Business Machines Corporation Automated data collection, computation and reporting of content space coverage metrics for software products
US9075544B2 (en) 2013-01-15 2015-07-07 International Business Machines Corporation Integration and user story generation and requirements management
US9396342B2 (en) 2013-01-15 2016-07-19 International Business Machines Corporation Role based authorization based on product content space
US9111040B2 (en) 2013-01-15 2015-08-18 International Business Machines Corporation Integration of a software content space with test planning and test case generation
US9218161B2 (en) 2013-01-15 2015-12-22 International Business Machines Corporation Embedding a software content space for run-time implementation
US9081645B2 (en) 2013-01-15 2015-07-14 International Business Machines Corporation Software product licensing based on a content space
US9063809B2 (en) * 2013-01-15 2015-06-23 International Business Machines Corporation Content space environment representation
US9659053B2 (en) 2013-01-15 2017-05-23 International Business Machines Corporation Graphical user interface streamlining implementing a content space
US9454630B1 (en) 2013-02-26 2016-09-27 Xilinx, Inc. Graphical representation of integrated circuits
US8752075B1 (en) * 2013-02-26 2014-06-10 Xilinx, Inc. Method for data transport
CN105187423B (zh) * 2015-08-28 2019-04-12 宇龙计算机通信科技(深圳)有限公司 网络资源的隔离方法、网络资源的隔离系统和移动终端
CN106550005A (zh) * 2015-09-23 2017-03-29 伊姆西公司 用于处理rest软件架构中的媒体类型的方法和装置
CN106648557B (zh) * 2015-10-28 2020-04-03 华为技术有限公司 一种应用程序编程接口api的分享方法和装置
CN107463434B (zh) * 2017-08-11 2021-08-24 恒丰银行股份有限公司 一种分布式任务处理方法与设备
US10698791B2 (en) * 2018-07-28 2020-06-30 International Business Machines Corporation Handling request data with type safety in a remote service
US20200167215A1 (en) * 2018-11-28 2020-05-28 Centurylink Intellectual Property Llc Method and System for Implementing an Application Programming Interface Automation Platform
CN109918216A (zh) * 2019-03-07 2019-06-21 山东浪潮通软信息科技有限公司 一种基于管道的数据处理方法和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030028685A1 (en) * 2001-07-10 2003-02-06 Smith Adam W. Application program interface for network software platform

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6598093B1 (en) * 1998-05-14 2003-07-22 Sun Microsystems, Inc. Method and apparatus for a core application programming interface
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7340745B2 (en) * 2002-06-25 2008-03-04 Sun Microsystems, Inc. Systems and methods for mapping API calls

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030028685A1 (en) * 2001-07-10 2003-02-06 Smith Adam W. Application program interface for network software platform

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011514586A (ja) * 2008-02-08 2011-05-06 エクリオ インコーポレイテッド デジタル電子デバイス上の複数のアプリケーションおよびサービスを制御するためのシステム、方法、ならびに装置
WO2010113538A1 (ja) * 2009-03-31 2010-10-07 日立オートモティブシステムズ株式会社 車載電子制御装置,制御ソフトウェアおよび制御ソフトウェアの開発ツール
JP2010237895A (ja) * 2009-03-31 2010-10-21 Hitachi Automotive Systems Ltd 車載電子制御装置,制御ソフトウェアおよび制御ソフトウェアの開発ツール
US10503407B2 (en) 2017-09-21 2019-12-10 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US12147673B2 (en) 2017-09-21 2024-11-19 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11709597B2 (en) 2017-09-21 2023-07-25 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11093137B2 (en) 2017-09-21 2021-08-17 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11416387B2 (en) 2017-10-27 2022-08-16 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11347655B2 (en) 2017-10-27 2022-05-31 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US10719437B2 (en) 2017-10-27 2020-07-21 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11748256B2 (en) 2017-10-27 2023-09-05 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11954043B2 (en) 2017-10-27 2024-04-09 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US12066931B2 (en) 2017-10-27 2024-08-20 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US10552336B2 (en) 2017-10-27 2020-02-04 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US12321283B2 (en) 2017-10-27 2025-06-03 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US12443524B2 (en) 2017-10-27 2025-10-14 Kioxia Corporation Memory system and method for controlling nonvolatile memory

Also Published As

Publication number Publication date
CN1783019A (zh) 2006-06-07
KR101159350B1 (ko) 2012-07-05
KR20060063665A (ko) 2006-06-12
US7512957B2 (en) 2009-03-31
EP1667020A3 (en) 2006-09-13
US20060150200A1 (en) 2006-07-06
EP1667020A2 (en) 2006-06-07

Similar Documents

Publication Publication Date Title
US7512957B2 (en) Interface infrastructure for creating and interacting with web services
Sotomayor et al. Globus® Toolkit 4: Programming Java Services
US7581231B2 (en) Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7080092B2 (en) Application view component for system integration
US7127700B2 (en) Method and apparatus for developing web services using standard logical interfaces to support multiple markup languages
US7165239B2 (en) Application program interface for network software platform
US7117504B2 (en) Application program interface that enables communication for a network software platform
US20030177282A1 (en) Application program interface for network software platform
US20030182364A1 (en) Method and apparatus for requesting and performing batched operations for web services
US20030233477A1 (en) Extensible infrastructure for manipulating messages communicated over a distributed network
US20050091671A1 (en) Programming interface for a computer platform
US20020038336A1 (en) IMS transaction messages metamodel
EP2307977A1 (en) System and method for dynamic partitioning of applications in client-server environments
CN106412086A (zh) 一种利用协议描述文件自动生成通信代码的方法及系统
EP1444609A1 (en) Application view component for system integration
Hunt et al. Guide to J2EE: enterprise Java
JP2004318831A (ja) 資源記述フレームワークベースの情報へのアクセス方法
Cornelius Web Services using .NET
Roszko A Framework for Next Generation Enterprise Application Integration
Hasan Service-Oriented
Mukherjee FreeForums
What SOA in .NET: Web Services
AU2002347920A1 (en) Application view component for system integration

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120713

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120803