JP4903979B2 - リアルタイムなビジネス・コラボレーションの方法 - Google Patents
リアルタイムなビジネス・コラボレーションの方法 Download PDFInfo
- Publication number
- JP4903979B2 JP4903979B2 JP2002530948A JP2002530948A JP4903979B2 JP 4903979 B2 JP4903979 B2 JP 4903979B2 JP 2002530948 A JP2002530948 A JP 2002530948A JP 2002530948 A JP2002530948 A JP 2002530948A JP 4903979 B2 JP4903979 B2 JP 4903979B2
- Authority
- JP
- Japan
- Prior art keywords
- computer
- subsystem
- data
- firewall
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- 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]
-
- 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/14—Session management
-
- 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/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99948—Application of database or data structure, e.g. distributed, multimedia, or image
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Exchange Systems With Centralized Control (AREA)
Description
本発明は、インターネットなどのコンピュータ・ネットワークに関し、より詳細には、ネットワーク通信プロトコルおよびリアルタイムなコラボレーションのためにコンピュータ・ネットワークを介して通信されるデータのデータ形式の操作に関する。
【0002】
(発明の背景)
コンピュータ・ネットワークは、ビジネス、娯楽、行政にとって重要な通信手段となった。たとえば、大企業の従業員はネットワーク化されたコンピュータのイントラネットを介して通信することができる。また、より広範囲にわたるコンピュータ・ネットワークもある。もちろん、インターネットは現在最も普及しているコンピュータ・ネットワークである。インターネットは、非常に多くの個人用コンピュータ、イントラネット、および他の小規模ネットワークを広大なグローバル・ネットワークに接続する、一種のメタネットワーク(meta−network)としての役割を果たす。インターネットの技術的詳細は、経時的に変化または進化していく可能性があるが、おそらく小規模コンピュータ・ネットワークならびに地球規模の1つまたは複数のコンピュータ・ネットワークは引き続き存在していくであろう。
【0003】
インターネットおよび他のコンピュータ・ネットワークを介した大量のデータ通信は、伝送制御プロトコル(「TCP」)仮想回路接続を通じて実行される。仮想回路接続では、通信中の2つのコンピュータは、電話線などの単一の静的通信パスによって接続されているかのように、コンピュータ・ネットワークを介してデータを送信および受信する。ただし、実際の通信は、どんな単一の専用の有線または無線パスを介しても実行されないのが一般的である。代わりに、どのパスがデータの伝送に最も利用しやすいかに依存した、様々なパスを介してデータ通信の様々な部分を送信するパケット交換の複雑なシステムがある。仮想回路接続の特徴は、すべてのデータを信頼できるインオーダ送達(in−order delivery)で搬送することである。
【0004】
仮想回路接続のインターネット世界には、通常、間欠的および持続的という2種類の通信がある。間欠的通信では、通信する2つのコンピュータが、時間の経過と共に複数の仮想接続を間欠的に確立し、切断し、再度確立する。持続的通信では、実在的なデータがどちらの方向にも送られていない休止中であっても、単一の仮想回路接続が維持される。
【0005】
この間欠的通信には利点がある。基本的に間欠的通信のコンテキストでは、通信の両端にあるコンピュータは、持続的接続を維持しないことによってそれら自体のリソースの使用を節約する。サーバ・コンピュータは、インターネットに接続された(世界中の)多数のクライアント・コンピュータからの多くの重複する要求を処理する必要があるので、このような節約がサーバ・コンピュータ側では特に重要になる場合がある。
【0006】
ただし、間欠的通信にはいくつかの欠点もある。たとえば、2人またはそれ以上の個人がリアルタイムの通信を望む場合、理論的には高速の連続する間欠的な接続で実行することができる。この1つの例がポーリングと呼ばれ、クライアント・コンピュータは、サーバ・エンド側にクライアントがアクセスしたいような新しいデータがないことを確認するために、継続的かつ連続的にサーバ・コンピュータとの短時間接続を確立するものである。
【0007】
ただし、サーバ・エンドで追加された任意の新しいデータが、(リアルタイム・コラボレーションを容易にするために)クライアント・エンドで即時に要求および受信されることを保証するためには、多くの連続する間欠的通信が必要であり、これによって、個々のクライアント・コンピュータ・システムのコンピュータ・システム・リソース、ならびにネットワーク・リソース(たとえばインターネット帯域幅)を大量に消費させる可能性がある。この問題がより深刻になるのは、クライアント・コンピュータ・システムのユーザがリアルタイムでデータを受信していると感じられるように、十分な速さで任意の新しい関連するサーバ・データがクライアント・システムに到達しなければならない場合である。相互に通信している通信者の数が増えるに従って、これらの問題もますます深刻になる。
【0008】
従来の間欠的ネットワーク通信の制限には、様々な方法で対処してきた。たとえば、データ(たとえばオーディオ・ビデオ・データ)をサーバからクライアントへ持続的に伝送するために、サーバ・コンピュータからクライアントへのインターネットを介したストリーミング供給を供給することができる。異なる例として、チャット・ルームをセットアップするために、インターネット・リレー・チャット(「IRC」)などの専用ソフトウェアが使用され、このソフトウェアでは、多数のリモート・コンピュータがチャット・ルームの設定でテキストベース・メッセージをリアルタイムで相互に送信することが可能であり、サーバは所与の参加者によりシステムに入力された新しいチャット・データを配布するためにクライアントにコールバックする。
【0009】
オーディオ・ビデオ・ストリーミングおよびチャット・ルームなどのいくつかのタイプの接続には、それ自体の欠点がある。たとえばこれらの通信タイプが、非標準ネットワーク・ポートの使用および/またはサーバからクライアントへの接続開始(サーバ・コールバック)によるファイアウォールの使用、ならびに/あるいはデータを通信する際に従うプロトコルと矛盾する可能性がある。これらの潜在的な解決策には、通信可能なデータのタイプに関する制限もある。これらの潜在的な解決策は、2つまたは複数の互いに遠隔なクライアントが並行してかつ同時に、コンピュータ・ネットワークを介して1つまたは複数のファイアウォールを横切り、アプリケーション(たとえばリモート・サーバ・マシン上のワード・プロセッシング・アプリケーション)にアクセスしてこれを制御する、インターネットを介したコンピュータ・ネットワークのアプリケーション・コラボレーションには特に適していないと考えられる。
【0010】
(発明の概要)
本発明は、コンピュータ・ネットワーク転送プロトコルの操作に対処するものであり、その結果、転送プロトコルは、特に互いに遠隔なユーザによるアプリケーションのコラボレーティブな使用を可能にするのに必要な通信をネットワーク化するために、効果的なネットワーク通信で最適化される。
【0011】
この最適化には、クライアント・コンピュータおよびファイアウォールが動作する方法に対して敏感であることが含まれ、その結果、持続的接続、読取りブロック通信(blocking−on−a−read communications)、キープアライブ通信(keep−alive communications)、ステートフル通信(stateful communications)などを、様々なタイプのファイアウォールを介して有効とすることができる。この最適化には、サーバ・コンピュータのネットワーク内で高速かつ効率的な通信を容易にするために、転送プロトコルに対する敏感さも含むことができる。多くの場合、クライアント・コンピュータ・サブシステムにとって最良の転送プロトコルは、サーバ・コンピュータ・サブシステムにとって最良の転送プロトコルと同じではない。
【0012】
このような課題が与えられたため、本発明のいくつかの実施形態にはプロトコル間での変換のためのコンピュータ・プログラムがあり、その結果、データ通信は、コンピュータ・システムのサーバ・エンドおよびクライアント・エンドの両方で異なる最適な転送プロトコルを明らかにする。たとえば、一部のファイアウォール(通常はクライアント・ファイアウォール)は、ポート80を介したステートフルなHTTP1.1キープアライブ接続に非常に適している。他のタイプのファイアウォール(通常はサーバ・ファイアウォール)は、オブジェクト直列化用プロトコルなどの他のプロトコルの下で、非予約ネットワーク・ポートを介してステートフルで持続的な通信が可能なように構成される。本発明は、選択された転送プロトコルが関連するファイアウォールを介した持続的通信に適するように、転送プロトコル間でデータを変換することにより、これらおよび/または他のタイプのプロトコルを有するコンピュータ・ネットワークを介した持続的(かつ好ましくはリアルタイムな)通信の達成を助けることができる。
【0013】
本発明のいくつかの実施形態には、複数のスレッドを有し、1つまたは複数のクライアント・コンピュータ・システムへの持続的な接続を介してデータを送信する、サーバが含まれる。たとえば、リアルタイムのコラボレーティブ・アプリケーション(たとえばコラボレーティブ・スケジューリング・プログラム)用のサーバ・コンピュータ・システムは、複数のクライアント・コラボレータ・コンピュータ・システム用の複数のスレッドを使用し、HTTP1.1プロトコルの下で、各クライアントのファイアウォールのポート80を介して生じた持続的、ステートフル、キープアライブ接続を介してリアルタイムに、これらのクライアント・コラボレータにデータを返送することができる。
【0014】
本発明は、リアルタイム通信を容易にするためのコンピュータ・ネットワークのアーキテクチャおよびソフトウェアに対処するものである。本発明は、1つまたは複数のファイアウォールを含むコンピュータ・システムのコンテキストでのリアルタイム通信のコンテキストで、特に役立つと考えられる。本発明の最も好ましい実施形態には、リアルタイム・アプリケーション・コラボレーションが含まれる。
【0015】
少なくとも本発明のいくつかの実施形態は、以下の目的、利点、および特典のうちの1つまたは複数を示すことができる。
(1)インターネットなどのコンピュータ・ネットワークを介したリアルタイム通信および/またはコラボレーション、
(2)インターネットなどのコンピュータ・ネットワークを介した、高スケーラブルな通信および/またはコラボレーション、
(3)セキュリティ機能およびファイアウォールに非常に適した方法での、コンピュータ・ネットワークを介したコラボレーションおよび/または通信、
(4)コンピュータ・ネットワーク通信および/またはコラボレーションを達成するために必要なファイアウォール構成アクティビティの削減、
(5)コンピュータ・ネットワークを介した持続的な通信および/またはコラボレーションを実行するために必要なクライアント・コンピュータ・リソースの削減、
(6)コンピュータ・ネットワークを介した持続的な通信および/またはコラボレーションを実行するために必要なサーバ・コンピュータ・リソースの削減、ならびに
(7)コラボレーティブなネットワークベース・アプリケーションのコンテキストで、共用アプリケーションの内容に関してリアルタイムで真に協働可能な2つの互いに遠隔なクライアント・コラボレータ。
【0016】
本発明の一態様によれば、コンピュータ・システムには、第1のコンピュータ・ネットワーク、第1のコンピュータ・サブシステム、第2のコンピュータ・サブシステム、および第2のサブシステム・ファイアウォールが含まれる。第1のコンピュータ・サブシステムにはコラボレーティブ・アプリケーション・ソフトウェアが含まれ、このコラボレーティブ・アプリケーション・ソフトウェアは、コンピュータ・ネットワークを介してアプリケーション出力データを送信するためのマシン読取り可能命令を含む。第2のコンピュータ・サブシステムは、アプリケーション出力データを受信するように構成される。第2のサブシステム・ファイアウォールは、第2のアプリケーション・サブシステムの前方に配置される。第2のサブシステム・ファイアウォールは、コラボレーション実施中はオープンになっているハイパーテキスト転送プロトコルのキープアライブ接続を介して、アプリケーション出力データを第2のコンピュータ・サブシステムへ送るように構成される。
【0017】
本発明の他の応用例は、詳細な説明および添付の図面を再検討すれば明らかになろう。説明および例には本発明の好ましい実施形態が示されているが、これらの説明および例は本発明の範囲を限定することを意図するものではなく、当分野の技術者であれば、本発明の精神および範囲内での様々な変更および修正が明らかであろう。
【0018】
本発明は、以下の詳細な説明、ならびに例示のためにのみ与えられたものであって本発明の範囲を制限するものとして解釈されるものではない添付の図面から、より完全に理解されよう。
【0019】
図の説明を始める前に、いくつかの用語について定義する。
【0020】
(好ましい実施形態の詳細な説明)
定義
ゲートウェイ・ソフトウェア:2つの異なるプロトコル間でデータ(たとえばデータ・パケット)を変換するためのマシン読取り可能命令。「ゲートウェイ」は、本明細書では適切に確立された主格の意味で使用されており、品物、サービス、または任意の特定の商用エンティティを指すものではないことに留意されたい。
コンピュータ・ネットワーク:有線ネットワーク、無線ネットワーク、ならびに無線部分および有線部分を含むハイブリッド・ネットワークのすべてを含む。
コンピュータ・システム:コンピュータまたはコンピュータのネットワーク。
コンピュータ・サブシステム:コンピュータまたはコンピュータのネットワーク。一般に大規模システムの一部。
転送プロトコル:データがファイアウォールで処理される方法に影響を与える、任意のコンピュータ・データ・プロトコル。従来のプロトコルは、伝送制御レベル・プロトコル、インターネット・レベル・プロトコル、IPレベル・データ・プロトコル、データ・パケット・プロトコルなどのいくつかのレベルのプロトコル階層に従って編成されたが、本明細書で使用される転送プロトコルは、必ずしもこの階層内の任意の1レベルを指すものではなく、データがファイアウォールでどのように処理されるかに影響を与える任意のレベルでのプロトコル・データであって、現在および将来、ファイアウォールは現存する階層の複数のレベルでプロトコルを詳細に調べることが可能であり、本明細書で使用される転送プロトコルは、ファイアウォールを通過しようとするデータをどのように処理するかを決める際に、ファイアウォールが使用するプロトコル、またはプロトコルの一部、あるいはプロトコルの一部の組合せで構成されるものであることに留意されたい。
アプリケーション:少なくとも1つのマシン読取り可能命令を含む、マシン読取り可能コードのセット。
コラボレーティブ・アプリケーション:2つの異なるコンピュータの少なくとも2人から入力を受信し、この2人に出力を提供することが同時にできるアプリケーション。
リアルタイム:データ伝送の遅延がかなり短い(全体として)ことを特徴とし、その結果、分別のある人物がいかなる遅延もなく伝送を実施しているかのように知覚する。
持続的:持続的な仮想回路接続。
ステートレスおよびステートフル:ステートフルおよびステートレスは、コンピュータ・ネットワーク通信システムが、所与の対話シーケンスにおいて、1つまたは複数の先行イベントを記憶しているように設計されているか否かを示す。ステートフルとは、通常その目的用に指定した記憶フィールドの値を設定することにより、システムが対話の状態を追跡することを意味する。ステートレストとは、以前の対話の記録がなく、対話要求ごとに、付随する情報のみに基づいて処理しなければならないことを意味する。
第1の...情報:特許請求の範囲が第1の通信、第2の通信、第3の通信などに関して述べる場合、「第1」、「第2」、「第3」などのラベルは、(任意の所与の特許請求の範囲は、全体として読むと、通信の何らかの相対的タイミングを暗黙的または明示的に含意しているが)通信の相対的タイミングに関するいずれかのことを含意することを意図しておらず、言い換えれば、この相対的タイミングが残りのすべての特許請求の範囲の言語と矛盾していない限り、「第3のネットワーク通信」は「第1のネットワーク通信」よりも早い時間に発生することが可能であって、「第1の...情報」という句は、コンピュータ・システム内にそれ以前の通信がなかったことを含意するものではなく、本発明のほとんどとまでは行かないが多くの実施形態では、通信は任意の所与の特許請求の範囲で対処される「第1の...通信」より前に発生することになる。
スレッド:単一のコンピュータ・プログラム内で、コンピュータ・プログラム命令の他のシーケンスとは無関係に実行するようにスケジューリングされた、コンピュータ・プログラム命令のシーケンスであり、たとえば、現代のコンピュータ・プログラミング言語(たとえばJava)では、並行プログラミングおよびプログラム・マルチタスキングの外観改善を容易にするために、スレッドに言語サポートを提供する。
通信ソフトウェア:コンピュータ・システム内のどこにでも配置または配布されたネットワーク通信の制御を助けるソフトウェア。
【0021】
上記の定義が通常の、明白な、習慣的(とりわけ、辞書および/または技術辞典によって一般に明示されるような)意味と矛盾しない限り、上記の定義は補足的性格のものとみなすものとする。上記の定義が通常の、明白な、習慣的(とりわけ、辞書および/または技術辞典によって一般に明示されるような)意味と矛盾する場合、上記の定義が制限する。上記の定義が、何らかの面で通常の、明白な、習慣的意味よりも広範囲にわたる場合、上記定義は、少なくともその広範囲な面について制限することになる。
【0022】
特許権所有者が該当する法律の下でそれ自体の辞書編集者として活動できる限り、上記に定義された用語を除き、特許請求の範囲の項に示されたすべての用語は、その通常の、明白な、習慣的(とりわけ、辞書および/または技術辞典によって一般に明示されるような)意味を呈するものであり、本明細書で具体的に定義されるとはみなされるものでないことがここでさらに指示される。「特別な定義」の推論に関するこの制限にもかかわらず、特許明細の範囲で使用される単語または用語が複数の代替の通常の、明白な、習慣的意味を有し、代替の意味の中から選択する場合に本明細書が役立つ状況では、本明細書は、該当する通常の、明白な、習慣的(とりわけ、辞書および/または技術辞典によって一般に明示されるような)意味を明示するために使用することができる。
【0023】
好ましいコンピュータ・アーキテクチャ
図1は、本発明に従った例示的コンピュータ・システム100を示す図である。図1に示されるように、サーバ・コンピュータ・サブシステム102、クライアントAコンピュータ・サブシステム106、およびクライアントBコンピュータ・サブシステム108が、ワイド・エリア・ネットワーク(「WAN」)132によって接続される。サーバ・コンピュータ・サブシステム102は、ビジネス・コラボレーション・ソフトウェアを実行するように設計されたコンピュータ・システムであって、複数の相互に遠隔な場所にいる複数のユーザが、単一セットのコンピュータ・アプリケーション・データ(たとえば、ワード・プロセッシング文書)にアクセスし、これを操作できるようにするものである。従来の音声通信(たとえば電話)、電子メール通信、またはコンピュータ・ファイル転送では達成できない、ある種のある品質のビジネス通信および/またはあるレベルの共同作業を可能にするために、様々なユーザの操作がリアルタイムで効率的に他のユーザに送られることが好ましい。
【0024】
クライアントAコンピュータ・サブシステム106およびクライアントBコンピュータ・サブシステム108は、それぞれ2人の互いに遠隔なコラボレータによってビジネス・コラボレーションを実行するために使用されるコンピュータ・サブシステムである。WAN132は、サーバ・コンピュータ・サブシステム102の仲介によって、ユーザを互いにコラボレーティブに接続する。WAN132はインターネットであることが好ましい。あるいはWAN132は、現在存在するかまたは将来開発される可能性のあるリモート・コンピュータを接続することのできる、任意の他の種類のコンピュータ・ネットワークであってよい。WAN132は、有線ベース、無線、またはこれらのタイプの組合せであってよい。
【0025】
ここで、サーバ・コンピュータ・サブシステム102のアーキテクチャについて詳細に論じる。サーバ・コンピュータ・サブシステム102は、サーバ・コンピュータ110、サーバ・ファイアウォール120、ローカル・エリア・ネットワーク(「LAN」)130、ゲートウェイ・コンピュータ112、およびゲートウェイ・ファイアウォール122を含む。
【0026】
サーバ・コンピュータ110は、中央処理ユニット(CPU)140、コラボレーティブ・アプリケーション・ソフトウェア150、およびコラボレーティブ・アプリケーション・データベース160を含む。図1ではサーバ・コンピュータは単一のブロックとして示されているが、多くの代替実施形態では、サーバ・コンピュータ110はいくつかの相互接続されたコンピュータを介して分散されることになる。たとえばコラボレーティブ・アプリケーション・データベース160は、ORACLEデータベース・ソフトウェアなどのデータベース管理ソフトウェアを備えた別のコンピュータ上に常駐することが可能である。ORACLEという単語は商標権の対象となる可能性があることに留意されたい。
【0027】
一般に、サーバ・コンピュータ110は、クライアントAおよびクライアントBなどの、互いに遠隔なユーザによってコラボレーティブに使用されるアプリケーションをホストする。このアプリケーションはワード・プロセッサ、タスク・スケジューリング・ツール、グラフィックス・プログラム、プレゼンテーション・プログラム、スプレッドシート、ゲーム、音楽スタジオ、あるいは、従来型または開発の可能性がある任意の他のタイプのコンピュータ・アプリケーションであってよい。どのようなアプリケーションであっても、本発明はクライアントAおよびクライアントBが共用アプリケーションの内容に関して、好ましくはリアルタイムで真に協働するのを助けることができる。たとえばその内容は、テキスト文書、グラフィック、ゲーム・パフォーマンス、または歌であってよい。
【0028】
サーバ・コンピュータ110は、従来型サーバまたはミニサーバ・コンピュータであることが好ましい。サーバ・コンピュータは、アプリケーション・サーバが完全にJAVAで書かれた「Java Distributed Oriented Technology(Java分散指向技術)」(すなわち「JDOT」)を使用することが好ましい。JAVAおよびJDOTという単語および/または「Java Distributed Oriented Technology」という句は、商標権の対象となる可能性があることに留意されたい。
【0029】
高いレベルから、JDOTサーバは、2次記憶域(SQLデータベースおよびLDAPディレクトリの両方)とインターフェースするきめ細かいデータ・セキュリティのためのフレームワーク、トランザクション管理、キャッシング、および特有のビジネス論理サービスを構築するための標準アーキテクチャ・フレームワークを提供する。JDOTサーバの最も重要な特徴の1つが、複数のネットワーク化されたクライアントを効率的にリアルタイムで[たとえば1秒未満(sub−second)]更新し、最終的には複数の参加者の間でのリアルタイム・ネットワーク・コラボレーションを容易にすることである。JDOTによれば、コラボレーティブ・データ配布サービスは、Erich Gamma等による「Design Patterns:Elements of Reusable Object−Oriented Software」に記載されているように、アルゴリズム的に最高レベルでのオブザーバ・パターンに基づくものである。JDOTサーバのサービスは、効率的な、ファイアウォール適合の、分散型オブザーバ・システムを実施する。
【0030】
そのため、JDOTサーバおよび他の同様のサーバは、ロー・ソケット・データ(raw socket data)、オブジェクトのシリアル化用プロトコル、および/またはリモート方式呼出しプロトコルを使用する、持続的ネットワーク通信に最も適していることが多い。JDOTサーバは、HTTP1.1プロトコル・データおよびファイアウォールのポート80を介して生じるタイプの関連付けられた持続的接続には、あまり適していないことが多い。
【0031】
CPU140は、クライアントAおよびクライアントBからデータを受信し、このデータを使用して、クライアントAおよびクライアントBが協働しているテキスト文書などのコラボレーティブ・アプリケーション・データを操作する。CPU140は、コラボレーティブ・アプリケーション・ソフトウェア150のマシン読取り可能命令に従うことによって、コラボレーティブ・アプリケーション作業を実行する。
【0032】
コラボレーティブ・アプリケーション・ソフトウェア150はアプリケーションである。他の好ましい実施形態では、複数の種類のアプリケーションがサーバ・コンピュータ・サブシステム102で使用可能な場合があり、これら複数のアプリケーションは、LAN130によって接続された別々のサーバ・コンピュータ上に格納するか、または格納しなくてよい。コラボレーティブ・アプリケーション・ソフトウェアは、従来のように、読取り専用メモリ、ランダム・アクセス・メモリ、データ記憶媒体、またはこれら記憶手段の組合せに格納することができる。以下で論じるように、コラボレーティブ・アプリケーション・ソフトウェア150は、クライアントA、クライアントB、および他のクライアントからデータを受信するように設計され、このデータは、何らかの所定の転送プロトコルによって特徴付けられる。この所定の転送プロトコルのアイデンティティは、コンピュータ・システム100の残りのアーキテクチャおよび機能について以下で論じる場合に、重要となる。
【0033】
コラボレーティブ・アプリケーション・データベース160は、前述のように、従来のコンピュータ・データベースであることが好ましい。コラボレーティブ・アプリケーションン・データベース160は、コラボレーティブ・アプリケーションに関するデータを格納する。たとえば、アプリケーションがコラボレーティブ・ワード・プロセッサの場合、ワード・プロセッサ・プログラムは、コラボレーティブ・アプリケーション・ソフトウェア150を含み、ワード・プロセッシング・ファイル(すなわち、実際の文書のテキストおよびフォーマットを表すマシン読取り可能データ)は、コラボレーティブ・アプリケーション・データベース160を含む。コラボレーティブ・アプリケーション・データベース160は、コラボレーティブ・アプリケーション・ソフトウェア150の利用が正当に許可されたリモート・コンピュータおよび/またはユーザのリストなどの、コラボレーティブ・アプリケーション・ソフトウェアに関する他のデータを格納することができる。
【0034】
図1に示されるように、サーバ・コンピュータ110はサーバ・ファイアウォール120の後方に配置される。サーバ・ファイアウォール120は、従来のハードウェア・ベースおよび/またはソフトウェア・ベースのファイアウォールである。いくつかの例を提供するために、サーバ・ファイアウォール120は、サーバ・コンピュータ110上に常駐するソフトウェアまたは専用コンピュータ上のソフトウェアの形を取るか、あるいはハードウェア構成要素の形を取ることができる。
【0035】
従来のファイアウォールと同様に、サーバ・ファイアウォール120は複数の「ポート」を有するように構成される。各ポートには、ポートを介して渡そうとするデータ・パケットを綿密に調べるための関連付けられた規則セットがある。たとえば、ポートは一定のプロトコルのデータしか通過させられない場合がある。また規則により、ファイアウォールは、データのコンテンツに関するチェックを実行するために、データ・パケットから実際のデータを抽出しなければならない場合がある。多くのファイアウォールに共通なように、サーバ・ファイアウォール120は、サーバ110に着信するデータ・パケットに対して、サーバ・コンピュータ110から発信するデータ・パケットに対するものとは異なる、より厳しい規則を適用する。ただし、持続的接続が確立されると、データの流れは、どちらの方向にも持続的、高速、かつ効率的である。
【0036】
サーバ・ファイアウォール120は、ローカル・エリア・ネットワーク(LAN130)とサーバ・コンピュータ(サーバ・コンピュータ110)との間に位置することに留意されたい。実際問題として、これが、サーバ・コンピュータ・サブシステム102のオペレータがサーバ・ファイアウォール120をどのように構成するかを選択する際に影響を与える可能性がある。たとえば、ファイアウォールはインターネットに隣接していないため、好ましいサーバ・ファイアウォール構成に影響を与える可能性がある。また、サーバ・コンピュータ(およびそのデータベース)に格納されたデータが極度に敏感であるため、ファイアウォール構成に影響を与える可能性もある。
【0037】
そのため、サーバ・ファイアウォール122は、この種の理由のために、ゲートウェイ・ファイアウォール122、クライアントAファイアウォール124、およびクライアントBファイアウォール126などの、図1に示されたコンピュータ・システム100の他のファイアウォールとは異なるように構成することができる。サーバ・ファイアウォール122は異なるように構成されるため、他のファイアウォールと同じ様々な持続的接続を確立できない場合があり、これが、以下でより詳細に説明するように転送プロトコル変換(transport protocol conversionまたはtransport protocol translation)が実行される理由の1つである。
【0038】
次にLAN130に移ると、この構成要素は、従来のローカル・エリア・ネットワークまたはイントラネットとして形成される。このLAN130および残りのサーバ・コンピュータ・システム102は、コラボレータであるクライアントAおよびクライアントBを雇用する企業によって維持されるか、あるいは、第三者のコンピュータ・サービス・プロバイダによって維持される場合がある。
【0039】
この好ましい実施形態では、LAN130は、コラボレーティブ・アプリケーションに関するデータの通信を、サーバ・コンピュータ110とゲートウェイ・コンピュータ112との間で通信できるようにするものである。他の好ましい実施形態では、LANは、ゲートウェイ・コンピュータ112と、コラボレーティブ・アプリケーションの実施を協働的に共用するいくつかのサーバ・コンピュータとの間の通信を可能にする。他の実施形態では、LANがまったく含まれない。たとえば、一部の実施形態では、サーバ・コンピュータ・サブシステム102が、ゲートウェイ・ソフトウェア152とコラボレーティブ・アプリケーション・ソフトウェア150の両方を有する単一のコンピュータの形式を取る場合があり、これによってサーバ側でのネットワーク化の必要がなくなる。
【0040】
ゲートウェイ・コンピュータ112は、CPU142およびゲートウェイ・ソフトウェア152を含む。ゲートウェイ・コンピュータ112はスタンドアロン型コンピュータ、サーバ・コンピュータ、またはミニサーバ・コンピュータとして実施されることが好ましい。ゲートウェイ・コンピュータ138は、キープアライブ機能でHTTPプロトコルをサポートするWebサーバ・ソフトウェアを備えたWebサーバであることが好ましい。
【0041】
ゲートウェイ・ソフトウェア152は、CPU142によって実行されるマシン読取り可能命令のセットである。ゲートウェイ・ソフトウェア142は、従来のように、読取り専用メモリ、ランダム・アクセス・メモリ、データ記憶媒体、またはこれら記憶手段の組合せに格納することができる。ゲートウェイ・ソフトウェア152は、WAN132からサーバ・コンピュータ・サブシステム102に着信するデータ・パケット、ならびにサーバ・コンピュータ・サブシステム102からWAN132に発信するデータ・パケットをルーティングおよび操作する。第1に、ルーティング機能について簡単に説明し、次に着信するデータ・パケットおよび発信するデータ・パケットの操作について説明する。ゲートウェイ・ソフトウェア142は、ゲートウェイ・コンピュータ112内のWebサーバ・ソフトウェア(別々に図示せず)へのプラグインとして配置構成されることが好ましい。
【0042】
ゲートウェイ・ソフトウェア152のルーティング機能は、主に、データ・パケットが正しいサーバ・コンピュータに到達することを保証する。もちろん、図1の実施形態ではサーバ・コンピュータ112が1つしかないため、この実施形態ではこのルーティング機能はそれほど重要でない。ただし、コラボレーティブ・アプリケーション・データベースが(多くの好ましい実施形態の場合のように)コラボレーティブ・アプリケーション・ソフトウェアとは別のコンピュータに格納された場合、ゲートウェイ・ソフトウェア152は、データ・パケットが適切なコンピュータに到達するように、そのルーティングを制御することになる。このルーティング機能は、実際のサーバのハードウェアおよびソフトウェアのセットアップに大幅に依存するものであるため、またいったんサーバのセットアップが決定されると、ルーティング機能は通常の日常的スキルの問題であるとみなされるため、本明細書では詳細に説明しない。
【0043】
ゲートウェイ・ソフトウェア152は、(WAN132から)着信するデータ・パケットと、(LAN130から)発信するデータ・パケットの両方の転送プロトコルも変更する。この転送プロトコルの変換は、本発明の一部の実施形態では重要な部分であり、ゲートウェイ・ソフトウェア152の転送プロトコルおよびプロトコル変換については、本明細書の処理流れの項でより詳細に論じる。
【0044】
さしあたり、ゲートウェイ・ソフトウェア152によって実行される転送プロトコル変換の特有の好ましい例について説明する。ゲートウェイ・ソフトウェア152は、ハイパーテキスト転送プロトコル1.1(「HTTP1.1」)と呼ばれる転送プロトコルを有する着信データ・パケットを、オブジェクト・シリアル化(図1ではOSと表示)用のプロトコルを有する対応するデータ・パケットに変換する。着信パケットは変換された後、LAN130、サーバ・ファイアウォール120、およびサーバ・コンピュータ110に適宜送信される。さらにゲートウェイ・ソフトウェア152は、オブジェクト・シリアル化OS用のプロトコル中の発信データ・パケットも、HTTP1.1転送プロトコルを有する対応するデータ・パケットに変換する。発信パケットは変換された後、ゲートウェイ・ファイアウォール122、WAN132、およびクライアントに適宜送信される。転送プロトコル変換の結果、図1に示されるように、ゲートウェイ・コンピュータ112のサーバ・コンピュータ側にあるデータ伝送接続はOSとラベル表示され、ゲートウェイ・コンピュータ112のクライアント側にあるデータ伝送接続はHTTP1.1とラベル表示される。
【0045】
このプロトコル変換ステップの最も重要な理由の1つが、コンピュータ・システム100のサーバ側およびクライアント側で、異なる転送プロトコルがそれぞれより適切に働くことであり、次にこれについて論じる。HTTP1.1データ・パケットは、ゲートウェイ・ファイアウォール122、クライアントAファイアウォール124、およびクライアントBファイアウォール126でより適切に働く。HTTP1.1パケットは、ファイアウォールを再構成する必要なしに、多くの典型的なクライアント・ファイアウォールが事前に構成される、ポート80を介して発生する持続的な「キープアライブ」接続と共に使用できるという意味で、より適切に働く。他方で、オブジェクト・シリアル化OS用のプロトコルは、多くの典型的なサーバ・ハードウェアでより適切に働く。たとえば、多くのサーバ・ファイアウォールは、OS転送プロトコル・データ・パケットが未予約ポート(たとえばポート8899)を介して自由に通過できるように構成される。さらに、多くのコラボレーティブ・アプリケーション・ソフトウェアは、OSデータ・パケットまたはロー・ソケットなどの他の転送プロトコルに従ったデータと、互換性があるかまたはより効率的に働く。
【0046】
転送プロトコル変換を実行することにより、特にコラボレーティブ・アプリケーションのコンテキストでは、データ・パケットは、一般的にコンピュータ・システムに見られる様々なファイアウォールを横切る持続的接続にとって、より適したものとなる。これらの持続的接続は、クライアント側およびサーバ側の両方でソケットでの読取りをブロックするスレッドを使用するために、非常に効果的に使用することができる。この読取りブロックは、クライアント側またはサーバ側のどちらでも、クライアント・コンピュータおよびサーバ・コンピュータのリソースを大量に使用せずに、新しいデータを即時に受信できるようにするものである。
【0047】
転送プロトコル変換をサーバ・コンピュータ110で実行するのに対して、専用のゲートウェイ・コンピュータ152でこの変換を実行することによって達成される、潜在的な利点もいくつかある。第1に、ゲートウェイ・コンピュータは、WAN132とサーバ・コンピュータ110の感知可能情報との間に特別なセキュリティ層を追加する。転送プロトコルはゲートウェイ・コンピュータで変更されるため、未許可の当事者(たとえばハッカー)がWAN132からサーバ・コンピュータ110にアクセスするのはかなり困難になると考えられる。第2に、プロトコルを変換するため、またはそうでなければコラボレーティブ・アプリケーション・ソフトウェア150が好む転送プロトコル(たとえばOS)を示さない着信データに対処するために、サーバ・コンピュータ110のリソースを使用する必要がなくなる。第3に、いくつかのサーバ・コンピュータが存在する実施形態では、必要な転送プロトコル変換が、サーバ・サブシステムのいくつかの異なる場所ではなく、1つの中央位置(すなわちゲートウェイ・コンピュータ152)で実行される。
【0048】
ゲートウェイ・ファイアウォール122は、WAN132とゲートウェイ・コンピュータ112との間に置かれる。ゲートウェイ・ファイアウォール122は、HTTP1.1転送プロトコル・データ用の持続的な、読取りブロック・タイプの、キープアライブ・タイプの接続を可能にするように構成される。この種の持続的接続は、ファイアウォールのポート80を介して発生することが好ましい。ゲートウェイ・ファイアウォール122は、従来型のハードウェア・ベースおよび/またはソフトウェア・ベースのファイアウォールである。ゲートウェイ・ファイアウォール122は、ゲートウェイ・コンピュータ112に着信するデータ・パケットに対して、ゲートウェイ・コンピュータ112から発信するデータ・パケットに対するものとは異なる、より厳しい規則を適用する。ただし、キープアライブ接続が(適切な転送プロトコルを備えたデータに対して)確立されると、データの流れは、どちらの方向にも持続的、高速、かつ効率的である。
【0049】
次に、クライアントAコンピュータ・サブシステム106について論じる。クライアントAコンピュータ・サブシステム106には、クライアントAファイアウォール124、クライアントAコンピュータ114、ディスプレイ・デバイス174、および入力デバイス184が含まれる。
【0050】
クライアントAファイアウォール124は、データがHTTP1.1転送プロトコルを示す限り、持続的な、読取りブロック・タイプの、キープアライブ接続が可能なように構成される。この持続的接続は、ファイアウォールのポート80を介して発生することが好ましい。本発明のいくつかのコラボレーティブ・アプリケーション・ソフトウェア・システムの実施形態にとっては、ファイアウォールを横切る持続的接続を有することが重要な機能である。本発明のいくつかの実施形態にとっては、ファイアウォールを横切る持続的接続が、ファイアウォールの背後にあるコンピュータが、ポーリングの実施に必要なリソースを消費しなければならない代わりに、読取りをブロックできるようにすることが重要である。従来のコラボレーティブ・アプリケーション・ソフトウェアの応用例では、ポーリングなどの間欠的接続が使用される。これらの間欠的接続は、一般に、クライアント・コンピュータのコンピューティング・リソースが大量に必要とするものであり、コラボレーティブ・アプリケーションへの参加を希望する遠隔ユーザの増加に合わせて増えていくものではない。クライアントAファイアウォール124は、コールバックとも呼ばれる、クライアントAの外部にあるコンピュータ・システムからクライアントAへの接続も許可しない。
【0051】
スレッドおよび関連する読取りブロック・タイプの接続が使用されることは、本発明のいくつかのコラボレーティブ・アプリケーション・ソフトウェア実施形態の重要な特徴である。この種の接続は、システム全体で、特にクライアントAコンピュータ114で、コンピューティング・リソースを節約する。これは、WAN132を介してサーバ・コンピュータ・サブシステム102から新しいデータが受信されない限り、およびこれが受信されるまで、読取りブロック接続がクライアントAコンピュータのスレッドを「スリープ」にできるためである。
【0052】
クライアントA114コンピュータは、従来のデスクトップ型またはラップトップ型パーソナル・コンピュータであることが好ましい。ディスプレイ・デバイス174は、モニタまたはLCDディスプレイを含むことが好ましく、さらにプリンタ、オーディオ・スピーカなどの他の出力デバイスも含むことができる。入力デバイス184は、キーボードおよびマウスを含むことが好ましく、スキャナなどの他の入力デバイスを含むことができる。
【0053】
クライアントBコンピュータ・システム108には、クライアントBファイアウォール126、クライアントBコンピュータ116、ディスプレイ・デバイス176、および入力デバイス186が含まれる。クライアントBコンピュータ・システム108の構成要素は、クライアントAコンピュータ・システムの対応する構成要素と同様であるため、ここではこれ以上論じない。
【0054】
図1を終える前に、ディスプレイ・デバイス174、ディスプレイ・デバイス184、およびコラボレーティブ・アプリケーション・データベース160の「笑顔」の表示について論じる。この例示的実施形態では、コラボレーティブ・アプリケーション・ソフトウェアはグラフィックス・プログラムである。クライアントAおよびクライアントBは新しいグラフィックの生成でコラボレートしており、これが笑顔となる。図1の時点では、クライアントAは自分の入力デバイス184を使用して笑顔に第2の眼を追加する作業を行っている。
【0055】
クライアントAが入力デバイス184を操作して第2の眼の追加を示すと、クライアントAコンピュータ114はこの入力を該当するHTTP1.1データ・パケットに変換する。これらのデータ・パケットには、コラボレーティブ・アプリケーション・ソフトウェア150およびコラボレーティブ・アプリケーション・データベース160によって使用され、最終的にWAN132上の他のコラボレータによって使用される、実際のアプリケーション入力データが含まれる。これらのHTTP1.1パケットは、妨害を受けずにクライアントAファイアウォール124のキープアライブ接続、さらにWAN132を通過し、(ここでも妨害を受けずに)ゲートウェイ・ファイアウォール122のキープアライブ接続を通過した後、ゲートウェイ・コンピュータ112に到達する。これでゲートウェイ・コンピュータは、読取りブロック接続を介してこの通信を受信する準備のできたクライアント・スレッドを確立した。
【0056】
ゲートウェイ・コンピュータ112では、ゲートウェイ・ソフトウェア152がこれらのデータ・パケットを、HTTP1.1転送プロトコルからOSプロトコルに変換し、対応するOSパケットをLAN130、サーバ・ファイアウォール120、さらに最終的にサーバ・コンピュータ110へと送信する。前述のように、OSパケットは妨害を受けずにサーバ・ファイアウォール120の未予約ポートを通過する。これでサーバ・コンピュータは、通信が到達したときにサーバ・コンピュータ110の該当する構成要素を起動させることによってこの通信を受信する準備のできたクライアントAスレッドを確立した。サーバ・コンピュータは、クライアントBなどの他のコラボレータ用の他のスレッドも確立した。これらのスレッドは、様々なソースから新しいアプリケーション入力データを受信する準備のできた状態でありながら、新しいデータが着信しない限り、および新しいデータが着信するまで、構成要素をスリープ状態にしておくことができるため、サーバ・コンピュータのコンピューティング・リソースをそれほど多く占有しない。
【0057】
サーバ・コンピュータ110では、コラボレーティブ・アプリケーション・ソフトウェア150が、クライアントAスレッド上で受信されたデータ・パケットが、笑顔のイメージに第2の眼を追加するように設計されていることを認識する。図1の参照番号190で示されるように、笑顔のイメージに対応するアプリケーション・データ・ファイルが、コラボレーティブ・アプリケーション・データベース160で更新される。少なくともサーバ・コンピュータ・サブシステム102では笑顔が完成する。
【0058】
ただし、第2の眼のデータは、なおもコラボレータであるクライアントAおよびクライアントBのコンピュータに戻る必要がある。したがって、サーバ・コンピュータ110はこのデータを、最初はOSデータ・パケットとして返送する。OSデータ・パケットは、ゲートウェイ・コンピュータ112で対応するHTTP1.1データ・パケットに変換され、その後、残りの道のりをクライアントAコンピュータ114およびクライアントBコンピュータ116まで返送される。図1の時点では、HTTP1.1パケットはまだクライアントAコンピュータ114およびクライアントBコンピュータ116まで到達していないため、まだディスプレイ・デバイス174およびディスプレイ・デバイス184には第2の眼が表示されていない。
【0059】
第2の眼のデータ・パケットは、クライアントAおよびクライアントBがリアルタイムでコラボレートしていることを知覚するように、十分な速度(たとえば1秒未満)でクライアント・コンピュータに到達することが好ましい。この高速な、好ましくはリアルタイムなビジネス・コラボレーションは、クライアント・コンピュータがそれぞれのファイアウォールを横切る持続的なキープアライブ接続を介してデータを受信し、ゲートウェイ・ソフトウェア152が転送プロトコルを変換することにより、コンピュータ・システム100の、異なって構成されたファイアウォール120、122、124、および126を横切って、必要なデータ転送が即時に実行できるという事実によって容易になる。
【0060】
さらに、持続的およびステートフルな接続によって、スレッドおよび読取りブロック・タイプ接続の使用が可能になり、コンピュータ・システム100内のすべてのコンピュータでのコンピューティング・リソースが節約される。データ・パケットがネットワーク通信のすべての段階で適切な転送プロトコルを確実に有するようにすることによって、これらの持続的およびステートフルな接続ならびに関連付けられたスレッドおよび読取りブロックの使用が可能になる。
【0061】
持続的接続をセットアップするための処理流れ
前述のように、クライアント・コンピュータとゲートウェイとの間、ならびにゲートウェイ・コンピュータとサーバ・コンピュータとの間には、持続的なデータ伝送接続がある。次に、(図2の流れ図に示されるような)これらの持続的接続を確立するための例示的な処理流れについて論じる。
【0062】
ステップS1では、クライアントAコンピュータ112がクライアントAコンピュータにアプリケーション・データ・スレッドを作成する。処理はステップS2に進み、クライアントAコンピュータのアプリケーション・データ・スレッドが「セットアップ」コマンドでHTTP1.1GETを開始し、このGETおよびセットアップ・コマンドをWAN132およびゲートウェイ・ファイアウォール122を介してゲートウェイ・コンピュータ112に送信する。ゲートウェイ・ファイアウォール122は、こうしたGETおよび「セットアップ」コマンドなどの通過を許可するように構成される。GETおよびセットアップ・コマンドは、接続がクライアントAファイアウォール124のポート80を介して発生する持続的データ伝送に好適な、キープアライブ接続であることを要求する。
【0063】
処理はステップS3に進み、ゲートウェイ・コンピュータ112はGETおよび「セットアップ」コマンドに応答して2つのスレッドを作成する。ゲートウェイ・コンピュータ112は、クライアントAコンピュータ114と通信するためのクライアント・プロキシ・スレッドを作成する。ゲートウェイ・コンピュータ112は、サーバ・コンピュータ110と通信するためのサーバ・プロキシ・スレッドも作成する。ステップS3で、ゲートウェイ・コンピュータ112は、「セットアップ」コマンドでサーバ・コンピュータ110へのTCP接続も開始する。このTCP接続は、(HTTP1.1に対して)OSプロトコルに従ったデータ用の持続的データ通信パスであり、それはこの転送プロトコルがサーバ・コンピュータ110でより適切に働くためである。
【0064】
処理はステップS4に進み、ゲートウェイ・コンピュータ114のクライアント・プロキシ・スレッドはクライアントAコンピュータ114のクライアント・アプリケーション・データ・スレッドにハンドシェイク応答を書き込んだ後、スリープになる。
【0065】
処理はステップS5に進み、サーバ・コンピュータ126はゲートウェイ・コンピュータ114から「セットアップ」コマンドを備えた新しいTCP接続を受入れた後、クライアントAコンピュータ114との(ゲートウェイ・コンピュータ112を介した)通信のためのクライアントA同期スレッドを作成する。サーバ・コンピュータ110は、各クライアントについて1つのスレッドを有することが好ましい。クライアントAだけがコラボレーティブ・アプリケーション上で動作している場合、サーバ・コンピュータはクライアント同期スレッドを1つだけ有することができる。
【0066】
もちろん、コラボレーティブ・アプリケーションは、複数のクライアントが同時に動作するように設計されているため、サーバ・コンピュータ110はしばしば複数のクライアント同期スレッドをセットアップし、これを維持する必要がある。スレッドおよび関連付けられた読取りブロック・タイプの接続手段により、サーバ・コンピュータ側の複数のクライアント同期スレッドが、サーバ・コンピュータのコンピューティング・リソースをそれほど多く使用せずに多くの当事者との通信を可能にするため、コラボレーティブ・アプリケーションはかなりスケーラブルとなる。最後にステップS5で、サーバ・コンピュータ110は、ゲートウェイ・コンピュータのサーバ・プロキシ・スレッドにハンドシェイクを書き込み返す。
【0067】
処理はステップS6に進み、クライアントA同期スレッドがスリープに入り、他の通信およびクライアントAコンピュータ・システムへの配布を要求するデータを待つ。クライアント同期スレッドは持続的接続のコンテキストでスリープに入ることができるため、これによってサーバ・コンピュータのコンピューティング・リソースが節約される。
【0068】
処理はステップS7に進み、クライアントAコンピュータ114のクライアント・アプリケーション・データ・スレッドが、ステップS4でゲートウェイ・コンピュータ112によって送信されたハンドシェイク応答を受信する。ハンドシェイク応答を受信すると、クライアントAコンピュータ114は図のS1からの最初のHTTP1.1 GETを送信する際に使用したソケットの読取りをブロックする。これによって、アプリケーション・データがゲートウェイ・コンピュータ114から受信されない場合に、コンピューティング・リソースを節約するために、たとえクライアント・アプリケーション・データ・スレッドがスリープに入っても、ゲートウェイ・コンピュータ114(および最終的にはサーバ・コンピュータ110)とクライアントAコンピュータ114との間の持続的なキープアライブ接続が可能になる。
【0069】
処理はステップS8に進み、ゲートウェイ・コンピュータ114のサーバ・プロキシ・スレッドは、サーバ・コンピュータ110とのそのTCP接続の読取りをブロックする。これにより、アプリケーション・データがゲートウェイからサーバに送信されない場合に、コンピューティング・リソースを節約するために、たとえサーバ・プロキシ・スレッドがスリープに入っても、ゲートウェイ・コンピュータ112とサーバ・コンピュータ110との間の持続的OS接続が可能になる。
【0070】
ゲートウェイに関する処理流れ
次に、ゲートウェイ・ソフトウェアの例示的な処理流れについて、図3から5に関連して論じる。この処理流れは、様々なファイアウォールを横切る様々な種類の持続的接続を維持するために本発明で使用される、「プロトコル・トンネル」(protocol tunneling)と呼ばれるよく知られた処理を示すものである。ステップS100では、ゲートウェイ・ソフトウェアがクライアントAから(WAN132を介して)接続およびデータを受信する。処理はステップS101に進む。
【0071】
ステップS101では、ゲートウェイ・ソフトウェアが、クライアントAから受信したデータ・パケットの転送プロトコルを検証する。この単純化された例では、HTTP1.1およびOSの比較的複雑な好ましい転送プロトコルを使用する代わりに、例示の目的で仮想上の転送プロトコルであるプロトコル0およびプロトコル1が使用される。本発明によれば、転送プロトコル0と転送プロトコル1の間の変換は、(1)ゲートウェイ・ソフトウェアの一方の側の構成要素が、(転送プロトコル1データではなく)転送プロトコル0データに関して持続的接続を許可するように設計されている場合、および(2)ゲートウェイ・ソフトウェアの他方の側の構成要素が、(転送プロトコル0データではなく)転送プロトコル1データに関して持続的なファイアウォール適合の接続を許可するように設計されている場合に、特に有利である。
【0072】
図4は、転送プロトコル0に従ったデータ・パケット200を示す図である。この例では、転送プロトコル0はゲートウェイ・コンピュータ112とクライアントAコンピュータ114との間の通信用に使用される転送プロトコルである。転送プロトコル0データ・パケットは、値000の3ビット・ヘッダ202を有することから識別可能である。転送プロトコル0は、パケットから抽出可能な実際のデータを備えたデータ部分204も有する。
【0073】
この例では、ステップS101で、ゲートウェイ・ソフトウェア152が、ヘッダを調べて値が000であるかどうかを判定することによって、クライアントAから受信したデータ・パケットの転送プロトコルが転送プロトコル0であることを検証する。より複雑な転送プロトコルが使用される場合、転送プロトコルの性質に応じて、転送プロトコルを検証するための処理もさらに複雑になる可能性があるが、転送プロトコルの特徴が知られている限りは、通常の日常的スキルの範囲内となる。ステップS101では、ソースまたはルーティング情報などのデータ・パケットの他の面を調べることができる。
【0074】
次に処理はステップS102に進み、データ・パケット200からデータ204が抽出される。これは、パケットの転送プロトコルをゲートウェイ・コンピュータ112のサーバ側により適したものに変えるために実行されるが、実際のデータは真のままである。
【0075】
次に処理はステップS103に進み、転送プロトコル0データ・パケットが、図5に示されるようなプロトコル1データ・パケット201として再フォーマットされる。さらに図5に示されるように、転送プロトコル1データ・パケット201は3ビット・ヘッダ206も有する。ただしこのヘッダは、パケット201を転送プロトコル1パケットとして識別するために、値001を取る。ゲートウェイ・ソフトウェア142は、ステップS103で変換されたデータ・パケットにこのヘッダを追加する。データ・パケット200からの実際のデータは、転送プロトコル1データ・パケット201の実際のデータ部分208として使用される。
【0076】
ただしこの例では、パケット201のデータはデータ・パケット200のデータと順序が逆である(図4と図5を比較)。これは、転送プロトコル0および1がそれぞれ、異なるデータ順序を偶然に指示したためである。この仮想上の例の特徴は、ゲートウェイ・ソフトウェアが、単にヘッダを変更することに加えて、実際のデータを同一に保つために他の処理を実行する必要が生じる可能性があることを示すものである。様々な転送プロトコルが、全体として、データ・パケットの構造に大きな影響を与える可能性がある。ゲートウェイ・ソフトウェア152は、必要なすべてのデータ・パケット構造変更の実行を処理しなければならない。
【0077】
処理はステップS104に進み、プロトコル1データ・パケットがゲートウェイ・コンピュータ112からサーバ・コンピュータ110に送信される。これでパケットは、持続的接続によってサーバ・コンピュータ100に送られる適切な転送プロトコル1を有することになる。
【0078】
次に処理はステップS105に進み、ゲートウェイ・ソフトウェア152がサーバ・コンピュータから応答データ・パケットを受信するために、読取りをブロックする。サーバからの(LAN130を介した)データがあれば、処理はステップS106に進む。
【0079】
この例では、ステップS106で、ゲートウェイ・ソフトウェア152がヘッダを調べて値が001であるかどうかを判定することによって、転送プロトコルが転送プロトコル1であることを検証する。ステップS106では、ソースまたはルーティング情報などのデータ・パケットの他の面も調べることができる。
【0080】
次に処理はステップS107に進み、データ・パケット201からデータ208が抽出される(図5を参照)。これは、パケットの転送プロトコルをゲートウェイ・コンピュータ112のクライアント側により適したものに変えるために実行されるが、実際のデータは真のままである。
【0081】
次に処理はステップS108に進み、転送プロトコル1データ・パケットが転送プロトコル0パケットとして再フォーマットされる(図4に例を図示)。ゲートウェイ・ソフトウェア152は、ステップS108で、新しいパケットを転送プロトコル0パケットとして識別する000ヘッダを追加する。データ・パケット201からの実際のデータは、転送プロトコル0データ・パケット200の実際のデータ部分206として使用されるが、(前述の理由により)データの順序は逆である。
【0082】
処理はステップS109に進み、転送プロトコル0データ・パケットがゲートウェイ・コンピュータ112からクライアントAコンピュータ114およびクライアントBコンピュータ116に送信される。これでパケットは、クライアント・ファイアウォール124、126およびクライアント・コンピュータ114、116に適した転送プロトコル0を有するため、持続的接続によってクライアント・コンピュータ114、115に移動することができる。より具体的に言えば、パケットはクライアントに戻り、クライアントによって正しいプロトコル0応答であることが認識される。
【0083】
前述の例示的な処理流れの実施形態は、転送プロトコル変換の概念をよりはっきりと示すために単純化されていた。転送プロトコル変換を達成するための処理は、他にも数多くある。たとえば、サーバからクライアントに進むデータは、(サーバからクライアント方向の持続的接続を維持するために)転送プロトコル変換の対象となり、クライアントからサーバに進むデータは、転送プロトコル変換または持続的接続を必要としないことができる。
【0084】
代替実施形態
図6は、本発明によるコンピュータ・システム300の代替実施形態を示す図である。この代替実施形態は、ゲートウェイ・ソフトウェアによって提供可能なサーバ・データのルーティングおよび多重化機能を実証するため、ならびに、異なるサーバ・コンピュータに、または異なるサーバ・コンピュータからルーティングされたデータ、あるいは同じサーバ・コンピュータにルーティングされた異なるタイプのデータが、異なる転送プロトコルに従って構成されるようにゲートウェイ・ソフトウェアが制御可能であることを実証するための、2重サーバ・コンピュータ・アーキテクチャを特徴とするものである。
【0085】
コンピュータ・システム300の構成要素306、308、および332はそれぞれ、図1の実施形態に関連して上記で論じた構成要素106、108、および132と同様であるため、この代替実施形態に関連しては詳細に論じない。
【0086】
ゲートウェイ・コンピュータ312は、CPU342およびゲートウェイ・ソフトウェア352を含む。ゲートウェイ・コンピュータ312のサーバ側には2つのサーバ・コンピュータ、サーバAコンピュータ311およびサーバBコンピュータ313がある。サーバA311はサーバAのファイアウォール321の後方に位置する。サーバB313はサーバBのファイアウォール323の後方に位置する。
【0087】
この例示的実施形態では、サーバAコンピュータ311が接続制御データを処理し、サーバBコンピュータ313がデータ転送データを処理する。サーバAコンピュータ311およびサーバAファイアウォール321の構成方法により、接続制御データはOS転送プロトコル(上記で考察)に従って最適に構成される。他方で、サーバBコンピュータ313およびサーバBファイアウォール323は、ロー・ソケット転送プロトコルの形のアプリケーション・データを処理するように構成される。より具体的に言えば、ロー・ソケット・データはいっさいプロトコルを持たないとみなされることがあるが、データがロー・ソケットとして配置構成されるという事実により、一般にデータがファイアウォールで処理される方法に影響を与えることになるため、本発明では、ロー・ソケット・データは転送プロトコルの1つのタイプであるとみなされる(上記の転送プロトコルの定義を参照)。おそらくロー・ソケット・データは、転送プロトコルが縮退する場合(degenerate case)に最適であるとみなされる。
【0088】
サーバAファイアウォール321は、持続的接続を介して移動するデータがOS転送プロトコルを示す限り、持続的接続を許可するように構成される。他方で、サーバBファイアウォール323は、データがロー・ソケットRSの形式を取る限り、持続的接続がそれを通じて確立されるように構成される。
【0089】
この実施形態には2つのサーバ・コンピュータがあるため、ゲートウェイ・ソフトウェアには、WAN332から着信するデータ・パケットが、サーバAコンピュータ311に送信されるための接続制御データであるか、またはサーバBコンピュータ313に送信されるためのデータ転送データ・パケットであるかを、CPU342が判定できるようにするコードが含まれる。ゲートウェイ・ソフトウェア352には、データ・パケットをルーティングするための論理が適宜含まれる。ゲートウェイ・ソフトウェアには、サーバAコンピュータ311およびサーバBコンピュータ313への持続的接続によって2つのサーバ同期スレッドを処理するコードが含まれる。
【0090】
これらのパケットのルーティングに加えて、ゲートウェイ・ソフトウェア352は転送プロトコル変換も実行する。ただし、単にすべてのデータ・パケットをOS転送プロトコル形式に変換する代わりに、ゲートウェイ・ソフトウェアは、サーバAコンピュータ311に向かうデータ・パケットを、HTTP1.1転送プロトコルからOS転送プロトコルに変換し、その結果、これらのパケットはサーバAファイアウォール321で持続的接続を通過することができる。他方で、ゲートウェイ・ソフトウェア352は、サーバBコンピュータ313に向かうデータ・パケットを、HTTP1.1転送プロトコルからロー・ソケットに変換し、その結果、このデータはサーバBファイアウォール323で持続的接続を通過することができる。これら2つの持続的およびステートフルな接続により、サーバが複数のクライアント・スレッドを確立し、多くの異なるコラボレータからのデータの間欠的受信を効率良く処理できるようにする。
【0091】
もちろん、現在または将来、他の転送プロトコルも使用可能である。本発明のいくつかの実施形態に好ましい転送プロトコルの1つが、JAVAオブジェクト・シリアル化である。他の好ましい転送プロトコルは、Common Object Request Broker Architecture(CORBA)のプロトコル・ファミリーにある。将来は、他のタイプのプロトコルおよびおそらく新しい階層のプロトコルも開発され、これがファイアウォールの将来のデータ処理方法に影響を与える可能性があると予想される。これは実際には、将来新しい転送プロトコルが登場することを意味する。ただしそれでも、コンピュータ・ネットワークの一部で持続的なファイアウォールに適合する接続を確立するために1つのタイプの転送プロトコルが使用可能であり、コンピュータ・システムの異なる部分で持続的なファイアウォールに適合する接続を確立するために別の転送プロトコルが使用可能である場合に、本発明は有用であると考えられる。
【0092】
以上説明したコンピュータ・システムには多くの変形形態が可能である。こうした変形形態は、本発明の精神および範囲から逸脱するものとはみなされず、むしろ、該当する法律によって許可される最大の範囲内で、添付の特許請求の範囲内に含まれることを意図する修正であるとみなされる。
【図面の簡単な説明】
【図1】本発明によるコンピュータ・システムの第1の実施形態を示す構成図である。
【図2】本発明による持続的接続を確立するための例示的な処理流れを示す流れ図である。
【図3】本発明によるゲートウェイ・ソフトウェアの例示的な処理流れを示す流れ図である。
【図4】例示的な転送プロトコル0データ・パケットを示す図である。
【図5】例示的な転送プロトコル1データ・パケットを示す図である。
【図6】本発明によるコンピュータ・システムの第2の実施形態を示す構成図である。
Claims (14)
- コンピュータ・ネットワーク(132)と、
コラボレーティブ・アプリケーションのためのマシン読取り可能命令を含むコラボレーティブ・アプリケーション・ソフトウェア(150)と、前記コンピュータ・ネットワーク(132)に接続される第1のサブシステム・ファイアウォール(122)を介してアプリケーションデータを通信するためのマシン読取り可能命令を含む通信ソフトウェア(152)とを備えている第1のコンピュータ・サブシステム(102)と、
前記コンピュータ・ネットワーク(132)に接続される第2のサブシステム・ファイアウォール(124、126)を介して前記第1のコンピュータ・サブシステム(132)との間でアプリケーションデータを送受信するように構成されている第2のコンピュータ・サブシステム(106、108)と、
を備えているコンピュータ・システムであって、
前記通信ソフトウェア(152)は前記第2のコンピュータ・サブシステム(106、108)からのハイパーテキスト転送プロトコルのデータ・パケットを、ハイパーテキスト転送プロトコルとは別の転送プロトコルのパケット・データに変換するものであり、
前記第2のコンピュータ・サブシステム(106、108)は、コラボレーション実施中はオープンになっているハイパーテキスト転送プロトコルのキープアライブ接続を介して、前記第1のコンピュータ・サブシステム(102)と通信するように構成されており、
コラボレーション実施中、前記第1のコンピュータ・サブシステム(102)は前記第2のコンピュータ・サブシステム(106、108)との通信のための第1のサブシステム・スレッドを確立しており、および/または、前記第2のコンピュータ・サブシステム(106、108)は第1のコンピュータ・サブシステム(102)との通信のための第2のサブシステム・スレッドを確立しており、
前記第1のコンピュータ・サブシステム(102)が、アプリケーションデータを送受信するように構成された第2のサブシステム・ソケットを含み、
前記通信ソフトウェア(152)が、前記第2のサブシステム・ソケットの読取りをブロックさせるためのマシン読取り可能命令をさらに含み、
前記第1のサブシステム・スレッドおよび/または第2のサブシステム・スレッドは、新たなアプリケーションデータの転送がないとき、スリープ状態にされる、
ことを特徴とする、コンピュータ・システム。 - 前記通信ソフトウェア(152)が、アプリケーションデータをステートフル通信として通信する、請求項1記載のシステム。
- アプリケーションデータがHTTP1.1プロトコルに従って構成されている、請求項1または2記載のシステム。
- 前記第1のサブシステム・ファイアウォール(122)および前記第2のサブシステム・ファイアウォール(124、126)がポート80を含み、
アプリケーションデータが、前記第1のサブシステム・ファイアウォール(122)および前記第2のサブシステム・ファイアウォール(124、126)を横切り、ポート80を介して生じる接続を通じて通信される、請求項1乃至3のいずれか1項記載のシステム。 - 前記第1のコンピュータ・サブシステム(102)が、
サーバ・コンピュータ(110)と、
Webサーバ・コンピュータ(112)と、
前記サーバ・コンピュータ(110)と前記Webサーバ・コンピュータ(112)との間のデータ通信を可能にするように構成された第1のコンピュータ・ネットワーク(130)とを含む、請求項1乃至4のいずれか1項記載のシステム。 - 前記サーバ・コンピュータ(110)が前記通信ソフトウェア(152)の少なくとも一部を含み、
前記Webサーバ・コンピュータ(112)が、前記第1のコンピュータ・ネットワーク(130)を介して前記サーバ・コンピュータ(110)との間でアプリケーションデータを送受信し、前記コンピュータ・ネットワーク(132)を介して前記第2のコンピュータ・サブシステム(106、108)との間でアプリケーションデータを送受信するように構成される、請求項5記載のシステム。 - 前記Webサーバ・コンピュータ(112)が、前記第1のコンピュータ・ネットワーク(130)を介して前記サーバ・コンピュータ(110)との間でアプリケーションデータを送受信するように構成されたWebサーバ・ソケットを含み、
前記通信ソフトウェア(152)が、前記Webサーバ・ソケットに読取りをブロックさせるためのマシン読取り可能命令をさらに含む、請求項5または6に記載のシステム。 - 前記コンピュータ・ネットワーク(132)に接続される第3のサブシステム・ファイアウォール(124、126)を介して前記第1のコンピュータ・サブシステム(132)との間でアプリケーションデータを送受信するように構成された第3のコンピュータ・サブシステム(106、108)をさらに含み、
前記第3のコンピュータ・サブシステム(106、108)は、コラボレーション実施中はオープンになっているハイパーテキスト転送プロトコルのキープアライブ接続を介して、前記第1のコンピュータ・サブシステム(102)と通信するように構成されており、
コラボレーション実施中、前記第1のコンピュータ・サブシステム(102)は前記第3のコンピュータ・サブシステム(106、108)との通信のための第3のサブシステム・スレッドを確立しており、および/または、前記第3のコンピュータ・サブシステム(106、108)は第1のコンピュータ・サブシステム(102)との通信のための第4のサブシステム・スレッドを確立している、請求項1記載のシステム。 - 前記第3のコンピュータ・サブシステム(106、108)が、アプリケーションデータを送受信するように構成された第3のサブシステム・ソケットを含み、
前記通信ソフトウェア(152)が、前記第3のサブシステム・ソケットに読取りをブロックさせるためのマシン読取り可能命令をさらに含む、請求項8記載のコンピュータ・システム。 - 前記第1のコンピュータ・サブシステム(102)と、前記第2のコンピュータ・サブシステム(106、108)と、前記第3のコンピュータ・サブシステム(106、108)との間の通信がリアルタイムである、請求項8または9記載のシステム。
- 前記コラボレーティブ・アプリケーション・ソフトウェア(152)が、ワード・プロセッサ、タスク・スケジューリング・ツール、グラフィックス・プログラム、プレゼンテーション・プログラム、スプレッドシート、ゲーム、音楽スタジオのうち、少なくとも1つの機能を含む、請求項1乃至10のいずれか1項記載のシステム。
- コンピュータ・ネットワーク(132)と、
コラボレーティブ・アプリケーションのためのマシン読取り可能命令を含むコラボレーティブ・アプリケーション・ソフトウェア(150)と、前記コンピュータ・ネットワーク(132)に接続される第1のファイアウォール(122)を介してアプリケーションデータを通信するためのマシン読取り可能命令を含む通信ソフトウェア(152)とを備えている第1のコンピュータ・サブシステム(102)と、
前記コンピュータ・ネットワーク(132)に接続される第2のファイアウォール(124、126)を介して前記第1のコンピュータ・サブシステム(132)との間でアプリケーションデータを送受信するように構成されている第2のコンピュータ・サブシステム(106、108)と、
を備えているコンピュータ・システムにおける通信方法であって、
前記方法は、前記第1のコンピュータ・サブシステム(102)が、前記第2のコンピュータ・サブシステム(106、108)からのハイパーテキスト転送プロトコルのデータ・パケットを、ハイパーテキスト転送プロトコルとは別の転送プロトコルのデータ・パケットに変換するステップを含んでおり、
前記第2のコンピュータ・サブシステム(106、108)が、コラボレーション実施中はオープンになっているハイパーテキスト転送プロトコルのキープアライブ接続を介して、前記第1のコンピュータ・サブシステム(102)と通信するステップと、
コラボレーション実施中、前記第1のコンピュータ・サブシステム(102)が前記第2のコンピュータ・サブシステム(106、108)との通信のための第1のサブシステム・スレッドを確立し、および/または前記第2のコンピュータ・サブシステム(106、108)が第1のコンピュータ・サブシステム(102)との通信のための第2のサブシステム・スレッドを確立するステップと、
をさらに含んでおり、
前記第1のコンピュータ・サブシステム(102)および前記第2のコンピュータ・サブシステム(106、108)の少なくともいずれか一方が、アプリケーションデータを送受信する際にソケットの読取りをブロックし、
前記第1のサブシステム・スレッドおよび/または第2のサブシステム・スレッドは、新たなアプリケーションデータの転送がないとき、スリープ状態にされる、
ことを特徴とする方法。 - 前記第1のファイアウォール(122)および前記第2のファイアウォール(124、126)のポート80を介した接続を生じさせるステップをさらに含む、請求項12記載の方法。
- アプリケーションデータが、HTTP1.1に従って構成された複数のデータ・パケットとして送受信される、請求項12または13記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/675,699 | 2000-09-29 | ||
US09/675,699 US7028051B1 (en) | 2000-09-29 | 2000-09-29 | Method of real-time business collaboration |
PCT/US2001/030486 WO2002027434A2 (en) | 2000-09-29 | 2001-09-28 | Method of real-time business collaboration |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004531782A JP2004531782A (ja) | 2004-10-14 |
JP4903979B2 true JP4903979B2 (ja) | 2012-03-28 |
Family
ID=24711602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002530948A Expired - Fee Related JP4903979B2 (ja) | 2000-09-29 | 2001-09-28 | リアルタイムなビジネス・コラボレーションの方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7028051B1 (ja) |
EP (1) | EP1499997B1 (ja) |
JP (1) | JP4903979B2 (ja) |
AT (1) | ATE544109T1 (ja) |
AU (1) | AU2001293181A1 (ja) |
BR (1) | BR0114358A (ja) |
CA (1) | CA2447930A1 (ja) |
MX (1) | MXPA03002836A (ja) |
WO (1) | WO2002027434A2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8762446B1 (en) * | 1999-11-02 | 2014-06-24 | Apple Inc. | Bridged distributed device control over multiple transports method and apparatus |
JP3297037B2 (ja) * | 2000-10-31 | 2002-07-02 | サイボウズ株式会社 | 情報登録支援システム、情報登録支援装置並びに方法、及び情報記憶媒体 |
US7269647B2 (en) * | 2000-12-15 | 2007-09-11 | International Business Machines Corporation | Simplified network packet analyzer for distributed packet snooper |
US7296292B2 (en) * | 2000-12-15 | 2007-11-13 | International Business Machines Corporation | Method and apparatus in an application framework system for providing a port and network hardware resource firewall for distributed applications |
US20020161904A1 (en) * | 2001-04-30 | 2002-10-31 | Xerox Corporation | External access to protected device on private network |
US7248563B2 (en) * | 2002-07-31 | 2007-07-24 | International Business Machines Corporation | Method, system, and computer program product for restricting access to a network using a network communications device |
US8255454B2 (en) * | 2002-09-06 | 2012-08-28 | Oracle International Corporation | Method and apparatus for a multiplexed active data window in a near real-time business intelligence system |
US7363342B1 (en) * | 2003-07-08 | 2008-04-22 | Microsoft Corporation | Method and apparatus for providing web services in a collaborative computing system |
FI119303B (fi) | 2005-06-07 | 2008-09-30 | Teliasonera Ab | Liitettävyys tilatietoisten palomuurien välillä |
US7627681B2 (en) * | 2005-07-20 | 2009-12-01 | Microsoft Corporation | Relaying messages through a firewall |
JP5184744B2 (ja) * | 2005-11-14 | 2013-04-17 | ピーアンドダブリューソリューションズ株式会社 | スケジュールを管理する方法及び当該方法を実現するサーバ及びプログラム |
US20070288645A1 (en) * | 2006-06-08 | 2007-12-13 | International Business Machines Corporation | Method and System for Persistent and Reliable Data Transmission |
US7739339B2 (en) * | 2006-06-28 | 2010-06-15 | The Boeing Company | System and method of communications within a virtual environment |
US20080005245A1 (en) * | 2006-06-30 | 2008-01-03 | Scott Deboy | Conferencing system with firewall |
US7987275B2 (en) * | 2007-09-18 | 2011-07-26 | International Business Machines Corporation | Method, apparatus and computer program product implementing a chat application proxy and a chat application wrapper in a chat system |
US7920569B1 (en) * | 2008-05-05 | 2011-04-05 | Juniper Networks, Inc. | Multi-link transport protocol translation |
CN102891878A (zh) * | 2011-07-18 | 2013-01-23 | 索尼公司 | 无线数据传输方法和传输系统、客户端与服务端控制器 |
CN105765923B (zh) * | 2013-11-29 | 2019-11-12 | 卡尔加里科技股份有限公司 | 客户端-服务器远程访问系统中提供客户端到非托管服务的连接的方法 |
US11314460B2 (en) * | 2019-09-13 | 2022-04-26 | Kioxia Corporation | Solid state drive supporting both byte addressable protocol and block addressable protocol |
US20240111949A1 (en) * | 2022-04-07 | 2024-04-04 | Sigma Computing, Inc. | Resolving live edit conflicts |
US20230328122A1 (en) * | 2022-04-07 | 2023-10-12 | Sigma Computing, Inc. | Live editing a workbook with multiple clients |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05260052A (ja) * | 1992-03-09 | 1993-10-08 | Fujitsu Ltd | ネットワーク構成方式 |
WO1996018253A1 (en) * | 1994-12-07 | 1996-06-13 | Matsushita Electric Corporation Of America | Security system for interconnected computer networks |
WO1997037303A1 (en) * | 1996-04-01 | 1997-10-09 | Openconnect Systems Incorporated | Web/emulator server and web browser terminal emulator for persistent connection to a legacy host system operation |
WO1999063467A1 (en) * | 1998-06-05 | 1999-12-09 | I2 Technologies, Inc. | Improved method and system for providing client callbacks through a firewall within and between enterprises |
WO2000016206A1 (en) * | 1998-09-10 | 2000-03-23 | Sanctum Ltd. | Method and system for protecting operations of trusted internal networks |
JP2000123097A (ja) * | 1997-02-06 | 2000-04-28 | Sun Microsyst Inc | ファイアウォールを介するセキュアな取引を許容するための方法及び装置 |
JP2000132525A (ja) * | 1998-10-23 | 2000-05-12 | Ntt Communicationware Corp | ネットワーク連携方式 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742773A (en) | 1996-04-18 | 1998-04-21 | Microsoft Corporation | Method and system for audio compression negotiation for multiple channels |
US6006266A (en) | 1996-06-03 | 1999-12-21 | International Business Machines Corporation | Multiplexing of clients and applications among multiple servers |
US7516094B2 (en) * | 1996-10-25 | 2009-04-07 | Ipf, Inc. | Internet-based system for managing and delivering consumer product information to consumers at web-based retailer store sites on the world wide web (WWW), using consumer product information (CPI) requesting and graphical user interface (GUI) display subsystems, driven by server-side components embodying universal product numbers (UPNs) and driven by UPN/URL links managed by product manufacturer team members and/or their agents |
US5796393A (en) * | 1996-11-08 | 1998-08-18 | Compuserve Incorporated | System for intergrating an on-line service community with a foreign service |
EP0858201A3 (en) * | 1997-02-06 | 1999-01-13 | Sun Microsystems, Inc. | Method and apparatus for allowing secure transactions through a firewall |
US5943478A (en) * | 1997-04-04 | 1999-08-24 | Flash Communications, Inc. | System for immediate popup messaging across the internet |
US20020010865A1 (en) | 1998-01-30 | 2002-01-24 | Christina E. Fulton | Method and apparatus for remote office access management |
US6289461B1 (en) * | 1998-06-09 | 2001-09-11 | Placeware, Inc. | Bi-directional process-to-process byte stream protocol |
EP1030244B1 (en) * | 1998-09-16 | 2014-08-20 | Mitsui & Co., Ltd. | A multimedia direct communication system linked with http protocol |
JP2000132473A (ja) | 1998-10-23 | 2000-05-12 | Oki Electric Ind Co Ltd | ファイアウォール動的制御方式を用いたネットワークシステム |
JP3550503B2 (ja) * | 1998-11-10 | 2004-08-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信を可能とするための方法及び通信システム |
US6412009B1 (en) * | 1999-03-15 | 2002-06-25 | Wall Data Incorporated | Method and system for providing a persistent HTTP tunnel |
US6510448B1 (en) | 2000-01-31 | 2003-01-21 | Networks Associates Technology, Inc. | System, method and computer program product for increasing the performance of a proxy server |
US20020108059A1 (en) * | 2000-03-03 | 2002-08-08 | Canion Rodney S. | Network security accelerator |
-
2000
- 2000-09-29 US US09/675,699 patent/US7028051B1/en not_active Expired - Fee Related
-
2001
- 2001-09-28 EP EP01973622A patent/EP1499997B1/en not_active Expired - Lifetime
- 2001-09-28 AT AT01973622T patent/ATE544109T1/de active
- 2001-09-28 JP JP2002530948A patent/JP4903979B2/ja not_active Expired - Fee Related
- 2001-09-28 AU AU2001293181A patent/AU2001293181A1/en not_active Abandoned
- 2001-09-28 MX MXPA03002836A patent/MXPA03002836A/es unknown
- 2001-09-28 WO PCT/US2001/030486 patent/WO2002027434A2/en active Application Filing
- 2001-09-28 CA CA002447930A patent/CA2447930A1/en not_active Abandoned
- 2001-09-28 BR BR0114358-1A patent/BR0114358A/pt not_active IP Right Cessation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05260052A (ja) * | 1992-03-09 | 1993-10-08 | Fujitsu Ltd | ネットワーク構成方式 |
WO1996018253A1 (en) * | 1994-12-07 | 1996-06-13 | Matsushita Electric Corporation Of America | Security system for interconnected computer networks |
WO1997037303A1 (en) * | 1996-04-01 | 1997-10-09 | Openconnect Systems Incorporated | Web/emulator server and web browser terminal emulator for persistent connection to a legacy host system operation |
JP2000123097A (ja) * | 1997-02-06 | 2000-04-28 | Sun Microsyst Inc | ファイアウォールを介するセキュアな取引を許容するための方法及び装置 |
WO1999063467A1 (en) * | 1998-06-05 | 1999-12-09 | I2 Technologies, Inc. | Improved method and system for providing client callbacks through a firewall within and between enterprises |
WO2000016206A1 (en) * | 1998-09-10 | 2000-03-23 | Sanctum Ltd. | Method and system for protecting operations of trusted internal networks |
JP2000132525A (ja) * | 1998-10-23 | 2000-05-12 | Ntt Communicationware Corp | ネットワーク連携方式 |
Also Published As
Publication number | Publication date |
---|---|
EP1499997A2 (en) | 2005-01-26 |
WO2002027434A9 (en) | 2003-02-20 |
WO2002027434A2 (en) | 2002-04-04 |
US7028051B1 (en) | 2006-04-11 |
ATE544109T1 (de) | 2012-02-15 |
WO2002027434A3 (en) | 2004-11-04 |
BR0114358A (pt) | 2005-04-26 |
JP2004531782A (ja) | 2004-10-14 |
EP1499997B1 (en) | 2012-02-01 |
MXPA03002836A (es) | 2004-09-10 |
EP1499997A4 (en) | 2009-04-01 |
AU2001293181A1 (en) | 2002-04-08 |
CA2447930A1 (en) | 2002-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4903979B2 (ja) | リアルタイムなビジネス・コラボレーションの方法 | |
US10447745B2 (en) | Systems and methods for video-conference network system suitable for scalable, automatable, private tele-consultation service | |
EP1030244B1 (en) | A multimedia direct communication system linked with http protocol | |
US8200764B2 (en) | System and method for achieving highly scalable real-time collaboration applications using HTTP | |
Hofmann et al. | Content networking: architecture, protocols, and practice | |
US7068680B1 (en) | Communication service architectures for netcentric computing systems | |
US5903723A (en) | Method and apparatus for transmitting electronic mail attachments with attachment references | |
JP4444518B2 (ja) | 様々なネットワークを介して匿名ユーザ間でのインテリジェントなセッションを確立する分散システム | |
US5781901A (en) | Transmitting electronic mail attachment over a network using a e-mail page | |
US20030217096A1 (en) | Agent based application using data synchronization | |
US20020002625A1 (en) | System and method for reformatting data traffic | |
US20060167897A1 (en) | Administration of a broker-based publish/subscribe messaging system | |
KR20120136371A (ko) | 네트워크 노드들과 스트림 전송 프로토콜 사이의 네트워크 통신 관리 | |
KR100354369B1 (ko) | 정보 처리 방법, 정보 처리 장치, 정보 처리 프로그램을 격납하는 기억 매체 | |
JP2003044429A (ja) | コラボレーション用の端末、コラボレーションシステム及びコラボレーション方法 | |
JP2005502929A (ja) | ファイアウォールに適合した持続的接続を維持するためのコンピュータ・プログラム | |
JP4404007B2 (ja) | 通信方法、ネットワーク、および情報処理装置 | |
Hu et al. | Research and implementation of campus information push system based on WebSocket | |
KR100430910B1 (ko) | 지정된 응용 모듈의 기능을 차용하는 그룹-독립형 메시지전송 방법 및 시스템 | |
Schneider | Distributed Networks Using ROS-Cross-Network Middleware Communication Using IPv6 | |
KR20030084164A (ko) | 원격 메소드 호출을 이용한 동적 통신 방법 및 시스템 | |
Ferrao | Secure Collaborative Web Browsing and Chat Through Standard Web Pages | |
Smith et al. | Towards a standards-based, message-oriented advanced collaboration system | |
Bacon | Peer-to-Peer Distributed Services Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040816 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080903 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20091030 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091106 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20091106 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101015 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20101228 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110114 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110215 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110407 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110728 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110804 |
|
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: 20111215 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120106 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150113 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |