JP5007301B2 - 電子ソフトウェアダウンロード用の分割ダウンロード - Google Patents

電子ソフトウェアダウンロード用の分割ダウンロード Download PDF

Info

Publication number
JP5007301B2
JP5007301B2 JP2008514640A JP2008514640A JP5007301B2 JP 5007301 B2 JP5007301 B2 JP 5007301B2 JP 2008514640 A JP2008514640 A JP 2008514640A JP 2008514640 A JP2008514640 A JP 2008514640A JP 5007301 B2 JP5007301 B2 JP 5007301B2
Authority
JP
Japan
Prior art keywords
isv
software
download
client
build
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
JP2008514640A
Other languages
English (en)
Other versions
JP2008542909A5 (ja
JP2008542909A (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 JP2008542909A publication Critical patent/JP2008542909A/ja
Publication of JP2008542909A5 publication Critical patent/JP2008542909A5/ja
Application granted granted Critical
Publication of JP5007301B2 publication Critical patent/JP5007301B2/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/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

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

Description

本発明は、ソフトウェアの分割ダウンロードのシステムおよび方法に関する。
コンピュータテクノロジ(たとえば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能性、など)のさらなる進歩は、一般に、さまざまな産業での機能強化されたコンピュータアプリケーションに寄与してきた。さらに強力なサーバシステムは、しばしばサーバのアレイとして構成されるが、一般に、たとえばWWW(World Wide Web)など、外部ソースから発する要求にサービスするために提供される。
ソフトウェアシステムがより複雑になるにつれて、そのようなシステムを複数のオブジェクトおよびファイルからダウンロードし、ビルドすることが一般的になってきた。たとえば、ソフトウェアシステムは、数百個のファイルまたはオブジェクト(ソフトウェアまたはアプリケーションシステムをビルドすることは、1つまたは複数のビルドマシンで着手することができる)と、中間ストレージファシリティへのダウンロードを含む場合がある。そのようなビルドマシンおよびダウンロードプロセスは、たとえばファイルまたはオブジェクトをコンパイルし、アセンブルし、リンクし、かつ/または解釈することができる。通常、オブジェクト指向コンピューティングは、オブジェクトモデルに基づき、このオブジェクトモデルでは、「オブジェクト」と呼ばれるコードが、データ(たとえば、属性)を含み、それに対して実行されるアクション(たとえば、オペレーション)を有することができる。オブジェクトは、そのインターフェースによって定義することができ、ここで、インターフェースは、そのインターフェースのオブジェクトに対して実行できるオペレーションと各オペレーションへのパラメータとを含む、ある種類のオブジェクトの特性および振る舞い(behavior)を定義する。オブジェクトの特定のインスタンスは、分散オブジェクトシステム内で、オブジェクト参照(object reference)と呼ばれる一意の識別子によって識別される。
完成したソフトウェア製品の必須ファイルの多くを、さまざまなステージでビルドすることができ、したがって、複数のソースおよび/または生成され/ビルドされたファイルが必要になる。ビルドプロセスの一部分によって生成されたファイルは、ビルドプロセスの1つまたは複数の他の部分への入力として要求される可能性があり、ビルドマシンは、ソースファイルの完全なコピーを有することができる。たとえば、ビルドマシンAがファイルA1を生成し、ビルドマシンBがファイルB2を生成する場合に、ビルドマシンAがファイルA2を作るためにファイルB1を必要とする場合があり、ビルドマシンBがファイルB2を作るためにファイルA1を必要とする場合がある。
分散オブジェクトシステムでは、クライアントは、サーバ上のオブジェクトをイメージ化するプロキシを作成することもできる。通常、プロキシは、オブジェクトのイメージであり、オブジェクトは、異なる論理エンティティおよび/または物理エンティティ(たとえば、マシン、プロセス、ネットワーク、など)に常駐する。分散システムでは、プロキシは、効率を改善するためにローカル処理を容易にすることができる。イメージ化されるオブジェクトは、1つまたは複数のインターフェースおよび基底クラスデータ型の第1組を実装することができる。さらに、そのようなオブジェクトは、オブジェクトをイメージ化するためにプロキシが1つまたは複数の属性および/またはメソッドの第1組をロードすることを要求することができる。プロキシが、イメージ化されるオブジェクトのために作成される時に、そのオブジェクトによって実装されるインターフェースおよび基底データ型は、通常は自動的にクライアントにロードされる。
ソフトウェアシステムのビルドを完成するのに必要なファイルを、ビルドに用いられるビルドマシンに分配することは、ネットワーク帯域幅集中型であり、大量の情報転送を必要とし、その情報転送の一部が、アップロード中に壊されるか、使用不能になる可能性さえある。たとえば、1つのビルドマシンが、ビルドのうちでそのマシンの部分を完了するのに10個のファイルだけを必要とするが、別のビルドマシンが、ビルドのうちでそのマシンの部分を完了するのに200個のファイルを必要とする可能性があり、1つの欠けているファイルまたはオブジェクトが、たとえば読取、妥当性検査、または実行中に正しくロードされないことによって、必須アプリケーションの正しい動作を妨げる可能性がある。
それと同時に、複数の独立ソフトウェアベンダからのダウンロードが、アプリケーションまたはプログラムの正しい動作に必要である場合がある。そのようなダウンロードは、ダウンロードされるソフトウェアの開発および展開の合理化において非効率性をもたらし得る。たとえば、証明およびマーケットデリバリプロセスが、悪影響を受ける可能性がある。さらに、ビジネスポリシの見地から、ソフトウェアベンダは、別のソフトウェアベンダがそのベンダのソフトウェアへのアクセスをすることなしに、ソフトウェアをエンドユーザに直接に供給することを望む場合がある。また、ライセンス交付制約が、そのようなソフトウェアの電子配布に対して存在する場合がある。さらに、ソフトウェアデベロッパは、たとえば詐欺の可能性が存在するときなど、彼らが「潜在的に敵対的」と考えるプラットフォームに作品を配布せず、この場合に、ライセンスが許可されたデバイスに発行されるという保証は入手できない。
したがって、従来のシステムおよびデバイスに関連する上述の例示的欠陥を克服する必要がある。
以下では、本発明のいくつかの態様の基本的理解をもたらすために、本発明の単純化された要約を提示する。この要約は、本発明の完璧な概要ではない。この要約は、本発明の主要な/クリティカルな要素を識別し、または本発明の範囲を区切ることを意図したものではない。この要約の唯一の目的は、後で提示する、より詳細な説明の前置きとして、単純化された形で本発明のいくつかの概念を提示することである。
本発明は、各独立ソフトウェアベンダ(ISV)がそのソフトウェアおよび/またはディジタルコンテンツの個別の部分をユーザにダウンロードすることを可能にするダウンロード配布エンジンを使用することを介して、コンポーネントベースのフレームワークでの電子ソフトウェアダウンロード(Electronic Software Download、ESD)の分割ダウンロードを提供する。したがって、ダウンロード配布エンジンは、第1のISVと第2のISVとの間のデータ交換を供給して、ソフトウェアのうちで各ISVからユーザにダウンロードされる部分、ユーザがそれでもソフトウェアの正しい実行のためにダウンロードを必要とする任意の追加コンポーネントまたは補足コンポーネント、ライセンス要件、請求手順などの情報を供給することができる。本明細書の記述が、主に第1のISVと第2のISVとの間の相互作用のコンテキストで説明されるが、本発明が、それに限定されず、3つ以上のISVの一部として実装され得ることを了解されたい。さらに、本発明のいくつかの態様では、第1のISVは、第2のISVと同一のエンティティとすることができる。
関連する態様で、ダウンロード配布エンジンは、さらに、第1のISVからユーザへのソフトウェアおよび/またはディジタルコンテンツのダウンロードを観察し、第2のISVからユーザに残りのソフトウェアコンポーネントをインストールするプロセスを提供する監視コンポーネントを含むことができる。たとえば、第1のISVからのダウンロードを開始する時に、トークンをバックグラウンドで第2のISVに渡して、ダウンロード情報(たとえば、識別番号、請求、ライセンス交付要件、バージョン管理方式、認証、セキュリティ、アクセス権、ディジタル著作権管理など)を供給することができ、ここで、第2のISVに、ダウンロードされるソフトウェアの正しいバージョン(たとえば、特定の地理、言語などについて)を供給するように指示することができる。したがって、カスタマ/エンドユーザは、ソフトウェアをダウンロードする時にシームレスなエクスペリエンスを享受することができる。そのような第1のISVおよび第2のISVからのダウンロードは、同時にまたは所定のインターバルで行うことができ、あるいは、リマインダー通知をカスタマ/エンドユーザに送信して、後の時刻まで延期することができる。さらに、割込み機能を、ダウンロード分割の一部としてイネーブル(enable)することができ、ここで、ユーザ要求に基づいて、ダウンロードの状態をログに記録し、かつ/または追跡することができる。
本発明のさらなる態様によれば、本発明のダウンロード配布エンジンは、第1のISVまたは第2のISVからダウンロードされる必要がある、ソフトウェアの欠けている部分を検出する検出コンポーネントと、欠けている部分をどこからダウンロードするか、かつ/またはダウンロードされたソフトウェアを補足するためにそのソフトウェアの欠けている部分に関連する問題の解決に関する追加情報をどこで入手するかをユーザに通知する通知コンポーネントとを含むことができる。これらのコンポーネントは、通常、エンドユーザによってダウンロードされたソフトウェア(またはディジタルコンテンツ)の正しい妥当性検査および/または実行を保証することができる。
したがって、製品を、機能性のグループを含むパッケージなどの複数のより小さい部分品(piece)からビルドできるコンポーネント駆動アーキテクチャでは、本発明のダウンロード配布エンジンは、ダウンロードプロセスを容易にすると同時に、ライセンス交付問題およびセキュリティ問題に伴う問題を軽減することができる。したがって、各ISVは、そのソフトウェア配布に対する必須の制御を維持することができる。さらに、リコール、パッチなどを、個別のダウンロードについて正しいISVによって直ちに供給することができる。さらに、バンドルされたライセンスの配布を行うことができ、ここで、ディジタル著作権管理トークンをユーザに送ることができる。
もう1つの態様では、分割ダウンロードを使用してソフトウェアを購入し、配布するシステムが提供される。このシステムは、複数のISV、マーチャントオブレコード(merchant of record)、およびダウンロードマネージャを含む。各ISVは、ダウンロード可能ソフトウェアの部分を供給するように構成され、各部分は、別々のISVによって供給される。マーチャントオブレコードは、カスタマからのダウンロード可能ソフトウェアの注文を処理するように構成される。マーチャントオブレコードは、注文に関連するトランザクションを生成し、そのトランザクションをISVに供給するようにも構成される。ダウンロードマネージャは、カスタマのデバイス内のクライアントコンポーネントである。ダウンロードマネージャは、ソフトウェアの諸部分をISVからダウンロードし、ダウンロードされた部分から完全なソフトウェアをビルドするように構成される。
前述のおよび関連する目的を達成するために、本発明は、本明細書の以下の記述で完全に説明される特徴を含む。以下の説明および添付図面は、本発明のある種の例示的態様を詳細に示す。しかし、これらの態様は、本発明の原理を使用できるさまざまな形のうちの少数を示すに過ぎない。本発明の他の態様、利益、および新規の特徴は、添付図面と共に考慮される時に、本発明の以下の詳細な説明から明白になるであろう。
本発明を、これから図面を参照して説明するが、図面では、類似する符号が、すべての図を通じて類似する要素を示すのに使用される。以下の記述では、説明のために、本発明の完全な理解をもたらすために多数の具体的な詳細を示す。しかし、これらの具体的な詳細な説明なしで本発明を実践できることは明白であろう。他の場合には、本発明の説明を容易にするために、周知の構造およびデバイスをブロック図形式で示す。
本明細書で使用する用語「コンポーネント」および「システム」は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連のエンティティを指すことが意図されている。たとえば、コンポーネントは、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータとすることができるが、これらに限定はされない。たとえば、サーバで動作するアプリケーションとサーバとの両方を、コンポーネントとすることができる。1つまたは複数のコンポーネントが、1つのプロセス内および/または1つの実行のスレッド内に存在することができ、1つのコンポーネントを、1つのコンピュータにローカライズし、および/または2つまたはそれ以上のコンピュータの間で分散させることができる。
まず図1を参照すると、本発明の一態様によるダウンロード配布エンジンの概略ブロック図が示されている。そのようなダウンロード配布エンジン100は、N個(Nは整数)の独立ソフトウェア/ディジタルコンテンツベンダ(ISV)102、104、106がそのソフトウェアおよび/またはディジタルコンテンツの個別の部分をM個(Mは整数)のエンドユーザ101、103、および105にダウンロードすることを可能にする。そのようなエンドユーザは、パームパイロット、携帯情報端末、メディアプレイヤ、テレビジョンセット、コンピュータなどのデバイスを含むことができる。
さらに、エンドユーザ101、103、および105は、システムエリアネットワークまたは他の種類のネットワークとすることができ、複数のホスト(図示せず)を含むことができるネットワークシステム107の一部とすることができ、このホストは、パーソナルコンピュータ、サーバ、または他の種類のコンピュータとすることができる。そのようなホストは、一般に、1つまたは複数のアプリケーションレベル(またはユーザレベル)プログラムの稼動または実行ならびにI/O要求(たとえばI/O読取またはI/O書込)の開始が可能であるものとすることができる。それに加えて、ネットワークシステム107は、さらに、1つまたは複数の入出力ユニット(I/Oユニット)を含むことができ、そのようなI/Oユニットは、それに接続された1つまたは複数のI/Oコントローラを含むことができ、I/Oユニットのそれぞれは、ストレージデバイス(たとえば、ハードディスクドライブ、テープドライブ)または他のI/Oデバイスなどの複数の種類のI/Oデバイスのいずれかとすることができる。ホストおよびI/Oユニットおよびそれに接続されたI/OコントローラおよびI/Oデバイスは、クラスタなどのグループに編成することができ、各クラスタは、1つまたは複数のホストと、通常は1つまたは複数のI/Oユニットとを含む(各I/Oユニットは、1つまたは複数のI/Oコントローラを含む)。ホストおよびI/Oユニットは、1つまたは複数のクラスタのノードの組を接続する(たとえば、ホストおよびI/Oユニットの組を接続する)、ルータ、スイッチ、および通信リンク(ワイヤ、コネクタ、ケーブルなど)の集合を介して相互接続することができる。
さらに、ネットワークシステム107は、たとえば、イーサネット(登録商標)LAN、トークンリングLAN、または他の種類のLAN、あるいは広域通信網(WAN)とすることができる。また、ネットワークシステム107に、ハードワイヤード接続経路および/または光接続経路および/または無線接続経路を含めることができる。以下で詳細に説明するように、ダウンロード配布エンジン100は、ISV 102、104、106の間のデータ交換を供給して、ソフトウェアのうちで各ISVからユーザにダウンロードされる部分、それでもユーザがソフトウェアを正しく実行するために必要とする任意の追加コンポーネント、ライセンス交付要件、請求などの情報を供給することができる。
以下でより詳細に述べるように、ソフトウェアバンドルのダウンロードを分割して、ソフトウェアプロバイダにより高い効率および彼らの個別の製品に対するより大きい制御を与えることができる。単一のISVは、もはや、その個別の製品に関連するすべてのソフトウェアをバンドルし、各ソフトウェアバンドルをカスタマに配布する必要がない。今や、ソフトウェアバンドルを、分割し、本質的に異なるエンティティ(たとえば、個別のソフトウェアの実際の製作者)によってエンドユーザに電子的に配布することができる。ソフトウェアバンドルを分割することによって、第1のソフトウェア製品ISVに関連するソフトウェアバンドルの第2の部分を、その第2の部分の製造業者によって直接にエンドユーザに独立に供給することができる。それを行うことによって、第2のソフトウェアの製造業者に、製品に対するより大きい制御(たとえば、配布、配布の形、インストール、メンテナンス、バージョン管理方式、ライセンス交付、セキュリティ、その他)が与えられる。
ソフトウェアのそのような配布に関するさまざまなシナリオを、より詳細に述べるが、これらのシナリオには、たとえば、次にあげるものが含まれる。(1)ソフトウェアが第1のISVからダウンロードされている間またはその後に、第2のISVが、第1のISVのソフトウェアに関連するその個別のソフトウェアをエンドユーザにダウンロードするように促され(そのような促しは、エンドユーザからまたは第1のISVからさえ直接に行うことができる)、(2)第2のISVは、そのソフトウェアのダウンロードに関するプロキシとして第1のISVを使用することもでき、あるいはその代わりに、第1のISVおよびその個別のソフトウェアのプロキシとして働くことができ、(3)第2のISVは、ディジタル著作権管理を使用し、その個別のソフトウェアに関する複数のライセンスをエンドユーザにダウンロードすることもでき、(4)最初のダウンロードの後に、第2のISVは、そのソフトウェアに関するバージョンコントロールならびに第1のISVのソフトウェアおよびエンドユーザの他のソフトウェア/ハードウェアと一致し、互換であることを調停することができ、(5)ソフトウェアの配布は、ハードワイヤ上でならびに無線で実行されることができ、そのような電子配布をもたらすのに使用可能な任意の適切な転送媒体ならびに通信プロトコルを使用することができ、(6)完全な電子配布が最も典型的であると期待されはするが、ソフトウェアのある部分が電子配布され、他の部分が物理的に配布されるように、配布を二又に分けることもできる(望まれる場合に)ことが了解され、(7)認証方式、セキュリティ方式、およびディジタル著作権管理方式を使用して、ソフトウェアバンドルの個別の部分の電子配布をもたらし、容易にすることができる。前述のシナリオおよびさらなるシナリオは、本明細書で述べられ、かつ/または本明細書の教示からたやすく明白になり、そのような実施態様のすべてが、本明細書に添付の特許請求の範囲の範囲に含まれることが意図されている。
まず図2を参照すると、ダウンロードされたソフトウェアおよび/またはディジタルコンテンツの欠けている部分を検出する検出コンポーネント203と、欠けているオブジェクトをどこで入手すべきか、および/または欠けている部分に関連する問題の解決に関する追加情報をどこで入手すべきかをユーザに通知する通知コンポーネント205とを使用することによって、ISV 240からダウンロードされたパケット(たとえば、機能性のグループ)からのアプリケーションのビルドを容易にすることができるダウンロード配布エンジン201が示されている。したがって、第1のISVからのソフトウェアのダウンロード中に、ダウンロード配布エンジン201は、そのようなソフトウェアバンドルのすべての欠けている部分を検出でき、ユーザが欠けている部分を第2のISVからダウンロードすることを可能にし、かつ/または欠けている部分の第2のISVからの正しいダウンロードおよび実行に関係付けられる問題をどのように解決するかに関する情報を供給することができる。
図示されているように、システム200は、アプリケーションシステム220のビルドに用いられるダウンロードされるパケットおよび/またはファイルの配布および収集を管理することができる。さらに、そのようなコンポーネント駆動型アーキテクチャ環境では、通常、コンポーネントを、契約的に指定されたインターフェースを介してアクセスできる機能性の特定の部分品と呼ぶことができる。そのようなコンポーネントは、特定の機能を記述し、かつ/または実行する、自己完結型で明瞭に識別可能な成果物(artifact)とすることができる。たとえば、コンポーネントベースのシステム200の基本的な機能に、ネットワークにまたがるインターオペラビリティ、異なるハードウェアプラットフォームまたはソフトウェアプラットフォームでのポータビリティ、およびデータリソースを自己管理する能力を含めることができる。
システム200には、集合的にビルドマシン210と称する複数のビルドマシン202、204、206、208(1からLまで、ただし、Lは整数)を含めることができる。当業者は、ビルドマシン210を物理的マシン(たとえば、1つまたは複数のコンピュータ)および/または仮想マシン(たとえば、1つまたは複数のコンピュータ上で動作する1つまたは複数のプロセス)とすることができることを了解するであろう。ビルドマシン210は、アプリケーションシステム220で使用される1つまたは複数のビルドファイルを作ることができる。
ビルドマシン210は、1つまたは複数のソースファイルを1つまたは複数のビルドファイルにコンパイルし、アセンブルし、解釈し、かつ/またはリンクすることができる。ビルドマシン210のあるセグメントが、1つまたは複数のビルドファイルをビルドする時に、ビルドマシン210の別のセグメントが、パブリッシュされるこれらのビルドファイルの名前のリストをコンパイルすることができる。たとえば、パブリッシュされるファイルは、ISV 240からダウンロードされ、そのようなダウンロードからビルドされるソフトウェアシステムまたはアプリケーション220に関連する1つまたは複数のMakeファイル内でパブリッシュされるファイルとしてリストされたファイルとすることができる。次に、ビルドマシン210は、ビルドファイル名のリストをビルドマネージャ214に送ることができる。ビルドマシンの1セグメントを、ポストビルドマシン216として指定することもでき、この場合に、ビルドマネージャ214は、ビルドマシンのセグメントごとに、ビルドマシン210がポストビルドマシン216に送らなければならないビルドファイルの名前のサブセットを含むリストを判定することができ、ポストビルドマシン216は、ビルドファイルのコレクションまたはセット218を作成する。ビルドマネージャ214は、ビルドマシン210のセグメントごとに、ビルドマシン210がポストビルドマシン216からの戻りで受け取らなければならないファイルの名前のサブセットを含むリストを判定することもできる。ポストビルドマシン216に送られ、ポストビルドマシン216から受け取られるファイルの名前のリストがビルドマシン210に配布されたならば、それらのファイルをポストビルドマシン216との間で転送することができる。このファイル転送は、たとえば、ビルドマシン210のセグメント、ビルドマネージャ214、ポストビルドマシン216、または別のプロセスによって開始することができる。システム200は、上で説明したプロセスの1つまたは複数のステージを経験して、ユーザのマシン上でのアプリケーションシステム220のビルドを完了することができる。1つまたは複数のステージで、システム200は、ポストビルドマシン216からのファイルの獲得を開始する前に、ビルドマシン210がビルドおよびポストビルドマシン216へのコピーを完了するのを待つことができる。ビルドマネージャ214およびポストビルドマシン216が独立に図示されているが、ビルドマネージャ214および/またはポストビルドマシン216によって実行されるプロセスを、同一の1つまたは複数の物理マシンおよび/または仮想マシンで実行できることを了解されたい。ダウンロードされたソフトウェアの欠けている部分に出会った時にアプリケーションシステム220を正しく実行するために、ダウンロード配布エンジン201は、マシンにパケットをアップロードする時に、すべての欠けている部分を検出する検出コンポーネント203を使用し、その後、ユーザは、通知コンポーネント205を介して、適当なISVから欠けている部分をダウンロードすること、またはその問題をどのように解決すべきかに関する情報を入手することが可能になる。
図3に、配布リゾルバ303が通知コンポーネント305の一部として動作する、本発明の例示的態様による例示的なダウンロード配布エンジン301を示す。ダウンロード配布エンジン301は、分散オブジェクトシステム内で動作し、この分散オブジェクトシステムでは、パケットオブジェクト310をISVからのソフトウェアダウンロードの一部としてダウンロードすることができる。ISVからユーザのマシンへアプリケーションの個別の部分をダウンロードする際に、配布リゾルバ303は、アプリケーションの正しい実行を保証するために、アプリケーションの欠けている部分の正しいダウンロードについて連絡される必要がある特定のISVに関する連絡情報を供給することによって、アプリケーションの欠けている部分の供給を容易にすることができる。配布リゾルバ303は、第1のISVからのダウンロードのうちでどのコンポーネントが欠けているか、およびどのコンポーネントが第2のISVから入手される必要があるかを判定することができる。そのようなアイテムを、取り出し、永続的に格納することができ、ここで、配布リゾルバ303は、上記で説明したプロセスの1つまたは複数の反復を経験して、アプリケーションのダウンロードを完了することができる。
ここで図4に移ると、ダウンロードされたソフトウェアの欠けている部分およびそのような欠けている部分をそこから入手すべきISVに関する情報を供給できる配布リゾルバ403の詳細なブロック図が示されている。配布リゾルバ403には、ダウンロード配布エンジン401によって実現されるダウンロード配布機能を容易にするために1つまたは複数のサブシステム(たとえば、メタデータリーダ410、属性識別サブシステム420、属性設定サブシステム430)を含めることができる。メタデータリーダ410は、解決されなければならない1つまたは複数の欠けているオブジェクトおよび/またはデータ型に関連する1つまたは複数のメタデータを入力としてとることができる。そのようなメタデータには、たとえば、そのメタデータに関連するデータ型の属性のリスト(このリストには、属性名、型、サイズなどが含まれる)、パラメータ型、パラメータサイズ、アドレスなどを含む情報と、それとの相互作用が望まれるエンティティが使用可能なデータ型(たとえば、親クラス)の定義を有しない場合にデータ型との相互作用に使用できる1つまたは複数のクラスを識別する情報とを含めることができる。
さらに、ソフトウェアおよびオブジェクトまたは参照の欠けている部分に関係付けられるデータ構造には、本発明に従って使用することのできる、配列、リスト、ヒープ、スタック、テーブル、データベースレコード、データベーステーブル、データベース、およびデータキューブを含めることができる。したがって、欠けている参照および/またはオブジェクトの1つまたは複数のクラスを識別するそのような情報を使用して、データ型と相互作用し、そのようなデータをどこから入手できるかを判定することができる。メタデータリーダ410を、属性識別サブシステム420および属性設定サブシステム430に動作可能にリンクして、これらのサブシステムが不一致のまたは欠けているオブジェクトおよび/またはデータ型を識別し、かつ/または正しいISVソース参照と比較するのを容易にすることができる。
さらに、配布リゾルバ403が、参照オブジェクトの欠けている部分を属性識別サブシステム420を介して判定したならば、属性設定サブシステム430を使用して、正しいISVから値を取り出し、かつ/または欠けているオブジェクトをダウンロードすることができる。したがって、コンポーネントベースのプログラミング環境において、本発明は、複数のISVからの分散ダウンロードを容易にして、ユーザのマシンでのアプリケーションの正しいダウンロードおよび実行を可能にすることができる。
ここで図5を参照すると、本発明の特定の態様によるダウンロード配布エンジンの一部としての監視コンポーネント510の全体的なブロック図が示されている。この監視システムは、ダウンロードされたアプリケーションおよび/またはオブジェクトの欠けている部分を能動的に観察し、欠けている部分を正しいISVからダウンロードするためにリアルタイムハイパーリンクを供給することができる。したがって、監視コンポーネント510は、ダウンロードされたソフトウェアおよび/またはディジタルコンテンツの欠けている部分を供給できる正しいISVのウェブリンクに対応する個別のターゲットサイトを供給することができる。
したがって、ダウンロードされたソフトウェアおよび/またはオブジェクトの欠けている部分に監視コンポーネント510が出会う時に、そのような欠けているオブジェクトに関する情報を、リンク制御コンポーネント520によって集めるか収集し、リンク制御コンポーネント520に通信することができる。リンク制御コンポーネント520は、監視コンポーネント510から通信された情報を検査し、この情報を1つまたは複数の格納されたリンク照会530と比較することができる。リンク照会530には、複数のリンク(たとえば、ハイパーリンク)に関する複数の異なる照会を含めることができる。たとえば、任意の所与のリンクについて、少なくとも1つの照会を、ユーザによってセットするかプログラムすることができる。照会には、満足されるべき条件の組または1つもしくは複数の条件が満足される時にリンクに対して実行されるべきアクションの組を含めることができる。各照会は、少なくとも1つのハイパーリンクおよび関連するターゲットサイトに対応するものとすることができる。
さらに、監視コンポーネント510が、ダウンロードされたソフトウェアまたはディジタルコンテンツの欠けている部分が検出されたと判定したときに、監視コンポーネント510は、ターゲットリンクコンポーネント540(たとえば、ブラウザ)を介してユーザに通知することもできる。欠けている参照および/またはオブジェクトを検出したときの通知アクションの例には、ハイパーリンクの色を変更すること、欠けているアプリケーションに関係付けられる問題を解決するためにコンテンツにアクセスする必要があることを示すためにハイパーリンクのタイトルを変更すること、および/またはハイパーリンクにシンボルを追加するかハイパーリンクからシンボルを除去することを含めることができる。ハイパーリンクを強調表示すること、ハイパーリンクの周囲に線を描くこと、および/またはハイパーリンクにある形のアニメーション(たとえば、点滅するテキスト、テキストのフェードイン/フェードアウトなど)を追加することなど、他の種類の通知アクションも可能である。ユーザは、欠けている参照および/またはコンポーネントに出会ったことを警告する電子メールまたはサウンド通知を受け取ることもできる。さらに、ユーザは、ハイパーリンクをちらりと見るためにハイパーリンクモニタリストを単純に参照して、ダウンロードされたプログラムまたはディジタルコンテンツおよび/あるいはオブジェクトの欠けている部分を成功してロードするために、正しいISVのターゲットウェブサイトに連絡する必要があるかどうかをすばやく確かめることができる。
また、正しいリンクのアクセスおよび/またはソフトウェアもしくはディジタルコンテンツの個別の部分を個別のISVからロードするのに必要なリンクの突止め(locating)に関連して、本発明は、さまざまな人工知能方式を使用することができる。たとえば、オブジェクトを再ロードしなければならないかどうかを明示的にまたは暗黙のうちに学習するプロセス、あるいはそのようなオブジェクトまたは欠けている参照を提供するISVのウェブサイトの検索は、自動分類のシステムおよびプロセスを介して容易にすることができる。分類は、確率的分析および/または統計ベースの分析(たとえば、分析ユーティリティおよびコストへのファクタリング)を使用して、ユーザが自動的に実行されることを望むアクションを予知しまたは推論することができる。たとえば、サポートベクトルマシン(SVM)分類子(classifier)を使用することができる。使用可能な他の分類手法には、ベイジアンネットワーク、デシジョン・ツリー、および独立性の異なるパターンを提供する確率分類モデルが含まれる。本明細書で使用される分類は、優先順位のモデルを展開するのに利用される統計的回帰をも包含する。
本明細書からたやすく了解されるとおり、本発明は、明示的にトレーニングされる(たとえば、汎用トレーニングデータを介して)分類子ならびに暗黙のうちにトレーニングされる(たとえば、ユーザの振る舞い(behavior)の観察、外来データの受取りを介して)分類子を使用することができ、その結果、分類子は、質問に対してどの回答を返すかを所定の判断基準に従って自動的に判定するのに使用されるようになる。たとえば、十分に理解されているSVMに関して、SVMは、分類子コンストラクタおよび特徴選択モジュール内の学習フェーズまたはトレーニングフェーズを介して構成される。分類子は、入力属性ベクトルx=(x1,x2,x3,x4,xn)を、入力があるクラスに属することの信頼度すなわちf(x)=confidence(class)に写像する関数である。図5に示されているように、人工知能(AI)コンポーネント550を使用して、ソフトウェアおよび/またはディジタルコンテンツの欠けている部分のダウンロードに関する正しいISVをいつ、どこで、どのように突き止めるかの推論および/または判定を容易にすることができる。AIコンポーネント550は、本発明のさまざまな態様を容易にすることに関連して上で説明したさまざまな適切なAIベースの方式のどれであっても使用することができる。
図6aおよび6bに、カスタマおよび/またはエンドユーザマシンに関する第1のISVおよび第2のISVの配置を示す。図6aの配置に示されているように、ISV 610およびISV 620は、同一レベルのカスタマ制御を共有することができる。たとえば、ISV 610は、アプリケーション630をカスタマ/エンドユーザ650に供給することができ、カスタマ/エンドユーザ650は、ISV 620に構造化照会言語(SQL)640を要求する。そのようなISV 620は、ダウンロードされたアプリケーションの正しい実行に必要なSQLコンポーネント640をカスタマ650に直接に供給することができる。同様に、図6bによる配置は、クライアントおよび配布されたソフトウェアに対するISVによる制御の異なる度合いを実現する。
図7に、ソフトウェア1からm(mは整数)を提供するISV 702とISV 704との間の照会ステップのシーケンスを示す。この通信自体は、セキュアチャネルを介して実行することができる。ISV 704は、サービス側セキュアネットワークスタック710を含むことができ、サービス側セキュアネットワークスタック710は、さらに、IPレイヤ実装、サービス側TCPレイヤ実装、サービス側TLS、HTTPスタック実装、ウェブサービスプロバイダインターフェース、およびウェブサービスを含む。ISV 704は、さらに、ISV 704とISV 702との間のネットワークトラフィックを保護するインターネットキー交換(IKE)サブシステム708を含むことができる。ISV 704は、IKEサブシステム708の構成を可能にするポリシモジュール711をも含むことができる。ポリシモジュール711は、セキュアネットワークスタック710にセキュリティ構成情報を供給することもでき、セキュアネットワークスタック710は、TCP/IPドライバ754を介して通信し、これによって、ISV 704とISV 702との間のセキュアネットワークトラフィックを可能にする。
ISV 704は、エンティティにディジタル証明書を発行するメッセージの組を登録し、受信することができる。たとえば、符号714で、購買コンポーネントは、さまざまなソフトウェアオファリングの購買照会についてISV 704に照会することができる。次に、符号716で、さまざまなソフトウェアを識別する照会応答およびサービスの条件が、ISV 702に戻って通信される。その後、符号718で、請求照会が、ISV 704に転送される。次に、ディジタル証明書を発行するためのさまざまな請求要件に関する応答を準備し、符号720でISVに送り返すことができる。
次に、ISV 702は、所望の購入プランを選択することができ、購買要求/応答対722(a)および722(b)が、ISV 704とISV 702との間で交換される。同様に、照会および応答の組(図示せず)を、ISV 704とエンドユーザマシンとの間で交換して、ソフトウェアのアップデートを要求し、パッチなどを供給することができる。購買行為およびアップデート行為には、エンドユーザマシンまたはISV 702がISV 704に関してそれ自体を認証する機構をも含めることができる。
図8に、本発明の態様によるダウンロードを供給できるISV 800システムのブロック図を示す。このシステムには、ISVマネージャ810を含めることができ、ISVマネージャ810は、ISVライブラリ814と相互作用して、認証、セキュリティ、および妥当性検査を追跡し、ISVマネージャ810へのクライアントまたは別のISVの接続を検証することができる。負荷閾値をISVマネージャ810によって供給して、たとえば複数のマシンにまたがって処理のバランスをとる(これは、任意の1つのマシンにかかる重荷を軽減することができる)ために、ISV 800とのデータ交換を要求する任意のマシン上でデータ転送を開始し、一時停止し、再開し、かつ/または停止するかどうかを判定することもできる。通常、メッセージ転送セッション(たとえば接続)が開始される時に、ISVマネージャ810は、そのセッションの接続インスタンスを生成することができる。この接続インスタンスに、たとえば、クライアント、ソフトウェアダウンロード、用いられる他のISV、メッセージ、および/または接続ID(たとえば、キープアライブメッセージ)を示す情報を設定(populate)することができる。そのような情報を利用して、ISVとクライアントまたはもう1つのISVとの間のメッセージ転送を開始することができる。さらに、接続IDを利用して、異なるマシン内のメッセージ伝送を追跡することができる。
接続インスタンスを、さらに、動的にアップデートして、伝送進行を反映し、伝送ヒストリ(history)を提供することができる。たとえば、成功して伝送されたまたは失敗したすべての部分(メッセージ全体またはソフトウェアダウンロードを含む)を示すしるし(indicia)を、接続インスタンスに関連付けることができる。伝送ヒストリには、転送の開始および完了、一時停止および再開、通信アクティビティエラーのレベル、再送信、サービスするマシンの変化などに関係付けられる情報を含めることができる。
たとえば、ISV 800が、クライアントまたはエンドユーザへのダウンロードのための接続を確立するために呼び出される時に、ISVマネージャ810は、マシンアイデンティティ(たとえば、グローバル一意アイデンティティすなわちGUID)を追跡して、そのような接続の接続インスタンスを生成することができる。接続インスタンスには、ISVライブラリ814の一部としてのシステムパラメータを介して、ソフトウェアがそれにダウンロードされるどのマシンのアイデンティティでも含めることができる。そのような情報を利用して、所望のマシンを突き止め、所望のマシンおよびアダプタがアクセスを与えられているか、または正しく登録されていることを検証することができる。その呼出しに、クライアントを示す情報および/または他のISVからのメッセージが含まれる場合に、そのような情報を、さらに、接続インスタンスに含めることができる。この情報を利用して、クライアントおよびダウンロードされるソフトウェアを突き止め、検証することができる。さらに、接続IDおよび必要なダウンロードパラメータを、接続インスタンスにキーとして含め、使用することができ、ISVマネージャ810によって転送セッションを管理するのに使用することもできる。ISV側またはクライアント側の複数のマシンが、複数の分散マシンの一部として接続を要求できることを了解されたい。たとえば、ISVとエンドユーザとの間のダウンロードセッション中に、もう1つのISVが、既存のダウンロードセッションに加わり、キャッシングされたダウンロードヒストリを取り出して、そのようなダウンロードセッションを観察し、かつ/またはこれにかかわることができる。
図9に、本発明の一態様による分割ダウンロードの方法論900を示す。この例示的方法は、本明細書ではさまざまなイベントおよび/または行為を表す一連のブロックとして図示され、説明されるが、本発明は、そのようなブロックの図示の順序によって限定はされない。たとえば、一部の行為またはイベントは、本発明に従って、本明細書で示される順序付けとは別の、異なる順序でおよび/または他の行為もしくはイベントと同時に発生することができる。さらに、図示のブロック、イベント、または行為の一部が、本発明による方法論の実施に必要ではない場合がある。さらに、この例示的方法および本発明による他の方法を、図示され本明細書で説明される方法に関連してならびに図示されずまたは説明されない他のシステムおよび装置に関連して実施できることを了解されたい。
まず、符号910では、ソフトウェアまたはディジタルコンテンツの第1の部分が、第1のISVによってエンドユーザにダウンロードされつつある。次に、符号920で、第2のISVが、そのようなダウンロードの通知およびダウンロードされたソフトウェアの第1の部分を補足する要求を受信する。その後、符号930で、第2のISVが、ISVの第2の部分をエンドユーザにダウンロードする。したがって、エンドユーザは、その後、符号940で、ダウンロードされたアプリケーションを正しく実行することができ、このアプリケーションは、第1のISVおよび第2のISVによって分割形式でダウンロードされたものである。
ここで図10を参照すると、本発明のさまざまな態様を実装できる適切なコンピューティング環境の概要の全般的な説明が示されている。本発明を、上記では1つおよび/または複数のコンピュータで動作するコンピュータプログラムのコンピュータ実行可能命令の全般的な文脈で説明したが、当業者は、本発明を他のプログラムモジュールと組み合わせて実施することもできることを認めるであろう。一般に、プログラムモジュールは、特定のタスクを実行し、かつ/または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、この発明的方法を、単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータを含む他のコンピュータシステム構成、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのまたはプログラマブルな消費者エレクトロニクスなどを用いて実践できることを了解するであろう。前に説明したように、本発明の図示の態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。しかし、本発明の、すべてではないとしても一部の態様を、スタンドアロンのコンピュータで実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートとの両方のメモリストレージデバイスに配置することができる。例示的な環境には、処理ユニット1021と、システムメモリ1022と、システムメモリを含むさまざまなシステムコンポーネントを処理ユニット1021に結合するシステムバス1023とを含むコンピュータ1020が含まれる。処理ユニット1021は、さまざまな市販の利用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサアーキテクチャおよび他のマルチプロセッサアーキテクチャを処理ユニット1021として使用することもできる。
システムバスは、USB、IEEE1394、周辺バス、およびさまざまな市販バスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。システムメモリには、読取専用メモリ(ROM)1024およびランダムアクセスメモリ(RAM)1025を含めることができる。スタートアップ中などにコンピュータ1020内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BISO)が、ROM 1024に格納される。
コンピュータ1020は、さらに、ハードディスクドライブ1027と、たとえば取外し可能ディスク1029に対して読み書きする磁気ディスクドライブ1028と、たとえばCD−ROMディスク1031から読み取るかこれに書き込むもしくは他の光媒体に対して読み書きする光ディスクドライブ1030とを含む。ハードディスクドライブ1027、磁気ディスクドライブ1028、および光ディスクドライブ1030は、それぞれハードディスクドライブインターフェース1032、磁気ディスクドライブインターフェース1033、および光ドライブインターフェース1034によってシステムバス1023に接続される。ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ1020にデータ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージをもたらす。上記のコンピュータ可読媒体の説明は、ハードディスク、取外し可能磁気ディスク、およびCDに言及しているが、当業者は、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジなどのコンピュータによって読取可能な他の種類の媒体をも、例示的な動作環境で使用することができることと、さらに、すべてのそのような媒体が、本発明の方法を実行するためのコンピュータ実行可能命令を含むことができることを了解するに違いない。
オペレーティングシステム1035、1つまたは複数のアプリケーションプログラム1036、他のプログラムモジュール1037、およびプログラムデータ1038を含む複数のプログラムモジュールを、ドライブおよびRAM 1025に格納することができる。図示のコンピュータのオペレーティングシステム1035は、実質的にどの市販オペレーティングシステムにもすることができる。
ユーザは、キーボード1040と、マウス1042などのポインティングデバイスとを介してコンピュータ1020にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含めることができる。上記および他の入力デバイスは、しばしば、システムバスに結合されたシリアルポートインターフェース1046を介して処理ユニット1021に接続されるが、パラレルポート、ゲームポート、またはUSB(universal serial bus)などの他のインターフェースによって接続することができる。モニタ1047または他の種類のディスプレイデバイスも、ビデオアダプタ1048などのインターフェースを介してシステムバス1023に接続される。モニタに加えて、コンピュータは、通常、スピーカおよびプリンタなどの他の周辺出力デバイス(図示せず)を含む。
コンピュータ1020は、リモートコンピュータ1049などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ1049は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常は、コンピュータ1020に関して説明した構成要素の多数またはすべてを含むが、図10にはメモリストレージデバイス1050だけが示されている。図10に示された論理接続には、ローカルエリアネットワーク(LAN)1051および広域通信網(WAN)1052を含めることができる。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
LANネットワーキング環境で使用される時に、コンピュータ1020を、ネットワークインターフェースまたはネットワークアダプタ1053を介してローカルエリアネットワーク1051に接続することができる。WANネットワーキング環境で使用される時に、コンピュータ1020は、一般に、モデム1054を含むことができ、かつ/またはLAN上の通信サーバに接続され、かつ/またはインターネットなどの広域通信網1052上での通信を確立する他の手段を有する。モデム1054は、内蔵または外付けとすることができるが、シリアルポートインターフェース1046を介してシステムバス1023に接続することができる。ネットワーク化された環境では、コンピュータ1020に関して図示されたプログラムモジュールまたはその諸部分を、リモートメモリストレージデバイスに格納することができる。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることを了解されたい。
コンピュータプログラミングの当業者の実践によれば、本発明は、そうではないと示されない限り、コンピュータ1020などのコンピュータによって実行される行為とオペレーションの記号表現(symbolic representation)とに関して説明された。そのような行為およびオペレーションを、時々、コンピュータ実行されると称する。行為および記号表現されたオペレーションが、電気信号表現の結果の変換または変形を引き起こす、データビットを表す電気信号の処理ユニット1021による操作、これによってコンピュータシステムの動作を再構成するか他の形で変更するメモリシステム(システムメモリ1022、ハードドライブ1027、フロッピディスク1028、およびCD−ROM 1031を含む)内のメモリ位置でのデータビットの維持、ならびに信号の他の処理を含むことを了解されたい。そのようなデータビットが維持されるメモリ位置は、そのデータビットに対応する特定の電気的特性、磁気的特性、または光学的特性を有する物理位置である。
ここで図11を参照すると、本発明の一態様による分割ダウンロードを使用できるクライアント−サーバシステム1100が示されている。クライアント1120は、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティングデバイス)とすることができる。システム1100は、1つまたは複数のサーバ1140をも含む。サーバ1140は、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティングデバイス)とすることができる。たとえば、そのようなサーバ1140は、本発明を使用することによって変換を実行するスレッドを収容することができる。クライアント1120およびサーバ1140は、本発明に従って伝送されるデータパケットの形で、2つまたはそれ以上のコンピュータプロセスの間で通信することができる。図示のように、システム1100は、クライアント1120とサーバ1140との間の通信を容易にすることができる通信フレームワーク1180を含む。クライアント1120は、クライアント1120にローカルな情報を格納できる1つまたは複数のクライアントデータストレージ1110に機能的に接続される。さらに、クライアント1120は、サーバプロセスを実行するサーバコンピュータ1140に配置されるデータベース1160にアクセスし、これをアップデートすることができる。本発明の一態様では、通信フレームワーク1180をインターネットとすることができ、クライアントプロセスは、ウェブブラウザであり、サーバプロセスは、ウェブサーバである。したがって、通常のクライアント1120は、中央処理装置(CPU)、システムメモリ、パーソナルコンピュータをインターネットに接続するモデムまたはネットワークカード、およびディスプレイならびにキーボード、マウスなどの他のコンポーネントを有する従来のパーソナルコンピュータなどの汎用コンピュータとすることができる。同様に、通常のサーバコンピュータ1140は、大学もしくは会社のメインフレームコンピュータ、または専用ワークステーションなどとすることができる。
図12に、分割ダウンロードを使用してソフトウェアを購入し、配布する、システム1200の一例を示す。システム1200は、カスタマデバイス1208などのカスタマにソフトウェアを供給するように構成された複数のISV 1202を含む。各ISVは、ソフトウェアの諸部分を供給するように構成される。異なるISVによって供給される部分は、ダウンロードされ、その後、完全なソフトウェアをビルドするのに使用される。たとえば、カスタマデバイス1208には、ソフトウェアの諸部分のダウンロードを管理するダウンロードマネージャ(DLM)1210を含めることができる。
図12に示されているように、システム1200は、マーチャントオブレコード(MOR:merchant of record)1204、転送マネージャ(TM)1212、および許可されたマーチャント(AUM:authorized merchant)1206をも含む。MOR 1204は、ISV 1202によって供給されるソフトウェアの販売を管理し、サポートする責任を負うマーチャント(merchant)である。MOR 1204は、ISV 1202についてのトランザクションサポート、返品、支払いなどを処理するように構成することができる。たとえば、MOR 1204は、ソフトウェアの購入に関するカスタマデバイス1208からの要求を受信し、その購入のトランザクションを生成するように構成される。MOR 1204は、ISV 1202からレコードアップデートを受信するようにも構成される。このアップデートには、周期的トランザクション照会、請求情報などを含めることができる。TM 1212は、ファイル転送の要求および許可(authorization)を制御し、MOR 1204とISV 1202との間のデータ転送および請求情報を仲介するように構成される。AUM 1206は、MOR 1204の代わりに働くエージェントである。AUM 1206は、ISV 1202のエージェントとしての役割を除く、MOR 1204の役割のどれであっても引き受けることができる。AUMは、オプションのコンポーネントであり、MOR 1204は、カスタマデバイス1208と直接に相互作用することができる。
ソフトウェア購入シナリオの一例では、カスタマデバイス1208は、特定のソフトウェアの注文を含むメッセージ1251をAUM 1206に送信する。この注文には、ソフトウェアの識別子、量、クレジットカード情報、個人情報などを含めることができる。AUM 1206は、注文を受信し、その注文に関連する要求を含むメッセージ1252をMOR 1204に送信する。この要求には、カスタマの識別子、要求の識別子、地理的位置、注文などを含めることができる。MOR 1204は、この要求を受信し、この要求に関連するトランザクションを生成する。MOR 1204は、メッセージ1253を用いてこのトランザクションをTM 1212に送信する。メッセージ1253には、オリジナルの要求に含まれる情報、ならびに、MOR 1204の識別子、トランザクション識別子、通し番号(serial number)、カスタマに関連するデータ、状況情報などの他の情報を含めることができる。MOR 1204は、AUM 1206へのトランザクションに関係付けられる情報を含むメッセージ1257をAUM 1206に送信する。
TM 1212は、MOR 1204からトランザクションを受信し、そのトランザクションに関するメッセージ1254を適当なISV 1202に送信する。通常、TM 1212は、購入されるソフトウェアの諸部分を供給する特定のISVにトランザクションを送信する。それに応答して、その特定のISVは、ダウンロード許可および関連情報を含むメッセージ1255をTM 1212に送信し、このメッセージ1255には、ISV識別子、キー、許可データなどを含めることができる。TM 1212は、メッセージ1255を受信し、ダウンロード許可および関連情報をメッセージ1256でDLM 1210に送信する。MOR 1204は、購入レコード、ダウンロード位置、ソフトウェアのライセンスなど、注文に関する情報を含むメッセージ1258をカスタマデバイス1208に送信する。メッセージ1258は、電子メール、従来の郵便など、任意の種類の通信として送信することができる。DLM 1210は、ソフトウェアの諸部分を供給するISVから購入ソフトウェアをダウンロードするための、ISV 1202との通信1259を確立する。DLM 1210は、カスタマがソフトウェアをダウンロードすることを許可されることを確立するために、メッセージ1256から受信されたダウンロード許可をISVに供給する。
ダウンロードが完了した後に、DLM 1210は、確認を含むメッセージ1260をTM 1212に送信する。TM 1212は、ダウンロードを確認し、トランザクションを完了するために、メッセージ1261をISV 1202およびMOR 1204に送信する。
図13に、分割ダウンロードによって供給されるソフトウェアの注文を処理する一例のプロセス1300を示す。プロセス1300は、分割ダウンロードソフトウェア購入システムがソフトウェアの注文を処理するために、マーチャントオブレコードによって実施することができる。ブロック1302で、購入注文をカスタマから受信する。この注文は、カスタマのデバイスから直接にまたは許可されたマーチャントから受信することができる。ブロック1304で、ソフトウェア注文に関連するトランザクションを生成する。ブロック1306で、ソフトウェアの諸部分を供給する独立ソフトウェアベンダにトランザクションを送信する。ブロック1308で、ソフトウェアの購入情報およびダウンロード情報を判定する。ブロック1310で、購入情報およびダウンロード情報をカスタマに供給する。たとえば、この情報を、電子メールによってカスタマに供給することができる。通常、ダウンロード許可は、マーチャントオブレコードを通過することなく、別々のソースからカスタマに供給される。ブロック1312で、ソフトウェアがISVからダウンロードされた後に、カスタマから確認(confirmation)を受信する。ブロック1314で、ISVに関してトランザクションを完了する。
本発明を、ある示された態様に関して図示し、説明してきたが、本明細書および添付図面を読み、理解した時に、当業者が同等の変更および修正を思い浮かべるであろうことを了解されたい。具体的には、上記で説明したコンポーネント(アセンブリ、デバイス、回路、システムなど)によって実行されるさまざまな機能に関して、そのようなコンポーネントを記述するのに使用された用語(「手段(means)」への言及を含む)は、そうではないと示されない限り、開示された構造と構造的に同等でないものであっても、説明されたコンポーネントの指定された機能を実行し(たとえば、機能的に同等である)、本発明の本明細書で示された例示的態様の機能を実行するすべてのコンポーネントに対応することが意図されている。これに関して、本発明が、本発明のさまざまな方法の行為および/またはイベントを実行するコンピュータ実行可能命令を有するシステムならびにコンピュータ可読媒体を含むことも認められるであろう。さらに、用語「含む(includes、including)」、「有する(has、having)」、およびその変形が、この詳細な説明または特許請求の範囲の両方において使用される範囲で、これらの用語は、用語「備える(comprising)」に類似する形で包含的であることが意図されている)。
本発明の一態様によるダウンロード配布エンジンを示す概略ブロック図である。 本発明の一態様によるダウンロード配布エンジンと共にコンポーネントベースの環境を示す概略ブロック図である。 本発明の例示的態様による例示的なダウンロード配布エンジンを示す図である。 本発明の特定の態様に従ってダウンロードされたソフトウェア/ディジタルコンテンツの欠けている部分に関する情報を供給できる配布リゾルバを示す詳細なブロック図である。 本発明のさらなる態様によるダウンロード配布エンジンの一部としての監視システムを示す全体的なブロック図である。 本発明の特定の態様による、カスタマおよび/またはエンドユーザマシンに関係付けられる第1のISVおよび第2のISVの配置を示す図である。 本発明の特定の態様による、カスタマおよび/またはエンドユーザマシンに関係付けられる第1のISVおよび第2のISVの配置を示す図である。 本発明の一態様による第1のISVと第2のISVとの間の照会ステップの例示的シーケンスを示す図である。 本発明の一態様による、ダウンロードを分割できるISVの例示的アーキテクチャを示す図である。 エンドユーザにダウンロードされるソフトウェア/ディジタルコンテンツを第1のISVと第2のISVとの間で分割する例示的方法論を示す図である。 本発明のさまざまな態様を実装できる適切なコンピューティング環境の全般的な概要説明を示す図である。 本発明の一態様による、ダウンロード配布エンジンを使用できるクライアント−サーバシステムを示す図である。 分割ダウンロードを使用してソフトウェアを購入し、配布するシステムの一例を示す図である。 分割ダウンロードによって供給されるソフトウェアの注文を処理するプロセスの一例を示す図である。

Claims (2)

  1. 複数の独立ソフトウェアベンダ(ISV)サーバーからダウンロード配布エンジン経由でクライアントにデジタルコンテンツを分割ダウンロードする方法であって、
    前記デジタルコンテンツは、第1の部分および第2の部分から構成され、
    前記方法は、
    第1のISVサーバーが、前記デジタルコンテンツの第1の部分を送信するステップと、
    ダウンロード配布エンジンが、前記送信された第1の部分に基づいて、前記デジタルコンテンツの第2の部分がクライアントに送信される必要があることを判定するステップと、
    ダウンロード配布エンジンが、前記判定された第2の部分を受信するためのリアルタイムハイパーリンクを前記クライアントに提供するステップと、
    前記クライアントが、前記リアルタイムハイパーリンクを使用して、第2のISVサーバーに前記第2の部分のダウンロードを要求するステップと、
    第2のISVサーバーが、前記デジタルコンテンツの第2の部分をクライアントに送信するステップと
    を含むことを特徴とする方法。
  2. 複数の独立ソフトウェアベンダ(ISV)サーバーからダウンロード配布エンジン経由でクライアントにデジタルコンテンツを分割ダウンロードするためのコンピュータープログラムであって、
    前記デジタルコンテンツは、第1の部分および第2の部分から構成され、
    前記コンピュータープログラムは、
    第1のISVサーバーが、前記デジタルコンテンツの第1の部分を送信するステップと、
    ダウンロード配布エンジンが、前記送信された第1の部分に基づいて、前記デジタルコンテンツの第2の部分がクライアントに送信される必要があることを判定するステップと、
    ダウンロード配布エンジンが、前記判定された第2の部分を受信するためのリアルタイムハイパーリンクを前記クライアントに提供するステップと、
    前記クライアントが、前記リアルタイムハイパーリンクを使用して、第2のISVサーバーに前記第2の部分のダウンロードを要求するステップと、
    第2のISVサーバーが、前記デジタルコンテンツの第2の部分をクライアントに送信するステップと
    を含む方法をコンピューターに実行させることを特徴とするコンピュータープログラム。
JP2008514640A 2005-05-31 2006-04-21 電子ソフトウェアダウンロード用の分割ダウンロード Expired - Fee Related JP5007301B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US68636805P 2005-05-31 2005-05-31
US60/686,368 2005-05-31
US11/246,512 US20060271926A1 (en) 2005-05-31 2005-10-07 Split download for electronic software downloads
US11/246,512 2005-10-07
PCT/US2006/015331 WO2006130265A2 (en) 2005-05-31 2006-04-21 Split download for electronic software downloads

Publications (3)

Publication Number Publication Date
JP2008542909A JP2008542909A (ja) 2008-11-27
JP2008542909A5 JP2008542909A5 (ja) 2009-06-18
JP5007301B2 true JP5007301B2 (ja) 2012-08-22

Family

ID=37464929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008514640A Expired - Fee Related JP5007301B2 (ja) 2005-05-31 2006-04-21 電子ソフトウェアダウンロード用の分割ダウンロード

Country Status (15)

Country Link
US (1) US20060271926A1 (ja)
EP (1) EP1889156A4 (ja)
JP (1) JP5007301B2 (ja)
KR (1) KR20080013862A (ja)
AU (1) AU2006252906B2 (ja)
BR (1) BRPI0610096A2 (ja)
CA (1) CA2603192A1 (ja)
EG (1) EG25573A (ja)
IL (1) IL186067A0 (ja)
NO (1) NO20074871L (ja)
NZ (1) NZ561944A (ja)
RU (1) RU2424552C2 (ja)
SG (1) SG162729A1 (ja)
TW (1) TW200703030A (ja)
WO (1) WO2006130265A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156485B2 (en) * 2004-12-03 2012-04-10 Google Inc. Method and apparatus for creating a pluggable, prioritized configuration engine to be used for configuring a software during installation, update and new profile creation
US7818734B2 (en) 2005-01-21 2010-10-19 Callwave, Inc. Methods and systems for transferring data over a network
EP2109981B1 (en) * 2007-01-17 2014-11-26 Intertrust Technologies Corporation Methods, systems, and apparatus for fragmented file sharing
US8700645B2 (en) * 2007-08-17 2014-04-15 Salesforce.Com, Inc. On-demand database service system, method, and computer program product for validating a developed application
US8296402B2 (en) * 2009-04-07 2012-10-23 National Instruments Corporation Determining and downloading portions of a software application in a computer system
US9424399B2 (en) 2009-05-12 2016-08-23 Microsoft Technology Licensing, Llc Availability of permission models in roaming environments
US10656931B2 (en) * 2009-05-26 2020-05-19 Comcast Cable Communications, Llc Network event triggered software updates
US10846396B1 (en) * 2011-05-25 2020-11-24 Hewlett-Packard Development Company, L.P. Downloading data in a dedicated virtual machine
US8893116B2 (en) * 2012-01-15 2014-11-18 Microsoft Corporation Installation engine and package format for parallelizable, reliable installations
EP2917831B1 (en) 2012-12-12 2016-11-02 Huawei Technologies Co., Ltd. Multi-screen application enabling and distribution service
CN103327108B (zh) * 2013-06-26 2016-12-28 浙江大学城市学院 一种基于云的跨平台的软件管理平台及其构建方法
CN105094900A (zh) * 2015-07-13 2015-11-25 小米科技有限责任公司 一种下载控制程序的方法及装置
US10671384B1 (en) * 2017-12-07 2020-06-02 Amazon Technologies, Inc. Proactive seeding of build Artifacts
US11409511B2 (en) 2018-12-31 2022-08-09 Beijing Didi Infinity Technology And Development Co., Ltd. Method and system for downloading information
WO2020142072A1 (en) * 2018-12-31 2020-07-09 Didi Research America, Llc Method and system for downloading information
CN116074305A (zh) * 2021-10-30 2023-05-05 华为技术有限公司 应用下载安装方法、应用老化方法及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6842896B1 (en) * 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
JP3764311B2 (ja) * 1999-10-29 2006-04-05 シャープ株式会社 ネットワーク接続された情報処理装置の周辺機器およびデバイスドライバのバージョン管理方法
US6606744B1 (en) * 1999-11-22 2003-08-12 Accenture, Llp Providing collaborative installation management in a network-based supply chain environment
JP2002182764A (ja) * 2000-12-08 2002-06-26 Nec Corp Aspポータルサーバおよび該サーバを用いたソフトウェア提供方法、aspソフトウェア提供システム
JP2003022328A (ja) * 2001-07-06 2003-01-24 Computer Wave Inc ソフトウェア提供システムおよび仲介サーバ
US20030233455A1 (en) * 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
US7555559B2 (en) * 2003-02-28 2009-06-30 Onion Networks, KK Parallel data transfer over multiple channels with data order prioritization
JP4402411B2 (ja) * 2003-09-22 2010-01-20 大日本印刷株式会社 デジタルコンテンツの提供方法および提供装置
US7434102B2 (en) * 2004-12-29 2008-10-07 Intel Corporation High density compute center resilient booting

Also Published As

Publication number Publication date
EP1889156A4 (en) 2009-02-11
BRPI0610096A2 (pt) 2008-12-09
RU2007144714A (ru) 2009-06-10
NO20074871L (no) 2008-02-06
CA2603192A1 (en) 2006-12-07
EG25573A (en) 2012-03-06
KR20080013862A (ko) 2008-02-13
US20060271926A1 (en) 2006-11-30
EP1889156A2 (en) 2008-02-20
JP2008542909A (ja) 2008-11-27
WO2006130265A3 (en) 2007-11-22
AU2006252906A1 (en) 2006-12-07
AU2006252906B2 (en) 2011-07-28
WO2006130265A2 (en) 2006-12-07
TW200703030A (en) 2007-01-16
SG162729A1 (en) 2010-07-29
IL186067A0 (en) 2008-01-20
NZ561944A (en) 2010-04-30
RU2424552C2 (ru) 2011-07-20

Similar Documents

Publication Publication Date Title
JP5007301B2 (ja) 電子ソフトウェアダウンロード用の分割ダウンロード
US11481396B2 (en) Executing untrusted commands from a distributed execution model
US10698897B2 (en) Executing a distributed execution model with untrusted commands
US6065046A (en) Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US8275827B2 (en) Software-based network attached storage services hosted on massively distributed parallel computing networks
CN113711536A (zh) 从区块链网络中提取数据
EP1636711B1 (en) System and method for distribution of software licenses in a networked computing environment
US20060080389A1 (en) Distributed processing system
US20040111505A1 (en) Method, system, and article of manufacture for network management
CN114666412A (zh) 混合云计算系统中的访问服务
US20070271584A1 (en) System for submitting and processing content including content for on-line media console
JP2004302741A (ja) グリッドコンピューティングを用いたシステムにおけるリソース提供方法,そのシステムにおける監視装置,その監視装置用プログラムおよびそのシステムにおけるリソース提供端末用プログラム
JP2017507381A (ja) 自動化された実験プラットホーム
US9785928B1 (en) Virtualized administration of software use authorization
CN101167072A (zh) 软件许可/商业数字分发策略的补充信任模型
CN114730312A (zh) 从异构数据源创建的受管物化视图
JP2024501401A (ja) 非集中型のブロードキャスト暗号化および鍵生成ファシリティ
CN100555221C (zh) 用于电子软件下载的拆分下载系统
US10346149B1 (en) System and method for managing asset-side offering modules
US10339573B1 (en) System and method for providing web service interfaces
US11734058B2 (en) Systems and methods of a virtualized management operation engine of a distributed system
MX2007013603A (en) Split download for electronic software downloads
JP2004295364A (ja) データベースアクセスシステム及び方法、データベースアクセスサーバ、ならびに、コンピュータプログラム
Browne Analysis of deployment techniques for webbased applications in SMEs
Davies et al. Managing WebSphere Message Broker Resources in a Production Environment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120404

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120528

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

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees