JP5269081B2 - 拡張可能な分散アプリケーションの作成とデプロイメント - Google Patents

拡張可能な分散アプリケーションの作成とデプロイメント Download PDF

Info

Publication number
JP5269081B2
JP5269081B2 JP2010527015A JP2010527015A JP5269081B2 JP 5269081 B2 JP5269081 B2 JP 5269081B2 JP 2010527015 A JP2010527015 A JP 2010527015A JP 2010527015 A JP2010527015 A JP 2010527015A JP 5269081 B2 JP5269081 B2 JP 5269081B2
Authority
JP
Japan
Prior art keywords
computer
service
list
components
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010527015A
Other languages
English (en)
Other versions
JP2010541070A (ja
JP2010541070A5 (ja
Inventor
シー.エス.シェン アルバート
ジェイ.バイター クリストファー
ダブリュ.トム リチャード
ビー.ゴピナート ラヴィクマール
シー.ブロンクィスト ブライアン
ケニガンティ マドハビラサ
チウ デイビット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010541070A publication Critical patent/JP2010541070A/ja
Publication of JP2010541070A5 publication Critical patent/JP2010541070A5/ja
Application granted granted Critical
Publication of JP5269081B2 publication Critical patent/JP5269081B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

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

Description

本発明は、拡張可能な分散アプリケーションの作成とデプロイメントに関する。
分散コンピューティングネットワークにインストールされたソフトウェアによって、ユーザは、別々のサーバクラスタ上にホストされる多数のサービスを活用したエンドツーエンドアプリケーションやエンドツーエンドソリューションを作成することができる。このエンドツーエンドアプリケーションは、ビジネスデータ、ページデザイン、ページレイアウト、ビジネスロジックなどのコンポーネントを含むことができ、それらは、各々、異なるサーバクラスタに分散されていてもよい。
エンドツーエンドアプリケーションは分散性なので、調整、認証、コンテンツの正確性、コンフリクト管理、スケーラビリティなどの点で、そのデプロイメント(注:ネットワークアプリケーションやWebサービスなどを、利用可能なように準備すること)には様々な困難が伴う。例えば、利用できるサービスの数が急速に増加すると、エンドツーエンドアプリケーションは、それまでに作成されたアプリケーションとの完全な後方互換性を維持しながら、その一方で、今後のサービスを容易にかつ柔軟に組み込めるように拡張可能でなければならない。
この概要は、発明の詳細な説明でより詳しく記載するコンセプトの一部を簡単に紹介するものである。この概要は、発明の主題の主要な特徴や不可欠な特徴を特定することを意図するものではないし、発明の主題の範囲を決定するための補助として用いられることを意図するものでもない。
分散アプリケーションを作成する方法には、リモートサーバクラスタで利用可能なコンポーネントのリストから一群のコンポーネントを選択することが含まれる。選択したコンポーネントのインストールに必要なデータは、リモートサーバクラスタから受信する。受信したデータに応じて、命令のリストを作成し、作成した命令のリストを保存する。
有形のコンピュータ可読媒体は、分散アプリケーションを作成するコンピュータ実行可能命令を有する。コンピュータ実行可能命令には、分散コンピュータシステムで利用可能なサービスのリストからサービスを選択することが含まれる。選択したサービスで利用可能なコンポーネントを選択する。選択したコンポーネントに関するインストールデータを、分散コンピュータシステムから受信する。受信したデータに応じてパッケージファイルを作成する。作成したパッケージファイルを保存する。
分散コンピューティングアプリケーションを集中制御するシステムは、プロセッサとコンピュータ可読媒体とを備える。そのシステムは、オペレーティング環境も備え、そのオペレーティング環境は、コンピュータ可読媒体に保存され、プロセッサで実行される。さらに、コンピュータ可読媒体に保存され、かつプロセッサで実行されるソリューションフレームワークも備える。ソリューションフレームワークは、サービスクラスタで利用可能なサービスのリストからサービスを選択するように構成される。選択されたサービスで利用可能なコンポーネントを選択する。選択したコンポーネント(複数可)に関するインストールデータを、選択したサービスから受信する。受信したデータに応じてパッケージファイルを作成する。次に、作成したパッケージファイルをコンピュータ可読媒体に保存する。
これらの特徴や利点及び他の特徴や利点は、下記の詳細な記載を読み、添付図面を参照することで明らかとなる。前述の一般的記載および下記の詳細な記載は、説明のためのものであり、範囲を制限する目的ではないことを理解されたい。とりわけ、本明細書に記載の様々な実施形態は、方法、装置、またはその両方の組合せとして、実現してもよい。同様に、様々な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、もしくはソフトウェアとハードウェアの態様を組み合わせた実施形態、という形を取ってもよい。したがって、本明細書に開示する内容を限定的な意味で捉えるべきではない。
図面で、同じ番号は同じ要素を表す。
本明細書に記載のコンピュータ実装方法を実装するオペレーティング環境のブロック図である。 ソリューションフレームワークを実装するオペレーティング環境を示すブロック図である。 パッケージファイルの実装例を示す図である。 一群のコンポーネントを選択する操作を示すフロー図である。 パッケージファイルを作成する操作を示すフロー図である。 分散コンピューティング環境にパッケージファイルをデプロイする操作を示すフロー図である。
図面を参照しながら、様々な実施形態を記載する。図面では、同じ番号は同じ要素を表す。詳細には、図1および図1に対応する記載は、実施形態を実装し得る適切なコンピューティング環境を簡単かつ一般的に記載したものである。
一般に、エンドユーザとサービスクラスタ間のインタフェース接続に関与するソリューションフレームワークが設けられる。ソリューションフレームワークによって、分散アプリケーションの作成およびデプロイメントを集中化することができる。分散アプリケーションの作成にもデプロイメントにも多くの利点がある。例えば、分散アプリケーションは、多くの別々のサービスの機能を組み合わせて1つのアプリケーションにするために、多くの異なるリモートサーバに配置された多くのサービスのコンポーネントを利用することができる。
ソリューションフレームワークは、作成ユーザインタフェースとサービスクラスタ間の媒介として機能することにより、分散アプリケーションの作成を集中化する。しかしながら、ユーザが、特定のサービスを組み込んだパッケージファイルを作成するには、その前に、そのサービスの認証を受ける必要があるかもしれない。ソリューションフレームワークは、サーバクラスタの各々にユーザの信用情報を送って、この認証プロセスを集中化することもできる。そうすると、ソリューションフレームワークは、認証されたユーザが、サービスクラスタ内の利用できる様々なコンポーネントを選択して、分散アプリケーションを定義できるようにする。アプリケーションの定義に応じて、パッケージファイルが作成される。パッケージファイルのコンテンツの正確性は、ウォーターマークメタデータを使用して維持される。ウォーターマークメタデータは、パッケージファイル内に含まれており、パッケージファイルのコンテンツに基づいている。
分散アプリケーションをインストールする前に、パッケージファイルは、アプリケーションを定義するユーザから別のユーザに転送されてもよく、アプリケーションを定義するユーザが単にインストールしてもよい。インストールの間、ソリューションフレームワークがコンフリクト解消を集中的に制御してもよい。コンフリクトが解消されると、ソリューションフレームワークは、関連する全てのサービスクラスタに通信し、定義されたパッケージファイルに基づいて、正しいロケーションにコンポーネントをインストールすることができる。
図1を参照しながら、様々な実施形態で用いられるコンピュータ100の例示のコンピュータアーキテクチャを記載する。図1のコンピュータアーキテクチャは、デスクトップコンピュータまたはモバイルコンピュータとして構成されてもよく、中央演算処理装置5(「CPU」)と、ランダムアクセスメモリ9(「RAM」)や読取専用メモリ10(「ROM」)などのシステムメモリ7と、そのシステムメモリをCPU5に接続するシステムバス12とを備える。
基本入出力システムは、スタートアップ時などにコンピュータ内の要素間での情報転送を支援する基本ルーチンを含み、ROM10に保存されている。コンピュータ100は、さらに大容量記憶装置14を備え、大容量記憶装置14は、オペレーティングシステム16と、アプリケーションプログラム24と、ソリューションフレームワーク26とを保存する。これについては、下記に詳述する。
大容量記憶装置14は、バス12に接続された大容量記憶コントローラ(図示せず)を介してCPU5に接続される。大容量記憶装置14とそれに関連付けられたコンピュータ可読媒体は、コンピュータ100の不揮発性記憶装置となる。本明細書のコンピュータ可読媒体の記載は、ハードディスクやCD−ROMドライブなどの大容量記憶装置に関するものであるが、コンピュータ可読媒体は、コンピュータ100がアクセス可能な任意の入手可能な媒体であってよい。
限定ではなく一例として、コンピュータ可読媒体は、コンピュータ記憶媒体や通信媒体を含んでもよい。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を保存する任意の方法または技術で実装される、揮発性媒体、不揮発性媒体、取り外し可能媒体、および取り外し不能媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、もしくはその他の固体メモリ技術、CD−ROM、デジタル多用途ディスク(「DVD」)、もしくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または、コンピュータ100がアクセス可能な所望の情報の保存に使用できる他の任意の媒体が含まれるが、それらに限定されない。
様々な実施形態によると、コンピュータ100は、インターネットなどのネットワーク18を介してリモートコンピュータへの論理接続を用いて、ネットワーク環境で動作することができる。コンピュータ100は、バス12に接続されたネットワークインタフェースユニット20を介してネットワーク18に接続してもよい。ネットワーク接続は、無線および/または有線であってよい。ネットワークインタフェースユニット20を、他の種類のネットワークやリモートコンピュータシステムへの接続に用いることもできる。コンピュータ100は、入出力コントローラ22を備えて、キーボード、マウス、または、電子スタイラス(図1には示されていない)などの他の多くの装置からの入力を受信し、処理することもできる。同様に、入出力コントローラ22は、表示画面28、プリンタ、または他のタイプの出力装置に出力することができる。
簡単に上述したように、多くのプログラムモジュールやデータファイルを、オペレーティングシステム16を含めて、コンピュータ100の大容量記憶装置14やRAM9に保存することができる。オペレーティングシステム16は、ネットワーク化されたパーソナルコンピュータの操作を制御するのに適しており、ワシントン州レドモンドのMICROSOFT社製のWINDOWS VISTAオペレーティングシステムなどがある。大容量記憶装置14とRAM9は、1つまたは複数のプログラムモジュールを保存してもよい。具体的に言うと、大容量記憶装置14とRAM9は、1つまたは複数のアプリケーションプログラム24を保存することができる。例えば、大容量記憶装置14は、ソリューションフレームワーク26を保存することができる。ソリューションフレームワーク26は、分散アプリケーションの開発とインストールを集中化する。
図2は、ソリューションフレームワーク26が動作する環境の実装例を示す。ソリューションフレームワーク26は、サービスクラスタ230に結合することができる。サービスクラスタ230は、インターネットやエクストラネットなどのネットワークを介してソリューションフレームワーク26に結合することができる。サービスクラスタ230は、サービス232、サービス234、サービス236などのN個のサービスを含むことができる。個々のサービスは、別々のロケーションに保存することができる。例えば、サービス230は、第1のロケーションの第1のサーバに保存され、サービス240は、第2のロケーションの第2のサーバに保存することができる。他の実装例においては、多くのサービスを1つのロケーションに保存することができる。したがって、ソリューションフレームワークは、個々のサービスのロケーションとは独立して動作することができる。
各サービスは、様々な形態の機能を提供することができる。例えば、あるサービスは、ビジネスデータ、ページデザインまたはページレイアウトを含むことができる。他の例においては、サービスはビジネスロジックを含むことができ、さらに他の例においては、サービスは他の任意の形態の機能を含むことができる。
ソリューションフレームワーク26は、作成インタフェース210とデプロイメントインタフェース220に接続することもできる。作成インタフェース210は、一群の選択したサービスを含むパッケージファイルをユーザが定義できるようにするインタフェースを提供することができる。デプロイメントインタフェース220は、ユーザがパッケージファイルをデプロイして一群の選択したサービスをインストールするのを可能にするインタフェースを提供することができる。ある実装例においては、これらのインタフェースは、ハイパーテキストマークアップ言語(HTML)または拡張マークアップ言語(XML)などのマークアップ言語でコード化されたウェブインタフェースであってよい。他の実装例においては、これらのインタフェースは、C#やJava(登録商標)などの他の言語でコード化することができる。
作成インタフェース210は、第1のロケーションに配置された第1のコンピューティング環境に置いて、第1のユーザがパッケージファイルを作成できるようにしてもよく、デプロイメントインタフェース220は、第2のロケーションに配置された第2のコンピューティング環境に置いて、第2のユーザがパッケージファイルをデプロイできるようにしてもよい。このような実装例において、パッケージファイルは、第1のコンピューティング環境から第2のコンピューティング環境に転送することができる。この転送は、任意のファイル転送手段を用いて達成することができる。例えば、パッケージファイルは、コンピュータ可読媒体、例えば、第2のコンピューティング環境に物理的に転送するディスクなどにコード化することができる。他の例では、パッケージファイルは、2つのコンピュータ要素間のネットワーク接続を介して、例えばインターネット送信する電子メールの添付ファイルなどで、電子的に送信することができる。
他の実装例においては、作成インタフェース210およびデプロイメントインタフェース220を、同じコンピューティング環境に置いてもよい。このような実装例においては、同じユーザが、同じコンピューティング環境からパッケージファイルを作成することもデプロイすることもできる。さらに、このような実装例においては、上述の実装例では必要とされたパッケージファイルの転送を避けることができる。
したがって、ソリューションフレームワーク26は、パッケージファイルの作成とパッケージファイルのデプロイメントの両方を管理し、集中化する。
図3は、パッケージファイル300の実装例を示す。パッケージファイル300は、ビット0からビット767までの768ビットを含むことができる。パッケージファイル300は、ビット0からビット31までのヘッダー部分を含むことができる。パッケージファイル300は、選択したコンポーネントを記述するビット32からビット63までのマニフェストも含むことができる。マニフェストは、サーバクラスタ230から受信した情報を含むことができる。その情報はコンポーネントに関する情報を記述するもので、サービスは、その情報を用いて起こり得るコンフリクトやコンポーネントの利用可能性を検出することができる。例えば、マニフェストは、パックレット(小さいパケットデータ packlet)作成時に各サービスクラスタが返信する情報の一部を含むことができる。その情報は、そのパックレット内にあるコンポーネントを記述するものである。マニフェストは、物理的なパックレットがなくても、マニフェスト内のメタ情報を用いてコンフリクトを検出できるように設計される。ヘッダーとマニフェストの次に、パッケージファイル300は、ビット64からビット127までのペイロードを含むことができる。図5を参照しながら下記に詳述するように、パッケージファイル300のペイロード部は、選択したサービスから受信した情報を含む。
セキュリティのために、パッケージファイル300は、ビット128からビット639までに、512ビット秘密鍵などの公開鍵を含むことができる。図6を参照しながら下記に詳述するように、さらなるセキュリティと、ファイルのインテグリティの検証を可能にするために、パッケージファイル300は、ビット640からビット767に、暗号化された128ビットのセキュアハッシュアルゴリズム5(SHA−I)のハッシュなどのウォーターマークを含むことができる。他の実施形態においては、ウォーターマークは、メッセージダイジェストアルゴリズム5(MD5)のハッシュを含むことができる。ハッシュは、パッケージファイル内のペイロードおよびマニフェストに任意のハッシュアルゴリズムを適用することによって、作成することができる。
ソリューションフレームワーク操作
図4を参照しながら、分散アプリケーションに含まれるようにコンポーネントのセットを定義する例示のプロセス400を記載する。
本明細書に提示されるルーチンの記載を読むと、様々な実施形態の論理演算は、(1)コンピューティングシステム上で実行するコンピュータ実装された一連のアクトまたはプログラムモジュールとして、および/または(2)コンピューティングシステム内で互いに接続された機械論理回路または回路モジュールとして、実装されることを理解されるであろう。実装は、本発明を実装するコンピューティングシステムの性能要件に左右される選択事項である。したがって、本明細書に記載された実施形態を作成する例示の論理演算は、操作、構造装置、アクトまたはモジュールとして様々に参照される。これらの操作、構造装置、アクト、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびそれらの任意の組合せで実装することができる。
開始操作から、プロセスは操作410に進み、ソリューションフレームワーク26でサービスリストを受信する。例えば、ユーザが作成インタフェース210のパッケージ作成ページを閲覧すると、このプロセスが開始されるようにしてもよい。次に、ソリューションフレームワークは、サービスクラスタ230に連絡して、利用可能なサービスのリストを要求することができる。あるサービスが利用可能か否かを決定するために、ソリューションフレームワーク26は、作成インタフェース210と、サービスクラスタ230内の各サービスの間の許可を集中的に仲介することができる。例えば、ソリューションフレームワーク26は、サービスクラスタ230にユーザのプロファイルを送信し、返信に、そのユーザがアクセスしてよいサービスのセットを受信することができる。したがって、利用可能性は、ソリューションフレームワーク26にネットワーク化されたサービスと、個々のユーザへの許可に左右され得る。
利用可能なサービスのリストを受信し、ソリューションフレームワーク26で最終的に承認した後、プロセスは、操作420に進み、第1のサービスが選択される。
サービスは、作成インタフェース210から受信した、サービスを選択するようにというコマンドに応じて選択することができる。作成インタフェース210は、そのサービス内のコンポーネントを見るというユーザのリクエストを示している。サービスを選択すると、プロセスは操作430に進み、そこでコンポーネントの種類のリストが集められる。この操作の間、ソリューションフレームワーク26は、選択したサービスに通信して、選択したサービスで利用可能な個々のコンポーネントの種類のリストを送信するようにリクエストする。種類情報には、利用可能なコンポーネントの種類を記述する情報や、個々のコンポーネントの選択に利用できるユーザインタフェースを記述する情報を含むことができる。ある実装例においては、この情報は、コンポーネントの種類や、そのサービスに特定のコンポーネントを選択するカスタムユーザインタフェースを含むことができる。
次にプロセスは操作440に進み、利用可能なコンポーネントのリストを集める。上述したサービスの利用可能性と同様に、コンポーネントの利用可能性は、コンポーネントがソリューションフレームワーク26に接続されているか否かだけではなく、許可のチェックにも左右され得る。
次にプロセスは操作450に進み、選択したコンポーネントに関する受信された種類情報が処理され、作成インタフェース210に送信されて選択インタフェースをユーザに提示する。この選択インタフェースは、利用可能なコンポーネントの具体的な種類の選択を容易にするためにカスタム選択インタフェースが表示されるように、選択したサービスから受信した種類情報に応じて作成される。このカスタムインタフェースは、選択したコンポーネントに任意のパラメータをユーザが入力する機構を含むことができる。これらのパラメータは、ソリューションフレームワークやサービスクラスタに対して、選択したコンポーネントをパッケージする方法を記述する、追加のメタ情報として働くことができる。
次にプロセスは操作460に進む。操作460で、ユーザは、図2の作成インタフェース210に提示された選択インタフェースを用いて所望のコンポーネントを選択する。一部の実装例においては、この操作の間、選択したコンポーネントのリストがサービスクラスタ230に送信され、サービスクラスタ230でそのリストを受信する。他の実装例においては、操作470の後、選択した各サービスに関するプロセスが終了するまで、選択したコンポーネントのリストはサービスクラスタ230に送信されない。
操作470に進んで、サービスをさらに選択するか否かの決定が行われる。ユーザがさらにサービスを選択する場合、プロセスは操作420に戻り、次に選択されたサービスに関してインタフェース生成およびコンポーネント選択プロセスが繰り返される。ユーザがさらなるサービスの選択を行わない場合、プロセスは操作480に続く。
図5を参照しながら下記に詳述するように、操作480に進むと、複数のパックレットは全てまとめられて、単一のパッケージファイルにフォーマットされる。次にプロセスは終了操作に進み、他のアクションの処理に戻る。
ここで図5を参照しながら、操作480で作成されたパッケージファイルなどの、パッケージファイルを作成する例示のプロセス500を記載する。
開始操作の後、プロセスは操作510に進み、選択したコンポーネントのリストは、ソリューションフレームワーク26によって処理される。選択したコンポーネントのリストは、ソリューションフレームワーク26で、作成インタフェース210から受信することができる。選択したコンポーネントのリストは、例えば、図4に示されたプロセス400にしたがって作成されたものでもよい。
次にプロセスは操作520に進む。操作520で、選択したコンポーネントが配置されている第1のサービスを選択する。この選択は自動プロセスの一部であり、ソリューションフレームワーク26は、選択したコンポーネントのリストにあるコンポーネントが含まれるサービスの全てを通してこの自動プロセスを反復する。このように、サービスは、作成インタフェース210を通してユーザの介入やユーザからの入力なしに、ソリューションフレームワーク26によって直接選択されてもよい。ソリューションフレームワーク26が、第1のサービスを選択すると、プロセスは操作530に進む。操作530では、選択したサービスに関連するコンポーネントの記述が、ソリューションフレームワークから第1の選択したサービスに送信される。すなわち、ソリューションフレームワーク26は、ユーザが選択したサービス内にあるコンポーネントのリストをサービスに送信する。
サービスがコンポーネントのリストを受信すると、プロセスは操作540に進む。操作540で、サービスは、選択したコンポーネントに関する情報を含むパックレットを送信することによってリクエストに応じる。パックレットは、リクエストされたデータを含むバイナリデータストリームと、リクエストされたデータに関するメタ情報を記述するマニフェストを含むことができる。
操作550において、サービスをさらに選択するか否かの決定が行われる。ソリューションフレームワーク26が、選択したコンポーネントの全てを処理するのに必要な全てのサービスを一巡して処理し終えると、選択する必要のあるサービスがなくなり、プロセスは操作560に続く。ソリューションフレームワーク26が、選択したコンポーネントに関するサービスの全てを一巡してはいない場合、プロセスは操作520に戻り、次のサービスが選択される。他の実施形態においては、このプロセスは、非同期的に実行することができる。すなわち、マルチスレッド環境のことで、ソリューションフレームワーク26は、全てのサービスにパックレットを受信するよう同時に連絡し、それらが戻るときに集合させる。このように、このプロセスは、非同期的に実行してもよく、線形に/順次に行ってもよい。
操作560において、受信したパックレットがパッケージファイルに追加される。例えば、複数のパックレットを統合して、パッケージファイル300のペイロード部に追加することができる。他の実装例においては、パッケージファイル300のペイロード内に含める前に、パックレットのさらなる処理を実行することができる。
操作570において、ウォーターマークがパッケージファイル300に追加される。一部の実装例においては、ウォーターマークは、単に、パックレットから作成されたハッシュであってよい。他の実装例においては、ウォーターマークは、パッケージファイルに含まれるパックレットや他のデータから作成することができる。パッケージファイルに含まれる他のデータとは、ヘッダー部、マニフェスト部、秘密鍵などのセキュリティ部などである。ある例においては、ウォーターマークは、SHA−1ハッシュアルゴリズムを用いて作成することができる。したがって、ハッシュは、後に、パッケージファイル300が改ざんされているか否かの決定を含めて、データのインテグリティを検証するのに用いることができる。次に、プロセスは終了操作に進み、他のアクションの処理に戻る。
図6を参照しながら、パッケージファイル300をデプロイする例示のプロセス600を記載する。
開始操作後、プロセスは操作610に進む。操作610において、ソリューションフレームワーク26で、パッケージファイル300が、デプロイメントインタフェース220から受信される。ある例においては、パッケージファイル300の作成中に、システムが受信したパッケージファイル300を、システムからソリューションフレームワーク26に直接送信することができる。これは、パッケージファイル300を作成したユーザが、そのファイルのデプロイメントも行っているという状況で、起こりうる。他の例においては、パッケージファイル300は、別のユーザからソリューションフレームワーク26に送信することができる。例えば、パッケージファイル300は、作成インタフェース210で、第1のユーザが受信してもよく、次に、デプロイメントインタフェース220で、コンパクトディスク(CD)または電子メールの形で第2のユーザに送ってもよい。そこから、ソリューションフレームワーク26に送信する。
ソリューションフレームワーク26でパッケージファイル300を受信すると、プロセスは、操作620に進む。操作620において、パッケージファイル300が有効か否かを決定する。この決定は、ウォーターマークを参照して行うことができる。例えば、パッケージファイル300が様々に送信される間に破損した場合、または、パッケージファイル300が故意に改ざんされた場合、ウォーターマークがパッケージファイル300内に含まれるデータに適切に合致しなくなる。他の例では、パッケージファイルが有効か否かの決定に他の基準を用いることができる。例えば、ファイルの拡張子が変更されているか否かを参照してもよい。他の例では、ファイルサイズを参照してもよい。すなわち、デフォルトの最大ファイルサイズを割り当てることができ、そのデフォルトのファイルサイズより大きいサイズは、無効として警告することができる。このように、パッケージファイル300が有効か否かの決定は、一部はウォーターマークによってもよく、一部は、パッケージファイル300の他のプロパティによってもよい。その結果、パッケージファイル300が有効な場合、プロセスは操作630に進み、操作630で、処理が継続する。
パッケージファイル300がもはや有効でない場合、プロセスは操作680に進み、操作680でデプロイメントが停止され、プロセスの流れは、終了操作に進む。ある例においては、停止操作680は、デプロイメントインタフェースで、ユーザへのエラーメッセージの提示を含むことができる。他の例においては、停止操作680は自動エラー修正を含むことができ、修正可能なエラーはソリューションフレームワーク26により自動的に修正され、プロセスを継続することができる。
操作630において、パッケージファイル300は処理され、ペイロードが抽出される。ペイロードは処理されて、どのサービスが要求されているか決定する。次に、ソリューションフレームワーク26は、パッケージファイルが要求するサービス全てが利用可能か否かを決定する。パッケージファイル300内に含まれるコンポーネントが特定のサービスに存在する場合は、そのサービスが要求される。例えば、パッケージファイル300の作成とパッケージファイル300のデプロイメントの間に時間が経過した場合、サービスクラスタ230で利用可能な1つまたは複数のサービスが、もはや利用不可能になっている場合がある。
上述のように、例えば、パッケージファイル300をデプロイするユーザが、特定のサービスにアクセスする許可を持っていない場合、または、サービスが単にネットワークから切断されてしまった場合、そのサービスはもはや利用できない。要求されたサービスが利用できない場合、プロセスはオペレーション680に進み、デプロイメントは停止される。要求されたサービスが全て利用可能な場合、プロセスは操作640に進む。
操作640において、第1のサービスが選択される。この選択は、自動プロセスの一部であり、ソリューションフレームワーク26は、パッケージファイル300のペイロードにあるコンポーネントが利用するサービスの全てを通して、この自動プロセスを反復する。このようにして、サービスは、デプロイメントインタフェース220を通してのユーザの介入や入力なしに、ソリューションフレームワーク26によって直接選択することができる。ソリューションフレームワーク26が第1のサービスを選択すると、プロセスは操作650に進み、コンフリクトチェックが実行される。
操作650において、パッケージファイル300のコンテンツは、サービスクラスタ230に送信することができる。一部の実装例においては、費用のかかる送信時間を減らすためにマニフェストのみを送信することができる。マニフェストは、パックレット作成時に各サービスクラスタが返信する情報の一部を含むことができる。その情報はパックレットにあるコンポーネントを記述するものである。マニフェストは、物理的なパックレットが存在しなくても、マニフェスト内のメタ情報を用いてコンフリクトを検出できるように設計される。次に、各サービスは、パッケージファイル300のコンテンツ(または他の実装例のマニフェスト)を調べ、コンポーネントの詳細、コンポーネントのコンフリクト、ユーザがパッケージファイル300のデプロイメント中に遭遇する可能性のある他のなんらかのデプロイメントの問題をソリューションフレームワーク26に報告する。この情報をソリューションフレームワーク26に返すことによって、コンフリクトチェックプロセスの制御を集中化することができる。コンフリクトが存在する場合、プロセスは操作670に進む。コンフリクトが存在しない場合、プロセスは操作660に進み、デプロイメントプロセスは継続する。他の実施形態においては、コンフリクトチェックのプロセスは、非同期的に実行することができる。すなわち、マルチスレッドプロセスで、ソリューションフレームワーク26は同時にコンフリクトを検出する。このように、このプロセスは、非同期的に実行してもよく、線形(順次に)実行してもよい。
操作670において、ソリューションフレームワークが自動で修正することが可能なコンフリクトか否かの決定が行われる。ソリューションフレームワークが自動でコンフリクトを修正できる場合、ソリューションフレームワークは、自動でコンフリクトを修正し、プロセスを継続して操作660に進むことができる。ある実装例においては、デプロイメントインタフェース220を介して、修正されたコンフリクトをユーザに知らせる警告メッセージを出すことができる。ソリューションフレームワーク26が自動でコンフリクトを修正できない場合、致命的なコンフリクトであることを表すエラーメッセージをユーザに提示することができる。そしてプロセスは操作680に進み、デプロイメントは停止される。さらに他の実装例においては、ユーザに、自動でコンフリクトを無効にしてコンフリクトを起こしているコンポーネントを上書きする能力を与えてもよい。そのような実装例においては、ユーザは、パッケージファイル300のデプロイメントを試みる前に、この作業を行うことが必要になるだろう。コンフリクトが発生すると、そのコンポーネントは、パッケージファイル300の新しいコンポーネントで上書きすることができる。
操作660において、選択したサービスのコンポーネントは、選択したコンポーネントに関するパックレットをサービスに送信することによってデプロイされる。各パックレットは、そのサービスに特定の一連のバイナリデータを含むことができる。選択したサービスは、データストリームをデシリアライズしてデプロイメント用のデータに戻す方法を知っていてもよい。データがサービスにデプロイされると、プロセスは操作690に続く。
操作690において、サービスをさらに選択するか否かの決定が行われる。追加のコンポーネントを他の一つのサービスにデプロイする必要がある場合、プロセスは、操作640に戻り、次のサービスが選択される。コンポーネントが全てデプロイされた場合、プロセスは終了操作に進む。
他の実装例においては、パックレットがソリューションフレームワーク26からサービスクラスタ230に送信される前に、コンフリクトをチェックするため選択したコンポーネントを全て処理することができる。例えば、全てのサービスを一巡して、コンフリクト情報を、情報を集中的に処理するソリューションフレームワークで集めてもよい。そして、コンフリクトがなくなると、パックレットはサービスクラスタ230に送信される。このようにして、全てのコンフリクトを集中的に処理することができる。
さらに、デプロイメント後のプロセスを実行することができる。例えば、パックレットをデプロイした後、各サービスクラスタは、デプロイされたコンポーネントに関する情報を報告することができる。このデプロイ後の情報は、次に、各サービスクラスタに返信することができる。このように、パッケージ全体のデプロイメントが完了すると、全てのサービスクラスタは、再度、通信を始める。こうすることによって、サービスクラスタは、システム全体にデプロイされた全てのコンポーネントの情報を得ることができる。このようにして、各クラスタは、その情報に基づいて、デプロイメント後の操作を実行することができる。例えば、第1のサービスクラスタのコンポーネントと第2のサービスクラスタのコンポーネントが、互いに密接に関連している場合があり、互いに関連する最終のデプロイメント情報を知ることによって、そのデプロイメントは、多くのばらばらの断片のデプロイメントではなく、エンドツーエンドの、密接につながった分散アプリケーションのデプロイメントであるという事実を強化するビジネスロジックを実行することができる。
上述の記載、例、およびデータは、本発明の構成の製造および使用を完全に記述したものである。本発明の多くの実施形態は、本発明の精神と範囲を逸脱すること無しに行うことができるものであり、本発明は添付の請求項に帰する。

Claims (8)

  1. リモートサービスクラスタで利用可能なサービスのリストを、コンピュータにより、前記リモートサービスクラスタから受信するステップと、
    前記利用可能なサービスのリストからユーザが選択したサービスを示す情報を、前記コンピュータにより、作成インタフェースから取得するステップと、
    前記ユーザが選択したサービスで利用可能なコンポーネントのリストを、前記コンピュータにより、前記ユーザが選択したサービスから受信するステップと、
    ユーザの操作入力に従って、前記リモートサービスクラスタの前記ユーザによって選択されたサービスで利用可能なコンポーネントのリストから、一群のコンポーネントを前記作成インタフェースにより選択するステップと、
    前記ユーザによって選択された一群のコンポーネントを示す情報を、前記コンピュータにより、前記作成インタフェースから取得するステップと、
    前記選択された一群のコンポーネントを示す情報を、前記コンピュータにより、前記選択されたサービスに送信するステップと、
    前記選択されたコンポーネントを記憶デバイスにインストールするのに必要なデータを前記リモートサービスクラスタの前記ユーザによって選択されたサービスから、前記コンピュータにより受信するステップ
    受信したデータに応じて、命令のリストを前記コンピュータにより作成するステップ
    前記作成した命令のリストを前記記憶デバイスに前記コンピュータにより保存するステップと、
    を備え
    前記命令のリストを保存するステップは、
    前記受信したデータを前記命令のリストに前記コンピュータによりコード化するステップと、
    前記命令のリストにウォーターマークを前記コンピュータによりコード化するステップと、
    を備えることを特徴とする分散アプリケーションを作成する方法。
  2. 前記一群のコンポーネントを選択するステップは、前記選択されたサービスで利用可能なコンポーネントの種類に特定の選択インタフェースデータを前記コンピュータにより受信するステップをさらに含むことを特徴とする請求項に記載の方法。
  3. 前記選択されたコンポーネントのインストールに必要なデータを前記コンピュータにより抽出するために、前記命令のリストを処理するステップと、
    前記コンピュータにより、前記選択されたコンポーネントのインストールに必要なデータを前記リモートサービスクラスタ送信して、前記リモートサービスクラスタの前記選択されたコンポーネントのインストールを可能にするステップと、
    をさらに備えることを特徴とする請求項1又は2に記載の方法。
  4. 前記命令のリストを処理するステップは、
    前記選択されたコンポーネントの記述を前記選択されたコンポーネントに関連するサービスに前記コンピュータにより送信するステップと、
    前記サービスからコンフリクト情報を前記コンピュータにより受信するステップと、
    前記コンフリクト情報を集中処理して、前記選択されたコンポーネントにコンフリクトが存在するか否かを前記コンピュータにより決定するステップと、
    コンフリクトが存在しないときに、前記選択されたコンポーネントのインストールに必要なデータを前記リモートサービスクラスタ前記コンピュータにより送信して、前記コンフリクト情報を集中処理するステップに応じて、前記リモートサービスクラスタの前記選択されたコンポーネントのインストールを可能にするステップと、
    をさらに含むことを特徴とする請求項に記載の方法。
  5. 前記命令のリストを処理するステップは、
    コンフリクトが存在するとき、前記コンフリクトが自動で処理可能か否かを前記コンピュータにより決定するステップ
    コンフリクトが自動で処理可能か否かの前記決定に応じて、前記コンピュータによりコンフリクトを自動で処理するステップと、
    をさらに含むことを特徴とする請求項に記載の方法。
  6. 請求項1から5のいずれか一項に記載の方法を前記コンピュータおよび前記リモートサービスクラスタに実行させるためのプログラム。
  7. 請求項6に記載のプログラムを記録したコンピュータ可読記録媒体。
  8. コンピュータとリモートサービスクラスタとを含んで構成されるシステムであって、前記コンピュータと前記リモートサービスクラスタとが請求項1から5のいずれか一項に記載の方法を実行することを特徴とするシステム。
JP2010527015A 2007-09-26 2008-09-12 拡張可能な分散アプリケーションの作成とデプロイメント Expired - Fee Related JP5269081B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/861,877 2007-09-26
US11/861,877 US20090083732A1 (en) 2007-09-26 2007-09-26 Creation and deployment of distributed, extensible applications
PCT/US2008/076136 WO2009042421A2 (en) 2007-09-26 2008-09-12 Creation and deployment of distributed, extensible applications

Publications (3)

Publication Number Publication Date
JP2010541070A JP2010541070A (ja) 2010-12-24
JP2010541070A5 JP2010541070A5 (ja) 2011-10-20
JP5269081B2 true JP5269081B2 (ja) 2013-08-21

Family

ID=40473096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010527015A Expired - Fee Related JP5269081B2 (ja) 2007-09-26 2008-09-12 拡張可能な分散アプリケーションの作成とデプロイメント

Country Status (7)

Country Link
US (1) US20090083732A1 (ja)
EP (1) EP2203842A4 (ja)
JP (1) JP5269081B2 (ja)
KR (1) KR101574811B1 (ja)
CN (1) CN101809563B (ja)
RU (1) RU2473112C2 (ja)
WO (1) WO2009042421A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840960B2 (en) * 2002-12-17 2010-11-23 Kabushiki Kaisha Toshiba Content distribution method and content distribution package
FR2920935B1 (fr) 2007-09-06 2009-12-11 Miyowa Procede pour echanger des requetes entre l'application informatique d'un terminal mobile et un serveur de messagerie instantanee
FR2923130A1 (fr) * 2007-10-24 2009-05-01 Miyowa Sa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle permettant de gerer automatiquement une session de messagerie instantanee
FR2923131B1 (fr) * 2007-10-24 2010-01-15 Miyowa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle configure pour gerer differentes listes de contacts d'un meme utilisateur
FR2926176B1 (fr) * 2008-01-08 2014-10-10 Miyowa Reseau de communication de transfert d'informations entre un terminal mobile et des serveurs sources, ainsi que terminal et procede de gestion de transfert d'informations dans un tel reseau.
US20100179982A1 (en) * 2009-01-15 2010-07-15 Miyowa Method for auditing the data of a computer application of a terminal
US20100228790A1 (en) * 2009-03-03 2010-09-09 Miyowa Method for activating functionalities proposed in a computer terminal
FR2944624A1 (fr) * 2009-04-16 2010-10-22 Miyowa Procede pour autoriser une connexion entre un terminal informatique et un serveur source
KR101812165B1 (ko) 2010-07-06 2017-12-26 엘지전자 주식회사 애플리케이션 확장 방법 및 그 방법을 이용한 영상표시기기
US9286037B2 (en) * 2010-12-29 2016-03-15 Microsoft Technology Licensing, Llc Platform for distributed applications
US9003397B2 (en) * 2011-09-29 2015-04-07 Oracle International Corporation System and method for supporting automatically deploying/undeploying application components in a transactional middleware machine environment
US20130117749A1 (en) * 2011-11-03 2013-05-09 Microsoft Corporation Provisioning and Managing an Application Platform
US9569274B2 (en) 2012-10-16 2017-02-14 Microsoft Technology Licensing, Llc Distributed application optimization using service groups
US9323514B2 (en) 2013-05-30 2016-04-26 Microsoft Technology Licensing, Llc Resource package indexing
US9766870B2 (en) 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation
US20140357357A1 (en) 2013-05-30 2014-12-04 Microsoft Corporation Game bundle package
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
US10809989B2 (en) 2017-05-05 2020-10-20 Servicenow, Inc. Service release tool
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
CN112114939A (zh) * 2020-09-04 2020-12-22 青岛海信网络科技股份有限公司 一种分布式系统部署设备和方法
US11893120B1 (en) * 2022-09-08 2024-02-06 Soos Llc Apparatus and method for efficient vulnerability detection in dependency trees

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09134282A (ja) * 1995-11-08 1997-05-20 Hitachi Ltd プログラム作成方法
US6256771B1 (en) * 1997-10-16 2001-07-03 At&T Corp. Method and apparatus for providing a dynamic service composition software architecture
US6330710B1 (en) * 1998-06-19 2001-12-11 At&T Corp. Servlet-based architecture for dynamic service composition
US6718364B2 (en) * 1999-08-10 2004-04-06 Sun Microsystems, Inc. Method and apparatus for expedited file downloads in an applet environment
AU2001253708A1 (en) * 2000-04-21 2001-11-07 Togethersoft Corporation Methods and systems for relating data structures and object-oriented elements for distributed computing
US7310801B2 (en) * 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6622259B1 (en) * 2000-07-14 2003-09-16 International Business Machines Corporation Non-disruptive migration of coordinator services in a distributed computer system
US7188158B1 (en) * 2000-07-15 2007-03-06 Hewlett-Packard Development Company, L.P. System and method for component-based software development
US6918112B2 (en) * 2000-11-29 2005-07-12 Microsoft Corporation System and method to facilitate installation of components across one or more computers
CA2357087C (en) * 2001-09-06 2009-07-21 Cognos Incorporated Deployment manager for organizing and deploying an application in a distributed computing environment
US7363354B2 (en) * 2001-11-29 2008-04-22 Nokia Corporation System and method for identifying and accessing network services
US7340520B1 (en) * 2002-04-01 2008-03-04 Microsoft Corporation System and method to facilitate manageable and agile deployment of services in accordance with various topologies
EP1429513A1 (en) * 2002-12-09 2004-06-16 Koninklijke Philips Electronics N.V. Method and apparatus for searching data in a peer to peer network
US20040148370A1 (en) * 2003-01-23 2004-07-29 Electronic Data Systems Corporation System and method for composing, configuring, deploying, and managing services using a graphical user interface
US7412686B2 (en) * 2003-02-10 2008-08-12 Microsoft Corporation Integrated development environment access to remotely located components
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7260599B2 (en) * 2003-03-07 2007-08-21 Hyperspace Communications, Inc. Supporting the exchange of data by distributed applications
US7831693B2 (en) * 2003-08-18 2010-11-09 Oracle America, Inc. Structured methodology and design patterns for web services
CN1864132A (zh) * 2003-08-20 2006-11-15 日本烟草产业株式会社 程序生成系统、程序生成程序和程序生成模块
US20050066324A1 (en) * 2003-09-22 2005-03-24 Microsoft Corporation Method and system for distributing and installing software
CN100407154C (zh) * 2004-04-29 2008-07-30 国际商业机器公司 在分布式网络体系结构中建模和动态部署服务的系统和方法
EP1684170A3 (en) * 2005-01-21 2007-01-24 Outsystems, software em redes, S. A. Software development system and method
US20070050446A1 (en) * 2005-02-01 2007-03-01 Moore James F Managing network-accessible resources
CN100416449C (zh) * 2005-04-29 2008-09-03 国际商业机器公司 软件服务提供商自动获得及运行软件服务的方法和装置
JP4126705B2 (ja) * 2005-06-17 2008-07-30 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・パッケージを再構成する方法、装置、プログラム
JP2007072712A (ja) * 2005-09-06 2007-03-22 Nippon Telegr & Teleph Corp <Ntt> 利用情報を用いたサービス部品発見システム及び方法
US20070156872A1 (en) * 2005-12-30 2007-07-05 Stoyanova Dimitrina G Method and system for Web services deployment
US7925554B1 (en) * 2006-12-29 2011-04-12 Amazon Technologies, Inc. Using configured application pricing to determine end user fees for use of invocable services

Also Published As

Publication number Publication date
RU2010111569A (ru) 2011-09-27
CN101809563A (zh) 2010-08-18
RU2473112C2 (ru) 2013-01-20
WO2009042421A3 (en) 2009-05-28
JP2010541070A (ja) 2010-12-24
KR101574811B1 (ko) 2015-12-04
CN101809563B (zh) 2013-03-06
EP2203842A2 (en) 2010-07-07
KR20100074149A (ko) 2010-07-01
WO2009042421A2 (en) 2009-04-02
EP2203842A4 (en) 2011-08-24
US20090083732A1 (en) 2009-03-26

Similar Documents

Publication Publication Date Title
JP5269081B2 (ja) 拡張可能な分散アプリケーションの作成とデプロイメント
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
US11954046B2 (en) Storage device authentication
US11232080B2 (en) Systems and methods for providing access to a data file stored at a data storage system
US11281457B2 (en) Deployment of infrastructure in pipelines
US11036773B2 (en) System and method for detecting and integrating with native applications enabled for web-based storage
US20190207748A1 (en) Blockchain storage device
US20110184910A1 (en) Chain-of-Custody for Archived Data
CN112970020A (zh) 使用分布式账本监视设备部件
JP5801482B2 (ja) キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム
US11916922B2 (en) Digital content access control
US20040243821A1 (en) Method of authenticating an application for personal digital assistant using a unique ID based on a personal computer and system using thereof
CN111339551B (zh) 数据的验证方法及相关装置、设备
US8700750B2 (en) Web deployment functions and interfaces
US10558621B2 (en) Lock stealing writes for improved reliability
US20180018228A1 (en) Tracking data access in a dispersed storage network
CN112131041A (zh) 用于管理数据放置的方法、设备和计算机程序产品
GB2565932B (en) Storing data in dispersed storage network with consistency
US20240291670A1 (en) Selecting, authenticating, and installing individual components of agent software stacks
WO2023193971A1 (en) Software Application Feature Access and Enhancement Using Non-Fungible Tokens
JP2002268542A (ja) データ転送複合システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130307

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130507

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees