JP2013543190A - ドキュメント編集コマンドのシリアル化 - Google Patents

ドキュメント編集コマンドのシリアル化 Download PDF

Info

Publication number
JP2013543190A
JP2013543190A JP2013537696A JP2013537696A JP2013543190A JP 2013543190 A JP2013543190 A JP 2013543190A JP 2013537696 A JP2013537696 A JP 2013537696A JP 2013537696 A JP2013537696 A JP 2013537696A JP 2013543190 A JP2013543190 A JP 2013543190A
Authority
JP
Japan
Prior art keywords
document
command
computer
command stream
editing
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.)
Granted
Application number
JP2013537696A
Other languages
English (en)
Other versions
JP5898685B2 (ja
JP2013543190A5 (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 JP2013543190A publication Critical patent/JP2013543190A/ja
Publication of JP2013543190A5 publication Critical patent/JP2013543190A5/ja
Application granted granted Critical
Publication of JP5898685B2 publication Critical patent/JP5898685B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Information Transfer Between Computers (AREA)
  • Digital Computer Display Output (AREA)

Abstract

ドキュメントを編集するためのシリアル化されたコマンドを含む、コマンドストリームが生成される。このコマンドストリームは、修正されたドキュメントに適用されて、単一のドキュメントを生成することができ、このドキュメントは、ウェブアプリケーションおよびクライアントアプリケーションの両方を使用して行われるドキュメントに対する修正を含む。コマンドストリームはまた、ドキュメントを編集するためのウェブアプリケーションからの切断の後にそのドキュメントの編集された状態を作成するために、編集セッションが進行中である間にもウェブアプリケーションを提供するサーバコンピュータのロードバランスをとるために、編集セッションが進行中である間にウェブアプリケーションを提供するサーバのアップグレードを実行するために、および他の目的で使用することができる。

Description

リッチドキュメントの作成および編集を可能にするワールドワイドウェブ(「ウェブ」)アプリケーションが開発されてきた。たとえば、ウェブアプリケーションは、ワードプロセッシングドキュメント、スプレッドシード、プレゼンテーション、および他のタイプのドキュメントを作成および編集するために使用することができる。これらのドキュメントはまた、互換性のあるクライアントアプリケーションで作成および編集することができる。たとえば、ワードプロセッシングクライアントアプリケーションは、デスクトップまたはラップトップコンピュータ上で実行され、ワードプロセッシングドキュメントを作成するために使用することができる。そのワードプロセッシングドキュメントは、次いで、適切なウェブアプリケーションを使用して編集することができる。
現在のウェブアプリケーションの1つの問題は、ウェブアプリケーションのユーザが、クライアントアプリケーションを使用する別のユーザによるドキュメントの編集と同時に、そのドキュメントを編集するときに生じる。このシナリオでは、そのドキュメントの2つのバージョンが生成される。そのドキュメントの1つのバージョンは、ウェブアプリケーションを使用して行われる編集を含み、そのドキュメントの第2のバージョンは、クライアントアプリケーションを使用して行われた編集を含む。そのドキュメントの2つのバージョン間の変更を一致させる(reconcile)ことは難しい場合がある。
現在のウェブアプリケーションの別の問題は、ウェブブラウザアプリケーションなどのクライアントアプリケーションがそのウェブアプリケーションを提供するサーバから切断されるときに生じる。このシナリオでは、接続が再確立されたときに、編集されたドキュメントをその前の状態に戻すことは難しい場合がある。その結果として、ドキュメントへの編集は、切断が生じるときに失われ得る。
現在のウェブアプリケーションの他の問題は、サーバコンピュータ間で進行中の編集セッションを移動させることが難しい場合があるために生じ得る。たとえば、ウェブアプリケーションを実施し、編集セッションを提供するウェブサーバに過重な負荷(overload)がかかる場合、進行中の編集セッションを別のサーバに移動させてロードバランスをとることは難しい場合がある。同様に、進行中の編集セッションを有するサーバコンピュータ上でウェブアプリケーションをアップグレードすることは難しい場合がある。
これらのおよび他の考慮すべき事項に関して、本明細書で行われる開示は提示される。
ドキュメント編集コマンドをシリアル化するための技術が、本明細書で説明される。本明細書で提示される概念および技術の実装形態を介して、単一のドキュメントが生成され得、このドキュメントは、ウェブアプリケーションおよびクライアントアプリケーションの両方を使用して行われるドキュメントに対する修正を含んでいる。本明細書で提示される概念および技術の実装形態を介して、ドキュメントの編集された状態がまた、ウェブアプリケーションからの切断に続いて再作成され得る。加えて、ウェブアプリケーションを提供するサーバは、編集セッションが進行中の間にも、ロードバランスをとりアップグレードすることができる。
本明細書で提示される一態様によれば、ウェブアプリケーションは、ドキュメントの作成および編集のために提供される。たとえば、一実装形態では、そのウェブアプリケーションは、従来のウェブブラウザアプリケーションプログラムを使用してプレゼンテーションドキュメントを作成および編集するための機能を提供する。ウェブアプリケーションは、そのドキュメントを記憶する、またはそのドキュメントを記憶するネットワークの場所へのアクセスを有する。
ドキュメントを修正するためのコマンドが、ウェブブラウザアプリケーションプログラムを介して生成され、サーバコンピュータ上で実行するウェブアプリケーションに送信される。そのウェブアプリケーションは、それらのコマンドを受信し、それらのコマンドをシリアル化する。これは、たとえば、このコマンドが受信された時間を指示するコマンドにデータを追加するステップと、そのコマンドを時間順に配列するステップとを含み得る。そのシリアル化されたコマンドは、次いで、コマンドストリームの中に記憶される。そのコマンドストリームは、ドキュメントとは別個に記憶される。そのコマンドストリームは、本明細書で「デルタ」と称すことがある、元のドキュメントとその現在の状態との間の差を表すことを理解されたい。コマンドストリームの中に記憶されたコマンドをドキュメントに適用すると、そのドキュメントの現在の状態をもたらすことになる。
別の態様によれば、コマンドストリームは、ドキュメントを保存するための要求がウェブアプリケーションを介して受信されたときに、そのドキュメントに適用され得る。たとえば、そのドキュメントを保存するための要求が受信されたとき、コマンドストリームの中のコマンドは、番号順(すなわち、それらのコマンドが最初に作られた順番)でドキュメントに適用され得る。そのドキュメントは、次いで、それらのコマンドがそのドキュメントに適用された後には、保存され得る。
別の態様によれば、前述のコマンドストリームは、共同編集を可能にするために使用することができる。たとえば、一例では、クライアントアプリケーションは、ドキュメントを修正して、修正されたドキュメントを作成することができる。ウェブアプリケーションは、同ドキュメントを編集するために使用可能であり、コマンドストリームの作成をもたらす。そのドキュメントの2つのバージョン間で変更を一致させるために、コマンドストリームの中のコマンドが、修正されたドキュメントに適用され得る。この方法で、結果として生じるドキュメントは、クライアントアプリケーションによってそのドキュメントに適用された編集と、ウェブアプリケーションによってそのドキュメントに適用された編集とを含む。
別の態様によれば、前述のコマンドストリームは、ウェブアプリケーションの性能を改善するために使用することができる。たとえば、ウェブアプリケーションは、前述のようなドキュメントのために、ランダムアクセスメモリ(「RAM」)などの揮発性メモリ内でコマンドストリームを保持するように構成され得る。メモリを解放するために、ドキュメントおよびコマンドストリームは、ハードディスクドライブなどの大容量記憶装置に記憶することができ、揮発性メモリからアンロードすることができる。追加のコマンドがそのドキュメントについて受信されるとき、そのドキュメントは、そのドキュメントに記憶されたコマンドストリームを適用することによって、その現在の状態に戻すことができる。追加のコマンドは、次いで、前述の方式でコマンドストリームの中にシリアル化され得る。
別の態様によれば、コマンドストリームは、ウェブアプリケーションを提供するサーバコンピュータ上で動的ロードバランシングを実行するために使用され得る。この実装形態では、1つまたは複数の高負荷のサーバコンピュータが識別される。進行中のドキュメント編集セッションが、次いで、その高負荷のサーバコンピュータ上で識別される。識別された編集セッションの各々について、ドキュメントのコマンドストリームがそのドキュメントに適用される。そのドキュメントは、次いで、非高負荷のサーバコンピュータに移動される。他の実施形態では、そのコマンドストリームおよびドキュメントは、そのドキュメントへのそのコマンドストリームの適用なしに、非高負荷のサーバコンピュータに移動され得る。そのドキュメントが移動される先のサーバコンピュータは、次いで、その編集セッションを処理する責任を引き継ぐ。
別の態様によれば、コマンドストリームは、ウェブアプリケーションを提供するサーバコンピュータ上で中断のないアップグレードを実行するために使用され得る。具体的には、進行中の編集セッションが、ウェブアプリケーションのダウンレベルのバージョンを実行しているサーバコンピュータ上で識別される。識別された進行中の編集セッションに関連するドキュメントおよびコマンドストリームが、次いで、そのウェブアプリケーションのアップレベルのバージョンを実行するサーバコンピュータに移動される。その編集セッションは、次いで、そのドキュメントおよびコマンドストリームが移動された先のサーバコンピュータで再開される。ダウンレベルのサーバ上の進行中の編集セッションのすべてがこの方式で移動された後は、そのサーバ上のウェブアプリケーションがアップグレードされ得る。一実装形態では、そのコマンドストリームの中のコマンドは、アップレベルのウェブアプリケーションを実行するサーバコンピュータにそのドキュメントを移動する前に、そのドキュメントに適用される。
本明細書に記載のコマンドストリームはまた、取消し/やり直し、ドキュメント回復などの他の目的でも使用され得ることを理解されたい。本「概要」は、以下の「発明を実施するための形態」でさらに説明される、簡易化された形での概念の選択を紹介するために提供されることもまた理解されたい。本「概要」は、特許請求される主題の重要な特徴または本質的特徴を識別するものではなく、本「概要」はまた、特許請求される主題の範囲を限定するために使用されるものでもない。さらに、特許請求される主題は、本開示のいずれかの部分で言及されたいずれかのまたはすべての欠点を解決する実装形態に限定されるものでもない。
本明細書で開示される実施形態の1つの例示的動作環境を示すソフトウェアおよびネットワークアーキテクチャ図である。 本明細書で開示される一実施形態でドキュメント編集コマンドをシリアル化するための本明細書で開示される様々なコンポーネントの態様を示すソフトウェアアーキテクチャ図である。 本明細書で開示される実施形態で生成および使用されるコマンドストリームの態様を示すデータ構造図である。 本明細書で開示される一実施形態によるコマンドストリームをシリアル化するための1つの例示的プロセスを示す流れ図である。 本明細書で開示される一実施形態におけるウェブアプリケーションおよびクライアントアプリケーションの両方で行われる編集を含んだ、修正ドキュメントを生成するための1つのプロセスの態様を示すデータ構造図である。 本明細書で開示される一実施形態におけるコマンドストリームを使用してウェブアプリケーションの性能を最適化するための1つの例示的プロセスを示す流れ図である。 本明細書で開示される一実施形態におけるコマンドストリームを使用してウェブアプリケーションを提供するサーバコンピュータの動的なロードバランスをとるための1つの例示的プロセスを示す流れ図である。 本明細書で開示される一実施形態におけるコマンドストリームを使用してウェブアプリケーションをアップグレードするための1つの例示的プロセスを示す流れ図である。 本明細書で開示される様々な実施形態を実装することができるコンピュータシステムのための例示的コンピュータハードウェアおよびソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。
以下の詳細な説明は、ドキュメント編集コマンドをシリアル化するための技術を対象とする。簡単に上述したように、ドキュメントを編集するためのシリアル化されたコマンドを含む、コマンドストリームが、本明細書に記載の技術を使用して生成され得る。このコマンドストリームは、修正されたドキュメントに適用されて、単一のドキュメントを生成することができ、ウェブアプリケーションおよびクライアントアプリケーションの両方を使用して行われるドキュメントに対する修正を含んでいる。コマンドストリームはまた、ドキュメントを編集するためのウェブアプリケーションからの切断に続いてそのドキュメントの編集された状態を再作成するために、編集セッションが進行中であってもそのウェブアプリケーションを提供するサーバコンピュータのロードバランスをとるために、編集セッションが進行中にウェブアプリケーションを提供するサーバのアップグレードを実行するために、および他の目的で使用され得る。
本明細書に記載の主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と連動して実行するプログラムモジュールとの概括的な文脈で提示されるが、他の実装が他のタイプのプログラムモジュールとの組合せで実行可能であることが、当業者には認識されよう。概して、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造体、および特定のタスクを実行するまたは特定の抽象データ型を実装する他のタイプの構造体を含む。さらに、本明細書に記載の主題は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサを用いるまたはプログラム可能な家庭用電化製品、ミニコンピュータ、およびメインフレームコンピュータなどを含む、他のコンピュータシステム構成で実施され得ることが、当業者には理解されよう。
以下の詳細な説明では、例として特定の実施形態または例によって示され、かつ本明細書の一部を成す添付の図面が参照される。次に、同様の数字はいくつかの図面をとおして同様の要素を表す図面を参照すると、ドキュメント編集コマンドをコマンドストリームの中にシリアル化するための、およびそのコマンドストリームを使用するためのコンピュータシステムの態様および方法論が説明される。
図1は、本明細書で開示される実施形態の1つの例示的動作環境を示すソフトウェアおよびネットワークアーキテクチャ図である。図1に示す動作環境100は、ウェブブラウザアプリケーションプログラム102を実行するクライアントコンピュータ104にウェブアプリケーション114を提供するように構成される。本明細書において「ウェブアプリケーション」という用語は、HTTP、SOAP、および非同期JAVASCRIPT(登録商標)などの標準プロトコルおよび技術を介してアクセスおよび使用することができるアプリケーションを包含するものである。「ウェブアプリケーション」という用語は、ワールドワイドウェブを介して利用可能なアプリケーションのみに限定されるべきではない。そうではなくて、ウェブアプリケーション114は、広域ネットワーク、ローカルエリアネットワーク、ワイヤレスネットワーク、および他のタイプのネットワークを含むがこれらに限定されない、実質的に任意のタイプのネットワーク108を介してアクセス可能であり得る。
図1に示す動作環境100では、いくつかのフロントエンドサーバ106A〜106Cが設けられてフロントエンドサーバコンポーネント110を実行する。ウェブブラウザアプリケーションプログラム102から受信されるウェブアプリケーション114への要求は、フロントエンドサーバ106A〜106Cに対してロードバランスがとられる。この方法で、フロントエンドサーバ106A〜106Cは、特定のドキュメント編集セッションのために割り当てられ得る。特定の編集セッションのためにウェブブラウザアプリケーションプログラム102によって生成されるコマンドは、その編集セッションに割り当てられたフロントエンドサーバ106A〜106C上のフロントエンドサーバコンポーネント110によって受信される。これらのコマンドは、次いで、バックエンドサーバコンピュータ112A〜112Cのうちの1つで実行するウェブアプリケーション114のインスタンスに転送される。バックエンドサーバコンピュータ112A〜112Cはまた、ウェブアプリケーション114が効率の良い形で動作することを確保するために、ロードバランスがとられ得る。
同じく図1に示すように、バックエンドサーバ112A〜112Cの各々は、オペレーティングシステムおよびウェブアプリケーション114などの実行可能なプログラムコードを記憶するための1つまたは複数のディスク116A〜116Cを保持する。ディスク116A〜116Cはまた、ドキュメント118A〜118Cを記憶するために使用することができる。ドキュメント118A〜118Cはまた、ネットワーク108または別のネットワークを介してアクセス可能な別の場所に記憶することができる。
一実装形態によれば、ウェブアプリケーション114は、1つまたは複数のドキュメントタイプを作成および編集するための機能を提供する。たとえば、ウェブアプリケーション114は、ワードプロセッシングドキュメント、スプレッドシードドキュメント、プレゼンテーションドキュメント、または別のタイプのドキュメントを作成および編集するように構成され得る。以下にさらに詳しく説明するように、クライアントコンピュータ104上で実行するクライアントアプリケーションはまた、ウェブアプリケーション114によって生成されるドキュメント118A〜118Cと互換性のあるドキュメントタイプを作成および編集するように構成され得る。たとえば、ドキュメントは、クライアントアプリケーションを使用するクライアントコンピュータ104で作成され、次いで、ウェブアプリケーション114によって編集され得る。同様に、ドキュメントは、ウェブアプリケーション114で作成され、次いで、クライアントコンピュータ104上で実行するクライアントアプリケーションを使用して編集され得る。
図1に示す動作環境100は、単なる例示に過ぎず、他のタイプの動作環境もまた使用され得ることを理解されたい。たとえば、他の実施形態では、フロントエンドサーバ106A〜106Cは、使用されなくてもよい。加えて、他の実施形態では、より多くのバックエンドサーバ112A〜112C、またはより少ないバックエンドサーバ112A〜112Cもまた、使用され得る。さらに、単一のクライアントコンピュータ104が図1に示されるが、図1に示す動作環境100は、より多数のクライアントコンピュータ104を同時にサポートすることができることを理解されたい。本明細書に記載の概念および技術をサポートすることができる他のタイプの動作環境が、当業者には明らかになり得る。
図2は、本明細書で開示される一実施形態においてドキュメント編集コマンドをシリアル化するために本明細書で開示される様々なコンポーネントの態様を示すソフトウェアアーキテクチャ図である。図2に示すように、また簡単に前述したように、クライアントコンピュータ104のユーザは、ウェブブラウザアプリケーション102を使用してウェブアプリケーション114と対話することができる。具体的には、ドキュメント118を修正するためのコマンド202が、ユーザによってクライアントコンピュータ104で生成され得る。たとえば、ドキュメント118がプレゼンテーションドキュメントである場合、コマンド202は、そのプレゼンテーションに新しいスライドを追加する、そのプレゼンテーションにグラフィック要素を追加する、そのプレゼンテーションでテキストを追加もしくは修正する、または任意の他のタイプの編集タスクを実行するためのものとすることができ得る。ドキュメント118がワードプロセッシングドキュメントである場合、コマンド202は、そのドキュメントにテキストを追加する、テキストをフォーマットする、グラフィックを追加する、またはそのドキュメントに他の編集を実行するためのものとすることができる。したがって、本明細書においてコマンドという用語は、ドキュメントを編集するための任意のタイプのコマンドを指すことを理解されたい。
クライアントコンピュータ104で生成される各コマンド202は、どのようにその編集がドキュメント118に行われるべきかを識別するデータを含む。そのデータは、拡張可能マークアップ言語(「XML」)、2進コード化、または別のフォーマットを使用して、指定され得る。たとえば、コマンド202が、ドキュメント118中のテキストを編集するためである場合、コマンド202内に記憶されるデータは、その編集が生じるべきドキュメント内の場所と、その編集がどのように実行されるべきかを記載することができる。コマンド202がプレゼンテーションにスライドを追加するためである場合、コマンド202は、新しいスライドが追加されることになる場所、その新しいスライドのタイトル、および他の情報を指示するデータを含み得る。他のタイプのコマンドもまた、同様に表すことができる。
簡単に上述したように、コマンド202は、クライアントコンピュータ104で生成され、フロントエンドサーバ106Aなどのフロントエンドサーバに送信される。次いで、フロントエンドサーバ106Aは、コマンド202をバックエンドサーバ112Aなどの適切なバックエンドサーバ112に送信する。簡単に上述したように、各バックエンドサーバ112は、ウェブアプリケーション114のインスタンスを実行する。やはり簡単に上述したように、各バックエンドサーバ112は、コマンド202が適用されるべき先のドキュメント118を記憶するディスク記憶装置116を保持する、またはそこにアクセスできる。しかし、ドキュメント118に直接コマンド202を適用するのではなくて、ウェブアプリケーション114は、コマンドストリーム206を保持する。
以下にさらに詳細に論じるように、コマンドストリーム206は、コマンド202A〜202Nのシリアル化されたシーケンスを含む。コマンド202をシリアル化するために、ウェブアプリケーション114は、そのコマンドが生成された絶対または相対的時間を指示するコマンド202A〜202Nにデータを追加することができる。シーケンス番号などの他のタイプのデータもまた、コマンド202A〜202Nをシリアル化するために使用することができる。コマンド202A〜202Nは、次いで、順番にコマンドストリーム206内に記憶される。図2に示す例では、コマンドストリーム206は、バックエンドサーバ112の揮発性メモリ204内に記憶される。他の実施形態では、コマンドストリーム206は、ディスク116で記憶され得ることを理解されたい。
図3は、本明細書で開示される実施形態で生成および使用されるコマンドストリーム206の態様を示すデータ構造図である。具体的には、図3は、コマンド202A〜202Nが生成された順による順番でシリアル化および配置されたコマンド202A〜202Nを示す。したがって、コマンド202A〜202Nを記憶するコマンドストリーム206は、修正前のドキュメント118とその現在の状態の間のデルタを表すことを理解されたい。以下にさらに詳しく説明するように、ウェブアプリケーション114は、ドキュメント118の現在の状態を生成するために、番号順でコマンドストリーム206にコマンド202A〜202Nを適用することができる。このプロセスおよびこのプロセスのいくつかの適用例に関する詳細が、図4〜8を参照して、以下に説明される。
図4は、本明細書で開示される一実施形態によるコマンドストリームをシリアル化するための1つの例示的ルーチン400を示す流れ図である。図4およびその他の図に関して本明細書に記載される論理演算は、(1)コンピュータ実装行動もしくはコンピュータシステム上で走るプログラムモジュールのシーケンスとして、および/または(2)コンピュータシステム内の相互接続された機械論理回路もしくは回路モジュールとして、実装される。本実装形態は、コンピュータシステムの性能および他の要件に応じて選択できる。したがって、本明細書に記載の論理演算は、動作、構造的デバイス、行動、またはモジュールとして様々に称される。これらの動作、構造的デバイス、行動およびモジュールは、ソフトウェア内に、ファームウェア内に、専用デジタル論理内に、およびそれらの任意の組合せで実装され得る。本明細書で図示および記載するものより多くの動作が実行されても、または少ない動作が実行されてもよいことを理解されたい。これらの動作はまた、本明細書に記載のものとは異なる順番で実行され得る。
ルーチン400は、ウェブアプリケーション114がコマンド202を受信する動作402で開始する。コマンドの受信に応答して、ルーチン400は動作404に進み、そこでウェブアプリケーション114がコマンド202をシリアル化する。これは、たとえば、コマンド202が受信された絶対または相対的時間を指示するコマンド202にデータを追加することを含み得る。コマンド202をシリアル化するための他のタイプの機構もまた、使用され得る。コマンド202がシリアル化された後には、ルーチン400は、動作404から動作406に進む。
動作406では、シリアル化されたコマンド202が、コマンドストリーム206内に記憶される。ルーチン400は、次いで、動作408に進み、そこで、ウェブアプリケーション114は、要求がそのコマンドストリームに対応するドキュメント118を保存するために受信されたかどうかを判定する。受信されない場合、ルーチン400は、前述の動作402に進み、そこで、追加のコマンド202が、前述の方式で受信およびシリアル化される。要求が動作408で受信されてドキュメント118を保存した場合、ルーチン400は、動作410に進む。
動作410で、現在のドキュメント118のコマンドストリーム206内のコマンド202A〜202Nが、番号順にドキュメント118に適用される。この方式で、コマンドストリーム206内に記憶されたコマンド202A〜202Nは、それらが生成された順番で、ドキュメント118に適用される。コマンドストリーム206の適用の後のドキュメント118は、ドキュメント118の現在の状態を表す。コマンドストリーム206がドキュメント118に適用された後は、ルーチン400は、動作412に進み、そこでドキュメント118がディスクに持続される。ルーチン400は、次いで、動作402に進み、そこで、追加のコマンド202が受信され、シリアル化され、コマンドストリーム206内に記憶される。
図5は、本明細書で開示される一実施形態でウェブアプリケーションおよびクライアントアプリケーションの両方で行われる編集を含む修正されたドキュメントを生成するための1つのプロセスの態様を示すデータ構造図である。簡単に上述したように、デスクトップクライアントアプリケーション502は、ウェブアプリケーション114によって生成されたドキュメントを編集することができるクライアントコンピュータ104上で使用することができる。たとえば、簡単に上述したように、ワードプロセッシングデスクトップクライアントアプリケーション502は、ウェブアプリケーション114によって生成されたドキュメント118Aを編集するために使用され得る。同様に、ウェブアプリケーション114は、デスクトップクライアントアプリケーション502によって作成されたドキュメント118Aを編集するために使用され得る。図5の例では、デスクトップクライアントアプリケーション502を使用して、元のドキュメント118Aへの修正504が行われている。結果として生じるドキュメントは、修正されたドキュメント118Dである。
1つのシナリオでは、ウェブブラウザアプリケーションプログラム102はまた、ウェブアプリケーション114を使用して、元のドキュメント118Aへの修正を行うことができる。一方、上述したように、ウェブアプリケーション114によって行われた元のドキュメント118Aへの修正は、コマンドストリーム206内に表される。たとえば、図5に示す例では、2つのコマンド202A〜202Bを含むコマンドストリーム206が生成されている。
ウェブアプリケーション114によって生成されたドキュメントのバージョンとデスクトップクライアントアプリケーション502によって生成されたドキュメントのバージョンとを一致させるために、ウェブアプリケーション114は、修正されたドキュメント118Dにコマンドストリーム206内のコマンド202A〜202Bを適用するように構成され得る。この方法で、デスクトップクライアントアプリケーション502によってドキュメント118Aに行われた修正504を含み、そして、ウェブアプリケーション114によってドキュメントに行われた修正も含む、更新されたドキュメント118Eが生成される。この方式で更新されたドキュメント118Eを生成することによって、本明細書で開示される概念および技術は、デスクトップクライアントアプリケーション502およびウェブアプリケーション114を使用する同時の編集(「同時編集」)を可能にする。
更新されたドキュメント118Eには矛盾が存在し得ることを理解されたい。たとえば、デスクトップクライアントアプリケーション502は、ドキュメント118A内のテキストの一部を削除するために使用されることがある。同時に、ウェブアプリケーション114が、デスクトップクライアントアプリケーション502によって削除されたテキストを編集するために使用されることがある。この例では、コマンドストリーム206が修正されたドキュメント118Dに適用されるとき、矛盾が存在することになる。様々な機構が、その矛盾を解決するために、使用され得ることを理解されたい。たとえば、ユーザは、矛盾する編集の間で選択をするように求められ得る。他の機構もまた、クライアントアプリケーション502でおよびウェブアプリケーション114でドキュメントに行われた修正間の矛盾を解決するために、使用され得る。
図6は、本明細書で開示される一実施形態においてコマンドストリーム206を使用してウェブアプリケーション114の性能(performance)を最適化するための1つの例示的ルーチン600を示す流れ図である。ルーチン600は、ウェブアプリケーション114で受信されたコマンド202がコマンドストリーム206内にシリアル化される動作602で開始する。ルーチン600は、次いで、動作602から動作604に進み、そこで、ドキュメント118およびその関連するコマンドストリーム206がディスク116に保存される。ドキュメント118およびコマンドストリーム206が保存された後は、ルーチン600は、動作606に進み、そこで、コマンドストリーム206がメモリ204からアンロードされる。図2に示すように、コマンドストリーム206は、バックエンドサーバ112の揮発性メモリ204内で記憶され得る。揮発性メモリ204からコマンドストリーム206をアンロードすることによって、メモリ204は、他の使用のために解放され得る。
動作606から、ルーチン600は、動作608に進み、そこで、ウェブアプリケーション114は、追加のコマンド202が、保存されたドキュメント118について受信されたかどうかを判定する。受信されない場合、ルーチン600は、動作608に進み、そこで、別のそのような判定が行われる。コマンドが受信された場合、ルーチン600は、動作610に進み、そこで、ドキュメント118がディスクからロードされる。ディスクに記憶されたコマンドストリームはまた、バックエンドサーバ112の揮発性メモリ204にロードされ得る。
ルーチン600は、次いで、動作612に進み、そこで、記憶されたコマンドストリーム206が、前述の方式でドキュメント118に適用される。上述したように、これは、コマンドストリーム206内のすべてのコマンドの適用に続くドキュメントの現在の状態を表すドキュメント118をもたらす。ルーチン600は、次いで、動作614に進み、そこで、新しく受信されたコマンドが、前述の方式でコマンドストリーム206内でシリアル化される。動作614から、ルーチン600は、動作616に進み、終了する。
図7は、本明細書で開示される一実施形態においてコマンドストリームを使用してウェブアプリケーションを提供するサーバコンピュータ112の動的なロードバランスをとるための1つの例示的ルーチン700を示す流れ図である。ルーチン700は、動作702で開始し、そこで、高負荷のバックエンドサーバ112A〜112Cが識別される。高負荷のサーバコンピュータは、CPUサイクル、メモリ利用、大容量記憶装置の利用および/または他のタイプのリソースの高い利用度などのそのリソースの比較的高い利用度を経験しているサーバコンピュータである。高負荷のバックエンドサーバ112A〜112Cが識別された後は、ルーチン700は、動作704に進む。
動作704で、別のバックエンドサーバに移動されることになる識別された高負荷のバックエンドサーバ112A〜112C上の1つまたは複数の編集セッションが、識別される。別のサーバ112に移動されることになる進行中の編集セッションが、ランダムに、または別の方法で、編集セッションによって使用されるリソースに基づいて、識別され得る。別のサーバ112に移動されることになる1つまたは複数の進行中の編集セッションが識別された後は、ルーチン700は、動作706に進む。
動作706で、識別された編集セッションのコマンドストリーム206内のいくつかのまたはすべてのコマンドが、関連ドキュメントに適用され得る。この方式で、各ドキュメントは、別のバックエンドサーバ112にそのドキュメントを移動するより前にその現在の状態にされ得る。このプロセスは、任意選択であり、コマンドストリーム206は、別のバックエンドサーバ112に編集セッションを移動するより前の進行中の編集セッションに関連付けられたドキュメントに適用され得ることを理解されたい。
動作706から、ルーチン700は、動作708に進み、そこで、識別された進行中の編集セッションのドキュメント118およびコマンドストリーム206が、非高負荷のバックエンドサーバ112A〜112Cに移動される。進行中の編集セッションが移動される先のバックエンドサーバ112A〜112Cが、CPU利用、メモリ利用、ディスク利用、および/または他のタイプのリソースの利用などの宛先バックエンドサーバによるリソースの利用に基づいて、識別され得る。進行中の編集セッションが移動された先のバックエンドサーバ112A〜112Cは、次いで、進行中の編集セッションを処理する責任を引き継ぐ。この方式では、進行中の編集セッションについて受信された任意の新しいコマンドが、宛先バックエンドサーバ112A〜112Cによって処理されることになる。したがって、バックエンドサーバ112A〜112Cは、進行中のセッションを中断することなしに動的にロードバランスがとられ得ることを理解されたい。動作708から、ルーチン700は、動作710に進み、そこで終了する。
図8は、本明細書で開示される一実施形態におけるコマンドストリームを使用してウェブアプリケーションをアップグレードするための1つの例示的ルーチン800を示す流れ図である。ルーチン800は、動作802で開始し、そこで、ウェブアプリケーション114のアップレベルのバージョンが、編集セッションを現在サポートしていないバックエンドサーバ112上で配備される。ルーチン800は、次いで、動作804に進み、そこで、アップグレードされたサーバ112が、編集セッションの提供の開始を可能にされる。アップレベルのサーバ112が編集セッションの提供を可能にされた後は、ルーチン800は、動作806に進む。
動作806で、ダウンレベルのウェブアプリケーション114を実行するバックエンドサーバ112上の進行中の編集セッションが、識別される。識別された進行中の各編集セッションについて、コマンドストリーム206内のコマンド202が、関連ドキュメントに適用される。ルーチン800は、次いで、動作808に進み、そこで、進行中の編集セッションのドキュメントがウェブアプリケーション114のアップレベルのバージョンを実行するアップグレードされたサーバ112に移動される。ドキュメントが移動される先のサーバコンピュータは、次いで、進行中の編集セッションを提供する責任を引き継ぐ。
進行中の編集セッションのすべてがダウンレベルのバックエンドサーバ112から移動された後は、ルーチン800は、動作810に進み、そこで、ダウンレベルのサーバコンピュータが、ウェブアプリケーション114のアップレベルのバージョンでアップグレードされ得る。ルーチン800は、次いで、動作810から動作812に進み、そこで終了する。前述を考慮して、ウェブアプリケーション114は、進行中の編集セッションを妨げることなしにアップグレードされ得ることを理解されたい。
図9は、本明細書で提示される様々な実施形態を実装することができるコンピュータシステムの例示的コンピュータハードウェアおよびソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図9に示すコンピュータアーキテクチャは、従来のデスクトップ、ラップトップコンピュータ、またはサーバコンピュータを示し、本明細書に記載の様々なソフトウェアコンポーネントを実行するために使用され得る。
図9に示すコンピュータアーキテクチャは、中央処理装置902(「CPU」)と、ランダムアクセスメモリ914(「RAM」)および読取り専用メモリ(「ROM」)916を含むシステムメモリ908と、CPU902にメモリを結合させるシステムバス904とを含む。起動中など、コンピュータ900内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力/出力システム(「BIOS」)が、ROM916内に格納される。コンピュータ900は、以下でさらに詳しく説明される、オペレーティングシステム918、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量記憶装置910をさらに含む。
大容量記憶装置910は、バス904に接続された大容量記憶装置コントローラ(図示せず)を介してCPU902に接続される。大容量記憶装置910およびその関連コンピュータ可読記憶媒体は、コンピュータ900の非揮発性記憶スペースを提供する。本明細書に含まれるコンピュータ可読媒体の記載は、ハードディスクまたはCD−ROMドライブなどの大容量記憶装置を指すが、コンピュータ可読記憶媒体は、コンピュータ900によってアクセス可能な任意の使用可能なコンピュータ記憶媒体でもよいことが、当業者には理解されよう。
限定ではなく、例として、コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および非揮発性の、取外し可能なおよび取外し不可能な媒体を含み得る。たとえば、コンピュータ可読記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリもしくは他の固体状態メモリ技術、CD−ROM、デジタル多用途ディスク(「DVD」)、HD−DVD、BLU−RAY(登録商標)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報を記憶するために使用可能な、およびコンピュータ900によってアクセス可能な任意の他の持続性媒体を含むがこれらに限定されない。
本明細書で開示されるコンピュータ可読媒体はまた、通信媒体を包含することを理解されたい。通信媒体は、通常は、搬送波または他の移送機構などの変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを実施し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、その信号内の情報をコード化することなどの形で設定または変更されたその特性のうちの1つまたは複数を有する信号を意味する。限定ではなく、例として、通信媒体は、配線式ネットワークもしくは直接配線式接続などの配線式媒体と、音波、RF、赤外線および他のワイヤレス媒体などのワイヤレス媒体とを含む。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれよう。コンピュータ可読記憶媒体は、通信媒体を包含しない。
様々な実施形態によれば、コンピュータ900は、ネットワーク920などのネットワークを介する遠隔コンピュータへの論理接続を使用するネットワーク化された環境で動作し得る。コンピュータ900は、バス904に接続されたネットワークインターフェースユニット906を介してネットワーク920に接続することができる。ネットワークインターフェースユニット906はまた、他のタイプのネットワークおよび遠隔コンピュータシステムに接続するために使用され得ることを理解されたい。コンピュータ900はまた、キーボード、マウス、または電子スタイラス(図9に示さず)を含むいくつかの他のデバイスからの入力を受信および処理するための入力/出力コントローラ912を含み得る。同様に、入力/出力コントローラは、ディスプレイ画面、プリンタ、または他のタイプの出力デバイス(これも図9に示さず)に出力を提供することができる。
簡単に前述したように、いくつかのプログラムモジュールおよびデータファイルは、ネットワーク化されたデスクトップ、ラップトップ、またはサーバコンピュータの動作を制御するのに適したオペレーティングシステム918を含むコンピュータ900の大容量記憶装置910、およびRAM914内に記憶され得る。大容量記憶装置910およびRAM914はまた、1つまたは複数のプログラムモジュールを記憶することができる。具体的には、大容量記憶装置910およびRAM914は、ウェブブラウザアプリケーションプログラム102および/またはウェブアプリケーション114と、前述のその他のソフトウェアコンポーネントとを記憶することができる。大容量記憶装置910およびRAM914はまた、コマンドストリーム206などの他のプログラムモジュールおよびデータを記憶することができる。
概して、ソフトウェアアプリケーションまたはモジュールは、CPU902にロードされ、実行されるときに、CPU902およびコンピュータ900全体を汎用コンピュータシステムから本明細書で提示される機能を実行するようにカスタマイズされた専用コンピュータシステムに変換することができる。CPU902は、任意の数の状態を個々にまたは集合的に仮定し得る、任意の数のトランジスタまたは他のディスクリート回路要素から構築され得る。より詳細には、CPU902は、ソフトウェアまたはモジュール内に含まれる、実行可能命令に応答して、1つまたは複数の有限状態機械として動作することができる。これらのコンピュータ実行可能命令は、状態間のCPU902遷移がどのようであるかを指定することによって、CPU902を変換し、それによって、CPU902を構成するトランジスタまたは他のディスクリートハードウェア要素を物理的に変換することができる。
大容量記憶装置上にソフトウェアまたはモジュールをコード化することはまた、大容量記憶装置または関連コンピュータ可読記憶媒体の物理構造を変換し得る。物理構造の個々の変換は、本明細書の異なる実装形態で、様々な要因に依存し得る。そのような要因の例は、そのコンピュータ可読記憶媒体を実装するために使用される技術、コンピュータ可読記憶媒体が1次もしくは2次記憶装置として特徴付けられるかどうか、および同類のものを含むが、これらに限定されない。たとえば、そのコンピュータ可読記憶媒体が、半導体に基づくメモリとして実装される場合、ソフトウェアまたはモジュールは、そのソフトウェアがその中でコード化されるとき、半導体メモリの物理状態を変換し得る。たとえば、そのソフトウェアは、トランジスタ、コンデンサ、または半導体メモリを構成する他のディスクリート回路要素の状態を変換し得る。
別の例として、コンピュータ可読記憶媒体は、磁気または光技術を使用して、実装され得る。そのような実装形態で、ソフトウェアまたはモジュールは、そのソフトウェアがその中でコード化されるとき、磁気または光媒体の物理状態を変換することができる。これらの変換は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含み得る。これらの変換はまた、所与の光媒体内の特定の場所の物理的特徴または特性を変更して、それらの場所の光特性を変えることを含み得る。物理媒体の他の変換が、本明細書の範囲および趣旨を逸脱することなしに、本議論を円滑に進めるためにのみ提供される前述の例において可能である。
前述に基づいて、コマンドストリームにドキュメント編集コマンドをシリアル化するためのおよびコマンドストリームを使用するための技術が本明細書で提示されることを理解されたい。本明細書で提示される主題は、コンピュータ構造的特徴、方法論的行動、およびコンピュータ可読媒体に特有の言語で説明されるが、添付の特許請求の範囲で定義される本発明は、必ずしも本明細書に記載の特定の特徴、行動、または媒体に限定されないことが、理解されよう。そうではなくて、それらの特定の特徴、行動および媒体は、本特許請求の範囲を実装する例示的な形として開示される。
本明細書に記載の主題は、例としてのみ提供され、限定として解釈されるべきではない。様々な修正および変更が、図示および記載される例示的実施形態および適用に従うことなしに、そして、以下の特許請求の範囲に記載の本発明の真の趣旨および範囲を逸脱することなしに、本明細書に記載の主題に行われ得る。

Claims (10)

  1. ドキュメントを記憶し、
    第1のアプリケーションで前記ドキュメントを修正するためのコマンドを受信し、
    前記第1のアプリケーションによって前記受信したコマンドをシリアル化し、
    前記ドキュメントとは別にコマンドストリームの中に前記シリアル化されたコマンドを記憶し、
    第2のアプリケーションによって前記ドキュメントを修正して、修正されたドキュメントを作成し、
    前記第1のアプリケーションによって、前記コマンドストリームの中の前記シリアル化されたコマンドを前記修正されたドキュメントに適用する
    ようにコンピュータ実施動作を実行することを含むことを特徴とするコンピュータ実施方法。
  2. 前記第1のアプリケーションで前記ドキュメントを保存するための要求を受信すること、
    前記要求の受信に応答して、番号順に前記ドキュメントに前記コマンドストリームの中の前記コマンドを適用し、前記ドキュメントを保存すること
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 大容量記憶装置に前記ドキュメントおよび前記コマンドストリームを保存すること、
    揮発性メモリから前記コマンドストリームをアンロードすること、
    第2のコマンドを受信すること、
    前記第2のコマンドの受信に応答して、前記大容量記憶装置から前記ドキュメントをロードし、前記ドキュメントに前記コマンドストリームを適用し、前記第2のコマンドをシリアル化し、前記ドキュメントとは別に前記コマンドストリームの中に前記シリアル化された第2のコマンドを記憶すること
    をさらに含むことを特徴とする請求項2に記載の方法。
  4. 1つまたは複数の高負荷のサーバコンピュータを識別すること、
    前記高負荷のサーバコンピュータの各々で1つまたは複数のドキュメント編集セッションを識別すること、
    前記識別されたドキュメント編集セッションの各セッションについて、前記ドキュメント編集セッションと関連するドキュメントにコマンドストリームを適用し、非高負荷のサーバコンピュータに前記ドキュメントを移動すること
    をさらに含むことを特徴とする請求項2に記載の方法。
  5. 前記ドキュメントを編集するためのダウンレベルのアプリケーションプログラムを実行するサーバコンピュータ上で編集セッションを識別すること、
    前記編集セッションと関連するドキュメントに前記コマンドストリームの中の前記コマンドを適用すること、
    前記ドキュメントを編集するためのアップレベルのアプリケーションプログラムを実行するサーバコンピュータに前記編集セッションと関連する前記ドキュメントを移動すること、
    前記ドキュメントを編集するための前記アップレベルのアプリケーションプログラムを実行する前記サーバコンピュータ上で前記編集セッションを再開すること
    をさらに含むことを特徴とする請求項4に記載の方法。
  6. コンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、コンピュータによって実行されると前記コンピュータに、
    ドキュメントを保存させ、
    前記ドキュメントを修正するためのコマンドを受信させ、
    前記受信されたコマンドをシリアル化させ、
    前記ドキュメントとは別にコマンドストリームの中に前記シリアル化されたコマンドを記憶させ、
    前記ドキュメントを保存するための要求を受信させ、
    前記要求の受信に応答して、番号順に前記ドキュメントに前記コマンドストリームの中の前記コマンドを適用させ、前記ドキュメントを保存させる
    ことを特徴とするコンピュータ可読記憶媒体。
  7. 第1のアプリケーションが、前記ドキュメントを修正して、修正されたドキュメントを生成し、第2のアプリケーションが、前記シリアル化されたコマンドストリームの中の前記コマンドを前記修正されたドキュメントに適用することを特徴とする請求項6に記載のコンピュータ可読記憶媒体。
  8. 前記第1のアプリケーションが、デスクトップクライアントアプリケーションを含み、前記第2のアプリケーションが、ウェブアプリケーションを含むことを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  9. コンピュータ実行可能命令をさらに記憶し、前記命令は、前記コンピュータによって実行されると前記コンピュータに、
    前記ドキュメントおよび前記コマンドストリームを大容量記憶装置に保存させ、
    前記コンピュータの揮発性メモリから前記コマンドストリームをアンロードさせ、
    第2のコマンドを受信させ、
    前記第2のコマンドの受信に応答して、前記大容量記憶装置から前記ドキュメントをロードさせ、前記ドキュメントに前記コマンドストリームを適用させ、前記第2のコマンドをシリアル化させ、前記ドキュメントとは別に前記コマンドストリームの中に前記シリアル化された第2のコマンドを記憶させる
    ことを特徴とする請求項8に記載のコンピュータ可読記憶媒体。
  10. コンピュータ実行可能命令をさらに記憶し、前記命令は、前記コンピュータによって実行されると前記コンピュータに
    1つまたは複数の高負荷のサーバコンピュータを識別させ、
    前記高負荷のサーバコンピュータの各々で1つまたは複数のドキュメント編集セッションを識別させ、
    前記識別された文章編集セッションの各々について、前記ドキュメント編集セッションと関連するドキュメントにコマンドストリームを適用させ、前記ドキュメントを非高負荷のサーバコンピュータに移動させる
    ことを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
JP2013537696A 2010-11-04 2011-10-25 ドキュメント編集コマンドのシリアル化 Expired - Fee Related JP5898685B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/939,171 US8527609B2 (en) 2010-11-04 2010-11-04 Serializing document editing commands
US12/939,171 2010-11-04
PCT/US2011/057611 WO2012061102A2 (en) 2010-11-04 2011-10-25 Serializing document editing commands

Publications (3)

Publication Number Publication Date
JP2013543190A true JP2013543190A (ja) 2013-11-28
JP2013543190A5 JP2013543190A5 (ja) 2014-12-18
JP5898685B2 JP5898685B2 (ja) 2016-04-06

Family

ID=46020675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013537696A Expired - Fee Related JP5898685B2 (ja) 2010-11-04 2011-10-25 ドキュメント編集コマンドのシリアル化

Country Status (11)

Country Link
US (1) US8527609B2 (ja)
EP (1) EP2635978A4 (ja)
JP (1) JP5898685B2 (ja)
KR (1) KR101805959B1 (ja)
CN (1) CN102541831B (ja)
AU (1) AU2011323848B2 (ja)
CA (1) CA2816019C (ja)
RU (1) RU2598325C2 (ja)
SG (1) SG189479A1 (ja)
WO (1) WO2012061102A2 (ja)
ZA (1) ZA201302899B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200103135A (ko) * 2019-02-07 2020-09-02 주식회사 한글과컴퓨터 문서 편집 서버와 연동하여 웹 기반의 문서 작성을 처리하는 전자 단말 장치 및 그 동작 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120192064A1 (en) * 2011-01-21 2012-07-26 Oudi Antebi Distributed document processing and management
US11611595B2 (en) 2011-05-06 2023-03-21 David H. Sitrick Systems and methodologies providing collaboration among a plurality of computing appliances, utilizing a plurality of areas of memory to store user input as associated with an associated computing appliance providing the input
US10402485B2 (en) 2011-05-06 2019-09-03 David H. Sitrick Systems and methodologies providing controlled collaboration among a plurality of users
US9110807B2 (en) 2012-05-23 2015-08-18 Sybase, Inc. Cache conflict detection
US8874682B2 (en) * 2012-05-23 2014-10-28 Sybase, Inc. Composite graph cache management
US20140082473A1 (en) * 2012-09-14 2014-03-20 David H. Sitrick Systems And Methodologies Of Event Content Based Document Editing, Generating Of Respective Events Comprising Event Content, Then Defining A Selected Set Of Events, And Generating Of A Display Presentation Responsive To Processing Said Selected Set Of Events, For One To Multiple Users
US20140082472A1 (en) * 2012-09-14 2014-03-20 David H. Sitrick Systems And Methodologies For Event Processing Of Events For Edits Made Relative To A Presentation, Selecting A Selected Set Of Events; And Generating A Modified Presentation Of The Events In The Selected Set
CN105630757B (zh) * 2014-11-07 2019-11-26 珠海金山办公软件有限公司 一种数据编辑方法及装置
US20160306782A1 (en) * 2015-04-20 2016-10-20 Infraware Inc. Method and apparatus for sharing common documents using dualized server
US10909080B2 (en) * 2015-05-04 2021-02-02 Microsoft Technology Licensing, Llc System and method for implementing shared document edits in real-time
US10102190B2 (en) * 2015-12-28 2018-10-16 Microsoft Technology Licensing, Llc. Memory conserving versioning of an electronic document
EP3942437B1 (en) * 2019-03-21 2024-01-10 DivX, LLC Systems and methods for multimedia swarms

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324359A (ja) * 1991-12-31 1993-12-07 Internatl Business Mach Corp <Ibm> 選択可能ロック領域
JP2000187715A (ja) * 1998-09-10 2000-07-04 Xerox Corp 電子タグを使ったインタ―フェ―ス
JP2002091813A (ja) * 2000-09-18 2002-03-29 Ricoh Co Ltd 統合文書管理システム、方法、及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003122732A (ja) * 2001-10-16 2003-04-25 Nec Corp 情報通信システム
JP2003288285A (ja) * 2002-03-28 2003-10-10 Fujitsu Ltd サービス要求代行方法、サービス要求代行サーバ、及び、サービス要求代行システム
US20050027524A1 (en) * 2003-07-30 2005-02-03 Jianchao Wu System and method for disambiguating phonetic input
JP2006190255A (ja) * 2004-11-18 2006-07-20 Microsoft Corp グラフィクス・ストリームの多重化および分離
US20080077848A1 (en) * 2006-09-21 2008-03-27 International Business Machines Corporation Capturing and Processing Change Information in a Web-Type Environment
US20080177800A1 (en) * 2007-01-18 2008-07-24 Microsoft Corporation Synchronizing undo/redo operations between different document views
JP2010092141A (ja) * 2008-10-06 2010-04-22 Konica Minolta Business Technologies Inc 画像処理システム、画像読取装置、画像処理装置および画像処理プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901425B1 (en) 1996-12-23 2005-05-31 International Business Machines Corporation Computer apparatus and method including a disconnect mechanism for communicating between software applications and computers on the world-wide web
US6993528B1 (en) 2000-10-04 2006-01-31 Microsoft Corporation Methods and systems for allowing third party client applications to influence implementation of high-level document commands
US20030163570A1 (en) 2002-02-26 2003-08-28 Sun Microsystems, Inc. Command line interface session tool
US7409693B2 (en) 2003-10-30 2008-08-05 International Business Machines Corporation Method and system for providing version control of parameters in a command-based API using Java serialization
US7770181B2 (en) * 2004-01-16 2010-08-03 Microsoft Corporation System and method for transferring computer-readable objects across a remote boundary
US20050218739A1 (en) * 2004-04-01 2005-10-06 Microsoft Corporation System and method for sharing objects between computers over a network
US7607129B2 (en) * 2005-04-07 2009-10-20 International Business Machines Corporation Method and apparatus for using virtual machine technology for managing parallel communicating applications
US7814210B1 (en) * 2005-04-29 2010-10-12 Network Appliance, Inc. Non-disruptive server replacement for server-based clients
US20070220417A1 (en) * 2006-03-17 2007-09-20 Sonolink Communications Systems, Llc System and method for editing online documents
US8131860B1 (en) * 2006-03-30 2012-03-06 Emc Corporation Serialization and deserialization
US7810076B2 (en) * 2006-09-22 2010-10-05 International Business Machines Corporation Method and system for scaling standalone applications to be executed as internet applications
US7769810B1 (en) * 2007-04-26 2010-08-03 Adobe Systems Incorporated Method and system for collaborative editing
US8269780B2 (en) 2007-06-07 2012-09-18 Apple Inc. Batching graphics operations with time stamp tracking
US8115773B2 (en) 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
CN101241505B (zh) * 2008-02-01 2013-08-21 张建中 一种生成、部署和运行多维地址可扩展关联标记语言的方法和装置以及系统
US8368705B2 (en) 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324359A (ja) * 1991-12-31 1993-12-07 Internatl Business Mach Corp <Ibm> 選択可能ロック領域
JP2000187715A (ja) * 1998-09-10 2000-07-04 Xerox Corp 電子タグを使ったインタ―フェ―ス
JP2002091813A (ja) * 2000-09-18 2002-03-29 Ricoh Co Ltd 統合文書管理システム、方法、及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003122732A (ja) * 2001-10-16 2003-04-25 Nec Corp 情報通信システム
JP2003288285A (ja) * 2002-03-28 2003-10-10 Fujitsu Ltd サービス要求代行方法、サービス要求代行サーバ、及び、サービス要求代行システム
US20050027524A1 (en) * 2003-07-30 2005-02-03 Jianchao Wu System and method for disambiguating phonetic input
JP2006190255A (ja) * 2004-11-18 2006-07-20 Microsoft Corp グラフィクス・ストリームの多重化および分離
US20080077848A1 (en) * 2006-09-21 2008-03-27 International Business Machines Corporation Capturing and Processing Change Information in a Web-Type Environment
US20080177800A1 (en) * 2007-01-18 2008-07-24 Microsoft Corporation Synchronizing undo/redo operations between different document views
JP2010092141A (ja) * 2008-10-06 2010-04-22 Konica Minolta Business Technologies Inc 画像処理システム、画像読取装置、画像処理装置および画像処理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200103135A (ko) * 2019-02-07 2020-09-02 주식회사 한글과컴퓨터 문서 편집 서버와 연동하여 웹 기반의 문서 작성을 처리하는 전자 단말 장치 및 그 동작 방법
KR102187543B1 (ko) 2019-02-07 2020-12-07 주식회사 한글과컴퓨터 문서 편집 서버와 연동하여 웹 기반의 문서 작성을 처리하는 전자 단말 장치 및 그 동작 방법

Also Published As

Publication number Publication date
JP5898685B2 (ja) 2016-04-06
CN102541831B (zh) 2015-04-22
US20120117194A1 (en) 2012-05-10
WO2012061102A2 (en) 2012-05-10
EP2635978A2 (en) 2013-09-11
EP2635978A4 (en) 2018-01-03
CA2816019C (en) 2017-11-07
RU2013119974A (ru) 2014-11-10
KR20140003419A (ko) 2014-01-09
KR101805959B1 (ko) 2017-12-07
AU2011323848A1 (en) 2013-05-23
US8527609B2 (en) 2013-09-03
SG189479A1 (en) 2013-05-31
CN102541831A (zh) 2012-07-04
ZA201302899B (en) 2014-07-25
CA2816019A1 (en) 2012-05-10
WO2012061102A3 (en) 2012-07-19
AU2011323848B2 (en) 2016-05-05
RU2598325C2 (ru) 2016-09-20

Similar Documents

Publication Publication Date Title
JP5898685B2 (ja) ドキュメント編集コマンドのシリアル化
US9933956B2 (en) Systems and methods for implementing stretch clusters in a virtualization environment
JP5646686B2 (ja) サーバ記憶モデルを利用したファイルパーティションの同期
CN101650660B (zh) 从中央存储装置引导计算机系统
JP5789255B2 (ja) コンピュータネットワークにおける電子ドキュメントのレンディションをデプロイするサーバ前処理の利用する方法
US9229739B2 (en) Creation and management of electronic files for a localization project
US20170353541A1 (en) Non-transitory recording medium, information processing method, management node and information processing system
US9483493B2 (en) Method and system for accessing a distributed file system
US9733977B2 (en) Distributed processing system, distributed processing device, distributed processing method, and distributed processing program
JP2007041888A (ja) データベース再構成装置、およびデータベース再構成プログラム
US9092292B2 (en) Shared application binary storage
US20050028095A1 (en) Apparatus, program and method for accepting a request from a client computer via a network and executing a web application
JP5409529B2 (ja) アプリケーション実行装置及びプログラム
WO2016109743A1 (en) Systems and methods for implementing stretch clusters in a virtualization environment
Paternò et al. End-user customization of multi-device ubiquitous user interfaces

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141023

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141023

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160304

R150 Certificate of patent or registration of utility model

Ref document number: 5898685

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees