特許第6670312号(P6670312)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ドキュメント ストレージ システムズ, インコーポレイテッドの特許一覧

特許6670312動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム
<>
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000002
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000003
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000004
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000005
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000006
  • 特許6670312-動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6670312
(24)【登録日】2020年3月3日
(45)【発行日】2020年3月18日
(54)【発明の名称】動的サービス展開のためのコンピュータ可読格納媒体およびそれを利用するための方法およびシステム
(51)【国際特許分類】
   G06F 9/54 20060101AFI20200309BHJP
【FI】
   G06F9/54 F
   G06F9/54 D
【請求項の数】33
【全頁数】20
(21)【出願番号】特願2017-534604(P2017-534604)
(86)(22)【出願日】2015年12月17日
(65)【公表番号】特表2018-500688(P2018-500688A)
(43)【公表日】2018年1月11日
(86)【国際出願番号】US2015066303
(87)【国際公開番号】WO2016106064
(87)【国際公開日】20160630
【審査請求日】2018年7月6日
(31)【優先権主張番号】14/581,417
(32)【優先日】2014年12月23日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】517219166
【氏名又は名称】ドキュメント ストレージ システムズ, インコーポレイテッド
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】カティーブ, ラルフ
【審査官】 清木 泰
(56)【参考文献】
【文献】 特開2014−183587(JP,A)
【文献】 特表2013−542524(JP,A)
【文献】 特開2013−145436(JP,A)
【文献】 特開2011−198298(JP,A)
【文献】 特開2009−217410(JP,A)
【文献】 特表2005−532634(JP,A)
【文献】 特開2005−346408(JP,A)
【文献】 特開2005−092423(JP,A)
【文献】 特開2002−183106(JP,A)
【文献】 国際公開第2001/095145(WO,A1)
【文献】 米国特許出願公開第2013/0007773(US,A1)
【文献】 米国特許出願公開第2007/0255718(US,A1)
【文献】 米国特許出願公開第2005/0097566(US,A1)
【文献】 Ian Griffiths著,鈴木幸敏,外8名訳,プログラミングC# 第7版,株式会社オライリー・ジャパン,2013年11月28日,初版第1刷,Pages:139-142
【文献】 Chris Smith著,鈴木幸敏訳,プログラミングF#,株式会社オライリー・ジャパン,2010年 8月20日,初版第1刷,Pages:106-107
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455−9/54
G06F 8/00 −8/38
G06F 8/60 −8/77
G06F 9/44 −9/445
G06F 9/451
G06Q10/00 −10/10
G06Q30/00 −30/08
G06Q50/00 −50/20
G06Q50/26 −99/00
G16Z99/00
(57)【特許請求の範囲】
【請求項1】
メモリに結合される、少なくとも1つの処理ユニットを備える、コンピュータハードウェアシステムであって、前記メモリは、コンピュータ実行可能命令で符号化されており、前記コンピュータ実行可能命令は、実行されると、前記少なくとも1つの処理ユニットに、
公開エンドポイントにおいて、クライアントメッセージを受信することであって、前記メッセージは、第1のアプリケーションプログラミングインターフェースの第1の記述に従ってフォーマットされており、前記メッセージは、動作を規定する命令と、コンピュータハードウェアシステムが前記動作を実行することを可能にするパッケージを示す情報とを含む、ことと、
第2の記述に従って前記メッセージからの前記命令を解析することと、
前記第1のアプリケーションプログラミングインターフェースの機能を介して、前記パッケージに前記命令をパスすることであって、前記パッケージは、第2のアプリケーションプログラミングインターフェースおよび論理を有し、前記パッケージは、複数のパッケージのうちの1つである、ことと、
前記第2のアプリケーションプログラミングインターフェースを経由して、前記動作および前記論理に基づく結果を受信することと、
前記結果に基づいて前記クライアントメッセージに応答することと
を行わせ、
前記第1の記述は、多次元配列を備える、システム。
【請求項2】
前記第1のアプリケーションプログラミングインターフェースによって提供される抽象化の程度は、前記第2のアプリケーションプログラミングインターフェースによって提供される抽象化の程度よりも広い、請求項1に記載のシステム。
【請求項3】
前記多次元配列は、ジャグ文字列配列である、請求項1に記載のシステム。
【請求項4】
前記第1および第2の記述は、インターフェース記述言語から形成される、請求項1に記載のシステム。
【請求項5】
前記インターフェース記述言語は、ウェブサービス記述言語である、請求項4に記載のシステム。
【請求項6】
前記クライアントメッセージは、プレーンテキストでフォーマットされている、請求項1に記載のシステム。
【請求項7】
プロセッサと、
複数の公開エンドポイントと、
メモリ
を備えるコンピュータハードウェアシステムであって、前記メモリは、
パッケージアプリケーションプログラミングインターフェースを実装する複数のパッケージと、
サービスアプリケーションプログラミングインターフェースの機能性の記述と、
コンピュータ実行可能命令を備えるサービス展開エンジンであって、前記コンピュータ実行可能命令は、実行されると、前記プロセッサに、前記サービスアプリケーションプログラミングインターフェースの前記機能性の前記記述を修正することなく、前記複数のパッケージを複数のエンドポイントに展開することを行わせる、サービス展開エンジンと
を備え、前記サービスアプリケーションプログラミングインターフェースは、コンピュータ実行可能命令を備え、前記コンピュータ実行可能命令は、実行されると、前記複数の公開エンドポイントのうちの1つにおいて前記記述に従ってフォーマットされているクライアントメッセージを受信した際に、前記プロセッサに、
前記記述を使用して、前記メッセージからの命令を解析することと、
前記パッケージアプリケーションプログラミングインターフェースを介して、前記命令を前記複数のパッケージのうちの1つにパスすることと
を行わせるコンピュータハードウェアシステム。
【請求項8】
前記サービス展開エンジンはさらに、実行されると、前記プロセッサに、
前記複数のパッケージのうちの前のバージョンのパッケージに基づいて、コンピュータハードウェアシステムが、全ての未処理動作を完了したときを検出することと、
前記前のバージョンのパッケージに基づいて、前記コンピュータハードウェアシステムが、新しい動作を容認することを妨げることと、
前記前のバージョンのパッケージを除去することと
を行わせる命令を備える、請求項7に記載のシステム。
【請求項9】
前記記述は、ジャグ文字列配列である、請求項7に記載のシステム。
【請求項10】
前記述は、インターフェース記述言語から形成される、請求項7に記載のシステム。
【請求項11】
前記インターフェース記述言語は、ウェブサービス記述言語である、請求項10に記載のシステム。
【請求項12】
前記クライアントメッセージは、プレーンテキストでフォーマットされている、請求項7に記載のシステム。
【請求項13】
クライアントアプリケーションを実行する、複数のユーザデバイスと、
ネットワークを介して前記複数のユーザデバイスに接続される、企業サーバであって、前記サーバは、プロセッサと、メモリとを有し、前記メモリは、
複数のパッケージと、
コンピュータ実行可能命令を備えるサービス展開エンジンであって、前記コンピュータ実行可能命令は、実行されると、前記プロセッサに、サービスアプリケーションプログラミングインターフェースの記述を修正することなく、複数のパッケージを複数のエンドポイントに展開することを行わせる、サービス展開エンジンと、
命令のセットと
を備える、企業サーバと
を備えるネットワーク化システムであって
各パッケージは、サービスを有し、一貫したパッケージアプリケーションプログラミングインターフェースを実装し、
前記企業サーバは、前記プロセッサによる前記命令のセットの実行を通して、前記クライアントアプリケーションに基づいて前記サービスにアクセスすることを可能にし、
前記命令のセットは、実行されると、前記ロセッサに、
前記サービスアプリケーションプログラミングインターフェースの前記記述に従ってフォーマットされている引数を含む、前記クライアントアプリケーションからのメッセージを解析することと、
前記メッセージに基づく命令を前記複数のパッケージのうちの1つにパスすることと
を行わせるコンピュータ実行可能命令である、ネットワーク化システム。
【請求項14】
メモリに結合される、少なくとも1つの処理ユニットを備える、コンピュータハードウェアシステムであって、前記メモリは、コンピュータ実行可能命令で符号化されており、前記コンピュータ実行可能命令は、実行されると、前記少なくとも1つの処理ユニットに、
公開エンドポイントにおいて、クライアントメッセージを受信することであって、前記メッセージは、第1のアプリケーションプログラミングインターフェースの記述に従ってフォーマットされており、前記記述は、多次元配列を備える、ことと、
前記メッセージを解析することと、
前記メッセージのコンテンツをパッケージにパスすることであって、前記パッケージに基づいて、前記コンピュータハードウェアシステムは、前記パスされたコンテンツに関連付けられた動作を実行することが可能であり、前記パッケージは、第2のアプリケーションプログラミングインターフェースおよび論理を備え、前記コンピュータハードウェアシステムは、前記第2のアプリケーションプログラミングインターフェースを経由して、前記動作および前記論理に基づく結果を受信するように構成されている、ことと
を行わせる、システム。
【請求項15】
前記記述は、インターフェース記述言語から形成される、請求項14に記載のシステム。
【請求項16】
前記少なくとも1つの処理ユニットはさらに、前記クライアントメッセージを認証させられる、請求項14に記載のシステム。
【請求項17】
前記パッケージは、複数のパッケージのうちの1つである、請求項14に記載のシステム。
【請求項18】
前記複数のパッケージは、パッケージ自己割当バージョン番号に従って編成される、請求項17に記載のシステム。
【請求項19】
各パッケージの複数のバージョン番号が同時に存在する、請求項18に記載のシステム。
【請求項20】
前記公開エンドポイントは、複数の公開エンドポイントのうちの1つである、請求項14に記載のシステム。
【請求項21】
前記公開エンドポイントは、クライアントアクセス可能な場所を含み、前記クライアントアクセス可能な場所は、ポート、ユニフォームリソース識別子、名前付きトークン、名前付きパイプ、または共有メモリのブロックのうちの1つ以上を備える、請求項20に記載のシステム。
【請求項22】
異なるタイプのクライアント通信が、異なる公開エンドポイントにわたって同時に可能にされる、請求項20に記載のシステム。
【請求項23】
前記メッセージが有効な要求を含むかどうかを検出するステップをさらに含む、請求項14に記載のシステム。
【請求項24】
前記検出するステップは、前記メッセージの前記コンテンツが有効なパッケージにダイレクトされるかどうかを試験することを含む、請求項23に記載のシステム。
【請求項25】
前記第1のアプリケーションプログラミングインターフェースによって提供される抽象化の程度は、前記第2のアプリケーションプログラミングインターフェースによって提供される抽象化の程度よりも広い、請求項14に記載のシステム。
【請求項26】
プロセッサと、
複数の公開エンドポイントと、
メモリ
を備えるコンピュータハードウェアシステムであって、前記メモリは、
パッケージアプリケーションプログラミングインターフェースを実装する複数のパッケージと、
サービスアプリケーションプログラミングインターフェースの機能性の記述と、
コンピュータ実行可能命令を備えるサービス展開エンジンであって、前記コンピュータ実行可能命令は、実行されると、前記プロセッサに、前記サービスアプリケーションプログラミングインターフェースの前記機能性の前記記述を修正することなく、前記複数のパッケージを複数のエンドポイントに展開することを行わせる、サービス展開エンジンと
を備え、前記サービスアプリケーションプログラミングインターフェースは、コンピュータ実行可能命令を備え、前記コンピュータ実行可能命令は、実行されると、前記複数の公開エンドポイントのうちの1つにおいて前記記述に従ってフォーマットされているクライアントメッセージを受信した際に、前記プロセッサに、
前記記述を使用して、前記メッセージからの命令を解析することと、
前記命令に基づいて、前記クライアントメッセージに応答すること、前記クライアントメッセージが有効な要求を含むかどうかを検出すること、または、前記パッケージアプリケーションプログラミングインターフェースを介して、前記命令を前記複数のパッケージのうちの1つにパスすることのうちの1つ以上を含むアクションを行うことと
を行わせるコンピュータハードウェアシステム。
【請求項27】
前記サービス展開エンジンはさらに、実行されると、前記プロセッサに、
前記複数のパッケージのうちの前のバージョンのパッケージに基づいて、コンピュータハードウェアシステムが、全ての未処理動作を完了したときを検出することと、
前記前のバージョンのパッケージに基づいて、前記コンピュータハードウェアシステムが、新しい動作を容認することを妨げることと、
前記前のバージョンのパッケージを除去することと
を行わせる命令を備える、請求項26に記載のシステム。
【請求項28】
前記記述は、ジャグ文字列配列を含む、請求項26に記載のシステム。
【請求項29】
前記述は、インターフェース記述言語から形成される、請求項26に記載のシステム。
【請求項30】
前記インターフェース記述言語は、ウェブサービス記述言語である、請求項29に記載のシステム。
【請求項31】
前記クライアントメッセージは、プレーンテキストでフォーマットされている、請求項26に記載のシステム。
【請求項32】
クライアントアプリケーションを実行する、複数のユーザデバイスと、
ネットワークを介して前記複数のユーザデバイスに接続される、企業サーバであって、前記サーバは、プロセッサと、メモリとを有し、前記メモリは、
複数のパッケージと、
コンピュータ実行可能命令を備えるサービス展開エンジンであって、前記コンピュータ実行可能命令は、実行されると、前記プロセッサに、サービスアプリケーションプログラミングインターフェースのを修正することなく、前記複数のパッケージを複数のエンドポイントに展開することを行わせる、サービス展開エンジンと、
命令のセットと
を備える、企業サーバと
を備えるネットワーク化システムであって
各パッケージは、サービスを有し、一貫したパッケージアプリケーションプログラミングインターフェースを実装し、
前記企業サーバは、前記プロセッサによる前記命令のセットの実行を通して、前記クライアントアプリケーションに基づいて前記サービスにアクセスすることを可能にし、
前記命令のセットは、実行されると、前記ロセッサに、
前記サービスアプリケーションプログラミングインターフェースの前記記述に従ってフォーマットされている引数を含む、前記クライアントアプリケーションからのクライアントメッセージを解析することと、
前記クライアントメッセージに応答すること、前記クライアントメッセージが有効な要求を含むかどうかを検出すること、または、前記サービスアプリケーションプログラミングインターフェースを介して、前記クライアントメッセージを前記サービスにパスすることのうちの1つ以上を含むアクションを行うことと
を行わせるコンピュータ実行可能命令である、ネットワーク化システム。
【請求項33】
前記クライアントメッセージに応答して、前記サービスは、リソースにアクセスすること、プロセスを行うこと、定義された形式に従って前記クライアントメッセージへの応答を作成すること、またはこれらの組み合わせを行うように構成されている、請求項32に記載のネットワーク化システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概して、ネットワークサービスに関し、より具体的には、ネットワークサービスの動的展開に関する。
【背景技術】
【0002】
典型的企業システムでは、企業サーバは、ウェブサービスを介したクライアントアプリケーションからの要求に応答して、バックエンドリソース(例えば、アプリケーション、データサーバ、またはサービスプロバイダ)に接続する。典型的には、ウェブサービスは、クライアントが、外部呼び出し元への離散要求としてではなく、遠隔プロシージャ呼び出しとしてサービスを扱うことを可能にするような方法で、企業サーバに公開される。これは、部分的に、殆どの統合開発環境が、クライアントアプリケーションの開発者がそのようなサービスをアプリケーションに容易に組み込むことを可能にするため、行われる。開発者にとって容易であるが、本行為は、アプリケーションと遠隔サービスとの間に隠れたハードリンクを導入する。ハードリンクは、具体的記述において記憶されるアプリケーションとサービスとの間の一種の契約として表され得る。本契約は、ある状況では有益であり得るが、サービスまたはクライアントへの変更は、デバイスとブレイクリンクとの間で保持される契約を無効にし得る。これは、絶え間なく変わる企業環境において問題である、バグが多い互換性のないソフトウェアおよび不良なユーザ体験をもたらし得る。ハードリンクを修復または更新することは、時間およびリソースを要し得、サーバによって提供されるサービスの中断をもたらし得る。したがって、当技術分野では、遠隔サービス契約を無効にする危険性を低減させる、ロバストなクライアントサーバ能力を提供する必要性がある。
【発明の概要】
【課題を解決するための手段】
【0003】
ある実装は、メモリに結合される、少なくとも1つの処理ユニットを備える、コンピュータシステムを含んでもよく、メモリは、コンピュータ実行可能命令で符号化され、該命令は、実行されると、少なくとも1つの処理ユニットに、公開エンドポイントにおいて、クライアントメッセージを受信することであって、該メッセージは、第1のアプリケーションプログラミングインターフェースの第1の記述に従ってフォーマットされている、ことと、第2の記述に従ってメッセージからの命令を解析することと、第1のアプリケーションプログラミングインターフェースの機能を介して、パッケージに命令をパスすることであって、該パッケージは、第2のアプリケーションプログラミングインターフェースおよび論理を有する、ことと、第2のアプリケーションプログラミングインターフェースを経由して、命令および論理に基づく結果を受信することと、結果に基づいてクライアントメッセージに応答することとを行わせる。第1の記述は、例えば、ジャグ文字列配列の形態で、実質的に一般的な形式を有してもよい。加えて、第1のアプリケーションプログラミングインターフェースは、第2のアプリケーションプログラミングインターフェースより実質的に一般的であり得る。第1および第2の記述は、インターフェース記述言語(例えば、ウェブサービス記述言語)から形成される。クライアントメッセージは、プレーンテキストでフォーマットされてもよい。
【0004】
加えて、または代替として、実装は、プロセッサと、複数の公開エンドポイントと、メモリとを備える、コンピュータハードウェアシステムを含んでもよく、該メモリは、パッケージアプリケーションプログラミングインターフェースと、サービスアプリケーションプログラミングインターフェースの機能性の記述と、コンピュータ実行可能命令を備えるサービス展開エンジンであって、該コンピュータ実行可能命令は、実行されると、プロセッサに、記述を実質的に修正することなく、各パッケージがパッケージアプリケーションプログラミングインターフェースを実装する、複数のパッケージを複数のエンドポイントに展開させる、サービス展開エンジンと、サービスアプリケーションプログラミングインターフェースであって、実行されると、複数の公開エンドポイントのうちの1つにおいて記述に従ってフォーマットされているクライアントメッセージを受信した際に、プロセッサに、記述を使用して、メッセージからの命令を解析することと、パッケージアプリケーションプログラミングインターフェースを介して、命令を複数のパッケージのうちの1つにパスすることとを行わせるコンピュータ実行可能命令を備える、サービスアプリケーションプログラミングインターフェースとを備える。サービス展開エンジンはさらに、実行されると、プロセッサに、複数のパッケージのうちの前のバージョンのパッケージが全ての顕著な動作を完了したときを検出することと、前のバージョンのパッケージが新しい動作を容認することを妨げることと、前のバージョンのパッケージを除去することとを行わせる命令を備えてもよい。実質的に一般的な形式は、例えば、ジャグ文字列配列であってもよい。第1および第2の記述は、ウェブサービス記述言語等のインターフェース記述言語から形成されてもよい。クライアントメッセージは、プレーンテキストでフォーマットされてもよい。
【0005】
加えて、または代替として、実装は、クライアントアプリケーションを実行する、複数のユーザデバイスと、ネットワークを介して複数のクライアントデバイスに接続される、企業サーバとを備える、ネットワーク化システムを含んでもよい。サーバは、プロセッサと、複数のパッケージおよび命令のセットを備える、メモリとを有してもよい。各パッケージは、サービスを有し、同一のパッケージアプリケーションプログラミングインターフェースを実装してもよい。企業サーバは、プロセッサによる命令のセットの実行を通して、クライアントアプリケーションがサービスにアクセスすることを可能にしてもよい。命令のセットは、実行されると、少なくとも1つのプロセッサに、単純アプリケーションプログラミングインターフェースの一般的記述に従ってフォーマットされている引数を含有する、クライアントアプリケーションからのメッセージを解析させ、命令を複数のパッケージのうちの1つにパスさせる、コンピュータ実行可能命令であってもよい。
本発明は、例えば、以下を提供する。
(項目1)
メモリに結合される、少なくとも1つの処理ユニットを備える、コンピュータハードウェアシステムであって、前記メモリは、コンピュータ実行可能命令で符号化されており、前記コンピュータ実行可能命令は、実行されると、前記少なくとも1つの処理ユニットに、
公開エンドポイントにおいて、クライアントメッセージを受信することであって、前記メッセージは、第1のアプリケーションプログラミングインターフェースの第1の記述に従ってフォーマットされている、ことと、
第2の記述に従って前記メッセージからの命令を解析することと、
前記第1のアプリケーションプログラミングインターフェースの機能を介して、パッケージに前記命令をパスすることであって、前記パッケージは、第2のアプリケーションプログラミングインターフェースおよび論理を有する、ことと、
前記第2のアプリケーションプログラミングインターフェースを経由して、前記命令および前記論理に基づく結果を受信することと、
前記結果に基づいて前記クライアントメッセージに応答することと
を行わせ、
前記第1の記述は、実質的に一般的な形式を有する、システム。
(項目2)
前記第1のアプリケーションプログラミングインターフェースは、前記第2のアプリケーションプログラミングインターフェースより実質的に一般的である、項目1に記載のシステム。
(項目3)
前記実質的に一般的な形式は、ジャグ文字列配列である、項目1に記載のシステム。
(項目4)
前記第1および第2の記述は、インターフェース記述言語から形成される、項目1に記載のシステム。
(項目5)
前記インターフェース記述言語は、ウェブサービス記述言語である、項目4に記載のシステム。
(項目6)
前記クライアントメッセージは、プレーンテキストでフォーマットされている、項目1に記載のシステム。
(項目7)
プロセッサと、
複数の公開エンドポイントと、
メモリであって、
パッケージアプリケーションプログラミングインターフェースと、
サービスアプリケーションプログラミングインターフェースの機能性の記述と、
コンピュータ実行可能命令を備えるサービス展開エンジンであって、前記コンピュータ実行可能命令は、実行されると、前記プロセッサに、前記記述を実質的に修正することなく、複数のパッケージを複数のエンドポイントに展開させ、各パッケージは、前記パッケージアプリケーションプログラミングインターフェースを実装する、サービス展開エンジンと、
コンピュータ実行可能命令を備えるサービスアプリケーションプログラミングインターフェースであって、前記コンピュータ実行可能命令は、実行されると、前記複数の公開エンドポイントのうちの1つにおいて前記記述に従ってフォーマットされているクライアントメッセージを受信した際に、前記プロセッサに、
前記記述を使用して、前記メッセージからの命令を解析することと、
前記パッケージアプリケーションプログラミングインターフェースを介して、前記命令を前記複数のパッケージのうちの1つにパスすることと
を行わせる、サービスアプリケーションプログラミングインターフェースと
を備える、メモリと
を備える、コンピュータハードウェアシステム。
(項目8)
前記サービス展開エンジンはさらに、実行されると、前記プロセッサに、
前記複数のパッケージのうちの前のバージョンのパッケージが全ての未処理動作を完了したときを検出することと、
前記前のバージョンのパッケージが新しい動作を容認することを妨げることと、
前記前のバージョンのパッケージを除去することと
を行わせる命令を備える、項目7に記載のシステム。
(項目9)
前記実質的に一般的な形式は、ジャグ文字列配列である、項目8に記載のシステム。
(項目10)
前記第1および第2の記述は、インターフェース記述言語から形成される、項目8に記載のシステム。
(項目11)
前記インターフェース記述言語は、ウェブサービス記述言語である、項目10に記載のシステム。
(項目12)
前記クライアントメッセージは、プレーンテキストでフォーマットされている、項目8に記載のシステム。
(項目13)
クライアントアプリケーションを実行する、複数のユーザデバイスと、
ネットワークを介して前記複数のクライアントデバイスに接続される、企業サーバであって、プロセッサと、複数のパッケージおよび命令のセットを備える、メモリとを有する、サーバと
を備え、
各パッケージは、サービスを有し、同一のパッケージアプリケーションプログラミングインターフェースを実装し、
前記企業サーバは、前記プロセッサによる前記命令のセットの実行を通して、前記クライアントアプリケーションが前記サービスにアクセスすることを可能にし、
前記命令のセットは、実行されると、前記少なくとも1つのプロセッサに、
単純アプリケーションプログラミングインターフェースの一般的記述に従ってフォーマットされている引数を含有する、前記クライアントアプリケーションからのメッセージを解析することと、
前記命令を前記複数のパッケージのうちの1つにパスすることと
を行わせるコンピュータ実行可能命令である、ネットワーク化システム。
【図面の簡単な説明】
【0006】
図1図1は、ネットワーク化クライアントアプリケーションおよび遠隔サービスのある実装の概略ブロック図を図示する。
図2図2は、多次元配列の形態で一般的形式のある実装を図示する。
図3図3は、コンピュータネットワーキング環境のある実装の概略ブロック図を図示する。
図4図4は、ある実装による、コンピュータ可読媒体上に位置する特定のモジュールの概略ブロック図を図示する。
図5図5は、ある実装による、要求を処理するための方法のフローチャートである。
図6図6は、ある実装による、パッケージに作用するための方法のフローチャートである。
【発明を実施するための形態】
【0007】
動的サービス展開のためのシステムおよび方法が、本明細書に開示される。ある詳細が、本開示の実施形態の十分な理解を提供するために以下に記載される。しかしながら、本開示の実施形態は、これらの特定の詳細を伴わずに実装されてもよい。また、特定の実施形態は、一例として提供され、限定的として解釈されるべきではない。他の場合において、周知の回路、制御信号、タイミングプロトコル、およびソフトウェア動作は、本発明を不必要に曖昧にすることを回避するために詳細に示されていない。
【0008】
開示される実施形態は、概して、ネットワークを経由してサーバによってクライアントに提供されるサービスに関する。例えば、ユーザは、所望の結果を生じるために、サービスと相互作用してサーバのリソースまたは機能性にアクセスするようにクライアントに指図してもよい。サーバは、多くの場合、種々のハードウェアおよびソフトウェアアーキテクチャのクライアントと相互作用するように構成され、これは、互換性の懸念を導入する。したがって、サーバは、異なるクライアントアーキテクチャとの優れた互換性を達成するために、種々の抽象化の層を定義してもよい。しかしながら、抽象化層が柔軟または抽象的すぎる場合、クライアントおよびサーバは、要求およびフォーマットの一貫した理解を確実にすることの困難に遭遇し得る。したがって、相互定義およびフォーマットが有益であり得る。これは、インターフェース記述言語(IDL)の記述に従ってフォーマットされている配信プロトコルの使用を通して達成されてもよい。
【0009】
IDLは、サーバによって提供されるウェブサービス等のサービスによって提供される機能性を記述するために使用される、言語またはフォーマットであってもよい。具体的には、IDLは、多くの場合、IDL記述を含有するファイルを介して、サービスが呼び出され得る様式、サービスによって予期されるパラメータ、呼び出しに応答してサービスによって提供される応答のタイプ(例えば、返されるデータ構造のタイプ)、および/または他の機能性を規定するために使用されてもよい。IDLは、独自の一意の言語、既知または既存の言語(例えば、拡張マークアップ言語(XML))で記述をフォーマットもしくは作成する方法、またはそれらの組み合わせであってもよい。IDLの実施例は、ウェブサービス記述言語(WSDL)、ウェブアプリケーション記述言語、およびAndroid(TM)インターフェース定義言語を含んでもよい。
【0010】
ある場合に、IDL記述は、データがネットワークを経由して2つまたはそれを上回るアプリケーションの間で交換される様式を規定する、1つまたはそれを上回る配信プロトコルと組み合わせて使用されてもよい。各プロトコルは、例えば、構造化メッセージングフレームワークを提供してもよい。これらのプロトコルは、シンプルオブジェクトアクセスプロトコル(SOAP)および表現状態転送(REST)を含んでもよいが、それらに限定されない。ひいては、これらの配信機構は、ハイパーテキストトランスポートプロトコル(HTTP)またはシンプルメールトランスポートプロトコル(SMTP)等の1つまたはそれを上回るアプリケーション層トランスポートプロトコルに依拠してもよい。
【0011】
図1は、ネットワーク110を経由して遠隔サービス70と通信するように構成されるアプリケーション50を含む、システム10の実施形態を図示する。実施例として、アプリケーション50は、ユーザコンピュータデバイス上で実行する命令を備えてもよく、遠隔サービス70は、企業サーバ上で実行する命令を備えてもよい。ある実装では、アプリケーション50は、3つの主要な機能を有してもよく、すなわち、ユーザインターフェースをユーザに提供すること、遠隔サービス70へのメッセージ90(例えば、呼び出し)を作成してフォーマットすること、そして、遠隔サービス70から応答を受信して処理することである。ユーザインターフェースは、出力をユーザに提供し、ユーザから入力を受信する方法であってもよい。本入力および出力は、遠隔サービス70への要求および遠隔サービス70からの応答に関係付けられてもよい。
【0012】
ある実装では、アプリケーション50は、クライアントアプリケーション50に既知またはアクセス可能であるIDL記述60に従って、メッセージ90をフォーマットし、ネットワーク110を経由して遠隔サービス70に提供してもよい。遠隔サービス70は、IDL記述60と互換性があるIDL記述80を含んでもよい(例えば、IDL記述60およびIDL記述80は、同一である)。遠隔サービス70は、プロトコルおよびIDL記述80に従って、メッセージ90を受信し、メッセージ90を解析してもよい。
【0013】
メッセージ90は、種々の方法でフォーマットされてもよい。例えば、メッセージ90は、プレーンテキストとしてフォーマットされてもよい。プレーンテキストは、有意な処理またはフォーマットが欠けている形式として表されてもよい。例えば、プレーンテキストは、ASCII、UTF−8、または同等物に従って符号化されてもよい。プレーンテキストは、例えば、画像および符号化された番号で行われるように、バイナリオブジェクトとして解釈することを必要としない。
【0014】
メッセージ90のコンテンツに応じて、遠隔サービス70は、特定のリソースにアクセスすること、プロセスを行うこと、および同意した形式に従ってクライアントアプリケーション50への応答を作成することを含むが、それらに限定されない、ある行動をとってもよい。このようにして、アプリケーション50および遠隔サービス70は、補完的IDL記述60、80によって定義される遠隔サービス契約に従って動作してもよい。
【0015】
しかしながら、ある場合に、遠隔サービス70またはクライアントアプリケーション50は、修正(例えば、アップグレード)されてもよい。IDL記述60、80が、特に具体的な様式でフォーマットされた場合には、IDL記述60、80は、もはや提供されるサービスを正確に記述しなくなり得る。結果として、アプリケーション50およびサービス70が、互換性のあるIDL記述60、80に従ってメッセージ90をフォーマットして解析することができない場合があるため、アプリケーション50と遠隔サービス70との間の契約が無効にされ得る。非互換性は、アプリケーション50にもはや有効な要求を遠隔サービス70に提供させなくし、有効な応答を受信させなくし得る。互換性のないIDL記述60、80に従った通信は、誤ったデータ、アプリケーション不安定性、または他の問題をもたらし得る。しかしながら、一般的IDL記述60、80は、基礎的サービスへの修正および/またはアップグレードにもかかわらず、契約が完全なままであり得るように実装され得る。IDL記述60、80は、種々のサービスのためのエントリポイントとしての機能を果たすように、一般的形式で書かれてもよい。一般的形式のある実装は、文字列の多次元配列を含むが、それに限定されない、データ構造の使用を含んでもよい。
【0016】
図2は、多次元配列210の形態で一般的形式のある実装を図示する。多次元配列210は、他の配列250、251への参照240、241を含有し得る、要素230、231、232を含む。他の配列250、251はまた、それら自体が要素を定義してもよい。これらの要素は、さらに他のデータ構造またはデータへの参照を備えてもよい。ある図示される実装では、他の配列250、251は、多次元配列210をジャグ文字列配列にする、文字データを含有してもよい。要素232は、別の配列への参照を含有せず、ヌル参照を有するものとして表されてもよい。多次元配列は、固定長を有する、可変長を有する、特定のタイプ(例えば、文字列)に嵌められる、および多次元配列で典型的に見出される他の属性を含むが、それらに限定されない、種々の性質を有してもよい。
【0017】
図3は、ユーザデバイス102と、ネットワーク110と、企業サーバ120とを含む、コンピュータネットワーキング環境100のある実装の概略図を図示する。ユーザデバイス102は、モデム、ルータ、ゲートウェイ、サーバ、シンクライアント、ラップトップ、デスクトップ、コンピュータ、タブレット、メディアデバイス、スマートフォン、テレビ、ファブレット、携帯電話、または他のモバイルデバイス、もしくは同デバイスの任意の組み合わせまたは副次的組み合わせを含むが、それらに限定されない、コンピュータデバイスを備えてもよい。ユーザデバイス102は、アプリケーション50の実行を可能にする機能性を提供するように、ユーザデバイス102の1つまたはそれを上回る処理ユニット64と併せて動作し得る、実行可能命令で符号化されたコンピュータ可読媒体62を含んでもよい。コンピュータ可読媒体62はまた、IDL記述60を含んでもよい。アプリケーション50は、企業サーバ120によって提供される1つまたはそれを上回るサービスとインターフェースをとり得る、実行可能プログラム等のアプリケーションであってもよい。ユーザデバイス102は、ネットワーク110を経由して、企業サーバ120を含むがそれに限定されない、任意の数のデバイスと通信するように構成されてもよい。
【0018】
ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、セルラーネットワーク、および/またはインターネット等の1つもしくはそれを上回るネットワークを備えてもよい。ネットワーク110に、ネットワーク110から、ならびにネットワーク110内で提供される通信は、有線および/または無線であり得、さらに、現在もしくは将来当技術分野で公知である、任意のネットワーキングデバイスによって提供されてもよい。ネットワーク110を経由して通信するデバイスは、伝送制御プロトコル/インターネットプロトコル(TCP/IP)またはユーザデータグラムプロトコル(UDP)等の通信プロトコルを用いて通信してもよい。加えて、ユーザデバイス102および企業サーバ120は、ハイパーテキスト転送プロトコル(HTTP)、ハイパーテキスト転送プロトコルセキュア(HTTPS)、セキュアソケット層(SSL)、サーバ常駐プロトコル、または他のプロトコル等の公知のプロトコルを使用して、通信するように構成されてもよい。サーバ常駐プロトコルは、名前付きパイプ、共有メモリ、および他のプロトコルを含んでもよい。そのようなプロトコルはまた、同一の物理的ユニット内で、アプリケーションサーバ(例えば、管理する、バックエンドプロセスを実行する、またはアプリケーションをホストするサーバ)と企業サーバ120との間で情報を共有するために使用されてもよい。
【0019】
企業サーバ120は、1つまたはそれを上回るコンピュータ可読媒体123に動作可能に結合される、1つまたはそれを上回る処理ユニット121を含んでもよい。コンピュータ可読媒体123は、外部もしくは内部に取り付けられたハードディスクドライブ、ソリッドステート記憶装置(NANDフラッシュまたはNORフラッシュメディア等)、階層記憶ソリューション、記憶エリアネットワーク、ネットワークアタッチド記憶装置、および/または光学記憶装置を含むが、それらに限定されない、一過性または非一過性である、任意の形態のコンピュータ可読記憶装置もしくはコンピュータ可読メモリを含んでもよい。
【0020】
コンピュータ可読媒体123は、サービス展開エンジン527、IDL記述80、ならびに複数のパッケージおよびサービス525を操作するための実行可能命令を含むが、それらに限定されない、種々のモジュールを記憶してもよい。説明されるように、コンピュータ可読媒体123上に記憶された命令は、1つまたはそれを上回る処理ユニット121もしくは他の処理ユニット上で実行されてもよい。
【0021】
サービス展開エンジン527を操作するための実行可能命令は、処理ユニット121上で実行されると、リアルタイムでパッケージならびにサービス525を調査、展開、開始/停止、および/またはアンインストールするために動的ライブラリローダの役割を果たすように、企業サーバ120上のサービス展開527の動作を可能にする、命令を含んでもよく、そのさらなる実施例は、以下で提供される。サービス展開エンジン527のための実行可能命令が、同一のコンピュータ可読媒体123上で示されるが、いくつかの実施形態では、命令のいずれかまたは全てのセットが、複数のコンピュータ可読媒体上に提供されてもよく、同一の媒体上に常駐しなくてもよい。
【0022】
パッケージおよびサービス525は、企業サーバ120の処理ユニット121上で実行されたときに特定の機能性もしくはサービスを提供するためにともにパッケージ化されている、1つまたはそれを上回るソフトウェア構成要素およびリソースであってもよい。図4を参照すると、パッケージおよびサービス525は、複数の個々のパッケージ530(例えば、530A−530N)を備えてもよい。パッケージ530は、パッケージ自己割当バージョン番号に従って編成され、同一パッケージの複数のバージョンが同時に存在することを可能にしてもよい。特に、大企業に関して、本内蔵バージョニング機能性は、重要なパッケージ530の新しいバージョンへのスケーリングを可能にするが、カットオーバアプローチを必要とせず、後者は、多くの場合、隠されたトラップおよびサービス中断の危険を伴う。同一パッケージ530の複数のバージョンが同時に存在することを可能にすることは、2つのバージョンが存在し、異なるユーザデバイス102によって企業サーバ120上で同時に使用されることを可能にする。
【0023】
続けて図4を参照すると、本図は、コンピュータ可読媒体123上に位置する特定のモジュールの詳細な図を図示し、サービスアプリケーションプログラミングインターフェース(API)520と、パッケージおよびサービス525と、公開エンドポイント526(例えば、526A−526N)と、サービス展開エンジン527とを含む。
【0024】
公開エンドポイント526は、クライアントアプリケーションが企業サーバ120によって実装される機能(例えば、API)にアクセスし得る、企業サーバ120によってエクスポーズされる場所(例えば、ポート、ユニフォームリソースリンク(URL)等のユニフォームリソース識別子(URI)、名前付きトークン、名前付きパイプ、共有メモリのブロック、または他の場所)であってもよい。異なるタイプの通信が、異なるエンドポイントを経由して可能にされてもよい。例えば、TCP/IPエンドポイント、SOAPエンドポイント等があってもよい。種々のサービスへの呼び出し中に、具体的タイプのエンドポイント526(例えば、Windows(登録商標) Communication Foundation(WCF)、JavaScript(登録商標) Object Notation(JSON)、SOAP、REST、TCP/IP、名前付きパイプ)が、メッセージ90を送信するアプリケーション50の通信能力によって選定されてもよい。企業サーバ120は、同時に全ての公開エンドポイント526上で独自のIDL記述80を公開し、同様に、同時にこれらの全てへの実況変更(すなわち、ゼロダウンタイム)を公開してもよい。これは、パッケージ530が企業サーバ120の中へ展開されるときに、所望のエンドポイント526のうちのありとあらゆるものを介して、同時かつ瞬時に利用可能および到達可能であることを意味する。
【0025】
サービスAPI520は、行われることになる基本的機能のセット(例えば、作成、読取、更新、削除、および起動)を有効にする、単純インターフェースであってもよい。IDL記述80は、サービスAPI520の機能性を記述してもよい。例えば、IDL記述60、80は、クライアントアプリケーション50が、アドレス方式に従って具体的機能を実行するように企業サーバ120に命令するメッセージ90を送信することを可能にする、一般的な「InvokeOp」機能を記述してもよい。例えば、企業「company」からのパッケージ「package」のバージョン2.0から動作「operation」を実行し得る、「InvokeOp(「company.package[20].operation」)である。企業サーバ120は、代わりに呼び出し元が最新バージョンを好むであろう場合に、常に、企業サーバ120内の内部でインストールされたパッケージの最新バージョンに決定する、バージョン[*](すなわち、ワイルドカードバージョン)を単純に要求する必要があるように構成されてもよい。企業サーバ120は、いかなるバージョンも規定されない場合、アプリケーション50が要求された動作を行うように最新または最高バージョンのパッケージを単純に好むであろうことを仮定するように、構成されてもよい。
【0026】
サービスAPI520は、同一のIDL記述80を全てのクライアントアプリケーション50にエクスポーズし、企業サーバ120自体の機能として動作ダイナミズムを実装してもよい。本構造は、クライアントアプリケーション50および企業サーバ120がIDL記述60、80の間で果たされる契約上の合意を保持することを可能にする。企業サーバ120は、クライアントアプリケーション50と企業サーバ120との間の通信機構が、企業サーバ120とクライアントアプリケーション50との間のIDL記述契約を無効にするような方法で変化しないであろうことを保証するために、一般的形式(例えば、配列の配列、または図2に関連して説明されるジャグ文字列配列)を利用する、公開パッケージおよびサービス525への単純エントリポイント(例えば、1つだけのエントリポイント)を用いて、単純IDL記述をエクスポーズしてもよい。複数のメッセージにわたって一定のままであるIDL記述80に依存する、クライアントアプリケーション50は、そのようにすることができ、企業サーバ120自体にエクスポーズされた表面の下で行われる、展開/展開解除動作による影響を受けないであろう。
【0027】
図5は、ある実装による、メッセージ90を処理するための方法5000のフローチャートを図示する。ステップ5100では、企業サーバ120が、公開エンドポイント526においてメッセージを受信する。次に、ステップ5200では、予備処理が、メッセージに行われてもよい。本ステップ5200は、付加的パケットを待つこと、パケットに誤差訂正を行うこと、予備パケット解析、および他のプロセスを含む、メッセージ90を受信することと関連付けられる、ネットワーキングタスクを取り扱うことを含んでもよい。加えて、企業サーバ120は、メッセージが認証されたユーザからであることを確実にすること、または呼び出しアプリケーション50がそれ自体またはユーザを識別するために正規セッション識別子を使用していることを確実にすること等の認証ステップを含んでもよい。次に、ステップ5300では、メッセージ90が、IDL記述80に従って解析される。メッセージ90を解析した後に、ステップ5400では、企業サーバ120が、メッセージ90をパッケージ530にパスすること、メッセージ90の特定のコンテンツを特定のパッケージ530にパスすること、コンテンツをパッケージ530にパスすることなくメッセージ90に応答すること、およびメッセージ90が有効な要求を含有するかどうかを検出すること(例えば、コンテンツが有効なパッケージにダイレクトされるかどうかを試験すること)を含むが、それらに限定されない、メッセージ90のコンテンツに基づく動作を行う。ある実装では、メッセージをパスすることは、特定のパッケージ530によって実装されるパッケージAPI532に従って行われてもよい。加えて、ある実装によると、いったんサービスAPI520が呼び出しを受信すると、サービスAPI520は、呼び出し要求オブジェクトに変換を行わない。本プロセスは、メッセージを受信することとそれに作用することとの間の待ち時間を短縮し得る。
【0028】
図4に戻ると、企業サーバ120は、IDL記述80を変更する必要なく、個々のパッケージ530およびそれらの動作534へのアクセスを提供するために、独自のアドレス命名法を使用してもよい。IDL記述80は、動作を起動するための一般的方法を記述またはエクスポーズしてもよい。引数は、パラメータを規定するために変化してもよい。構文は、バージョン付きおよび/またはバージョンなし呼び出しをサポートするために拡張されてもよい。ある実装は、付加的パラメータをIDLに追加することなく、そうしてもよい。代わりに、ある実装は、例えば、アドレス命令法自体に所望のバージョン番号を含むことによって、具体的バージョンがアドレス命令法自体に組み込まれることを可能にするように、動作を定義してもよい。
【0029】
IDL非依存性バージョン呼び出しへの本アプローチは、いくつかの利点を提示する。例えば、ユーザデバイス102は、最高バージョン番号を要求し、精度または誤差について結果を試験するようにプログラムされてもよい。結果が誤差を含有する場合には、クライアントは、正確な/誤差を含まない結果を受信する、または呼び出すバージョン番号がなくなるまで、一連の増分的に低いバージョン番号を要求し得る。これは、例えば、発見されていない誤差がパッケージのより新しいバージョンに存在する場合に有用であり得る。加えて、本システムは、動作の異なるバージョンにわたって機能を利用するようにクライアントアプリケーションを構成するために、使用され得る。例えば、ユーザは、アプリケーションの1つのバージョン(例えば、バージョン1.0)で見出されるいくつかの特徴を好み得るが、別のバージョン(例えば、バージョン2.0)で見出される他の特徴を好む。ユーザまたはアプリケーションは、いくつかの特徴にバージョン1.0を利用すること、および全ての他の特徴にバージョン2.0を利用することを規定してもよい。加えて、パッケージの別個の性質は、異なるバージョンのユーザを妨害することなく、必要に応じて何度も、特定のバージョンが再び呼び出されること、または中断されることを可能にする。
【0030】
加えて、マスタサービスに他のサービスを包み、全ての呼び出しアプリケーションが、個々のサービス自体への脆弱なリンク機構に依存する代わりに、本ラッパサービスを使用することを要求する、カスタムソリューションが作成され得る。しかしながら、マスタサービスが依存性サービス中断から現在の呼び出し元を隔離する可能性が低くあり得るため、本アプローチは、オーバーヘッドを導入し得る。これはまた、ラッパ/マスタサービスとその依存関係との間のリンクが、ラッパと包まれたサービスとの間のネットワーク上の負荷を増加させ得る、接続間呼び出しのウェブを導入するため、時間集約的であり得る。
【0031】
続けて図4を参照すると、ある実装では、各パッケージ530は、パッケージAPI532、ならびに動作およびビジネス論理534を実装してもよい。パッケージAPI532は、特定のインターフェースであり、それを通してパッケージ530および企業サーバ120が通信し、パッケージ530の基礎的動作およびビジネス論理534へのアクセスを提供するステップを含み得る。パッケージAPI532ならびに動作およびビジネス論理534はまた、企業サーバ120が遠隔サービス70を提供することも可能にし得る。したがって、企業サーバ120は、パッケージAPI532を介してメッセージ90から動作およびビジネス論理534に解析された引数をパスするように構成されてもよい。
【0032】
ある実装では、企業サーバ120は、一般的形式(例えば、単純な文字列の文字列)呼び出しパターンと相互作用することが可能な任意の公開エンドポイント526にわたって、任意のパッケージおよび任意の動作を同時に展開してもよい。これは、例えば、外部で一貫した単純サービスAPI520をエクスポーズし、企業サーバ120に展開するためにパッケージ開発者が使用しなければならない一貫したパッケージAPI532を内部で活用することによって、達成されてもよい。一貫したパッケージAPI532は、企業サーバ120と通信するために種々のプロトコルを使用して、クライアントアプリケーション50へのエクスポージャを可能にする。
【0033】
本機能性は、例えば、企業サーバ120上の認識されたパッケージ530としてビジネス論理534をインストールするために、企業サーバ120の内部で一貫したパッケージAPI532を利用することによって、達成されてもよい。パッケージAPI532は、これらの変化が呼び出しアプリケーション50によって見られる、または感じられることを可能にすることなく、企業サーバ120が動的に調節し、種々のサービス要求に応答することを可能にする、内部で一貫した抽象化層を提供してもよい。具体的には、パッケージ530は、IDL記述80を変更する必要なく、展開および展開解除されてもよい。サービスAPI520によって提供される抽象化は、パッケージおよびサービス525への変更にもかかわらず、IDL記述80が一貫したままであり得る(例えば、パッケージ530が展開される、再展開される、または展開解除される)ように、パッケージAPI532よりも実質的に広く、より一般的、および/またはより柔軟であり得る。本配列は、パッケージAPI532および他の基礎的機能性の「それがどのようにして行われているか」から、IDL記述80によって記述される「するべきこと」を隔離することによって、パッケージAPI532がIDL記述80から独立して動作することを可能にし得る。ある実装では、パッケージAPI532は、IDL記述機能性とパラレルである動的登録概念(例えば、動作参照機能性、動作起動、および他の機能)を実装することによって、リンクを破損する危険性を伴わずにバイナリレベルで固定契約を有効にする。
【0034】
システム100が、一貫した内部パッケージAPI532を利用し、(例えば、サービスAPI520によって提供される抽象化を伴わずに)これらのパッケージ530を呼び出しクライアントアプリケーション50に完全にはエクスポーズしないため、システム100は、同時に多くのクライアントルートを通してパッケージ530によって提供される動作およびサービスをエクスポーズすることができる。例えば、動作534を伴うインストールされたパッケージ530は、自動的かつ同時に公開され、WCF、SOAP、JSON、REST、名前付きパイプ、TCP/IP、およびその他等の複数のエンドポイント526を介して、企業に利用可能にされてもよい。企業サーバ120およびパッケージ532が両方とも、同一の専用かつ周知のパッケージAPI532を使用する(サーバ120がそれを消費または予期し、パッケージ開発者がそれを消費または実装する)ため、パッケージ530は、企業サーバ120自体への動的リアルタイム拡張の役割を果たし得る。インストールされたパッケージ530もまた、公開され、他のパッケージ530に利用可能にされてもよい。本広域公開機能性は、パッケージ開発者が余分なステップを行う、それを要求する、または任意の付加的/異なるコードを書く必要なく、提供されてもよい。
【0035】
ある実施形態は、企業サーバ120自体に、ライブラリ(例えば、動的リンクライブラリ(DLL))の形態で低レベル「抽象インターフェース」を公開させ、消費させることによって、一貫したパッケージAPI532を有効にし得る。その抽象クラスの二値画像が、企業サーバ120上のサーバ実行ファイル自体と同一のディレクトリの中に位置してもよいとともに、そのインターフェースライブラリの同一バージョンが、パッケージインターフェースソフトウェア開発キットを介してパッケージ開発者に公開される。それぞれのプロジェクトをパッケージインターフェースライブラリに直接リンクし、その中で抽象クラスをインスタンス化することによって、企業サーバ120は、展開のために内部ディレクトリの中に到達するときに、パッケージ開発者のパッケージ(二値画像)が何を含有するであろうかを検出することができる。
【0036】
加えて、企業サーバ120は、それとリンクし、企業サーバ120上のライブパッケージとしてそれをロード/展開することに先立って、(例えば、DLLにクエリを行うためにMicrosoft(TM).NET内観を使用して)有効性および完全性についてライブラリにクエリを行うことによって、パッケージ530の開発者が全ての要求された抽象クラス方法を実装したことを検証してもよい。開発者が、標準開発者ツールを使用して、不完全なライブラリを作成または構築しようとするために苦労するであろう一方で、開発者は、潜在的に、非標準開発者ツールを用いて部分的/断片化ライブラリを構築し得る。ある実装では、有効性についてクエリを行うことは、公開または予期ライブラリクラスインターフェース実装への内部(例えば、同一企業サーバ内の)バイナリハードリンクと組み合わせられてもよい。これは、企業サーバ120がパッケージ530を公開し、同時にパッケージ530に無数のサービス(例えば、単一サインオン、企業メタデータディクショナリ、Health Level−7積分点、および他のサービス)を提供することを可能にするように、パッケージAPI532を補助してもよい。
【0037】
ある実装では、サービスAPI520は、利用可能なオプションの参照を行い、それらを呼び出しアプリケーション50に返してもよい。これは、動的IDL機能を通して行われてもよい。参照は、どのようなパッケージおよびサービス525がインストールされるか、またはアプリケーション50に利用可能であるかに関して、リアルタイム更新を与えてもよい。例えば、アプリケーション50は、利用可能なパッケージおよびサービス525を要求してもよく、サービスAPI520は、どのようなオプションが利用可能であるかをユーザまたは呼び出しアプリケーション50が把握したい、プログラミングレベルを規定するように、ドット表記に基づくオプションのリストを返してもよい。実施例として、ユーザは、そのバージョン1.0、1.1、および2.0がサーバ上で利用可能である、ソフトウェアの1.1バージョンを実行していてもよい。ユーザは、1.1バージョンに関する利用可能な動作を要求し、ソフトウェアの1.1バージョンに利用可能な公開エンドポイントのリストを受信してもよい。
【0038】
本アプローチを実装する代替的方法は、アプリケーション50が、任意の所与の企業サーバ120上で利用可能なサービスの動的リストをインデックス化または調査し、次いで、これらのサービスをその場限りで消費することを可能にすることであろう。本タイプの機能性は、例えば、利用可能なバイナリ拡張のディレクトリリスト(例えば、PHP;ハイパーテキストプリプロセッサ(PHP)実行ファイル)を通して、またはXMLおよびUniversal Description, Discovery and Integration(UDDI)を使用して、達成可能である。これらのサービスの展開は、一次元的であり、元の展開の企業サーバ120およびプロトコル上のみで利用可能であり得る。
【0039】
加えて、サービス展開エンジン527のある実装は、現在進行中の他のサービスまたは動作の配信に影響を及ぼすことなく、規則的な様式でそれらの動作(例えば、SOAP起動ビジネス論理)をクライアントにエクスポーズするために、全てのパッケージ530を動的に隔離および統合してもよい。本隔離は、パッケージがクラッシュする場合に損傷を防止または制限するために、リソースの所定の制御されたセット(例えば、メモリ、プロセッササイクル等)をパッケージ530に提供することによって、達成されてもよい。加えて、本隔離は、企業サーバ120上で起こる他の動作によって実質的に干渉される、または実質的に影響を受けることなく、パッケージ530が実行されることを可能にする。ある実装では、サービス展開エンジン527は、いかなるパッケージもサーバをクラッシュする能力を有していないことを確実にするように、ロバストなプロセス内例外および/または誤差範囲で個々のパッケージを包んでもよい。加えて、パッケージは、全ての同時に実行しているプロセスが、それらの機能を完了するための適切なリソースを有することを可能にするように、リソースを必要とするプロセスが抑制されることを確実にするために、企業サーバ120によって監視されてもよい。
【0040】
図6は、ある実装による、パッケージ530を展開解除または再展開するための方法6000のフローチャートを図示する。最初に、ステップ6100では、サービス展開エンジン527が、パッケージ530に特定の動作を行う命令を受信してもよい。本命令は、種々のソースから受信されてもよい。命令は、公開エンドポイント526のうちの1つを経由して伝送され、例えば、図5の方法に従って処理されてもよい。ある実施形態では、命令は、例えば、企業サーバにアタッチされた端末またはワークステーションを経由して、企業サーバ120と直接相互作用するユーザから受信されてもよい。命令は、展開解除または上書きコマンドを含み得る、具体的パッケージ530上で行われる特定の方法を記述してもよい。
【0041】
ステップ6200では、サービス展開エンジン527は、パッケージ530が全ての未処理動作を完了したかどうかを検出するように、具体的パッケージ530を監視してもよい。現在動作しているパッケージ530に作用すること(例えば、パッケージ530を除去すること)は、クライアントアプリケーション50の不安定性またはデータの損失を引き起こし得る。本検出は、例えば、パッケージ530のリソース使用を監視すること、またはアクティブプロセスリストを監視することによって行われてもよい。
【0042】
ステップ6300では、パッケージ530が、新しい動作を容認することを妨げられてもよい。本ステップは、パッケージ530がいかなるリソースを使用することも防止するサブステップ、パッケージ530を付加的要求に見えなくするサブステップ、パッケージ530の許可レベルを変更するサブステップ、およびパッケージ530をロックするサブステップを含むが、それらに限定されない、あるサブステップを含んでもよい。
【0043】
ステップ6400では、パッケージが除去されてもよい。本ステップ6400は、パッケージ530を完全に除去するステップを含んでもよい。しかしながら、ある実装では、パッケージ530は、コンピュータ可読媒体123上に記憶されたままであってもよいが、例えば、ステップ6300のあるサブステップのうちの1つを行うことの結果として、実質的に不安定な状態にとどまってもよい。
【0044】
ステップ6500では、受信される命令に応じて、新しいパッケージ530が追加または展開される必要があり得る。これは、パッケージの有効性を検証するサブステップ、パッケージをエンドポイント526に公開するサブステップ、パッケージ530をインストールするサブステップ、および他のそのようなサブステップを含んでもよい。
【0045】
説明される方法は、パッケージおよびサービス525のバージョニングに配慮する動的展開を行うために利用されてもよい。例えば、本方法が特定のパッケージのバージョン3を再展開するために使用される場合には、前のバージョン3が、その呼び出しを終了し、特定のパッケージの新しいバージョン3と円滑に置換される。
【0046】
先述の内容から、本発明の具体的実施形態が例証の目的で本明細書に説明されているが、本発明の精神および範囲から逸脱することなく、種々の修正が行われ得ることが理解されるであろう。したがって、本発明は、添付の請求項による場合を除いて制限されない。
図1
図2
図3
図4
図5
図6