(57)【特許請求の範囲】
【請求項１】
ネットワークに接続しているコンピュータシステムにおいて、ウェブブラウザアプリケーションコンポーネントがオフラインで実行するためのローカルコンテンツを保存する方法であって、
前記コンピュータシステムは、
ウェブブラウザと、
それぞれウェブベースアプリケーションに対応している複数のウェブブラウザアプリケーションコンポーネントと、
を含み、
前記ウェブブラウザは、前記ウェブブラウザアプリケーションコンポーネントを実行して、それぞれ前記ウェブベースアプリケーションに対応しているウェブベースサーバコンポーネントからリソースにアクセスし、
前記方法は、
前記ウェブベースアプリケーションがオフライン実行可能であることを判断するステップと、
前記ウェブベースアプリケーションの前記ウェブベースサーバコンポーネントがネットワーク通信を介して指定されたドメインのウェブサイトにて利用可能であることを検出するステップと、
前記ウェブベースアプリケーションの前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出したことに応答して、前記ウェブベースアプリケーションのオフライン実行を容易にするリソースについての要求を前記ウェブベースサーバコンポーネントに送信するステップであって、該要求は、前記ウェブベースアプリケーションに対応するコンテンツについての要求、前記ウェブベースアプリケーションの実行可能アプリケーションコードについての要求、および前記ウェブベースアプリケーションに対応するデータベースのデータベースデータについての要求を含む、ステップと、
前記ウェブベースサーバコンポーネントから前記リソースを受信する前に、前記ウェブベースサーバコンポーネントがローカルストレージ用に前記コンピュータシステムに送信するリソースの集合を指定し、かつ該リソースの集合を保存するためのストレージ要件を指定する目録を受信するステップであって、該目録はまた、ウェブサーバが利用できない時に前記コンピュータシステムにおいて局所的に実行される実行可能コードモジュールと、ローカルに保存されているリソースの集合を前記ウェブベースサーバコンポーネントにおける前記ウェブベースアプリケーションと同期させるための、前記ウェブベースサーバコンポーネントとのネットワーク通信が存在する時に前記コンピュータシステムにおいて局所的に実行される同期モジュールとを指定する、ステップと、
前記目録において指定される前記ストレージ要件がストレージ割り当て量を超えるか否かを判断し、該ストレージ要件がストレージ割り当て量を超えると判断したら、ユーザに対して前記リソースの集合を保存するのに十分な量まで前記割り当て量を増加することを許可するように指示するステップと、
前記要求を送信するステップの後で、ネットワーク通信を介して前記ウェブベースサーバコンポーネントからウェブベースアプリケーションのリソースの集合を受信するステップであって、該リソースの集合は全体で、前記コンピュータシステムにおけるオフライン実行用の、指定されたドメインから切り取られるウェブサイトの少なくとも一部分の局所的に実行可能なコピーを表し、該リソースの集合は、
前記ウェブベースアプリケーションに対応するコンテンツと、
ウェブサーバが利用できない時に前記コンピュータシステムにおいて局所的に実行される実行可能コードモジュールであって、ウェブブラウザから要求を受信して対応する応答を生成する実行可能コードモジュールを含む、前記ウェブベースアプリケーションの実行可能コードと、
前記ウェブベースアプリケーションに対応するデータベースのデータベースデータの少なくとも一部と
を含む、ステップと、
前記コンピュータシステムにおいて前記受信したリソースの集合を局所的に保存するステップであって、局所的に保存された前記コンテンツおよび前記ウェブベースアプリケーションの実行可能コードはウェブブラウザキャッシュに保存され、局所的に保存された前記データベースデータは該ウェブブラウザキャッシュとは異なる別個のローカルストアに保存され、該コンテンツおよび該データベースデータは前記ウェブベースサーバコンポーネントとのネットワーク通信を必要とせずに前記実行可能コードモジュールにアクセスでき、そして、前記コンテンツ、実行可能コードモジュールおよびデータベースデータは、前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用できないことが検出される時に前記ウェブサイトの切り取られた部分にアクセスするための、前記ウェブブラウザからの後続の要求に対する応答を生成するために使用されうる、ステップと、
前記指定されたドメインにて前記ウェブサイトの一部分にアクセスするための要求を前記ウェブブラウザから受信するステップと、
前記指定されたドメインとの通信が利用できないと判断したら、１つまたは複数の他のウェブブラウザアプリケーションがネットワーク通信を介して実行することを続けながら、前記要求を満たすために前記ウェブブラウザキャッシュから実行可能モジュールをウェブブラウザが局所的にロードするステップと、
前記コンテンツおよびウェブベースアプリケーションの実行可能コードがウェブブラウザキャッシュにて期限切れになる時を延長することにより、ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にするステップと
を含むことを特徴とする方法。
【請求項２】
前記ウェブベースアプリケーションの前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出するステップは、前記ウェブサーバが利用できなかった後に前記ウェブサーバとの通信を再構築するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンピュータシステムにおいて前記受信したリソースの集合を局所的に保存するステップは、前記ウェブベースサーバコンポーネントがその後利用できないということを検出する前に、前記受信したリソースの集合を事前にキャッシュに保存するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ローカルストアへのアクセスは、送信元ドメインによってフィルタ可能であり、前記データベースの少なくとも一部分はドメインに対する要求を満足するためにアクセスすることができない、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にするステップは、前記コンテンツおよびウェブベースアプリケーションの実行可能コードがウェブブラウザキャッシュにて期限切れになる時を延長するために、前記コンテンツおよびウェブベースアプリケーションの実行可能コードにスティッキー・ビットを設定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
ネットワークに接続しているコンピュータシステムにおいて、ウェブベースアプリケーションをオフラインで実行する方法であって、
前記コンピュータシステムは、
ウェブブラウザと、
それぞれウェブベースアプリケーションに対応している複数のウェブブラウザアプリケーションコンポーネントと
を含み、
前記ウェブブラウザは、前記ウェブブラウザアプリケーションコンポーネントを実行して、それぞれ前記ウェブベースアプリケーションに対応しているウェブベースサーバコンポーネントからリソースにアクセスし、
前記方法は、
指定されたドメインのウェブサイトの一部分にアクセスする要求をウェブブラウザから受信するステップであって、該要求は、前記ウェブベースアプリケーションの対応するウェブベースサーバコンポーネントと通信を試みる前記ウェブベースアプリケーションのウェブブラウザアプリケーションから生じ、該ウェブベースサーバコンポーネントは前記指定されたドメインのウェブサイトの一部分にアクセス可能である、ステップと、
前記要求を受信した後で前記指定されたドメインとの通信がネットワークを介して利用できないことを検出するステップと、
前記ウェブベースアプリケーションがオフライン実行可能であることを判断するステップと、
リソースの集合および該リソースの集合を保存するためのストレージ要件を指定する局所的に保存された目録にアクセスするステップであって、該リソースの集合は、前記ウェブベースアプリケーションの局所的に実行可能なコピーを含み、該リソースの集合は、
前記ウェブベースアプリケーションに対応するコンテンツと、
前記ウェブベースアプリケーションの実行可能コードと、
前記ウェブベースアプリケーションに対応するデータベースのデータベースデータの少なくとも一部と
を含み、該目録はまた、前記ウェブサーバが前記ウェブブラウザから要求を受信して対応する応答を生成することに利用できない時に前記コンピュータシステムにおいて局所的に実行される、前記リソースの集合に含まれる実行可能コードモジュールと、ローカルに保存されているリソースの集合を前記ウェブベースサーバコンポーネントにおける前記ウェブベースアプリケーションと同期させるための、前記ウェブベースサーバコンポーネントとのネットワーク通信が存在する時に前記コンピュータシステムにおいて局所的に実行される同期モジュールとを指定する、ステップと、
前記目録において指定される前記ストレージ要件がストレージ割り当て量を超えるか否かを判断し、該ストレージ要件がストレージ割り当て量を超えると判断したら、ユーザに対して前記リソースの集合を保存するのに十分な量まで前記割り当て量を増加することを許可するように指示するステップと、
前記ウェブベースアプリケーションがオフライン実行可能であるとの判断に応答して、前記目録において指定された前記実行可能コードモジュールを実行することによって、前記コンピュータシステムにおいて前記ウェブサイトの一部分の局所的に実行可能なコピーに局所的にアクセスするステップと、
１つまたは複数の他のウェブブラウザアプリケーションがネットワーク通信を介して実行することを続けながら、前記ウェブブラウザが、前記要求に応答して、前記ウェブサイトの一部分の局所的に実行可能なコピーと相互作用して前記リソースの集合から１つまたは複数のリソースを識別するステップであって、ウェブブラウザキャッシュから実行可能モジュールを局所的にロードするステップをさらに含む、ステップと、
前記実行可能コードモジュールは、前記要求に応答して、前記ウェブブラウザキャッシュおよび別個のローカルストアの１つまたは複数のリソースを前記ウェブブラウザアプリケーションコンポーネントに供給し、ウェブブラウザをオフラインにせずに、該実行可能コードモジュールは、ウェブブラウザキャッシュの前記コンテンツおよび前記ウェブベースアプリケーションの実行可能コード、並びに該ウェブブラウザキャッシュとは異なる別個のローカルストアの前記データベースデータにアクセスし、そして、要求されたウェブベースアプリケーションリソースは、前記要求を受信した後に発生するネットワーク通信なしで、ウェブブラウザアプリケーションコンポーネントに供給される、ステップと、
前記コンテンツおよびウェブベースアプリケーションの実行可能コードがウェブブラウザキャッシュにて期限切れになる時を延長することにより、ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にするステップと
を含むことを特徴とする方法。
【請求項７】
前記要求を受信するステップは、前記ウェブベースサーバコンポーネントのＵＲＬを受信するステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記ウェブベースアプリケーションがオフライン実行可能であることを判断するステップは、オフライン実行可能なウェブベースアプリケーションのリストを参照するステップを含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記実行可能コードモジュールが前記ウェブブラウザキャッシュおよび別個のローカルストアの１つまたは複数のリソースを前記ウェブブラウザアプリケーションコンポーネントに供給するステップは、
前記ロードされたモジュールに前記要求を送信するステップと、
前記ロードされたモジュールが前記ウェブブラウザキャッシュおよび別個のローカルストアからアクセスされる前記１つまたは複数のリソースのみを使用して要求に対する応答を生成するステップと、
前記生成された応答を前記ウェブブラウザアプリケーションコンポーネントへ転送するステップと、
をさらに含むことを特徴とする請求項６に記載の方法。
【請求項１０】
コンピュータシステムであって、
１つまたは複数のプロセッサと、
システムメモリと、
前記コンピュータシステムに局所的に配置された１つまたは複数の物理的なコンピュータ読み取り可能な記憶媒体であって、前記プロセッサによって実行される時に、ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントがオフラインで実行するためのローカルコンテンツを設定する方法を前記コンピュータシステムに実行させるコンピュータ実行可能命令を保存する、１つまたは複数の物理的なコンピュータ読み取り可能な記憶媒体と、
を備え、
前記方法は、
前記ウェブベースアプリケーションがオフライン実行可能であることを判断するステップと、
前記ウェブベースアプリケーションのウェブベースサーバコンポーネントがネットワーク通信を介して指定されたドメインのウェブサイトにて利用可能であることを検出するステップと、
前記ウェブベースアプリケーションの前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出したことに応答して、前記ウェブベースアプリケーションのオフライン実行を容易にするリソースについての要求を前記ウェブベースサーバコンポーネントに送信するステップであって、該要求は、前記ウェブベースアプリケーションに対応するコンテンツについての要求、前記ウェブベースアプリケーションの実行可能アプリケーションコードについての要求、および前記ウェブベースアプリケーションに対応するデータベースのデータベースデータについての要求を含む、ステップと、
前記ウェブベースサーバコンポーネントから前記リソースを受信する前に、前記ウェブベースサーバコンポーネントがローカルストレージ用に前記コンピュータシステムに送信するリソースの集合を指定し、かつ該リソースの集合を保存するためのストレージ要件を指定する目録を受信するステップであって、該目録は、ウェブサーバが利用できない時に前記コンピュータシステムにおいて局所的に実行される実行可能コードモジュールと、ローカルに保存されているリソースの集合を前記ウェブベースサーバコンポーネントにおける前記ウェブベースアプリケーションと同期させるための、前記ウェブベースサーバコンポーネントとのネットワーク通信が存在する時に前記コンピュータシステムにおいて局所的に実行される同期モジュールとを指定する、ステップと、
前記目録において指定される前記ストレージ要件がストレージ割り当て量を超えるか否かを判断し、該ストレージ要件がストレージ割り当て量を超えると判断したら、ユーザに対して前記リソースの集合を保存するのに十分な量まで前記割り当て量を増加することを許可するように指示するステップと、
前記要求を送信するステップの後で、ネットワーク通信を介して前記ウェブベースサーバコンポーネントからウェブベースアプリケーションのリソースの集合を受信するステップであって、該リソースの集合は全体で、前記コンピュータシステムにおけるオフライン実行用の、指定されたドメインから切り取られるウェブサイトの少なくとも一部分の局所的に実行可能なコピーを表し、該リソースの集合は、
前記ウェブベースアプリケーションに対応するコンテンツと、
ウェブサーバが利用できない時に前記コンピュータシステムにおいて局所的に実行される実行可能コードモジュールであって、ウェブブラウザから要求を受信して対応する応答を生成する実行可能コードモジュールを含む、前記ウェブベースアプリケーションの実行可能コードと、
前記ウェブベースアプリケーションに対応するデータベースのデータベースデータの少なくとも一部と
を含む、ステップと、
前記コンピュータシステムにおいて前記受信したリソースの集合を局所的に保存するステップであって、局所的に保存された前記コンテンツおよび前記ウェブベースアプリケーションの実行可能コードはウェブブラウザキャッシュに保存され、局所的に保存された前記データベースデータは該ウェブブラウザキャッシュとは異なる別個のローカルストアに保存され、該コンテンツおよび該データベースデータは前記ウェブベースサーバコンポーネントとのネットワーク通信を必要とせずに前記実行可能コードモジュールにアクセスでき、そして、前記コンテンツ、実行可能コードモジュールおよびデータベースデータは、前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用できないことが検出される時に前記ウェブサイトの切り取られた部分にアクセスするための、前記ウェブブラウザからの後続の要求を満足するために使用されうる、ステップと、
前記コンテンツおよびウェブベースアプリケーションの実行可能コードがウェブブラウザキャッシュにて期限切れになる時を延長することにより、ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にするステップと
を含み、
前記１つまたは複数の物理的なコンピュータ読み取り可能な記憶媒体は、前記プロセッサによって実行される時に、ウェブベースアプリケーションをオフラインで実行する方法を前記コンピュータシステムに実行させるコンピュータ実行可能命令を保存し、
該方法は、
指定されたドメインのウェブサイトの一部分にアクセスする要求をウェブブラウザから受信するステップであって、該要求は、前記ウェブベースアプリケーションの対応するウェブベースサーバコンポーネントと通信を試みる前記ウェブベースアプリケーションのウェブブラウザアプリケーションから生じ、該ウェブベースサーバコンポーネントは前記指定されたドメインのウェブサイトの一部分にアクセス可能である、ステップと、
前記要求を受信した後で前記指定されたドメインとの通信がネットワークを介して利用できないことを検出するステップと、
前記ウェブベースアプリケーションがオフライン実行可能であることを判断するステップと、
前記ウェブベースアプリケーションがオフライン実行可能であるとの判断に応答して、前記コンピュータシステムにおいて前記ウェブサイトの一部分の局所的に実行可能なコピーに局所的にアクセスするステップであって、該局所的に実行可能なコピーは、前記コンピュータシステムにおけるローカルな実行のために前記指定されたドメインから以前に切り取られており、前記ウェブサイトの一部分の局所的に実行可能なコピーは、前記コンピュータシステムにて局所的に保存されるリソースの集合を含み、該リソースの集合は、
前記ウェブベースアプリケーションに対応するコンテンツと、
ウェブサーバが利用できない時に前記コンピュータシステムにおいて局所的に実行される実行可能コードモジュールであって、ウェブブラウザから要求を受信して対応する応答を生成する実行可能コードモジュールを含む、前記ウェブベースアプリケーションの実行可能コードと、
前記ウェブベースアプリケーションに対応するデータベースのデータベースデータの少なくとも一部と
を含む、ステップと、
１つまたは複数の他のウェブブラウザアプリケーションがネットワーク通信を介して実行することを続けながら、前記ウェブブラウザが、前記要求に応答して、前記ウェブサイトの一部分の局所的に実行可能なコピーと相互作用して前記リソースの集合から１つまたは複数のリソースを識別するステップであって、前記ウェブブラウザキャッシュから実行可能モジュールを局所的にロードするステップをさらに含む、ステップと、
前記実行可能コードモジュールは、前記要求に応答して、前記ウェブブラウザキャッシュおよび別個のローカルストアの１つまたは複数のリソースを前記ウェブブラウザアプリケーションコンポーネントに供給し、ウェブブラウザをオフラインにせずに、該実行可能コードモジュールは、ウェブブラウザキャッシュの前記コンテンツおよび前記ウェブベースアプリケーションの実行可能コード、並びに該ウェブブラウザキャッシュとは異なる別個のローカルストアの前記データベースデータにアクセスし、そして、要求されたウェブベースアプリケーションリソースは、前記要求を受信した後に発生するネットワーク通信なしで、ウェブブラウザアプリケーションコンポーネントに供給される、ステップと
を含むことを特徴とするコンピュータシステム。
【請求項１１】
前記コンピュータシステムにおいて前記受信したリソースの集合を局所的に保存するステップは、前記ウェブベースサーバコンポーネントがその後利用できないということを検出する前に前記受信したリソースの集合を事前にキャッシュに保存するステップを含むことを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１２】
前記コンピュータシステムにおいて前記受信したリソースの集合を局所的に保存するステップは、局所的に保存されたリソースを前記指定されたドメイン内で前記ウェブベースサーバコンポーネントが利用できるリソースと同期させるステップを含むことを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１３】
前記プロセッサによって実行される時に、前記コンピュータシステムに、
前記ウェブベースアプリケーションの前記ウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出したことに応答して、前記ウェブベースサーバコンポーネントを利用できるか否かについての通知をユーザに送信するステップ、
を実行させるコンピュータ実行可能命令をさらに含むことを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１４】
前記実行可能コードモジュールが前記ウェブブラウザキャッシュおよび別個のローカルストアの１つまたは複数のリソースを前記ウェブブラウザアプリケーションコンポーネントに供給するステップは、
局所的にロードされたモジュールに前記要求を送信するステップと、
前記ロードされたモジュールが前記ブラウザキャッシュおよび別個のローカルストアからアクセスされる前記１つまたは複数のリソースのみを使用して要求に対する応答を生成するステップと、
前記生成された応答を前記ウェブブラウザアプリケーションコンポーネントに転送するステップと
をさらに含むことを特徴とする請求項１０に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブベースアプリケーションのオフライン実行のための方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータシステム及び関連技術は、社会の様々な側面に影響を与える。実際、情報を処理するコンピュータシステムの能力は、我々が生活しかつ働く方法を変革している。現在、コンピュータシステムは、コンピュータシステムの出現前には手作業で行われていた多くのタスク（例えば、文書処理、スケジューリング、会計等）を普通に行っている。さらに最近では、コンピュータシステムは、互いにかつ他の電子デバイスに接続されて、有線及び無線のコンピュータネットワークを形成し、そのコンピュータネットワークを介してコンピュータシステム及び他の電子デバイスは電子データを転送することができる。従って、多くのコンピュータのタスクの実行は、多くの異なるコンピュータシステム及び／または多くの異なるコンピュータコンポーネントに分散されている。
【０００３】
ネットワークベースの通信のある一般的形式では、ワールドワイドウェブ（ＷＷＷ）上で電子メッセージが交換されている。ワールドワイドウェブ上のコンテンツは、クライアント／サーバモデルで通常アクセスされる。クライアントコンピュータシステムの「ウェブブラウザ」は、（例えば、ウェブブラウザにＵＲＬ（Uniform Resource Locator）を入力することによって）サーバコンピュータシステムの「ウェブサーバ」により提供されているコンテンツへのアクセス要求を送信する。ウェブブラウザのユーザがコンテンツへのアクセス権を与えられている場合、ウェブサーバは通常、ウェブブラウザにコンテンツを提供する。ウェブ環境では、コンテンツ及びコンテンツ要求は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を用いて運ばれることが多い。ウェブベースコンテンツは、ハイパーテキストマークアップ言語（ＨＴＭＬ）ページ、スタイルシート、画像、スクリプトなどで提供され得る。
【０００４】
全てではないがほとんどのウェブブラウザは、ウェブページの次のレンダリングをより効率的に示すことができるように、共通の記憶場所（ブラウザキャッシュ）においてウェブベースコンテンツの一部をキャッシュに格納する。例えば、ウェブブラウザがウェブサーバからウェブページを受信すると、ウェブブラウザは、ウェブページに含まれるコンテンツの一部を局所的にキャッシュに格納することができる。よって、ウェブブラウザがその後同じウェブページを対象とする場合、ウェブブラウザは、コンテンツのキャッシュした部分が存在するかどうか共通の記憶場所を調べ、キャッシュしたコンテンツのいずれかの部分がネットワークを介して受信される他のコンテンツと結合されて、ウェブページが構成され得る。従って、局所的にキャッシュしたコンテンツを用いることにより、ウェブサーバからのコンテンツを表示するためにネットワークを介して転送されるデータ量を減らすことができる。結果的に、ウェブページはより迅速にレンダリングされ、ユーザ体験を改善することができる。
【０００５】
しかしながら、一般的に、たとえウェブページの一部だけが変化する場合であっても、ページ全体がネットワークを介してリロードされてウェブブラウザ上で表示される。例えば、ウェブブラウザは、ウェブページにアクセスし、ネットワーク通信を介してウェブページのコンテンツをダウンロードし、ウェブページからのコンテンツをキャッシュに格納することもある。ウェブページのコンテンツがその後に変化する場合、ウェブページのほんの少しの部分が変化した場合であっても、ウェブブラウザはウェブページ全体を再ダウンロードする必要があるかもしれない。
【０００６】
よって、さらに最近では、ウェブブラウザには、部分的なページ更新を行ってキャッシュに格納したコンテンツをよりよく利用するものがある。ウェブページの適用部分が変化すると、コンテンツは再ダウンロードされる。しかしながら、ウェブブラウザは、ウェブページの一部の変化に応じてウェブページの全てのコンテンツを必ずしも再ダウンロードしなければならないというわけではない。例えば、ウェブページ内の単一の画像が変化すると、ウェブブラウザは変化を検出して、変化していないキャッシュした他のコンテンツを再ダウンロードせずに単一の画像を再ダウンロードすることができる。
【０００７】
ウェブベースアプリケーションにはまた、ウェブブラウザがデータベース（例えば、ＳＱＬデータベース）からのデータと相互に作用することを可能にするものがある。ウェブサーバは、ウェブブラウザから要求を受信して、データベースのデータの適当な部分にアクセスし、ウェブブラウザにデータベースのデータを返送する。ウェブベースアプリケーションの設定により、ユーザはまた、ウェブブラウザを介してデータベースのデータの一部を変更することが可能であってもよい。例えば、ユーザは、ウェブブラウザを介してデータベースレコードを生成して、修正することが可能であってもよい。環境によっては、ユーザは、ウェブブラウザを介してＳＱＬ動作（CREATE TABLE、SELECT、INSERT、UPDATE、DELETE等）を実行することができる。よって、ウェブブラウザは、ネットワーク（例えば、インターネット）を介してデータベースのデータを操作するユーザインタフェースを基本的に提供している。
【０００８】
しかしながら、表形式データ（例えば、データベースからのデータ）を適当にキャッシュに格納するウェブブラウザ用メカニズムは通常はない。通常、ユーザは、常にデータベース内の全てのデータにアクセスしない。よって、あらゆる受信したデータベースのデータをキャッシュに格納することは、不完全な（かつ、潜在的に機能していない）データセットをもたらす。更に、コンテンツは通常、共通の場所（ブラウザキャッシュ）においてキャッシュに格納されるので、あるウェブサイト（またはドメイン）からのデータベースのデータをキャッシュに格納することにより、ウェブブラウザがアクセスする他の任意のウェブサイト（またはドメイン）で、キャッシュしたデータベースのデータが潜在的に利用可能にされる。例えば、ウェブブラウザがその後に（かつもしかするとユーザに知られない間に）悪質なウェブサイト（それは、ブラウザキャッシュを調べることができる）を対象にすると、キャッシュに格納された会社の財政データは危険にさらされる。
【０００９】
更に、多くのデータベースは大量のデータを含むので、データベースのデータを局所的にキャッシュに格納することにより、割り当てられたブラウザキャッシュのスペースがすぐにいっぱいになることもあり得る。
【００１０】
更に、全てではないにしてもほとんどのブラウザは、「オフライン」モードで動作する能力を欠いている。即ち、ウェブサイトが利用できないと（例えば、アクティブのネットワーク接続が検出されないと、または対応するウェブサーバがダウンしていると）、全てのウェブサイトに対してブラウザをオフラインにすることなしに、ウェブブラウザは意味のあるコンテンツを通常示すことができない。例えば、利用できないウェブサーバから、ＨＴＭＬページまたは画像などのリソースをウェブブラウザがロードしようとすると、ウェブブラウザは、（リソースが局所的にキャッシュに格納される場合であっても）リソースをレンダリングすることに失敗する。よって、データベースのデータ（または他の任意のタイプのコンテンツ）がキャッシュに格納された場合であっても、ウェブブラウザは、データベースのデータ（または他のタイプのコンテンツ）をオフラインモードで示すことができない。
【発明の概要】
【００１１】
本発明は、ウェブベースアプリケーションのオフライン実行用の方法、システム、及びコンピュータプログラム製品にまで及ぶ。いくつかの実施形態では、コンピュータシステムは、ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによって、オフライン使用用のローカルコンテンツを設定する。コンピュータシステムは、ウェブベースアプリケーションがオフライン実行可能であることを判断する。コンピュータシステムは、当該ウェブベースアプリケーション用のウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出する。
【００１２】
コンピュータシステムは、ネットワーク通信を介してウェブベースサーバコンポーネントから、ウェブベースアプリケーション用のリソースを受信する。コンピュータシステムは、受信したリソースをコンピュータシステムにおいて局所的に保存する。局所的に保存されたリソースのコピーは、ネットワーク通信を必要とせずにウェブブラウザクライアントコンポーネントがアクセスすることができる。このように、ウェブベースサーバコンポーネントがネットワーク通信を介して利用できないことが検出されると、局所的に保存されたリソースを、ウェブベースクライアントコンポーネントからの要求に応じてアクセスすることができる。コンピュータシステムは、局所的に保存されたリソースを指定された期間コンピュータシステムに局所的に保存されたままにするよう設定し、それによってウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にする。
【００１３】
他の実施形態では、コンピュータシステムは、ウェブベースアプリケーションをオフラインで実行する。ウェブベースアプリケーション用のウェブブラウザアプリケーションコンポーネントは、ウェブベースアプリケーションに対応するウェブサーバアプリケーションコンポーネントに、ウェブベースアプリケーションリソースのオンライン要求をネットワークを介して送信する。コンピュータシステムは、その要求が失敗したことを検出する。コンピュータシステムは、ウェブベースアプリケーションがオフライン実行可能であることを判断する。コンピュータシステムは、ウェブブラウザが当該ウェブブラウザアプリケーションをオフラインで実行するように設定するが、一方他のウェブブラウザアプリケーションはオンラインで実行するように設定されたままである。コンピュータシステムは、当該ウェブブラウザをオフラインにせずに、コンピュータシステムのローカルストレージから要求されたウェブベースアプリケーションリソースを供給する。
【００１４】
この概要は、詳細な説明で更に後述される単純化された形式の概念の選択を導くために提供される。この概要は、特許請求の範囲に記載された発明の重要な特徴または本質的な特徴を識別することを意図していないし、特許請求の範囲に記載された発明の範囲を決定する際の助けとして用いられることも意図していない。
【００１５】
本発明の追加の特徴及び利点は後述の詳細な説明に示されており、一部は詳細な説明から明らかになってもよいし、または本発明の実施によって理解されてもよい。本発明の特徴及び利点は、添付の特許請求の範囲で特に指摘された手段及び組み合わせを用いて、実現されかつ得られてもよい。本発明のこれらの特徴及びその他の特徴は、以下の詳細な説明及び添付の特許請求の範囲から更に十分に明らかになり、または、以下に記載されるように本発明の実施によって理解されてもよい。
【図面の簡単な説明】
【００１６】
本発明の上述した利点及び特徴並びに他の利点及び特徴を得ることができる方法を説明するために、上記に簡潔に説明した本発明のより具体的な説明が、添付の図面で示した特定の実施形態を参照して示される。これらの図面は本発明の典型的な実施形態を表すだけであり、その範囲を限定するとみなされるべきでないということが理解されるので、本発明は、添付の図面を用いることで付加的な特性及び詳細をもって記述されかつ説明される。
【図１Ａ】ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによってオフライン使用用のローカルコンテンツを設定するのを容易にするコンピュータアーキテクチャの例を示す図である。
【図１Ｂ】ウェブベースアプリケーションをオフラインで実行するのを容易にするコンピュータアーキテクチャの例を示す図である。
【図２】ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによってオフライン使用用のローカルコンテンツを設定する方法の例についてのフローチャートである。
【図３】ウェブベースアプリケーションをオフラインで実行する方法の例についてのフローチャートである。
【発明を実施するための形態】
【００１７】
本発明は、ウェブベースアプリケーションのオフライン実行用の方法、システム、及びコンピュータプログラム製品にまで及ぶ。いくつかの実施形態では、コンピュータシステムは、ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによって、オフライン使用用のローカルコンテンツを設定する。コンピュータシステムは、ウェブベースアプリケーションがオフライン実行可能であることを判断する。コンピュータシステムは、ウェブベースアプリケーション用のウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出する。
【００１８】
コンピュータシステムは、ネットワーク通信を介してウェブベースサーバコンポーネントから、ウェブベースアプリケーション用のリソースを受信する。コンピュータシステムは、受信したリソースをコンピュータシステムで局所的に保存する。局所的に保存されたリソースのコピーは、ネットワーク通信を必要とせずにウェブブラウザクライアントコンポーネントがアクセス可能である。このように、ウェブベースサーバコンポーネントがネットワーク通信を介して利用できないことが検出されると、局所的に保存されたリソースは、ウェブベースクライアントコンポーネントからの要求に応じてアクセスされ得る。コンピュータシステムは、局所的に保存されたリソースを指定された期間コンピュータシステムに局所的に保存されたままにするよう設定し、それによってウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にする。
【００１９】
他の実施形態では、コンピュータシステムは、ウェブベースアプリケーションをオフラインで実行する。ウェブベースアプリケーション用のウェブブラウザアプリケーションコンポーネントは、ウェブベースアプリケーションに対応するウェブサーバアプリケーションコンポーネントにウェブベースアプリケーションリソースに対するオンライン要求をネットワークを介して送信する。コンピュータシステムは、その要求が失敗したことを検出する。コンピュータシステムは、ウェブベースアプリケーションがオフライン実行可能であることを判断する。コンピュータシステムは、そのウェブブラウザアプリケーションをオフラインで実行するように当該ウェブブラウザを設定し、一方、他のウェブブラウザアプリケーションはオンラインで実行するように設定されたままである。コンピュータシステムは、ウェブブラウザをオフラインにせずに要求されたウェブベースアプリケーションリソースをコンピュータシステムのローカルストレージから供給する。
【００２０】
本発明の実施形態は、更に詳細に以下で検討されるように、コンピュータハードウェアを有している専用コンピュータまたは汎用コンピュータを含んでいてもよい。本発明の範囲内の実施形態はまた、そこに保存されたコンピュータ実行可能命令またはデータ構造を運ぶかまたは有するコンピュータ可読媒体を含む。かかるコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータによってアクセスされ得るいかなる利用可能な媒体であってもよい。一例であって限定ではないが、コンピュータ可読媒体は、例えばＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、コンピュータ実行可能命令またはデータ構造の形式で所望のプログラムコード手段を保存するために用いられることができかつ汎用コンピュータまたは専用コンピュータによってアクセスされ得る他の任意の媒体などの、物理的な（または記録可能なタイプの）コンピュータ可読の記憶媒体を含むことができる。
【００２１】
この詳細な説明及び特許請求の範囲において、「ネットワーク」は、コンピュータシステム及び／またはモジュールの間で電子データの搬送を可能にする１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（有線、無線、または、有線もしくは無線の組合せのいずれか）を介してコンピュータに転送されるかまたは提供されると、コンピュータは、当該接続をコンピュータ可読媒体と見なす。よって、例であって限定ではないが、コンピュータ可読媒体はまた、コンピュータ実行可能命令またはデータ構造の形式で所望のプログラムコード手段を運ぶかまたは保存するために用いられてかつ汎用コンピュータまたは専用コンピュータによってアクセスされ得るネットワークまたはデータリンクを含んでいてもよい。
【００２２】
例えば、コンピュータ実行可能命令は、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能グループを実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、二進数、例えばアセンブリ言語などの中間フォーマット命令、またはソースコードであってもよい。本発明が構造上の特徴及び／または方法論的動作に固有な言語で記載されていたにもかかわらず、添付の特許請求の範囲において画定される本発明は必ずしも上述の特徴または動作に限定されるというわけではないと理解されるべきである。むしろ、記載されている特徴及び動作は、特許請求の範囲を実行する例の形式として開示されている。
【００２３】
本発明は、多様なコンピュータシステム構成を備えたネットワークコンピュータ環境において実施されてもよいということを当業者は認めるだろう。該コンピュータシステム構成には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャーなどを含む。本発明はまた、分散システム環境において実施されてもよく、分散システム環境では、ネットワークを介して（有線データリンク、無線データリンクによって、または有線データリンクまたは無線データリンクの組合せによってのいずれかで）リンクされるローカルコンピュータシステム及びリモートコンピュータシステムの両方がタスクを実行する。分散システム環境では、プログラムモジュールは局所的な記憶装置またはリモートの記憶装置にあってもよい。
【００２４】
図１Ａは、コンピュータアーキテクチャ１００の一例を示す。コンピュータアーキテクチャ１００は、ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによってオフライン使用用のローカルコンテンツを設定するのを容易にする。コンピュータアーキテクチャ１００は、コンピュータシステム１０１、ネットワーク１３１、及びドメイン１７２を含む。アプリケーション１９１Ｃ、ウェブブラウザ１０４、アプリケーション１９１Ｓ、及びウェブサーバ１７３を含む様々なコンポーネントが、コンピュータアーキテクチャ１００に示されている。様々なコンポーネントの各々は、例えばローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、またはインターネットなどのネットワーク１３１に接続されていてもよい。よって、様々なコンポーネントは、ネットワークに接続された他のコンポーネントからデータを受信しかつそれらにデータを送信することができる。従って、コンポーネントはメッセージ関連データを生成し、ネットワークを介してメッセージ関連データ（例えば、インターネットプロトコル（ＩＰ）データグラム、及び、例えば、ＴＣＰ（Transmission Control Protocol）、ＨＴＴＰ（HyperText Transfer Protocol）、ＳＭＴＰ（Simple Mail Transfer Protocol）等のＩＰデータグラムを利用する他の上位層プロトコル）を交換することができる。例えば、コンポーネントは、ウェブサービス関連データを含むＳＯＡＰ（Simple Object Access Protocol）エンベロープを交換することができる。いくつかの実施形態では、アプリケーション１９１Ｃ及びアプリケーション１９１Ｓは、例えば、ウェブサービスアプリケーションなどの分散アプリケーションの異なる部分である。
【００２５】
ウェブブラウザ１０４は、ネットワーク１３１を介してアクセス可能な、例えばドメイン１７１などのドメインに、ウェブベースコンテンツを要求するように設定されてもよい。ウェブベースコンテンツは、テキストデータ、画像データ、オーディオ／ビデオデータ等を含んでいてもよい。例えば、アプリケーション１９１Ｃなどの１つまたは複数のウェブベースアプリケーションは、ウェブブラウザ１０４内で実行するように設定されてもよい。ウェブベースアプリケーションは、スクリプト及び／または他のコンピュータ実行可能命令であってもよい。ウェブベースアプリケーションは、ネットワーク１３１を介してアクセス可能なドメインに、例えばデータベースのデータなどの他のタイプのデータを要求することができる。
【００２６】
ドメイン１７１は、例えばＩＰアドレスに分解可能なドメインネームサービス（ＤＮＳ）ネームなどのドメインネーム１７２によって識別され得る。ドメインネーム１７２は、（ドメイン１７１内の指定されたアプリケーションについての他の識別情報とともに潜在的に）ブラウザに入力されて、ウェブサーバ１７３にコンテンツを要求するようにブラウザに指示することができる。他の識別情報とともにドメインネーム１７２は、ウェブブラウザに入力されたＵＲＬに含まれていてもよい。要求のタイプ及び／または受信されたＵＲＬにより、ウェブサーバ１７３は、コンテンツ１７５からのコンテンツにアクセスし、かつ／または例えばアプリケーション１９１Ｓなどのウェブベースアプリケーションを開始することができる。アプリケーション１９１Ｓは、例えば、データベース１７４など（例えば、ＳＱＬまたは他のリレーショナルデータベース）のドメイン１７１内の他の位置にデータを要求することができる。ウェブサーバ１７３は、ウェブブラウザ要求に応じてコンテンツ１７５からのコンテンツ及び／またはデータベース１７４からのデータ１７４を含むことができる。
【００２７】
ブラウザキャッシュ１０６は、ドメイン１７１を含むドメインから受信されるウェブベースコンテンツに含まれるコンポーネントをキャッシュに格納するように設定される。キャッシュに格納されたコンポーネントは、その後利用可能にされて、ウェブブラウザ１０４から送信されるウェブベース要求を実行することができる。例えば、キャッシュに格納されたコンポーネントは、（ネットワーク１３１を介してキャッシュに格納されたコンポーネントの搬送の必要なしに）ブラウザキャッシュ１０６から直接アクセスされかつウェブブラウザ１０４内でレンダリングされるコンテンツ１７５の一部であり得る。
【００２８】
ウェブブラウザがウェブブラウザ１０４のウェブアプリケーションからの要求を処理しようとすると、ウェブブラウザは、ブラウザキャッシュ１０６にアクセスして局所的にキャッシュに格納されたコンポーネントを検索することができる。キャッシュに格納されたコンポーネントが識別されると、ウェブブラウザはコンポーネントにアクセスして、ウェブブラウザ１０４のウェブアプリケーション内でレンダリングされるべき応答内にコンポーネントを含むことができる。
【００２９】
ローカルストアアクセスモジュール１０７は、ローカルストア１０８へのアクセスを管理する。ローカルストア１０８は、ウェブベース要求に応じて受信されるデータベースのデータを保存するように設定される。ローカルストア１０８に保存されるデータベースのデータは、（ネットワーク１３１を介してデータベースのデータを運ぶ必要なしに）ウェブブラウザ１０４によってアクセスされて、ウェブブラウザ１０４内のウェブベースアプリケーションでレンダリングされ得る。データベースのデータは、データベースのデータをウェブブラウザ１０４に送信したドメインの指示とともに、ローカルストア１０８に保存されてもよい。
【００３０】
ローカルストアアクセスモジュール１０７は、ローカルストア１０８に保存されているデータベースのデータへのアクセスを要求しているウェブサーバから、スクリプトコードモジュールからの要求をフィルタリングすることができ、１つのドメインは他のドメインのデータベースのデータにアクセスすることができない（即ち、データベースのデータは、ドメインによってサンドボックス（sandbox）され得る）。よって、データベースのデータは、ローカルストア１０８に保存されるが、データベースのデータは、通常、任意のドメインに対する要求を実行するためにアクセス可能ではない。
【００３１】
オフラインマネージャ１２２は、アプリケーションのオフライン状態を管理するように設定される。アプリケーションがオフライン実行可能であるという指示をオフラインマネージャ１２２が受信すると、オフラインマネージャ１２２は、アプリケーションのオフライン動作用のコンポーネント及び／またはデータをブラウザキャッシュ１０６及び／またはローカルストアに投入しようと試みることができる。即ち、オフラインマネージャ１２２は、オンラインになっているウェブサーバとの通信を開始し、ウェブサーバとの通信がその後開放される（lose）場合には、アプリケーションのオフライン実行に潜在的に必要とされるコンポーネント及び／またはデータをダウンロードする。
【００３２】
オフラインマネージャ１２２は、オフライン実行用に用いられるコンポーネントの期限切れを延長して、ウェブブラウザ１０４のデフォルトのキャッシュ再生利用ポリシーを無効にすることができる。例えば、オフラインマネージャ１２２は、オフライン実行用に用いられるコンポーネントの期限切れを３０日に設定することができる。オフライン実行に対して用いられるべきコンポーネントの期限切れを延長することにより、ウェブブラウザ１０４が他のウェブサイトをナビゲートするときに、ブラウザがコンポーネントを除去できないようにすることができる。
【００３３】
設定インタフェース１０２は、オフライン動作可能アプリケーション及びドメイン用のストレージ割り当てのユーザ設定を容易にする。例えば、ユーザは、オフライン実行可能アプリケーションとしてアプリケーション１９１Ｃを選択し、それによって、アプリケーション１９１Ｃがオフライン動作可能アプリケーション１２１（例えば、コンピュータシステム１０１のユーザがオフライン実行可能であると識別したアプリケーションのリスト）に含まれるようにする。ユーザは、また、ドメインに対するストレージ割り当ての値を最初に設定することも変更することもできる。例えば、ユーザは、割り当てデータの範囲内で、（ドメインネーム１７２で表される）ドメイン１７１に対する割り当て値１１２を設定することができる。通常、割り当ては、コンピュータシステム１０１で局所的にアイテムを保存するドメイン（例えば、ブラウザキャッシュ１０６及び／またはローカルストア１０８内の）に割り当てられるストレージスペースの量である。設定インタフェース１０２は、オフライン動作可能アプリケーション及びドメイン割り当てのためのユーザ設定を受信して実行するユーザインタフェース制御を示すことができる。別個に表されているが、オフラインマネージャ１２２とローカルストアアクセスモジュール１０７とは、協働して相互に作用し、指定されたドメインのためのブラウザキャッシュ１０６及びローカルストア１０８において費やされるストレージスペースの合計が指定されたドメインのための割り当てを上回らないようにすることができる。
【００３４】
オフライン検出器１２３は、ウェブブラウザ１０４またはウェブベースアプリケーションがウェブサーバと通信することができない時を検出するように設定される。ウェブサーバとの通信は、例えば、インターネットへのまたはインターネット上の通信リンクの障害、ウェブサーバがクラッシュした等の多くの理由により、利用できないかもしれない。いくつかの実施形態では、オフライン検出器１２３は、ウェブサーバとのコンタクトが利用できるかどうかを判断するために時々または指定された間隔でウェブサーバにコンタクトしようとする。
【００３５】
オフライン検出器１２３は、ウェブサーバとの通信の状態が変化すると、オフラインマネージャ１２２及び／またはローカルストアアクセスモジュール１０７に通知することができる。例えば、オフライン検出器１２３は、利用可能なウェブサーバが利用できなくなると（例えば、通信障害、ウェブサーバのクラッシュ等）、かつ利用できないウェブサーバが利用可能になると（例えば、通信が復旧した、ウェブサーバが再開後に動作を開始する等）通知を送信することができる。オフライン検出器１２３はまた、ユーザにウェブサーバの利用可能性の遷移を警告するユーザインタフェース通知を（例えば、設定インタフェース１０２を介して）送信することができる。
【００３６】
図２は、ウェブベースアプリケーションのウェブブラウザアプリケーションコンポーネントによって、オフライン使用用のローカルコンテンツを設定する方法２００の一例についてのフローチャートを示す。方法２００は、図１Ａのコンピュータアーキテクチャ１００のコンポーネント及びデータに関して説明される。
【００３７】
方法２００は、ウェブベースアプリケーションがオフライン実行可能であることを判断する動作を含む（動作２０１）。例えば、オフラインマネージャ１２２は、オフライン動作可能アプリケーション１２１にアクセスして、アプリケーション１９１Ｃがオフライン実行可能であることを判断することができる。方法２００は、ウェブベースアプリケーション用のウェブベースサーバコンポーネントがネットワーク通信を介して利用可能であることを検出する動作を含む（動作２０２）。例えば、オフライン検出器１２３は、ウェブサーバ１７３、アプリケーション１９１Ｓ、及びドメイン１７２の他のコンポーネントがネットワーク１３１を介した通信に利用可能であることを検出することができる。
【００３８】
利用可能な通信を検出するのに応じて、ウェブブラウザ１０４は、リソース要求を送信してアプリケーション１９１Ｃのオフライン実行を容易にすることができる。例えば、ウェブブラウザ１０４は、ウェブサーバ１７３へ要求１９９を送信することができる。要求１９９は、様々な異なるリソース要求を含むことができる。様々な異なるリソース要求には、コンテンツ１７５からのコンテンツ、データベース１７４からのデータベースのデータ、及びアプリケーション１９１Ｓに対応する実行可能命令（例えば、スクリプト）の一部を含むがこれらに限定されない。
【００３９】
ウェブサーバ１７３は、要求１９９を受信することができる。要求１９９の受信に応じて、ウェブサーバ１７３は、リソースの集合（例えばリソース１９３Ｂ）を集めて、アプリケーション１９１Ｃのオフライン実行を容易にすることができる。即ち、ウェブサーバ１７３は、コンピュータシステム１０１に転送するためにドメイン１７２内のウェブサイトの一部を「破り取る（tear off）」（例えば、その機能的なコピーを作る）ことができる。ウェブサーバ１７３は、コンピュータシステム１０１にリソースの集合を送信することができる。例えば、要求１９９に応じて、ウェブサーバ１７３は、コンピュータシステム１０１にリソース１９３Ｂ（アプリケーション１９１Ｃのオフライン実行を容易にするリソースの集合）を送信することができる。リソース１９３Ｂは、リソース１９４Ｂ（アプリケーション１９１Ｓのコード、コンテンツ１７５からのコンテンツ等）及びデータベース１７４（またはその一部）を含むことができる。
【００４０】
いくつかの実施形態では、ドメインはまた、リソースの集合を送信する前にリソース目録（manifest）を送信することができる。リソース目録は、リソースの集合に含まれるリソースを識別することができ、リソースの集合を保存するためのストレージ要求を示すことができる。リソース目録はまた、アプリケーションに対応するＵＲＬ（それは、ウェブサーバまたはサーバー側の分散されたアプリケーションコンポーネントにおいてリモートの実行をもたらす）が受信されると、アプリケーションのオフライン実行を容易にするために局所的に実行されるべきであるモジュールを指し示すことができる。リソース目録はまた、アプリケーションのオフライン実行を容易にするリソースを同期させるために実行されることになっているモジュールを指し示すことができる。以前に利用できなかったウェブサーバ及び／またはアプリケーションが利用できるようになると、リソースは、利用可能なウェブサーバ及び／またはアプリケーションと周期的に、または、ウェブサーバ及び／またはアプリケーションと同期するためのユーザ要求に応じて、同期することができる。オフライン実行を開始するモジュール及びリソースを同期させるモジュールは、それら自身が、アプリケーションのオフライン実行を容易にするリソースの集合に含まれるリソースであってもよい。
【００４１】
コンピュータアーキテクチャ１００において示されているように、例えば、ウェブサーバ１７３は、コンピュータシステム１０１に目録１９２を送信することができる。ウェブサーバ１７３及び／またはアプリケーション１９１Ｓに対応するＵＲＬが、ウェブブラウザ１０４で受信されて、リソース１９３Ｂを同期させるために実行されるべきモジュールを指し示すと、目録１９２は、リソース１９３Ｂのリソースを識別し、リソース１９３Ｂに対するストレージ要求を指し示し、アプリケーション１９１Ｃのオフライン実行用に実行されるべきモジュールを指し示すことができる。以下は、ＸＭＬリソース目録の一例である（行番号は、参照目的のために含まれている）。
【００４２】
1. <?xml version="1.0" encoding="utf-8" ?>
2. <resources name="Expense Report">
3. <resource src="default.css" /> 
4.
5. <resource src="images/reconcile.jpg" /> 
6. <resource src="images/personal.jpg" />
7. <resource src="images/dispute.jpg" />
8. <resource src="images/hold.jpg" /> 
9.
10. <resource src="ExpenseReportService.asmx/js" /> 
11. <resource src="ExpenseReportLineItemService.asmx/js" />
12.
13. <resource src="DefaultSync.aspx" />
14.
15. <resource src="ExpenseReports.aspx" /> 
16. <resource src="ExpenseReport.aspx" />
17.
18. <runOfflineUrl src="ExpenseReports.aspx" />
19. <takeOnlineOrSyncUrl src="DefaultSync.aspx" />
20. <database spaceNeeded="60" /> 
21. </resources>
【００４３】
目録の例の中で、行３〜１６は、（第２行で識別された）「Expense Report」アプリケーションのオフライン実行を容易にするリソースを識別する。第２０行は、目録において識別されるリソースを保存する（例えば、メガバイトで）「６０」のストレージ要求を示す。第１８行は、モジュール「ExpenseReports.aspx」（例えば、スクリプト）がExpense Reportアプリケーションのオフラインの実行を開始するために局所的に実行される（例えば、コンピュータシステム１０４で）ことを指し示す。ExpenseReports.aspxは、第１５行でリソースであると確認される。第１９行は、モジュール「DefaultSync.aspx」（例えば、スクリプト）が目録の例において識別されるリソースを同期させるために局所的に実行されることを指し示す。「DefaultSync.aspx」は、第１３行でリソースであると確認される。
【００４４】
方法２００は、ネットワーク通信を介してウェブベースサーバコンポーネントから、ウェブベースアプリケーション用のリソースを受信する動作を含む（動作２０３）。例えば、ウェブブラウザ１０４は、ドメイン１７１からリソース１９３Ｂを受信することができる。
【００４５】
いくつかの実施形態では、リソース１９３Ｂを受信する前に、オフラインマネージャ１２２及び／またはローカルストアアクセスモジュール１０７は、リソース１９３Ｂのストレージが割り当て１１２に基づいて適当であることを判断する。即ち、オフラインマネージャ１２２及び／またはローカルストアアクセスモジュール１０７は、ドメイン１７１に対して割り当てられたストレージスペースがリソース１９４Ｂ及びデータベース１７４を保存するのに十分なことを検証する。割り当てられたストレージスペースが十分な場合、ウェブブラウザ１０４は、リソース１９３Ｂを受け入れることができる。
【００４６】
割り当てられたストレージスペースが割り当て１１２に基づいて十分でない場合、リソース１９３Ｂ（またはその一部）は拒絶され得る。あるいは、設定インタフェース１０２は、ドメイン１７２のために割り当てられたストレージスペースがリソース１９３Ｂを保存するのに十分でないとコンピュータシステム１０１のユーザに通知することができる。適当な場合、ユーザは、リソース１９３Ｂを保存するのに十分な量まで設定インタフェース１０２を介して割り当て１１２を増やすことができる。ユーザがリソース１９３Ｂを保存するのに十分な量まで割り当て１１２を増やさないことを選択する場合、リソース１９３Ｂ（またはその一部）は拒絶され得る。
【００４７】
方法２００は、受信されたリソースをコンピュータシステムにおいて局所的に保存する動作を含む。局所的に保存されたリソースのコピーを、ウェブブラウザクライアントコンポーネントがアクセス可能である。局所的に保存されたリソースは、ネットワーク通信を必要とせずにウェブベースクライアントコンポーネントが利用可能であって、ウェブベースのサーバコンポーネントがネットワーク通信を介して利用可能でないということが検出されると、局所的に保存されたリソースは、ウェブベースクライアントコンポーネントからの要求に応じてアクセスされ得る（動作２０４）。例えば、ウェブブラウザ１０４は、ブラウザキャッシュ１０６にリソース１９４Ｂを保存することができ、ローカルストア１０８に（ドメインネーム１７２とともに）データベース１７４を保存することができる。よって、リソース１９４Ｂ及びデータベース１７４は、ネットワーク１３１を介してリソース１９４Ｂ及びデータベース１７４を転送することなしに、ウェブブラウザ１０４及びアプリケーション１９１Ｃが利用できる。従って、リソース１９４Ｂ及びデータベース１７４は、アプリケーション１９１Ｃのオフライン実行を容易にするために用いられ得る。例えば、ドメイン１７１に到達できないときに、リソース１９４Ｃのリソースに対するアプリケーション１９１Ｃから（アプリケーション１９１Ｓへの）の要求は、ブラウザキャッシュ１０６からリソースにアクセスすることによって実行され得る。オフラインの実行の間、（例えば、アプリケーション１９１Ｓ用のＵＲＬに対応している）要求を受信するように設定されたモジュールは、ブラウザキャッシュ１０６内のリソースへのアクセスを容易にすることができる。
【００４８】
方法２００は、局所的に保存されたリソースが、指定された期間コンピュータシステムに局所的に保存されるままであるように設定し、それによって、ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にする動作を含む（動作２０５）。例えば、オフラインマネージャ１２３は、リソース１９４Ｂの期限が切れることになっている時を延長することができる。リソースが期限切れになる時を延長することには、かなり長い有効期間（例えば、３０日）を有する最上部に固定された（sticky）ビットでリソースに印をつけることを含んでもよい。最上部に固定されたビットの使用によって、ウェブブラウザのデフォルトのキャッシュ再生利用設定を無効にすることができる。例えば、最上部に固定されたビットでリソース１９４Ｂのリソースをマークすることによって、ブラウザキャッシュ１０６に付随するキャッシュ再生ポリシーを無効にすることができる。
【００４９】
いくつかの実施形態では、アプリケーションのオフライン実行用のリソースが、事前にキャッシュに格納される。ウェブベースサーバコンポーネントが利用できないということを検出する前に、リソースが、事前にキャッシュに格納されてもよい。例えば、ウェブベースアプリケーションがオフライン実行可能であるという最初の表示（indication）で（例えば、ユーザがオフライン動作可能アプリケーション１２１内のアプリケーションを最初に含むときに）、オフラインマネージャ１２２は、ウェブベースアプリケーションのオフライン実行を容易にするリソースを要求することができる。従って、次の通信障害が発生すると、ウェブベースアプリケーションは、オフライン実行に対してより効果的に移行される。
【００５０】
他の実施形態では、局所的に保存されたリソースは、ウェブベースサーバコンポーネントが利用可能な対応するリソースと同期する。例えば、リソース１９４Ａは、アプリケーション１９１Ｃのオフライン実行のためにブラウザキャッシュ１０６に以前に保存されたかもしれない。しかしながら、リソース１９４Ａの保存後のあるときに、コンテンツ１７４の一部は更新されている。従って、リソース１９４Ｂは受信されて、局所的に保存されたリソースをウェブサーバ１７３及び／またはアプリケーション１９１Ｓが利用できるリソースに同期させる。同期によって、局所的に保存されたリソースの前のバージョンを上書きさせてもよい。例えば、リソース１９４Ｂの受信によって、リソース１９４Ａを上書きさせてもよい。最上部に固定されたビットは、同期後にリセットされてもよい。
【００５１】
図１Ｂは、ウェブベースアプリケーションをオフラインで実行するのを容易にするコンピュータアーキテクチャ１００を示す。図１Ｂに示したコンピュータアーキテクチャ１００は、リソース１９４Ｂのより詳細な図を示す。リソース１９４Ｂは、モジュール１９５、他のモジュール１９６、及びコンテンツ１９７を含む。モジュール１９５（例えば、スクリプト）は、アプリケーション１９１Ｃのオフライン実行を容易にするために実行されるモジュールである。ドメイン１７１が利用できないときにアプリケーション１９１Ｓに対するＵＲＬが受信されると、モジュール１９５が実行され得る。モジュール１９５は、目録１９２において前もって識別されていてもよい。他のモジュール１９６は、モジュール１９５の実行中に呼び出されてアプリケーション１９１Ｃのオフライン実行を容易にすることができる他のモジュール（例えば、他のスクリプト）を示す。コンテンツ１９７は、アプリケーション１９１Ｃのオフライン実行を容易にするコンテンツを示す。
【００５２】
図３は、ウェブベースアプリケーションをオフラインで実行する方法３００の一例のフローチャートを示す。方法３００は、図１Ｂのコンピュータアーキテクチャ１００のコンポーネント及びデータに関して説明される。
【００５３】
方法３００は、ウェブベースアプリケーションに対応するウェブサーバアプリケーションコンポーネントにウェブベースアプリケーションリソースの要求を送信する、ウェブベースアプリケーション用のウェブブラウザアプリケーションコンポーネントの動作を含む（動作３０１）。例えば、アプリケーション１９１Ｃは、ウェブブラウザ１０４に要求１４１を出すことができる。要求１４１は、アプリケーション１９１Ｓからのリソース要求を指し示しているドメイン１７１内のＵＲＬを含むことができる。
【００５４】
方法３００は、対応するウェブサーバアプリケーションコンポーネントとの通信がネットワークを介して利用できないということを検出する動作を含む（動作３０２）。例えば、オフライン検出器１２３は、ドメイン１７１が利用できないことを検出することができる。要求１４１に対する応答がないと、オフライン検出器１２３は、ドメイン１７１が利用できないことを検出することができる。オフライン検出器は、ドメイン１７１が利用できないと判断する前にドメイン１７２との更なる通信を試みることができる。あるいは、オフライン検出器１２３は、要求１４１の発生より前にドメイン１７１が利用できなかったことを検出してもよい。
【００５５】
方法３００は、ウェブベースアプリケーションがオフライン実行可能であることを判断する動作を含む（動作３０３）。例えば、利用できないということを検出されたドメイン１７１に応じて、オフラインマネージャ１２２は、オフライン動作可能アプリケーション１２１を参照して、アプリケーション１９１Ｃはオフライン実行可能であることを判断することができる。
【００５６】
方法３００は、ウェブブラウザアプリケーションをオフラインで実行するようにウェブブラウザを設定し、一方、他のウェブブラウザアプリケーションはオンラインで実行するように設定されたままであるという動作を含む（動作３０４）。例えば、オフラインマネージャ１２２は、モジュール１９５を実行しかつブラウザ１０４を設定することができ、アプリケーション１９１Ｃからの要求はモジュール１９５を対象とし、モジュール１９５からの応答はアプリケーション１９１Ｃを対象とする。しかしながら、他のアプリケーションからの要求及び他のアプリケーションへの応答は、リダイレクトされない。即ち、ウェブブラウザ１０４は、ネットワーク１３１を介して他のドメインと通信し続けることができる。従って、アプリケーション１９１Ｃに対する通信がモジュール１９５へ転送されかつモジュール１９５から転送される間、ウェブブラウザ１０４は、他のドメインにウェブベース要求を送信し、ネットワーク１３１を介して他のドメインからのウェブベース応答を受信することができる。
【００５７】
方法３００は、ウェブブラウザをオフラインにせずにコンピュータシステムのローカルストレージから、要求されたウェブベースアプリケーションリソースを供給する動作を含む（動作３０５）。例えば、モジュール１９５は、他のモジュール１９６、コンテンツ１９７、及びデータベース１７４を用いて要求１４１への応答１４２を生成することができる。モジュール１９５は、アプリケーション１９１Ｃへ応答１４２（ウェブブラウザ１０４を介して潜在的に）を送信することができる。
【００５８】
要求１４１への応答用のリソースがローカルストレージからアクセスされる間、ウェブブラウザ１０４は、ネットワーク１３１を介して他のドメインにウェブベース要求を送信し、かつ他のドメインからウェブベース応答を受信し続けることができる。よって、他のモジュール１９６、コンテンツ１９７、及びデータベース１７４は要求１４１用の応答を生成するためにアクセスされている間、ネットワーク１３１を介して送信される要求及び応答も、ブラウザキャッシュ１０６及びローカルストア１０８内の他のデータを検索して保存することができる。
【００５９】
本発明の実施形態は、コンピュータシステムにおけるウェブベースの実行可能命令及びデータのローカルストレージを容易にする。ウェブベースの実行可能命令及びデータは、コンピュータシステムにおいてウェブブラウザに付随するモジュールからの（実行可能命令及びデータを送信したドメインに送信された）要求を局所的に実行するために用いられ得る。従って、局所的に保存されたウェブベースの実行可能命令及びデータは、ウェブサイトが利用できないときに、コンピュータシステムで用いられて、ウェブサイトとの通信をシミュレーションすることができる。
【００６０】
本発明の実施形態は、ユーザ及びコンピュータシステム設定規則に付随するコンピュータシステムの不揮発性ストレージのトランスペアレントな拡張を容易にすることができる。ボリューム障害の場合、ファイルの複数のシャドウコピーのメンテナンスによって、冗長性が提供され、より効率的なリカバリができる。更に、システムリソースが頻繁に使用されていないときに、ファイル動作は、バックグラウンドでシャドウコピー同士の間で時々伝播されてもよい。
【００６１】
本発明は、その精神または主要な特徴から逸脱することなく、他の特定の形式で実施されてもよい。説明された実施形態は、例示的であって限定的でないとあらゆる点で考慮される。従って、本発明の範囲は、前述の説明よりはむしろ添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味及び範囲の中で生じる全ての変更は、それらの範囲の中に包含される。
【図１Ａ】
0004698756.tif 000002
【図１Ｂ】
0004698756.tif 000003
【図２】
0004698756.tif 000004
【図３】
0004698756.tif 000005