JP2012504276A - 単一群のインターネット・ホスティング・マシンによって提供される複数の並列ユーザ・エクスペリエンス - Google Patents
単一群のインターネット・ホスティング・マシンによって提供される複数の並列ユーザ・エクスペリエンス Download PDFInfo
- Publication number
- JP2012504276A JP2012504276A JP2011529065A JP2011529065A JP2012504276A JP 2012504276 A JP2012504276 A JP 2012504276A JP 2011529065 A JP2011529065 A JP 2011529065A JP 2011529065 A JP2011529065 A JP 2011529065A JP 2012504276 A JP2012504276 A JP 2012504276A
- Authority
- JP
- Japan
- Prior art keywords
- web application
- version
- request
- subdirectory
- applicable
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本開示では、ホスティング装置を使用して、複数のバージョンの単一のウェブ・アプリケーションを提供する技法を説明する。以下で詳細に説明するように、ホスティング装置は、ウェブ・アプリケーションの様々なバージョンに関連する資源を、様々なサブディレクトリ内に記憶する。ホスティング装置は、ウェブ・アプリケーションに関連する要求を受信すると、ウェブ・アプリケーションの各バージョンのうちの1つのバージョンを、このウェブ・アプリケーションの適用可能なバージョンとして自動的に識別する。ホスティング装置は、ウェブ・アプリケーションの適用可能なバージョンを記憶するサブディレクトリのサブディレクトリ名を含むように、要求内のパス名を書き換える。次いで、ホスティング装置は、書き換えられたパス名によって識別された資源を逆参照する。このようにして、ホスティング装置は、ウェブ・アプリケーションの適用可能なバージョンの資源を使用して、要求を処理する。
Description
ウェブ・アプリケーションは、インターネットまたはイントラネットなどのネットワーク上で、ウェブ・ブラウザを介してアクセスされるアプリケーションである。ウェブ・アプリケーションは、今日のビジネス世界では不可欠なツールである。例えば、販売員は、自分のパーソナル・コンピュータ上の自分のウェブ・ブラウザを使用して、売上データベースに売上高を入力するために、自分の会社が提供するウェブ・アプリケーションにアクセスすることができる。他の例では、大学生は、自分のパーソナル・コンピュータ上のウェブ・ブラウザを使用して、授業を登録するために、自分の大学が提供するウェブ・アプリケーションにアクセすることができる。
多くの状況において、ウェブ・アプリケーション・プロバイダは、様々なバージョンのウェブ・アプリケーションを様々なグループのユーザに提供しようと望むことがある。例えば、多国間の販売力を有する会社であれば、その欧州の販売員には第1のバージョンの売上高入力ウェブ・アプリケーションを提供し、その北米の販売員には第2のバージョンの売上高入力ウェブ・アプリケーションを提供しようと望むことがある。この例では、様々なバージョンのウェブ・アプリケーションが、様々なデータを収集して、様々な規定に準拠してもよい。他の例では、ウェブ・アプリケーション・プロバイダが、不特定多数の人々には現行バージョンのウェブ・アプリケーションを提供し続けながら、一群のベータ・ユーザには更新バージョンのウェブ・アプリケーションを提供しようと望むことがある。
様々なバージョンのウェブ・アプリケーションを実施するために、ウェブ・アプリケーション・プロバイダは、ソフトウェア・モジュール、画像、ビデオなど様々なバージョンの同等な資源を実装する必要が生じることがある。さらに、ウェブ・アプリケーション・プロバイダは、様々なバージョンの同等なソフトウェア・モジュールを実装する必要が生じることがあるので、ウェブ・アプリケーション・プロバイダは、様々なバージョンの同等なソフトウェア・モジュールを、様々な一群の物理的なホスティング装置にインストールする必要が生じることがある。例えば、ウェブ・アプリケーション・プロバイダは、第1のバージョンのウェブ・アプリケーションによって必要とされるソフトウェア・モジュールを、第1の一群の物理的なホスティング装置上にインストールする必要が生じることがあり、第2のバージョンのウェブ・アプリケーションによって必要とされるソフトウェア・モジュールを、第2の一群の物理的なホスティング装置上にインストールする必要が生じることがある。ウェブ・アプリケーション・プロバイダが、様々なバージョンの同等なソフトウェア・モジュールを様々な一群の物理的なホスティング装置にインストールする必要が生じることがあるというのも、これら様々なバージョンのウェブ・アプリケーションに関連する同等な資源が、同じファイル名を有することがあり、したがって、ファイル・システム・ディレクトリ構造内の同じ場所に記憶することができないからである。
この課題を解決するための手段は、発明を実施するための形態において以下でさらに説明する簡略化された形態での選ばれた概念を紹介するために提供される。この課題を解決するための手段は、特許請求される主題の重要な特徴または不可欠な特徴を識別するものではなく、特許請求される主題の範囲を限定するために使用されるものでもない。
本開示は、単一のホスティング装置を使用して、複数のバージョンの単一ウェブ・アプリケーションを提供する技法を説明する。以下で詳細に記述するように、ホスティング装置は、様々なディレクトリ内の様々なバージョンのウェブ・アプリケーションに関連する資源を記憶する。ホスティング装置は、クライアント装置からウェブ・アプリケーションに関連する要求を受信すると、このウェブ・アプリケーションの適用可能なバージョンとして、ウェブ・アプリケーションの各バージョンのうちの1つのバージョンを自動的に識別する。ホスティング装置は、ウェブ・アプリケーションの適用可能なバージョンを記憶するサブディレクトリのサブディレクトリ名を含むように、要求内のパス名を書き換える。次いで、ホスティング装置は、書き換えられたパス名によって識別された資源を逆参照する。このようにして、ホスティング装置は、ウェブ・アプリケーションの適用可能なバージョンの資源を使用して、要求を処理する。
全般に、本開示は、単一のホスティング装置を使用して、複数のバージョンの単一ウェブ・アプリケーションを提供する技法を説明する。ウェブ・アプリケーションのバージョンのそれぞれが、互いに異なるユーザ・エクスペリエンスを提供してもよい。以下の記述では、様々な例を説明する。これらの例は、説明するために提供されるものであり、特許請求の範囲に記載の範囲を限定することを明示するものでもなく、または意味するものでもないことを理解すべきである。
図1は、例示的なシステム2を示すブロック図である。図1の例で示すように、システム2は、複数のバージョンのウェブ・アプリケーションをホスティングするホスティング装置4を含む。ホスティング装置4は、場合によっては複数の別々の物理ユニットに分割してもよい物理的な電子コンピューティング装置である。こうした場合、これらの物理的なユニットは、バス技術、相互接続技術、ネットワーク技術、および他の通信技術を含め、様々な通信技術を使用して互いに通信してもよい。例えば、ホスティング装置4は、単一の独立型サーバ装置、一群のサーバ装置、サーバ・ブレード、または他のタイプの物理的な電子コンピューティング装置でもよい。
本開示で使用されているように、用語「ウェブ・アプリケーション」は、インターネットまたはイントラネットなどのネットワーク上で、ウェブ・ブラウザを介してアクセスされるアプリケーションを指す。ホスティング装置4は、多種多様な異なるタイプのウェブ・アプリケーションをホスティングしてもよい。例えば、ホスティング装置4は、ビジネス・プロセス用のウェブ・アプリケーション、電子メール用のウェブ・アプリケーション、電子カレンダー用のウェブ・アプリケーション、電子協働用のウェブ・アプリケーション、および他のタイプのウェブ・アプリケーションをホスティングしてもよい。一具体例では、ホスティング装置4は、Microsoft Office Live Workspaceの協働アプリケーション・ツールに基づいて複数のバージョンのウェブ・アプリケーションをホスティングする。
ホスティング装置4は、階層ディレクトリ・システムを記憶するコンピュータ読取り可能な記憶媒体を含む。ディレクトリ構造は、一群のサブディレクトリを含む。サブディレクトリのそれぞれが、サブディレクトリ名に関連している。例えば、第1のサブディレクトリが、サブディレクトリ名「root/version_2008_01/」に関連付けられ、第2のサブディレクトリが、サブディレクトリ名「root/version_2008_02/」に関連付けられてもよい。
この一群のディレクトリ内の各サブディレクトリ内には、同じウェブ・アプリケーションの異なるバージョンに関連付けられた異なる一群の資源が記憶される。言い換えれば、ディレクトリ・システムの第1のサブディレクトリ内には、ウェブ・アプリケーションの第1のバージョンと関連付けられた第1の一群の資源が記憶され、ディレクトリ・システムの第2のサブディレクトリ内には、ウェブ・アプリケーションの第2のバージョンと関連付けられた第2の一群の資源などが記憶される。
サブディレクトリのそれぞれにある資源は、多種多様な異なるタイプの資源でもよい。例えば、サブディレクトリのうちの第1のサブディレクトリ内の資源には、画像ファイル、オーディオ・ファイル、ビデオ・ファイル、ハイパテキスト・マーク付け言語(HTML)ファイル、ジャバスクリプトのスクリプト、VBスクリプトのスクリプト、拡張可能なマーク付け言語(XML)の文書、ダイナミック・リンク・ライブラリ(DLL)のファイル、ASP.NETのページ、段階スタイルシートのファイル、構成ファイル、ジャバ・アプレット、ActiveXのオブジェクト、共通ゲートウェイ・インタフェース(CGI)のスクリプト、PHPスクリプト、および他のタイプの資源が含まれ得る。
ウェブ・アプリケーションの各バージョンは、そのウェブ・アプリケーションについての互いに異なるユーザ・エクスペリエンスを提供するように設計される。言い換えれば、ウェブ・アプリケーションの第1のバージョンが、第1のユーザ・エクスペリエンスを提供するように設計され、ウェブ・アプリケーションの第2のバージョンが、第2のユーザ・エクスペリエンスなどを提供するように設計される。ウェブ・アプリケーションの様々なバージョンによって提供されるユーザ・エクスペリエンスは、様々に異なっていてもよい。例えば、ウェブ・アプリケーションの様々なユーザ・エクスペリエンスは、様々な機能、様々な概観、様々なユーザ・インターフェース、および他の様々な特徴を提供してもよい。一具体例では、売上高入力ウェブ・アプリケーションの第1のユーザ・エクスペリエンスが、ウェブ・アプリケーションの第1のバージョンによって提供されるウェブ・ページに売上高データを入力するときに、特定のデータを入力するようユーザに要求してもよく、また売上高入力ウェブ・アプリケーションの第2のバージョンによって提供される第2のユーザ・エクスペリエンスが、ウェブ・アプリケーションの第2のバージョンによって提供される同等のウェブ・ページに売上高データを入力するときに、特定のデータを入力するようユーザに要求しなくてもよい。
システム2はまた、クライアント装置6を含む。クライアント装置6は、多種多様な異なるタイプの電子コンピューティング装置でもよい。例えば、クライアント装置6は、パーソナル・コンピュータ、携帯電話、パーソナル・メディア・プレーヤ、ネットワーク機器、中間ネットワーク装置、メインフレーム・コンピュータ、車両組込み装置、ラップトップ・コンピュータ、テレビのセットトップ・ボックス、ハンドヘルド・コンピューティング装置、または他のタイプのコンピューティング装置でもよい。
さらに、システム2は、ネットワーク8を含む。ネットワーク8は、クライアント装置6とホスティング装置4の間の通信を容易にする電子通信ネットワークである。ネットワーク8は、多種多様な異なるタイプの電子通信ネットワークでもよい。例えば、ネットワーク8は、インターネット、イントラネット、ローカルエリア・ネットワーク、広域ネットワーク、パーソナルエリア・ネットワーク、アド・ホック・ネットワーク、または他のタイプのネットワークでもよい。さらに、ネットワーク8には、無線および/または有線の通信リンクが含まれ得る。例えば、イーサネット(登録商標)、WiFi、WiMax,ブルートゥース、符号分割多元接続(CDMA)、および他の通信プロトコルを含め、ネットワーク8内のリンク上では様々な通信プロトコルを使用してもよい。
クライアント装置6は、ブラウザ10を含む。ブラウザ10は、クライアント装置6上で実行される、インターネット・ブラウジング・アプリケーションである。例えば、ブラウザ10は、Microsoft INTERNET EXPLORER「登録商標」インターネット・ブラウザ、Mozilla Firefoxインターネット・ブラウザ、Google Chromeインターネット・ブラウザ、Apple Safariインターネット・ブラウザ、Operaインターネット・ブラウザ、BlackBerryインターネット・ブラウザ、または他のタイプのインターネット・ブラウザのうちの一例でよい。
クライアント装置6のユーザ12は、ブラウザ10を使用して、ホスティング装置4によってホスティングされているウェブ・アプリケーションと対話してもよい。ホスティング装置4によってホスティングされているウェブ・アプリケーションとの対話を開始するために、ブラウザ10は、ネットワーク8を介して、このウェブ・アプリケーションに関連する要求をホスティング装置4に送信する。例えば、ユーザ12は、ブラウザ10によって生成されるユーザ・インターフェースのアドレス・バーにURL(Uniform Resource Locator)を入力する。この例では、URLは、ホスティング装置4に関連するホスト名、およびウェブ・アプリケーションに関連するパス名を指定する。例えば、ユーザは、ブラウザ10によって生成されるユーザ・インターフェースのるアドレス・バーに、URL「http://www.example.com/myWebApp/origin.aspx」を入力してもよい。この場合、URLのドメイン名部分は「www.example.com」であり、パス名は「myWebApp/origin.aspx」である。さらに、この例では、ブラウザ10は、URLの入力に応答して、ハイパーテキスト転送プロトコル(HTTP)要求メッセージを生成し、ネットワーク8を介してホスティング装置4に送信する。この例では、HTTP要求メッセージは、ホスティング装置4に関連するホスト名、およびウェブ・アプリケーションに関連するパス名を指定してもよい。例えば、ユーザが、ブラウザ10によって生成されるユーザ・インターフェースのアドレス・バーに、URL「http://www.example.com/myWebApp/origin.aspx」を入力した場合、ブラウザ10は、以下のHTTP要求メッセージを生成し送信してもよい。すなわち、
GET /myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
GET /myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
ホスティング装置4は、要求に応答して、ウェブ・アプリケーションの一群のバージョンから、ウェブ・アプリケーションの適用可能なバージョンを自動的に識別する。以下に述べるように、ホスティング装置4は、様々な方式で、ウェブ・アプリケーションの適用可能なバージョンを自動的に識別してもよい。例えば、ホスティング装置4は、クライアント装置6のユーザがドイツ語を使用するようにブラウザ10を設定したとき、適用可能なバージョンとしてウェブ・アプリケーションの第1のバージョンを自動的に識別してもよく、クライアント装置6のユーザがロシア語を使用するようにブラウザ10を設定したとき、適用可能なバージョンとしてウェブ・アプリケーションの第2のバージョンを自動的に識別してもよい。
ウェブ・アプリケーションの適用可能なバージョンを識別した後に、ホスティング装置4は、要求内のパス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を含むサブディレクトリのサブディレクトリ名を含むように、要求を書き換える。例えば、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を含むサブディレクトリのサブディレクトリ名は「root/version_2008_02」でよく、初めのHTTP要求は以下でもよい。すなわち、
GET /myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
この例では、ホスティング装置4は、この要求を書き換えてもよく、結果として以下のHTTP要求になる。すなわち、
GET /root/version_2008_02/myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
GET /myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
この例では、ホスティング装置4は、この要求を書き換えてもよく、結果として以下のHTTP要求になる。すなわち、
GET /root/version_2008_02/myWebApp/origin.aspx HTTP/1.1
Host: www.example.com
ホスティング装置4は、要求を書き換えた後に、書き換えられた要求によって指定されたパス名で識別された資源を逆参照する。本開示で使用されているように、「逆参照する」という表現は、参照識別子によって識別された資源を得ることを意味する。資源を逆参照することは、コンピュータ読取り可能な記憶媒体上に記憶された資源を検索するのと同じくらい簡単でもよい。他の場合では、逆参照することは、資源を得るために1つまたは複数のスクリプトもしくはアセンブリを実行することを要求してもよい。
ホスティング装置4は、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように、要求内のパス名を書き換えるので、またウェブ・アプリケーションの適用可能なバージョンは、要求毎に異なってもよいので、ホスティング装置4は、同じパス名を指定する2つの要求を受け取るときに、2つの異なる資源を逆参照してもよい。例えば、第1のユーザが、URL「http://www.example.com/root/myWebApp/origin.aspx」を、第1のユーザのブラウザのアドレス・バーに入力し、第2のユーザが、同一のURLを第2のユーザのブラウザのアドレス・バーに入力してもよい。結果として生じる2つの要求を受信すると、ホスティング装置4は、2つの異なる資源を逆参照してもよいが、それは、第1のユーザおよび第2のユーザが、ウェブ・アプリケーションの互いに異なる適用可能なバージョンを有してもよいからである。
ホスティング装置4は、書き換えられた要求によって指定されたパス名で識別された資源を逆参照した後に、この資源をクライアント装置6に送信してもよい。例えば、ホスティング装置4は、1つまたは複数のヘッダ・フィールドと資源を含む本体とを含むHTTP応答を送信してもよい。この例では、ネットワーク8上で伝送するために、HTTP応答を複数のデータ・パケットに分割してもよい。
図2は、ホスティング装置4の例示的な論理コンポーネントを示すブロック図である。図2の例に示すように、ホスティング装置4は、ファイルを編成するためのディレクトリの階層を表すディレクトリ構造30を含む。ディレクトリ構造30は、FAT32、NTFS、HPFS、Googleファイル・システム、階層型ファイル・システム・プラス(HFS+)、または他のタイプのファイル・システムを含むが、それらには限定されない、様々なファイル・システム・アーキテクチャを使用して実施してもよい。
ディレクトリ構造30は、サブディレクトリ32Aおよび32Bを含む。サブディレクトリ32Aは、サブディレクトリ32Bの下位ディレクトリまたは上位ディレクトリではない。しかし、サブディレクトリ32Aおよびサブディレクトリ32Bは、すぐ上の単一の親ディレクトリの子ディレクトリでもよい。サブディレクトリ32Aおよびサブディレクトリ32Bは、サブディレクトリ名に関連している。例えば、サブディレクトリ32Aが、サブディレクトリ名「version_2008_01」に関連付けられ、サブディレクトリ32Bが、サブディレクトリ名「version_2008_02」に関連付けられてもよい。図2の例には示していないが、サブディレクトリ32Aおよびサブディレクトリ32Bには、さらに1つまたは複数の下位ディレクトリなどを含んでもよい、1つまたは複数の子ディレクトリが含まれ得る。サブディレクトリ32Aおよびサブディレクトリ32Bが下位サブディレクトリを含む場合には、サブディレクトリ32Aの下位サブディレクトリ、およびサブディレクトリ32Bの下位サブディレクトリの構造が同じでもよい。
サブディレクトリ32Aは、ウェブ・アプリケーションの第1のバージョンに関連する一群の資源34Aを記憶する。サブディレクトリ32Bは、ウェブ・アプリケーションの第2のバージョンに関連する一群の資源34Bを記憶する。前述の通り、資源34Aおよび資源34Bは、DLL、スクリプト、画像ファイル、ビデオ・ファイル、オーディオ・ファイルなどを含むが、それらには限定されない、多種多様な異なるタイプの資源でよい。図2の例には示していないが、ディレクトリ構造30は、ウェブ・アプリケーションのさらなるバージョンに関連する資源を含む、さらなるサブディレクトリを含んでもよい。
場合によっては、資源34Aのうちの1つが、資源34Bのうちの1つとファイル名が同じでもよいが、動作は異なっていてもよい。例えば、資源34Aが、「salesEntry.dll」と名付けられたファイルを含んでもよく、資源34Bが、「saleEntry.dll」と名付けられたファイルを含んでもよい。「saleEntry.dll」と名付けられたこれら2つのファイルは、異なる機能を提供してもよい。他の例では、資源34Aのそれぞれが、資源34B内の同等に名付けられた資源に対応してもよい。
図2の例では、ホスティング装置4は、ウェブ・アプリケーションのバージョンとユーザのグループとを関連付ける情報を記憶するグループ・データベース36を含む。例えば、グループ・データベース36は、一群のルールを記憶してもよく、そのルールのそれぞれが、ウェブ・アプリケーションの事前条件およびバージョン指定する。この場合、ルールによって指定された事前条件が真のとき、ウェブ・アプリケーションのバージョンは、このウェブ・アプリケーションの適用可能なバージョンであると判定されてもよい。グループ・データベース36は、多種多様な事前条件に基づいて多種多様なルールを記憶してもよく、その事前条件のうちのあるものは、ホスティング装置4が受信する要求のコンテンツに依存してもよく、また依存しなくてもよい。
第1の例では、HTTP要求は、HTTP応答について受入れ可能な1つまたは複数の言語を指定する「Accept−Language」ヘッダを含んでもよい。この第1の例では、グループ・データベース36には、「ドイツ語」を指定する「Accept−Language」ヘッダをHTTP要求が含むときに、ウェブ・アプリケーションの適用可能なバージョンがこのウェブ・アプリケーションの第1のバージョンであることを示すルールが含まれ得る。この第1の例では、グループ・データベース36にはまた、「英語」を指定する「Accept−Language」ヘッダをHTTP要求が含むときに、ウェブ・アプリケーションの適用可能なバージョンがこのウェブ・アプリケーションの第2のバージョンであることを示すルールが含まれ得る。この第1の例では、ウェブ・アプリケーションの第1のバージョンおよび第2のバージョンは、同じユーザ・エクスペリエンスの単なる変換ではない、互いに異なるユーザ・エクスペリエンスを提供してもよい。
第2の例では、HTTP要求は、ユーザ・エージェントのユーザ・エージェント・ストリングを指定する「User−Agent」ヘッダを含んでもよい。この場合、グループ・データベース36は、ユーザ・エージェントがMozilla Firefoxインターネット・ブラウザであることを指定する「User−Agent」ヘッダをHTTP要求が含むときに、ウェブ・アプリケーションの適用可能なバージョンがこのウェブ・アプリケーションの第1のバージョンであることを示すルールを含んでもよい。この場合、グループ・データベース36はまた、ユーザ・エージェントがInternet Explorerインターネット・ブラウザであることを指定する「User−Agent」ヘッダをHTTP要求が含むときに、ウェブ・アプリケーションの適用可能なバージョンがこのウェブ・アプリケーションの第2のバージョンであることを示すルールを含んでもよい。
第3の例では、ユーザは、ウェブ・アプリケーションにアクセスするために、ホスティング装置4にログインするよう要求されてもよい。この第3の例では、グループ・データベース36には、ユーザそれぞれの好みを指定するプリファレンス・データが含まれ得る。例えば、第1のユーザが、ウェブ・アプリケーションの第1のバージョンを使用することを好んでもよく、また第2のユーザが、ウェブ・アプリケーションの第2のバージョンを使用することを好んでもよい。状況によっては、グループ・データベース36内の1つのルールは、ユーザにとってのウェブ・アプリケーションの適用可能なバージョンがウェブ・アプリケーションの第1のバージョンであることを示すことがあるが、そのユーザの好みは、ユーザがウェブ・アプリケーションの第2のバージョンを使用することを好んでいることを示すことがある。これらの状況では、ユーザの好みが、より重要になることがある。したがって、ユーザは、ウェブ・アプリケーションの第2のバージョンを使用することを優先して、ウェブ・アプリケーションの第1のバージョンを使用しないことを事実上選択してもよく、またウェブ・アプリケーションの第1のバージョンと、ウェブ・アプリケーションの第2のバージョンとの間で使用を切り替えてもよい。多くのユーザが現行のユーザ・インターフェースを好んでいるときに、ウェブ・アプリケーション・プロバイダが、新規のユーザ・インターフェースを有するウェブ・アプリケーションのバージョンを世に出そうとしていると、これらの状況が頻繁に生じることがある。
グループ・データベース36内のルールは、様々な目的のために構築されてよい。第1の例では、ウェブ・アプリケーションの新規のバージョンは、第1の地理的領域で使用する準備が整っているが、第2の地理的領域で使用する準備が整っていないことがある。この第1の例では、グループ・データベース36内のルールは、第2の地理的領域内のユーザがウェブ・アプリケーションの既存のバージョンを使い続けながら、第1の地理的領域内のユーザがウェブ・アプリケーションの新規バージョンを使用できるように構築されてもよい。これにより、ウェブ・アプリケーションのプロバイダは、世界的な進出を待つことなく、ウェブ・アプリケーションの新規バージョンを第1の地理的領域内の市場に迅速に送り出すことが可能になる。第2の例では、プロバイダは、ウェブ・アプリケーションの既存バージョンの提供を続けながら、ウェブ・アプリケーションの新規バージョンにベータ・テストを実行していてもよい。この第2の例では、グループ・データベース36内のルールは、ベータ・テストを自発的に行ったユーザがウェブ・アプリケーションの新規バージョンと対話することができ、他のユーザがウェブ・アプリケーションの既存バージョンと対話し続けることができるように構築されてもよい。これらの例では、ウェブ・アプリケーションの新旧バージョンについて議論しているが、ウェブ・アプリケーションのバージョンは、こうした関係である必要はない。
ホスティング装置4はまた、バージョン・モジュール38を含む。バージョン・モジュール38は、ウェブ・アプリケーションに関連する要求を受信する。この要求を受信することに応答して、バージョン・モジュール38は、ウェブ・アプリケーションの適用可能なバージョンを自動的に識別する。図2の例では、バージョン・モジュール38は、グループ・データベース36内の情報を使用して、クライアント装置6のユーザに関連するウェブ・アプリケーションのバージョンを識別する。例えば、グループ・データベース36が、ウェブ・アプリケーションの適用可能なバージョンを示す一群のルールを使用する場合、バージョン・モジュール38は、このルールを要求に自動的に適用することにより、ウェブ・アプリケーションの適用可能なバージョンを自動的に識別してもよい。
バージョン・モジュール38がウェブ・アプリケーションの適用可能なバージョンを自動的に識別した後に、ホスティング装置4内の要求書換えモジュール40は、要求内に含まれるパス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように、要求を書き換えてもよい。例えば、ウェブ・アプリケーションの適用可能なバージョンに関連する資源がサブディレクトリ32Aに記憶される場合、要求書換えモジュール40は、要求で指定されたパス名がサブディレクトリ32Aに関連するサブディレクトリ名を含むように、要求を書き換えてもよい。
要求書換えモジュール40が要求を書き換えた後に、要求ハンドラ・モジュール42は、書き換えられた要求によって指定されたパス名で識別された資源を逆参照する。書き換えられた要求によって指定されたパス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むので、要求ハンドラ・モジュール42は、ウェブ・アプリケーションの異なるバージョンに関連する資源を記憶するサブディレクトリ内の資源とは対照的に、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリ内の資源にアクセスする。例えば、書き換えられた要求によって指定されたパス名が、サブディレクトリ32Aに関連するサブディレクトリ名を含む場合、要求ハンドラ・モジュール42は、サブディレクトリ32B内の同等に名付けられた資源の代わりに、サブディレクトリ32A内の資源を逆参照する。
図2の例に示すように、ホスティング装置4はまた、グローバル・アセンブリ・キャッシュ(GAC)44を含んでもよい。GAC44は、.NETアセンブリに対してのマシン全体のレポジトリである。各アセンブリは、共通中間言語(CIL)においてフォーマット化されたコード・ライブラリである。アセンブリは、プロセス・アセンブリでも、ライブラリ・アセンブリでもよい。プロセス・アセンブリは、ライブラリ・アセンブリで定義されたクラスを使用するプロセスを表す。ホスティング装置4は、GAC44にインストールされた各ライブラリ・アセンブリの単一コピーをメモリにロードしてもよい。ホスティング装置4上で実行される多くの様々なプログラムは、メモリにロードされたライブラリ・アセンブリの単一コピーの方法を呼び出してもよい。これにより、ホスティング装置4が、メモリ内の機能の共通セットのいくつかのコピーを同時に記憶する必要性が低くなる。
資源34Aまたは34Bのうちの1つまたは複数を逆参照することにより、要求ハンドラ・モジュール42は、GAC44内にインストールされた1つまたは複数のアセンブリを利用することが必要になることがある。例えば、サブディレクトリ32A内の資源は、GAC44内に記憶されたアセンブリの第1のバージョンによって提供される機能を利用するサーバ側のスクリプトを含むASP.NETページでもよい。さらに、この例では、サブディレクトリ32B内の資源は、GAC44内のアセンブリの第2のバージョンによって提供される機能を利用するサーバ側のスクリプトを含むASP.NETページでもよい。
サブディレクトリ32Aは、サブディレクトリ32A内の資源とGAC44内のアセンブリのバージョンとの間の結合を指定するウェブ構成ファイルを含んでもよい。例えば、GAC44は、「Webcontrols.dll」アセンブリの第1のバージョンおよび第2のバージョンを含んでもよい。この例では、サブディレクトリ32Aのウェブ構成ファイルは、サブディレクトリ32A内の資源による「Webcontrols.dll」アセンブリの方法の呼び出しが、GAC44内の「Webcontrols.dll」アセンブリの第1のバージョンを対象とするものであることを指定してもよい。サブディレクトリ32B、およびウェブ・アプリケーションのバージョンに関連する資源を含む他のサブディレクトリは、同様のウェブ構成ファイルを含んでもよい。前の例の説明を続けると、サブディレクトリ32Bのウェブ構成ファイルは、サブディレクトリ32B内の資源による「Webcontrols.dll」アセンブリの方法の呼び出しが、GAC44内の「Webcontrols.dll」アセンブリの第2のバージョンを対象とするものであることを指定してもよい。このようにして、ウェブ・アプリケーションの様々なバージョンに関連する資源は、GAC44内にインストールされたアセンブリの様々なバージョンを利用することができる。
前述の通り、ウェブ・アプリケーションのバージョンのそれぞれが、互いに異なるユーザ・エクスペリエンスを提供してもよい。本開示で使用されているように、「ユーザ・エクスペリエンス」は、ユーザがウェブ・アプリケーションと対話する方式である。2人のユーザが、互いに異なる言語でのウェブ・アプリケーションが提供するページを見ていても、そのウェブ・アプリケーションで同じユーザ・エクスペリエンスを有することができる。例えば、ウェブ・アプリケーションのバージョンは、ウェブ・ページの第1のバージョンを第1のユーザに提供し、ウェブ・ページの第2のバージョンを第2のユーザに提供してもよい。この例では、ウェブ・ページの第1のバージョンおよびウェブ・ページの第2のバージョンは、レイアウトおよび機能が全く同じでもよいが、テキストまたはグラフィックスなどの特定の要素を互いに代用してもよいという点で異なってもよい。例えば、第1のウェブ・ページ内のテキストをポルトガル語で書いてもよく、第2のウェブ・ページ内のテキストをフランス語で書いてもよい。この例では、第1のユーザおよび第2のユーザは、同様にウェブ・アプリケーションと対話することができるので、同じユーザ・エクスペリエンスを有することができる。対照的に、ページのレイアウト、ページの機能、またはサイトの編成などが異なっていることにより、ユーザが各ページと別々に対話しなければならない場合には、ウェブ・アプリケーションの様々なバージョンが、様々なユーザ・エクスペリエンスを提供してもよい。
これをさらに説明するために、.NETサテライト・アセンブリを使用して、様々な静的要素を提供してもよいが、ユーザがウェブ・アプリケーションと対話する方法を変更しなくてもよいことを考えてみる。例えば、ASP.NETページには、ライブラリ・アセンブリによって提供される方法を呼び出すサーバ側のスクリプトが含まれ得る。デフォルトでは、ライブラリ・アセンブリの方法は、英語でのストリングを戻してもよい。この例では、サテライト・アセンブリは、ライブラリ・アセンブリに関連してもよい。サテライト・アセンブリは、特定の文化に関連し、ライブラリ・アセンブリの動作を特定の文化にローカライズするスタティックな(すなわちノンコードの)資源を含む。典型的な使用では、サテライト・アセンブリは、特定の文化の言語でのストリングを含む。例えば、フランス系カナダ人の文化に関連するサテライト・アセンブリは、フランス系カナダ人の方言でのストリングを含んでもよい。ASP.NETページ内のサーバ側のスクリプトが、ライブラリ・アセンブリによって提供される方法を呼び出し、文化の選択をフランス系カナダ人に設定すると、この方法は、英語でのストリングの代わりに、フランス系カナダ人の方言でのストリングを戻す。このストリングは、ウェブ・ページ内に含む、画像、テキストなどのURLでもよい。このようにして、一群のサテライト・アセンブリを提供することにより、ウェブ・デザイナは、ウェブ・ページを作成するのに使用されるライブラリ・アセンブリを書き換えることなく、様々な言語でのウェブ・ページを提供することができる。すなわち、単一のライブラリ・アセンブリは、一群のサテライト・アセンブリを伴うとき、複数の言語でのウェブ・ページを生成することができる。しかし、すべてのユーザが、ウェブ・アプリケーションと対話しているときには、基本的に同じユーザ・エクスペリエンスを有しているので、ウェブ・アプリケーション内でサテライト・アセンブリを使用しても、異なるユーザ・エクスペリエンスは提供されない。
図3は、図2の例に示した論理コンポーネントに関する、ホスティング装置4の例示的な動作を示す流れ図である。図3の例に示すように、バージョン・モジュール38は、ウェブ・アプリケーションに関連する要求を、ネットワーク8を介してクライアント装置6から受信する(60)。次に、バージョン・モジュール38は、この要求が、ウェブ・アプリケーションのバージョンを識別するバージョン識別子を含むかどうか判定する(62)。例えば、バージョン・モジュール38は、この要求が、ウェブ・アプリケーションのバージョンを識別するバージョン識別子を指定するクッキーを含むかどうか判定してもよい。この要求が、ウェブ・アプリケーションのバージョンを識別するバージョン識別子を含むと判定されると(62の「はい」)、要求書換えモジュール40は、要求によって指定されたパス名が、ウェブ・アプリケーションの指定されたバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように、このパス名を書き換える(64)。この要求が、ウェブ・アプリケーションのバージョンを指定すると判定される状況では、ウェブ・アプリケーションの指定されたバージョンは、ウェブ・アプリケーションの適用可能なバージョンである。
一方で、この要求が、ウェブ・アプリケーションのバージョンを識別するバージョン識別子を含まないと判定される場合(62の「いいえ」)、バージョン・モジュール38は、ウェブ・アプリケーションの適用可能なバージョンを自動的に識別してもよい(66)。図2を参照しながら前述した通り、バージョン・モジュール38は、グループ・データベース44を使用して、ウェブ・アプリケーションの適用可能なバージョンを識別してもよい。
バージョン・モジュール38がウェブ・アプリケーションの適用可能なバージョンを自動的に識別した後に、要求書換えモジュール40は、要求によって指定されたパス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を含むサブディレクトリのサブディレクトリ名を含むように、このパス名を書き換える(68)。要求書換えモジュール40が、ホスティング装置4でパス名を書き換えるので、クライアント装置6は、パス名が書き換えられたことを示すいかなる指示も受信しなくてよい。
要求書換えモジュール40が、ステップ64またはステップ68のいずれかにおいて、要求によって指定されたパス名を書き換えると、要求ハンドラ・モジュール42は、書き換えられた要求内のパス名によって識別された資源を逆参照する(70)。例えば、要求ハンドラ・モジュール42は、HTMLファイルを生成するASP.NETページ内のスクリプトを実行することにより、パス名によって指定されたASP.NETページを逆参照してもよい。他の場合には、要求ハンドラ・モジュール42は、要求内の情報を共通ゲートウェイ・インタフェース(CGI)資源に提供することにより、パス名によって指定されたCGI資源を逆参照してもよい。
要求ハンドラ・モジュール42は、書き換えられた要求内のパス名によって識別された資源を逆参照した後に、要求に対する応答を生成してもよい(72)。応答がHTTP応答である場合、この応答は、ウェブ・アプリケーションの適用可能なバージョンのバージョン識別子を含むクッキーを設定するようクライアント装置6に命令するset−cookieヘッダを含んでもよい。したがって、クライアント装置6は、ウェブ・アプリケーションに関連する後続のHTTP要求内に「Set−Cookie」ヘッダのコンテンツを含むことになる。他の例では、要求ハンドラ・モジュール42は、ウェブ・アプリケーションに関連する資源の場所を指定する応答内のパス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように、この応答を書き換えてもよい。これらの技法により、ホスティング装置4は、グループ・データベース36を使用して、ウェブ・アプリケーションの適用可能なバージョンを識別するという、潜在的に高価なステップを実行しないですむことが可能になる。
要求に対する応答を生成した後に、要求ハンドラ・モジュール42は、この応答をクライアント装置6に送信してもよい(74)。
図3の例に示した動作は、単にホスティング装置4の動作の一例に過ぎないことを理解すべきである。例えば、ホスティング装置4の他の例示的な動作では、バージョン・モジュール38は、要求によって指定されたパス名が、ウェブ・アプリケーションのバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むときに、要求がバージョン識別子を指定すると判定してもよい。この例では、要求によって指定されたパス名が、ウェブ・アプリケーションのバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含む場合、要求書換えモジュール40は、要求によって指定されたパス名を書き換える必要がない場合がある。
図4は、ウェブ・アプリケーションの2つのバージョンに関連する資源を記憶するために使用してもよい、ディレクトリ構造90の図である。図4の例に示すように、ディレクトリ構造90は、ディレクトリ名「/application_root」に関連するディレクトリを含む。「/application_root」ディレクトリは、ディレクトリ名「version_2008_01」に関連する第1のサブディレクトリ、およびディレクトリ名「version_2008_02」に関連する第2のサブディレクトリを含む。すなわち、「version_2008_01」サブディレクトリ、および「version_2008_02」サブディレクトリは、すぐ上の単一の親ディレクトリ(すなわち「/application_root」ディレクトリ)の子ディレクトリである。「version_2008_01」サブディレクトリは、ウェブ・アプリケーションの第1のバージョンに関連する資源を記憶してもよく、「version_2008_02」サブディレクトリは、ウェブ・アプリケーションの第2のバージョンに関連する資源を記憶してもよい。
図4の例はさらに、「version_2008_01」サブディレクトリが、「Cancelation」サブディレクトリ、「Intercept Survey」サブディレクトリ、「Misc」サブディレクトリ、「Resources」サブディレクトリ、「RSS」サブディレクトリ、および「Services」サブディレクトリを含むことを示している。さらに、図4の例は、「Intercept Survey」サブディレクトリが「En−us」サブディレクトリを含むことを示している。図4の例はまた、「Resources」サブディレクトリが、「Dialog」サブディレクトリ、「Editor」サブディレクトリ、「Images」サブディレクトリ、「Js」サブディレクトリ、「Templates」サブディレクトリ、「RSS」サブディレクトリ、および「Services」サブディレクトリを含むことを示している。図4の例には示していないが、「version_2008_02」サブディレクトリは、「version_2008_01」サブディレクトリと同じまたは同様のサブディレクトリを有してもよい。
ディレクトリ構造90は、要求書換えモジュール40が、どのようにして要求を書き換えることができるのかの例を提供するために使用してもよい。その一例においては、バージョン・モジュール38は、「version_2008_01」サブディレクトリ内にその資源が記憶されるウェブ・アプリケーションのバージョンを識別してもよい。この例では、要求書換えモジュール40が、以下のパス名「application_root/Resources/Images/logo.jpg」を指定する要求を受信してもよい。このパス名は、ディレクトリ構造90内のサブディレクトリのパス名には対応しない。要求書換えモジュール40は、要求を受信すると、要求内のパス名が以下の通り「application_root/version_2008_01/Resources/Images/logo.jpg」と読めるように、このパス名を書き換えてもよい。
図5は、ホスティング装置4の例示的なハードウェアコンポーネントを示すブロック図である。図5の例に示すように、ホスティング装置4は、メモリ・ユニット100を含む。メモリ・ユニット100は、データおよび命令を記憶することのできる、コンピュータ読取り可能な記憶媒体である。メモリ・ユニット100は、ダイナミック・ランダム・アクセス・メモリ(DRAM)、ダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス・メモリ(DDR SDRAM)、低遅延DRAM、DDR2 SDRAM、DDR3 SDRAM、ラムバスRAM、または他のタイプのコンピュータ読取り可能な記憶媒体を含むが、それらには限定されない、様々な異なるタイプのコンピュータ読取り可能な記憶媒体でよい。
さらに、ホスティング装置4は、命令を実行することのできる処理ユニット102を含む。処理ユニット102は、1つもしくは複数の処理コア、および/または1つもしくは複数の別々のマイクロプロセッサとして実装してもよい。例えば、処理ユニット102は、1つまたは複数のIntel Core 2マイクロプロセッサとして実装してもよい。処理ユニット102は、x86命令セット、POWER命令セット、RISC命令セット、SPARC命令セット、IA−64命令セット、MIPS命令セット、または他の命令セットなど、命令セット内の命令を実行することができる。
ホスティング装置4はまた、ホスティング装置4がビデオ情報を表示装置106に出力することができるようにする、ビデオ・インターフェース104を含む。表示装置106は、様々な異なるタイプの表示装置でもよい。例えば、表示装置106は、陰極線管表示装置、LCD表示パネル、プラズマ・スクリーン表示パネル、タッチセンシティブ表示パネル、LEDアレイ、または他のタイプの表示装置でもよい。
さらに、ホスティング装置4は、不揮発性記憶装置108を含む。不揮発性記憶装置108は、データおよび/または命令を記憶することができるコンピュータ読取り可能な記憶媒体である。不揮発性記憶装置108は、様々な異なるタイプの、互いに異なる不揮発性記憶装置でもよい。例えば、不揮発性記憶装置108は、1つまたは複数のハード・ディスク・ドライブ、磁気テープ・ドライブ、CD−ROMドライブ、DVD−ROMドライブ、Blu−Rayディスク・ドライブ、または他のタイプの不揮発性記憶装置でもよい。
ホスティング装置4はまた、ホスティング装置4が外部コンポーネントと通信できるようにする、外部コンポーネントインターフェース110を含む。図5の例に示すように、外部コンポーネントインターフェース110は、入力装置112および外部記憶装置114と通信する。ホスティング装置4の一つの実装では、外部コンポーネントインターフェースは、ユニバーサル・シリアル・バス(USB)インターフェースである。ホスティング装置4の他の実装では、ホスティング装置4には、ホスティング装置4が入力装置および/または出力装置と通信できるようにする、他のタイプのインターフェースが含まれ得る。例えば、ホスティング装置4には、PS/2インターフェースが含まれ得る。入力装置112は、キーボード、マウス、トラックボール、スタイラス入力装置、タッチ・パッド、タッチセンシティブ表示画面、または他のタイプの入力装置を含むが、それらには限定されない、様々な異なるタイプの装置でもよい。外部記憶装置114は、磁気テープ、フラッシュ・メモリ・モジュール、磁気ディスク・ドライブ、光ディスク・ドライブ、および他のコンピュータ読取り可能な記憶媒体を含め、様々な異なるタイプのコンピュータ読取り可能な記憶媒体でもよい。
さらに、ホスティング装置4は、ホスティング装置4がネットワーク8との間でデータを送受信できるようにする、ネットワーク・インターフェース116を含む。ネットワーク・インターフェース116は、様々な異なるタイプのネットワーク・インターフェースでもよい。例えば、ネットワーク・インターフェース116は、イーサネット・インターフェース、トークン・リング・ネットワーク・インターフェース、光ファイバ・ネットワーク・インターフェース、無線ネットワーク・インターフェース(例えば、WiFi、WiMaxなど)、または他のタイプのネットワーク・インターフェースでもよい。
ホスティング装置4はまた、ホスティング装置4の様々なコンポーネント間での通信を容易にする通信媒体118を含む。通信媒体118は、PCIバス、PCI Expressバス、加速グラフィックス・ポート(AGP)バス、インフィニバンド相互接続、シリアル・アドバンスト・テクノロジー・アタッチメント(ATA)相互接続、パラレルATA相互接続、ファイバ・チャネル相互接続、USBバス、小型コンピュータ・システム・インターフェース(SCSI)インターフェース、または他のタイプの通信媒体を含むが、それらには限定されない、1つまたは複数の異なるタイプの通信媒体を含んでもよい。
いくつかのコンピュータ読取り可能な記憶媒体が、図5の例に示してある(すなわち、メモリ100、不揮発性記憶装置108、および外部記憶装置114)。それとともに、これらのコンピュータ読取り可能な記憶媒体は、単一の論理的なコンピュータ読取り可能な記憶媒体を構成してもよい。この単一の論理的なコンピュータ読取り可能な記憶媒体は、処理ユニット102によって実行可能な命令を記憶してもよい。前述の動作は、この単一の論理的なコンピュータ読取り可能な記憶媒体上に記憶された命令を実行する結果として生じてもよい。したがって、この説明で、特定の論理モジュールが特定の動作を実行するという場合、こうした記述は、ソフトウェア・モジュールの命令により、処理ユニット102などの処理ユニットがこの動作を実行することを意味すると解釈してもよい。
本開示の技法は、様々なやり方で概念化してもよい。例えば、本開示の技法は、複数のバージョンのウェブ・アプリケーションを提供するための方法として概念化してもよい。この方法は、それぞれがサブディレクトリ名を有する一群のサブディレクトリを含む階層ディレクトリ・システムを、コンピューティング装置からアクセス可能なコンピュータ読取り可能な記憶媒体上に記憶するステップを含む。さらに、この方法は、ウェブ・アプリケーションの一群のバージョンにおけるウェブ・アプリケーションの互いに異なるバージョンに関連する資源を、コンピュータ読取り可能な媒体上で各サブディレクトリのそれぞれの内部に記憶するステップを含み、ウェブ・アプリケーションのバージョンのそれぞれが、互いに異なるユーザ・エクスペリエンスを提供する。この方法はまた、電子通信ネットワークを介したクライアント装置からの、ウェブ・アプリケーションに関連する資源のパス名を指定する要求を、コンピューティング装置において受信するステップを含む。さらに、この方法は、この要求を受信することに応答して、ウェブ・アプリケーションの一群のバージョンからウェブ・アプリケーションの適用可能なバージョンを、コンピューティング装置において自動的に識別するステップを含む。この方法はまた、パス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように、コンピューティング装置において要求を書き換えるステップを含む。さらに、この方法は、要求を書き換えた後に、書き換えられた要求内のパス名によって識別された資源を、コンピューティング装置において逆参照するステップを含む。
他の例では、本開示の各技法は、命令を実行することができる処理ユニットを含む電子コンピューティング装置として概念化してもよい。電子コンピューティング装置はまた、クライアント装置を含む電子通信ネットワーク上での通信を容易にするネットワーク・インターフェースを含む。さらに、電子コンピューティング装置は、単一の親ディレクトリの子ディレクトリである一群のサブディレクトリを含む、階層ディレクトリ・システムを記憶する不揮発性記憶装置を含み、一群のサブディレクトリ内の各サブディレクトリは、サブディレクトリ名を有し、サブディレクトリのそれぞれの中に、ウェブ・アプリケーションの一群のバージョンにおけるウェブ・アプリケーションの異なるバージョンに関連する資源を有する。ウェブ・アプリケーションのバージョンのそれぞれが、互いに異なるユーザ・エクスペリエンスを提供する。電子コンピューティング装置はまた、ウェブ・アプリケーションに関連する資源のパス名を指定する要求を、電子通信ネットワークを介してクライアント装置から受信し、この要求を受信するのに応答して、ウェブ・アプリケーションの一群のバージョンからウェブ・アプリケーションの適用可能なバージョンを自動的に識別するバージョン・モジュールを含む。さらに、電子コンピューティング装置は、パス名が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名を含むように要求を書き換える、要求書換えモジュールを含む。さらに、電子コンピューティング装置は、要求が書き換えられた後に、書き換えられた要求内のパス名によって識別された資源を逆参照し、書き換えられた要求内のパス名によって識別された資源をクライアント装置に送信する、要求ハンドラ・モジュールを含む。
本開示の各技法はまた、複数のサブディレクトリを含む階層ディレクトリ・システムを含むコンピュータ読取り可能な記憶媒体として概念化してもよい。サブディレクトリのそれぞれが、互いに異なるサブディレクトリ名に関連する。サブディレクトリのそれぞれが、ウェブ・アプリケーションの一群のバージョンにおけるウェブ・アプリケーションの互いに異なるバージョンに関連する資源を記憶する。サブディレクトリのそれぞれが、すぐ上の単一の親ディレクトリの子ディレクトリである。サブディレクトリのそれぞれには、同等に名付けられた資源が存在する。ウェブ・アプリケーションのバージョンのそれぞれが、異なる一群の機能および異なるユーザ・インターフェースを提供することにより、互いに異なるユーザ・エクスペリエンスを提供する。コンピュータ読取り可能な記憶媒体はまた、一群のルールを含むグループ・データベースを含み、このルールのそれぞれが、ウェブ・アプリケーションの状態とその各バージョンのうちの1つのバージョンを指定する。さらに、コンピュータ読取り可能な記憶媒体は、コンピューティング装置で実行されるときに、コンピューティング装置が、ウェブ・アプリケーションに関連する資源のパス名を指定するハイパーテキスト転送プロトコル(HTTP)要求を、電子通信ネットワークを介してクライアント装置から受信するようにする命令を含む。この命令はまた、HTTP要求を受信することに応答して、このHTTP要求が、ウェブ・アプリケーションの適用可能なバージョンを識別するバージョン識別子を含んでいるかどうか、コンピューティング装置が判定するようにし、このウェブ・アプリケーションの適用可能なバージョンは、ウェブ・アプリケーションのバージョンのうちの1つのバージョンである。さらに、この命令により、コンピューティング装置は、ルールを使用して、HTTP要求がウェブ・アプリケーションの適用可能なバージョンを識別するバージョン識別子を含まないときに、ウェブ・アプリケーションの一群のバージョンからウェブ・アプリケーションの適用可能なバージョンを自動的に識別するようになる。この命令はまた、コンピューティング装置が、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリのサブディレクトリ名をパス名が含むように、HTTP要求を書き換えるようにし、それにより、ウェブ・アプリケーションの適用可能なバージョンに関連する資源を記憶するサブディレクトリ内の資源をパス名が識別するようにする。さらに、この命令により、HTTP要求を書き換えた後に、書き換えられたHTTP要求内のパス名によって識別された資源を、コンピューティング装置が逆参照するようになる。この命令はまた、コンピューティング装置が、HTTP要求に対するHTTP応答を生成するようにし、このHTTP応答は、書き換えられたHTTP要求内のパス名によって識別された資源と、ウェブ・アプリケーションに関連する後続のHTTP要求内のウェブ・アプリケーションの適用可能なバージョンを識別するバージョン識別子を含むようにクライアント装置を構成するデータとを含む。
構造上の特徴および/または方法論的な作用に特有の用語で、主題について述べてきたが、添付の特許請求の範囲で定義される主題は、必ずしも前述の具体的な特徴または作用を限定するものではないことを理解されたい。むしろ、前述の具体的な特徴および作用は、特許請求の範囲を実施する例示的な形態として開示されている。
Claims (20)
- 複数のバージョンのウェブ・アプリケーションを提供する方法であって、
サブディレクトリ名を有する一群のサブディレクトリ(32)を含む階層ディレクトリ・システム(30)を、コンピューティング装置(4)からアクセス可能なコンピュータ読取り可能な記憶媒体上に記憶するステップと、
前記ウェブ・アプリケーションの一群のバージョンにおけるウェブ・アプリケーションの互いに異なるバージョンに関連する資源(34)を、前記コンピュータ読取り可能な媒体上で前記サブディレクトリの内部に記憶するステップであって、前記ウェブ・アプリケーションの前記バージョンが、互いに異なるユーザ・エクスペリエンスを提供するステップと、
電子通信ネットワーク(8)を介したクライアント装置(6)からの、前記ウェブ・アプリケーションに関連する資源のパス名を指定する要求を、前記コンピューティング装置(4)において受信するステップ(60)と、
前記要求を受信することに応答して、前記ウェブ・アプリケーションの前記一群のバージョンから前記ウェブ・アプリケーションの適用可能なバージョンを、前記コンピューティング装置(4)において自動的に識別するステップ(66)と、
前記パス名が、前記ウェブ・アプリケーションの前記適用可能なバージョンに関連する前記資源を記憶する前記サブディレクトリの前記サブディレクトリ名を含むように、前記コンピューティング装置において前記要求を書き換えるステップ(68)と、
前記要求を書き換えた後に、前記書き換えられた要求内の前記パス名によって識別された資源を、前記コンピューティング装置(4)において逆参照するステップ(70)とを備える方法。 - 前記ウェブ・アプリケーションの前記バージョンとユーザのグループとを関連付ける情報を、前記コンピュータ読取り可能な記憶媒体において記憶するステップをさらに備え、
前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するステップが、前記ウェブ・アプリケーションの前記バージョンとユーザのグループとを関連付ける前記情報を使用して、前記クライアント装置のユーザに関連する前記ウェブ・アプリケーションの前記バージョンを識別し、前記ウェブ・アプリケーションの前記適用可能なバージョンを識別するステップを含む、請求項1に記載の方法。 - 前記ウェブ・アプリケーションの前記バージョンとユーザのグループとを関連付ける情報を記憶するステップが、一群のルールを記憶するステップを含み、前記ルールが、前記ウェブ・アプリケーションの状態とその前記バージョンのうちの1つのバージョンを指定し、
前記ウェブ・アプリケーションの前記バージョンとユーザのグループとを関連付ける前記情報を使用して、前記クライアント装置のユーザに関連する前記ウェブ・アプリケーションの前記バージョンを識別するステップが、前記ルールを評価するステップを含む、請求項2に記載の方法。 - 前記要求を受信するステップが、受入れ可能な言語を指定する「Accept−Language」ヘッダを含む、ハイパーテキスト転送プロトコル(HTTP)要求を受信するステップを含み、
前記一群のルールを記憶するステップが、前記HTTP要求の前記「Accept−Language」ヘッダの値に基づいて状態を指定するルールを記憶するステップを含む、請求項3に記載の方法。 - 前記方法が、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンをユーザが好むことを指定するプリファランス・データを記憶するステップをさらに備え、
前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するステップは、前記クライアント装置が前記ユーザによって使用されるとき、前記プリファランス・データを使用して、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンを、前記ウェブ・アプリケーションの前記適用可能なバージョンとして識別するステップを含む、請求項1に記載の方法。 - 前記書き換えられた要求内の前記パス名によって識別された前記資源が、サーバ側のスクリプトを含み、
前記書き換えられた要求内の前記パス名によって識別された前記資源を逆参照するステップが、前記サーバ側のスクリプトを実行するステップを含む、請求項1に記載の方法。 - 前記書き換えられた要求内の前記パス名によって識別された前記資源を逆参照した後に、前記書き換えられた要求内の前記パス名によって識別された前記資源を含むHTTP応答を、前記コンピューティング装置において生成するステップと、
前記HTTP応答を前記クライアント装置に送信するステップとをさらに備える、請求項1に記載の方法。 - 前記HTTP応答を生成するステップは、前記ウェブ・アプリケーションに関連する資源の場所を指定する、前記HTTP応答内のパス名が、前記ウェブ・アプリケーションの前記適用可能なバージョンに関連する資源を記憶する前記サブディレクトリの前記サブディレクトリ名を含むように、前記HTTP応答を書き換えるステップを含む、請求項7に記載の方法。
- 前記HTTP応答を生成するステップは、前記HTTP応答が、前記ウェブ・アプリケーションの前記適用可能なバージョンを指定するバージョン識別子を含むクッキーを設定するよう前記クライアント装置に命令するヘッダを含むように、前記HTTP応答を生成するステップを含む、請求項7に記載の方法。
- 前記方法は、前記要求が、前記ウェブ・アプリケーションの前記適用可能なバージョンを識別するバージョン識別子を含むかどうか、前記コンピューティング装置において判定するステップをさらに備え、
前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するステップが、前記ウェブ・アプリケーションの前記適用可能なバージョンを識別するバージョン識別子を前記要求が含まないと判定されるときに、前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するステップを含む、請求項1に記載の方法。 - 前記ウェブ・アプリケーションの前記バージョンのうちの前記第2のバージョンによって提示されたユーザ・インターフェースとは異なるユーザ・インターフェースを提示することにより、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンが、前記ウェブ・アプリケーションの前記バージョンのうちの第2のバージョンとは異なるユーザ・エクスペリエンスを提供する、請求項1に記載の方法。
- 前記ウェブ・アプリケーションの前記バージョンのうちの前記第2のバージョンによって提示されたユーザ・インターフェースとは異なる機能を提供することにより、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンが、前記ウェブ・アプリケーションの前記バージョンのうちの第2のバージョンとは異なるユーザ・エクスペリエンスを提供する、請求項1に記載の方法。
- 少なくとも、前記サブディレクトリのうちの第1のサブディレクトリ、および前記サブディレクトリのうちの第2のサブディレクトリが、すぐ上の単一の親ディレクトリの子ディレクトリである、請求項1に記載の方法。
- 命令を実行することができる処理ユニット(102)と、
クライアント装置(6)を含む電子通信ネットワーク(8)上での通信を容易にするネットワーク・インターフェース(116)と、
単一の親ディレクトリの子ディレクトリである一群のサブディレクトリ(32)を含む階層ディレクトリ・システム(30)であって、前記一群のサブディレクトリ内の各サブディレクトリがサブディレクトリ名を有する階層ディレクトリ・システム、および
前記サブディレクトリの内部に、前記ウェブ・アプリケーションの一群のバージョンにおけるウェブ・アプリケーションの互いに異なるバージョンに関連する資源(34)であって、前記ウェブ・アプリケーションの前記バージョンが、互いに異なるユーザ・エクスペリエンスを提供する資源を記憶する不揮発性記憶装置(108)と、
前記ウェブ・アプリケーションに関連する資源のパス名を指定する要求を、前記電子通信ネットワーク(8)を介して前記クライアント装置(6)から受信し、前記要求を受信するのに応答して、前記ウェブ・アプリケーションの前記一群のバージョンから前記ウェブ・アプリケーションの適用可能なバージョンを自動的に識別するバージョン・モジュール(38)と、
前記パス名が、前記ウェブ・アプリケーションの前記適用可能なバージョンに関連する前記資源を記憶する前記サブディレクトリの前記サブディレクトリ名を含むように、前記要求を書き換える要求書換えモジュール(40)と、
前記要求が書き換えられた後に、前記書き換えられた要求内の前記パス名によって識別された資源を逆参照し、前記書き換えられた要求内の前記パス名によって識別された前記資源を前記クライアント装置(6)に送信する、要求ハンドラ・モジュール(42)とを備える電子コンピューティング装置(4)。 - 前記バージョン・モジュール、前記要求書換えモジュール、および前記要求ハンドラ・モジュールが、前記処理ユニットによって実行される命令を含む、請求項14に記載の電子コンピューティング装置。
- 前記コンピュータ読取り可能な媒体が、前記ウェブ・アプリケーションの前記バージョンとユーザのグループとを関連付ける情報を含むグループ・データベースを記憶し、
前記バージョン・モジュールが、前記グループ・データベースを使用して、前記ウェブ・アプリケーションの前記適用可能なバージョンを識別する、請求項14に記載の電子コンピューティング装置。 - 前記書き換えられた要求内の前記パス名によって識別された前記資源が、サーバ側のスクリプトを含み、
前記要求ハンドラ・モジュールが、部分的に前記サーバ側のスクリプトを実行することにより、前記書き換えられた要求内の前記パス名によって識別された前記資源を逆参照する、請求項14に記載の電子コンピューティング装置。 - 前記不揮発性記憶装置が、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンをユーザが好むことを指定するプリファランス・データを記憶し、
前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するステップは、前記クライアント装置が前記ユーザによって使用されるとき、前記プリファランス・データを使用して、前記ウェブ・アプリケーションの前記バージョンのうちの前記第1のバージョンを、前記ウェブ・アプリケーションの前記適用可能なバージョンとして識別するステップを含む、請求項14に記載の電子コンピューティング装置。 - 複数のサブディレクトリ(32)を含む階層ディレクトリ・システム(30)であって、
前記サブディレクトリ(32)が、互いに異なるサブディレクトリ名に関連し、
前記サブディレクトリが、ウェブ・アプリケーションの一群のバージョンにおける前記ウェブ・アプリケーションの互いに異なるバージョンに関連する資源(34)を記憶し、
前記サブディレクトリには、同等に名付けられた資源が存在し、
前記サブディレクトリが、すぐ上の単一の親ディレクトリの子ディレクトリであり、
前記ウェブ・アプリケーションの前記バージョンが、異なる一群の機能および異なるユーザ・インターフェースを提供することにより、互いに異なるユーザ・エクスペリエンスを提供する、階層ディレクトリ・システムと、
一群のルールを含むグループ・データベース(36)であって、前記ルールが、前記ウェブ・アプリケーションの状態とその前記バージョンのうちの1つのバージョンを指定する、グループ・データベースと、
命令がコンピューティング装置(4)において実行されるときに、前記コンピューティング装置(4)が、
電子通信ネットワーク(8)を介したクライアント装置(6)からの、前記ウェブ・アプリケーションに関連する資源のパス名を指定するハイパーテキスト転送プロトコル(HTTP)要求を受信し(60)、
前記HTTP要求を受信することに応答して、前記HTTP要求が、前記ウェブ・アプリケーションの適用可能なバージョンを識別するバージョン識別子を含んでいるかどうか判定し(62)、前記ウェブ・アプリケーションの前記適用可能なバージョンが、前記ウェブ・アプリケーションの前記バージョンのうちの1つのバージョンであり、
前記ルールを使用して(66)、前記HTTP要求が前記ウェブ・アプリケーションの前記適用可能なバージョンを識別するバージョン識別子を含まないときに、前記ウェブ・アプリケーションの前記一群のバージョンから前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別し、
前記ウェブ・アプリケーションの前記適用可能なバージョンに関連する前記資源を記憶する前記サブディレクトリの前記サブディレクトリ名を前記パス名が含むように、前記HTTP要求を書き換え(68)、前記ウェブ・アプリケーションの前記適用可能なバージョンに関連する前記資源を記憶する前記サブディレクトリ内の資源を前記パス名が識別するようにし、
前記HTTP要求を書き換えた後に、前記書き換えられたHTTP要求内の前記パス名によって指定された資源を逆参照し(70)、
前記HTTP要求に対するHTTP応答を生成し(72)、前記HTTP応答は、前記書き換えられたHTTP要求内の前記パス名によって識別された前記資源と、前記ウェブ・アプリケーションに関連する後続のHTTP要求内の前記ウェブ・アプリケーションの前記適用可能なバージョンを識別する前記バージョン識別子を含むように前記クライアント装置を構成するデータとを含むようにする命令とを含む、コンピュータ読取り可能な記憶媒体。 - 前記コンピュータ読取り可能な記憶媒体は、前記ウェブ・アプリケーションの前記バージョンのうちの第1のバージョンをユーザが好むことを指定するプリファランス・データをさらに含み、
前記命令により、前記クライアント装置が前記ユーザによって使用されるとき、前記コンピューティング装置が、部分的に、前記プリファランス・データを使用して、前記ウェブ・アプリケーションの前記バージョンのうちの前記第1のバージョンを、前記ウェブ・アプリケーションの前記適用可能なバージョンとして識別するようにすることにより、前記コンピューティング装置は、前記ウェブ・アプリケーションの前記適用可能なバージョンを自動的に識別するようになる、請求項19に記載のコンピュータ読取り可能な記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/240,383 | 2008-09-29 | ||
US12/240,383 US7882174B2 (en) | 2008-09-29 | 2008-09-29 | Multiple parallel user experiences provided by a single set of internet hosting machines |
PCT/US2009/055654 WO2010036491A2 (en) | 2008-09-29 | 2009-09-02 | Multiple parallel user experiences provided by a single set of internet hosting machines |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012504276A true JP2012504276A (ja) | 2012-02-16 |
Family
ID=42058760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011529065A Withdrawn JP2012504276A (ja) | 2008-09-29 | 2009-09-02 | 単一群のインターネット・ホスティング・マシンによって提供される複数の並列ユーザ・エクスペリエンス |
Country Status (8)
Country | Link |
---|---|
US (1) | US7882174B2 (ja) |
EP (1) | EP2350850A2 (ja) |
JP (1) | JP2012504276A (ja) |
KR (1) | KR101623223B1 (ja) |
CN (1) | CN102165430B (ja) |
BR (1) | BRPI0918043A2 (ja) |
RU (1) | RU2011111743A (ja) |
WO (1) | WO2010036491A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014154157A (ja) * | 2013-02-12 | 2014-08-25 | Lsi Corp | 連鎖された拡張可能な記憶装置 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882174B2 (en) | 2008-09-29 | 2011-02-01 | Microsoft Corporation | Multiple parallel user experiences provided by a single set of internet hosting machines |
US20100242095A1 (en) * | 2009-03-20 | 2010-09-23 | GigaNetworks, Inc. | Method and apparatus for multi-user, multi-application internet access authentication and control |
US10834167B1 (en) * | 2011-06-02 | 2020-11-10 | Amazon Technologies, Inc. | Client side navigation compositor |
CN102694803A (zh) * | 2012-05-25 | 2012-09-26 | 华为软件技术有限公司 | 一种soa服务提供方法及系统 |
CN102929678A (zh) * | 2012-11-26 | 2013-02-13 | 中标软件有限公司 | 一种多版本火狐浏览器的存储方法及装置 |
US20150215374A1 (en) * | 2013-03-13 | 2015-07-30 | Google Inc. | Delivering an update for a web application |
US9645914B1 (en) * | 2013-05-10 | 2017-05-09 | Google Inc. | Apps store with integrated test support |
US20150100952A1 (en) * | 2013-10-09 | 2015-04-09 | Sap Ag | Runtime Version Access Infrastructure |
WO2015069912A1 (en) * | 2013-11-06 | 2015-05-14 | Improvement Interactive, LLC | Dynamic application version selection |
US9417870B2 (en) * | 2014-12-08 | 2016-08-16 | International Business Machines Corporation | Managing user access to alternative versions of a particular function of a software product from within a current version of the software product |
US9881351B2 (en) * | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
US9786026B2 (en) * | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
US20170034306A1 (en) | 2015-07-30 | 2017-02-02 | Nasdaq, Inc. | Software application architecture |
US9537914B1 (en) * | 2015-12-01 | 2017-01-03 | International Business Machines Corporation | Vehicle domain multi-level parallel buffering and context-based streaming data pre-processing system |
US10560520B2 (en) * | 2016-05-20 | 2020-02-11 | Sap Se | Compatibility framework for cloud and on-premise application integration |
US20180157478A1 (en) * | 2016-12-02 | 2018-06-07 | Coursera, Inc. | Deployment of immutable web application builds |
US11023426B1 (en) * | 2017-11-02 | 2021-06-01 | Comodo Security Solutions, Inc. | Method and system for detection of open source web application version |
US10666706B2 (en) * | 2017-11-22 | 2020-05-26 | Citrix Systems, Inc. | Rendering a web application in a cloud service |
US11023259B2 (en) * | 2018-06-15 | 2021-06-01 | Microsoft Technology Licensing, Llc | Apparatus and method of user or device based application differentiation |
US10664266B2 (en) * | 2018-09-04 | 2020-05-26 | Salesforce.Com, Inc. | Maintaining client version affinity during a server cluster upgrade |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560639B1 (en) * | 1998-02-13 | 2003-05-06 | 3565 Acquisition Corporation | System for web content management based on server-side application |
US6643708B1 (en) * | 1998-10-29 | 2003-11-04 | International Business Machines Corporation | Systems, methods and computer program products for chaining Java servlets across networks |
US6157618A (en) * | 1999-01-26 | 2000-12-05 | Microsoft Corporation | Distributed internet user experience monitoring system |
US6345307B1 (en) * | 1999-04-30 | 2002-02-05 | General Instrument Corporation | Method and apparatus for compressing hypertext transfer protocol (HTTP) messages |
EP1109092A1 (en) * | 1999-12-14 | 2001-06-20 | Sun Microsystems, Inc. | File system navigation |
US6658659B2 (en) * | 1999-12-16 | 2003-12-02 | Cisco Technology, Inc. | Compatible version module loading |
US20020013831A1 (en) * | 2000-06-30 | 2002-01-31 | Arto Astala | System having mobile terminals with wireless access to the internet and method for doing same |
JP2002163143A (ja) * | 2000-07-28 | 2002-06-07 | Any One Wireless Co Ltd | 無線サイトのコンテンツ・リフォーマッティング・システム及びその方法 |
US6859820B1 (en) * | 2000-11-01 | 2005-02-22 | Microsoft Corporation | System and method for providing language localization for server-based applications |
FI113898B (fi) * | 2000-11-21 | 2004-06-30 | Nokia Corp | Menetelmä sisällön tuottamiseksi langattomaan viestintälaitteeseen |
US20080281969A1 (en) * | 2000-12-15 | 2008-11-13 | Horton John C | Controlling access to versions of application software by a server, based on site ID |
US6996780B2 (en) * | 2000-12-29 | 2006-02-07 | International Business Machines Corporation | Method and system for creating a place type to be used as a template for other places |
US6999912B2 (en) * | 2001-03-13 | 2006-02-14 | Microsoft Corporation | Provisioning computing services via an on-line networked computing environment |
US6768988B2 (en) * | 2001-05-29 | 2004-07-27 | Sun Microsystems, Inc. | Method and system for incorporating filtered roles in a directory system |
US7089319B2 (en) * | 2002-12-09 | 2006-08-08 | Anton Lysenko | Method and system for instantaneous on-demand delivery of multimedia content over a communication network with aid of content capturing component, delivery-on-demand client and dynamically mapped resource locator server |
US7185071B2 (en) * | 2002-12-24 | 2007-02-27 | International Business Machines Corporation | Self-healing version and configuration model for an application server |
US7062506B2 (en) * | 2003-01-24 | 2006-06-13 | The Cobalt Group, Inc. | Staged publication and management of dynamic webpages |
US7539985B2 (en) * | 2003-02-26 | 2009-05-26 | Bea Systems, Inc. | Systems and methods for dynamic component versioning |
US7562358B2 (en) * | 2004-10-04 | 2009-07-14 | United Parcel Service Of America, Inc. | Controlled deployment of software in a web-based architecture |
US7490072B1 (en) * | 2005-02-16 | 2009-02-10 | Novell, Inc. | Providing access controls |
US7913244B2 (en) * | 2006-06-12 | 2011-03-22 | Oracle International Corporation | Side by side for web services |
US8214451B2 (en) * | 2007-01-19 | 2012-07-03 | Alcatel Lucent | Network service version management |
US7882174B2 (en) | 2008-09-29 | 2011-02-01 | Microsoft Corporation | Multiple parallel user experiences provided by a single set of internet hosting machines |
-
2008
- 2008-09-29 US US12/240,383 patent/US7882174B2/en not_active Expired - Fee Related
-
2009
- 2009-09-02 WO PCT/US2009/055654 patent/WO2010036491A2/en active Application Filing
- 2009-09-02 EP EP09816677A patent/EP2350850A2/en not_active Withdrawn
- 2009-09-02 CN CN200980139100.XA patent/CN102165430B/zh active Active
- 2009-09-02 JP JP2011529065A patent/JP2012504276A/ja not_active Withdrawn
- 2009-09-02 KR KR1020117006598A patent/KR101623223B1/ko active IP Right Grant
- 2009-09-02 RU RU2011111743/08A patent/RU2011111743A/ru unknown
- 2009-09-02 BR BRPI0918043A patent/BRPI0918043A2/pt not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014154157A (ja) * | 2013-02-12 | 2014-08-25 | Lsi Corp | 連鎖された拡張可能な記憶装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2010036491A2 (en) | 2010-04-01 |
US20100082813A1 (en) | 2010-04-01 |
RU2011111743A (ru) | 2012-10-10 |
WO2010036491A3 (en) | 2010-05-27 |
KR101623223B1 (ko) | 2016-05-20 |
EP2350850A2 (en) | 2011-08-03 |
BRPI0918043A2 (pt) | 2015-12-01 |
CN102165430B (zh) | 2014-03-26 |
CN102165430A (zh) | 2011-08-24 |
US7882174B2 (en) | 2011-02-01 |
KR20110063646A (ko) | 2011-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101623223B1 (ko) | 하나의 인터넷 호스팅 시스템 집합에 의해 제공되는 다수의 병렬 사용자 경험 | |
US8074167B2 (en) | Cross domain presence of web user interface and logic | |
JP5443513B2 (ja) | ドメインにわたりクッキーを処理する方法およびシステム | |
US20180052940A1 (en) | Serializing plug-in data in a web page | |
AU2009236553B2 (en) | Inserting a multimedia file through a web-based desktop productivity application | |
US9071570B2 (en) | Method and apparatus to select and deliver portable portlets | |
US20130212465A1 (en) | Postponed rendering of select web page elements | |
US9529648B2 (en) | Generic declaration of bindings between events and event handlers regardless of runtime structure | |
JP6001084B2 (ja) | リダイレクトの低減 | |
US20100305940A1 (en) | Language translation using embeddable component | |
AU2010256785B2 (en) | Utilizing server pre-processing to deploy renditions of electronic documents in a computer network | |
Evjen et al. | Professional ASP. NET 4 in C# and VB | |
US8037484B2 (en) | Building compound extensible AJAX applications | |
US20170171312A1 (en) | Systems and Methods for Managing and Publishing Managed Content | |
US20150319228A1 (en) | Provisioning a web hosting resource using a cloud service | |
Lathkar | Getting started with FastAPI | |
Vogel et al. | An in-depth analysis of web page structure and efficiency with focus on optimization potential for initial page load | |
US20080065679A1 (en) | Method for rules-based drag and drop processing in a network environment | |
CN110574033B (zh) | 减少多媒体内容传递的远程过程调用 | |
US10079831B1 (en) | Qualified web application security based on web application hierarchy | |
Szalek et al. | Conversion rate gain with web performance optimization. A case study | |
Zochniak et al. | Performance comparison of observer design pattern implementations in javascript | |
Sarekoski | Transpiler-based architecture for web applications | |
Nicoara | Automated Testing | |
US10432549B1 (en) | Method and system for scope-sensitive loading of software resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20121106 |