JP4515839B2 - インスタントメッセージングオブジェクトストア - Google Patents

インスタントメッセージングオブジェクトストア Download PDF

Info

Publication number
JP4515839B2
JP4515839B2 JP2004195946A JP2004195946A JP4515839B2 JP 4515839 B2 JP4515839 B2 JP 4515839B2 JP 2004195946 A JP2004195946 A JP 2004195946A JP 2004195946 A JP2004195946 A JP 2004195946A JP 4515839 B2 JP4515839 B2 JP 4515839B2
Authority
JP
Japan
Prior art keywords
data
computer
location
retrieving
hash value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004195946A
Other languages
English (en)
Other versions
JP2005025759A5 (ja
JP2005025759A (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 JP2005025759A publication Critical patent/JP2005025759A/ja
Publication of JP2005025759A5 publication Critical patent/JP2005025759A5/ja
Application granted granted Critical
Publication of JP4515839B2 publication Critical patent/JP4515839B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Economics (AREA)
  • Primary Health Care (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Signal Processing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Medicines Containing Plant Substances (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Description

本記載の内容はコンピュータ通信に関する。より詳細には、本内容はインスタントメッセージングのためのオブジェクトストアに関する。
インスタントメッセージングは、コンピュータデバイスのユーザに非常に人気のある通信ツールになりつつある。インスタントメッセージング(IM)アプリケーション(例えば、米国ワシントン州レドモンドのMicrosoft CorporationのWINDOWS(登録商標)Messengerシステム、Yahoo! Messenger、AOLインスタントメッセンジャー(AIM)など)により、ユーザは、ユーザの連絡先のプライベートリストで特定される1人または複数の連絡先と、リアルタイムの会話をすることができる。通常、プライベートリストはスイッチボード(switchboard)、あるいは中継サーバ(relay server)などのサーバに保管されており、このサーバを介して通信が確立される。次いで、スイッチボードサーバは、インバウンドメッセージを適切な受信者にルーティングする。
インスタントメッセージングシステムの進歩に伴い、これらのシステムは、インスタントメッセージングの会話をより豊かな体験にするフィーチャ(feature)をより多く提供することができる。このようなフィーチャは、テキストに加えて、様々なタイプのデータオブジェクト上でも機能する。例えば、カスタムユーザタイル(tile)フィーチャにより、ユーザが、ユーザを別のユーザのコンピュータ上で一意に表すカスタムユーザタイルを生成し、送信することができる。このようなフィーチャオブジェクトを送信するには通常、受信側に対してエラーなしで表示されるように、テキストの場合よりも広い帯域幅が必要である。さらに、会話中にユーザを表すオブジェクトは、通常、このようなオブジェクトがアクセスされる頻度に比べて、それほど頻繁に変化しないであろう。
米国特許出願第10/611,575号明細書 Donald E. Eastlake, III, and Paul E. Jones, 「US Secure Hash Algorithm 1 (SHA1)」, Request for Comments 3174 (RFC 3174), The Internet Society, September, 2001 Federal Information Processing Standards Publication (FIPS PUB) 180-2, August 1, 2002
残念ながら、従来のインスタントメッセージングアプリケーションは、このようなオブジェクトをみだりに変更するのを防止しつつフィーチャオブジェクトを効率的に管理するためのメカニズムを提供していない。例えば、ユーザが単純に自身の固有のカスタムユーザタイルを第2のユーザに送信する場合、第2のユーザは、第1のユーザのタイルを変更して、タイルがもはや第1のユーザの望むような仕方で第1のユーザを表していないように変更することができる。
前述の問題および他の問題を解決する例示的な実装形態について述べる。
1つの実装形態は、オブジェクトデータを通信するための方法を含む。この方法は、リモートコンピュータ上のユーザに関連する名前であって、ロケーションデータと、ユーザを表すデータオブジェクトに一意に関連するハッシュ値とを含む名前を受け取り、ハッシュ値に基づくローカルキャッシュおよびロケーションデータにより識別されるロケーションのうちの一方からデータオブジェクトを取り出すことによって行われる。
別の実装形態は、インスタントメッセージングの会話においてユーザを表すオブジェクトを管理するためのシステムを含む。このシステムは、ユーザを表すデータオブジェクトを含み、データオブジェクトは、ロケーション識別子とハッシュ値とを含むオブジェクト名を有する。システムはさらに、ロケーション識別子により識別されるロケーションからデータオブジェクトを取り出し、データオブジェクトをハッシュ値に基づいてローカルキャッシュに格納するように働くオブジェクトストアを備える。
図面に移ると、同様の参照番号は同様の要素を表しており、様々な方法が適したコンピューティング環境において実施されるものとして示されている。必須ではないが、様々な例示的な方法について、プログラムモジュールなど、パーソナルコンピュータおよび/またはその他のコンピューティングデバイスによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることにする。一般にプログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、様々な例示的な方法は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなど、その他のコンピュータシステム構成で実施されうることは、当業者なら理解するであろう。また、様々な例示的な方法は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリストレージデバイスにロケーションすることができる。
本明細書のいくつかの図面では、様々なアルゴリズム動作を個々の「ブロック」に要約している。このようなブロックは、プロセスの進行に伴って為されるか、または行われる特定の動作または決定を記述する。マイクロコントローラ(または均等物)が採用される場合、本明細書に提示したフローチャートは、そのようなマイクロコントローラ(または均等物)によって所望の制御を達成するために使用することのできる「制御プログラム」またはソフトウェア/ファームウェアのための基礎を提供する。このように、プロセスは、プロセッサによって実行されるとき、ブロックとして示された様々な動作を実行する、メモリに記憶可能なマシン可読命令として実装される。
当業者であれば、本明細書に提示したフローチャートおよびその他の記述に基づいて、このような制御プログラムを容易に書くことができるであろう。本明細書に記載の内容は、後述の動作を実行するようにプログラムされる場合のデバイスおよび/またはシステムを含むだけでなく、マイクロコントローラをプログラムするように構成されるソフトウェア、さらに、そのようなソフトウェアが具体化される可能性のあるすべてのあらゆるコンピュータ可読媒体を含むことが理解され、認識されるべきである。このようなコンピュータ可読媒体の例には、限定しないが、フロッピー(登録商標)ディスク、ハードディスク、CD、RAM、ROM、フラッシュメモリなどが含まれる。
(概観)
インスタントメッセージングシステムにおいてオブジェクトを管理するための例示的な方法、システム、およびデバイスを開示する。一般に、オブジェクトストアは、一度書き込み、何度も読み出す(write−once,read−many)オブジェクトストレージおよび取り出しシステムを提供し、この場合オブジェクトは不変である。オブジェクトストアは、フィーチャアプリケーションがオブジェクト名を使用してオブジェクトを格納または取り出すことができるインターフェースを提供する。オブジェクトストアは、オブジェクトデータをエンコードして固有の識別子を生成する。この識別子を介して、オブジェクトストアは、ローカルキャッシュからのオブジェクト、または複数のロケーションのうちの1つからのオブジェクトにアクセスすることができる。オブジェクトは、ローカルまたはリモートに格納することができる。オブジェクトストアは、オブジェクト名をデコードして、ロケーション情報および/または作成者情報を入手して、ローカルまたはリモートのストレージからオブジェクトを取り出すことができる。
(インスタントメッセージングのシナリオにおいてオブジェクトを格納するための例示的なシステム)
図1に、インスタントメッセージングの会話のための例示的なネットワーク環境100を示す。一般に、2つのクライアント102および104は、ネットワーク106を介して、または直接接続108を介して直接、相互に通信することができる。スイッチボードサーバ110は、ネットワーク106経由のクライアント(1)102およびクライアント(2)104の間の通信を容易にする。クライアント(1)102および/またはクライアント(2)104は、スイッチボードサーバ110に接続してインスタントメッセージングセッションを確立することができる。直接接続108を使用すると、データはスイッチボードサーバ110を介してルーティングする必要はなく、むしろクライアント(1)102およびクライアント(2)104の間でピアツーピア方式でデータを通信することができる。
インスタントメッセージング(IM)プラットフォーム112は、クライアント(1)102およびクライアント(2)104がインスタントメッセージングの会話を行うことができるようにする。IMプラットフォーム112のユーザは、ユーザインターフェース(図示せず)を介してIMプラットフォーム112とやりとりし、メッセージおよび他のデータをクライアント(2)104との間で送受信する。IMプラットフォーム112は、1つまたは複数のフィーチャ114(エンドユーザフィーチャ(EUF)とも呼ばれる)と、オブジェクトストア116と、オブジェクトキャッシュマネージャ118と、トランスポートプロトコルスタック120とを含む。トランスポートプロトコルスタック120は、アプリケーションプログラミングインターフェース(API)122を提供するが、このAPIにより、フィーチャ114やオブジェクトストア116などの上位機能は、トランスポートプロトコルスタック120中の機能を使用してデータを送受信することができる。
一般に、トランスポートプロトコルスタック120およびトランスポートAPI122は、クライアント(1)102がネットワーク106を介して、そして/またはピアツーピア方式で直接接続108を介して、クライアント(2)104と通信するための手段を提供する。トランスポートプロトコルスタック120は、フィーチャ114およびオブジェクトストア116に関係するデータを含むインスタントメッセージングデータを通信するために必要な接続を確立する。トランスポートプロトコルスタック120およびトランスポートAPI122の例示的な実装形態は、特許文献1にさらなる詳細が記載されている。
フィーチャ114は、フィーチャ114に関連するデータを提示するためにIMアプリケーション112によってまたはアプリケーション112内でホストされるか、または実行される機能またはアプリケーションである。フィーチャ114は、フィーチャ114が提示するデータのタイプ、データの提示方法、フィーチャ114がデータ上で行うことができる操作、および/または、データとやりとりするためにフィーチャ114がユーザに提供するインタラクティブオプションによって特徴付けることができる。例えば、カスタムユーザタイルフィーチャ114は、ユーザインターフェース上のスクリーンタイルに画像データを提示し、ファイル転送フィーチャ114は、ユーザがファイルを選択しインスタントメッセージングの連絡先にファイル送信できるようにする。限定ではなく例として、フィーチャ114には、カスタム感情アイコン(emoticon)、インク、埋め込み画像、およびその他のアプリケーションが含まれうる。
フィーチャ114は、インスタントメッセージング会話中にオブジェクトを使用して、データを提示する。オブジェクトは、オブジェクトストア116によって管理される。オブジェクトストア116は、インスタントメッセージングにおいて使用されるデータオブジェクトを格納し、アクセスし、そうでなければ管理するための方法およびデータを提供する。例えば、オブジェクトストア116がカスタム感情アイコンフィーチャ114によって使用されて、クライアント(2)104からのカスタム感情アイコンをクライアント(1)102で表示することができる。後でさらに詳細に論じるが、オブジェクトストア116は、オブジェクトに関連する識別子データをハッシュするなど、データを暗号化することによって、データセキュリティの度合いを提供することができる。
クライアントコンピュータ(1)102は、ファイルシステム124およびキャッシュ126を含む。オブジェクトは、ファイルシステム124およびキャッシュ126の両方に格納することができる。ファイルシステム124は、クライアントコンピュータ(1)102内のファイルをカタログ化するための標準的なコンピュータファイルシステムである。キャッシュ126は、ハードディスクもしくはフロッピー(登録商標)ディスク、および/またはランダムアクセスメモリ(RAM)などのメモリを含む。オブジェクトキャッシュマネージャ118は、キャッシュ126中のオブジェクトを管理する。
オブジェクトキャッシュマネージャ118の1つの実装形態では、Microsoft(登録商標)CorporationからのInternet Explorer(登録商標)によって使用されるキャッシュであるWinINET(登録商標)キャッシュを使用する。この実装形態では、オブジェクトがウェブアドレス(例えばユニフォームリソースロケータ(URL))から取り出されると、WinINET(登録商標)は、自動的にオブジェクトをWinINET(登録商標)キャッシュに書き込むことになる。オブジェクトがURLロケーション以外のロケーションから取り出される場合は、オブジェクトキャッシュマネージャ118は、トランスポートプロトコルスタック120がオブジェクトを取り出すことを要求することになり、オブジェクトキャッシュマネージャ118がオブジェクトをWinINET(登録商標)キャッシュに書き込む。
ネットワーク106はストレージ128を含み、ストレージ128もまた、クライアント102および104によって使用できるオブジェクトデータを保持することができる。クライアント(1)102は、ネットワーク106を介して、ネットワークストレージ128にアクセスしてオブジェクトを取り出すことができる。クライアント(1)102上のオブジェクトはクライアント(2)104によって取り出し、使用することができ、またその逆もできる。後でより詳細に論じるが、オブジェクトストア116は、要求されたオブジェクトがどこにあるか決定し、決定したロケーションからオブジェクトを取り出すことにより、オブジェクトに対する要求を処理する。したがって図1に示すように、オブジェクトストア116は、オブジェクトがローカルキャッシュ126、ローカルファイルシステム124、ネットワークストレージ128、および/またはリモートクライアント(2)104にあると判定することができる。
図示していないが、クライアント(1)102上に含まれたモジュールと類似したモジュールが、クライアント(2)104にも含まれている。それゆえ、クライアント(2)104は、メッセンジャープラットフォーム、フィーチャ、オブジェクトストア、オブジェクトキャッシュマネージャ、トランスポートプロトコルスタック、ファイルシステム、およびキャッシュメモリを含む。
図1の例示的な環境100には会話中の2つのクライアント102および104のみが示されているが、3つ以上のクライアントが会話に関与していてもよいことを理解されたい。2つ以上のクライアントはマルチポイント方式で通信することができ、各クライアントは他の2つ以上のクライアントへの接続(例えばピアツーピアまたはサーバ経由)を有することができる。ネットワーク環境100で採用することのできる例示的な動作およびシステムについて、以下により詳細な説明を提供する。
図2に、オブジェクト管理を提供するためにメッセンジャープラットフォーム(例えば図1のIMプラットフォーム112)中でインスタンス化することのできる例示的なクラスを有するクラス図200を示す。1つのクラスは、クライアントコンピュータ(例えば図1のクライアント(1)102)上のオブジェクトストア(例えば図1のオブジェクトストア116)を表すObjectStoreクラス202である。ObjectStoreクラス202は、格納されたオブジェクトを表すStoredObjectクラス204を使用する。タイプ列挙子(type enumerator)206は、オブジェクトの1つまたは複数のタイプを定義する。オブジェクト指向ソフトウェア設計、および図2のクラス図200などのクラス図設計は、当業者にはよく知られているであろう。
メッセンジャーアプリケーション(例えば図1のIMプラットフォーム112)中のフィーチャ(例えば図1のフィーチャ114)は、ObjectStoreクラス202(またはObjectStoreクラス202のインスタンス)とインターフェースして、StoredObjectクラス204のインスタンスを格納および取り出す。特定の一実装形態では、ObjectStoreクラス202は静的なシングルトンである。すなわち、実行されている可能性のあるすべてのフィーチャからの要求を処理するのに、ObjectStoreクラス202のインスタンスが1つだけ生成される。
例示的なオブジェクトタイプを、StoredObjectTypeEnum206中に提供する。図示のように、図2の特定の実装形態では、列挙されたタイプは、カスタム感情アイコン、ユーザタイル、バックグラウンド、アバター、共有ファイルである。これらのタイプは、ユーザが作成することができる、ユーザを表すオブジェクトを参照することができる。ユーザは、カスタム感情アイコン、アバター、ユーザタイルなど、ユーザに固有のオブジェクトを作成することができる。
図2に示すように、ObjectStoreクラス202は3つの関数、GetObject(StoredObject)、StoreObject(StoredObject)、DeleteObject(StoredObject)を提供している。関数名が示すとおり、フィーチャは、GetObject関数を呼び出すことによって格納されたオブジェクトを取り出すことができ、StoreObject関数を呼び出すことによってオブジェクトを格納することができ、DeleteObject関数を呼び出すことによってオブジェクトを削除することができる。関数のそれぞれは、タイプStoredObjectクラス204のパラメータを含む。
StoredObjectクラス204は、データのオブジェクトを参照する。オブジェクト中のデータは、任意のサイズまたはタイプのデータの任意のバイナリラージオブジェクト(BLOB)で構成される。StoredObjectクラス204のインスタンスは、そのインスタンスが参照するオブジェクトデータと共に格納される必要はない。例えば、クライアント(1)102(図1)は、ネットワークストレージ128(図1)に格納されるか、またはクライアント(2)104(図1)など他のクライアントに格納されているオブジェクトデータを参照するStoredObject204のインスタンスを有することがある。オブジェクトデータの実際のロケーションは、ObjectStoreクラス202およびStoredObjectクラス204のインスタンスを使用するフィーチャにはトランスペアレントである。
StoredObjectクラス204は、オブジェクトデータを記述するオブジェクトメタデータ208を含む。例示的なメタデータ208は、Nameフィールド、Typeフィールド、FriendlyNameフィールド、Hash1フィールド、Hash2フィールド、Creatorフィールド、Locationフィールドを含む。Nameは、オブジェクトを識別する文字列である。1つの実施形態では、Nameフィールドは、1つまたは複数のメタデータ208フィールドの組合せである。Typeフィールドは、オブジェクトのタイプを指定するStoredObjectTypeEnum206中のタイプの1つである。FriendlyNameフィールドは、ユーザがオブジェクトに与えることのできるユーザに可読の名前である。
1つの実施形態では、Hash1フィールドは、オブジェクトデータに一意に関連付けられた値を有し、キャッシュ中でオブジェクトデータを突き止めるのに使用することができる。Hash1値は、SHA1(Secure Hash Algoritm 1)などの暗号ハッシング関数を使用して生成される。SHA1関数は、入力としてオブジェクトデータを取ってHash1値を生成する。SHA1関数の呼出しシグニチャ(calling signature)の例はSHA1(Data)であり、Dataは、格納されるべきオブジェクトデータを参照する。
SHA1は、オブジェクトデータの「凝縮された表現」を計算するためのアルゴリズムである。「凝縮された表現」は、固定長であり、「メッセージダイジェスト」または「フィンガプリント」として知られている。Hash1フィールドの一般的な固定長の1つは160ビットであり、この長さにより、Hash1値があらゆるオブジェクトにとって固有となることがほぼ保証される。Hash1値が固有であることにより、Hash1値は、オブジェクトデータの「フィンガプリント」として働き、データ保全性(data integrity)を確実にし、データ比較チェックを可能にすることができる。例えば、オブジェクトデータがダウンロードされるとき、Hash1値を計算し、前のHash1値と比較して、オブジェクトデータが改変されていないことを保証することができる。また、Hash1値をキャッシュ中への索引として使用して、前に格納されたオブジェクトデータを突き止めることもできる。
Hash1値は、Ronald L.Rivest教授によって開発されたMD5(Message Digest Algorithm 5)など、その他の知られているアルゴリズムを使用して計算することもできる。MD5、SHA1、または同様のアルゴリズムを使用すると、Hash1値は不可逆であり、Hash1値からオブジェクトデータを生成することはできない。SHAやMDなどのハッシングアルゴリズムまたはメッセージダイジェストアルゴリズムを実施するためのリソースは、当業者には容易に入手可能である。SHA1アルゴリズムの特定の一実装形態に関する詳細が非特許文献1で入手可能である。また、非特許文献2は、セキュアハッシュ規格について規定している。
Hash2フィールドは、メタデータフィールド(すなわちCreatorフィールド、Typeフィールド、FriendlyNameフィールド、Locationフィールド、Hash1フィールド)が、上述したSHA1関数などのハッシュ関数に入力されるときに得られるハッシュ値である。
StoredObjectクラス204のCreatorフィールドは、オブジェクトを作成したユーザ、ピア、またはクライアントを表す。Creatorフィールドは、作成者の名前、eメールアドレス、またはオブジェクトの作成者を指定するその他の任意の識別子を有する文字列とすることができる。StoredObjectクラス204のLocationフィールドは、オブジェクトデータのロケーションを指定する。図2に示すように、ロケーションはユニフォームリソースロケータ(URL)によって提供される。一般に知られているように、URLは、ウェブ上またはその他の任意のネットワーク機構上のデータへのルートを定義するアドレスである。以下により詳細に論じるが、ObjectStoreクラス202は、CreatorフィールドおよびLocationフィールドを使用してオブジェクトデータを取り出すことができる。
例示的なStoredObjectクラス204のインスタンスは、多重定義関数(overloaded function)である「Create」関数を提供し、これにより、様々なタイプの格納されたオブジェクトを作成することができる。このように、Create関数がIDと共に呼び出されると、そのIDを有するオブジェクトが作成され、Create関数がFileハンドルと共に呼び出されると、参照されたFileを使用してオブジェクトが作成され、以下同様である。
StoredObjectクラス204のインスタンスは、「GetData()」関数を有する。GetData()関数が呼び出されると、StoredObjectクラス204のインスタンスによって参照されるオブジェクトデータが返される。このように、フィーチャがオブジェクトを提示する必要があるとき、フィーチャは、データが感情アイコン、アバター、ユーザタイル、ファイル、バックグラウンド、またはその他のどれを定義しているか、GetData()を呼び出して実際のデータを得ることができる。
(オブジェクトストアを使用してオブジェクトを格納および取り出すための例示的な動作)
図3に、図1のオブジェクトストア116および/または図2のObjectStoreクラス202などのオブジェクトストアを使用してオブジェクトを作成し、このオブジェクトを格納するための例示的な動作を有するオブジェクト格納動作フロー300を示す。1つのシナリオでは、フィーチャが、ObjectStoreクラス202およびStoredObjectクラス204のインスタンスとやりとりして、オブジェクトを作成および格納する。フィーチャは、オブジェクトストアからオブジェクト名を受け取るが、これは後でオブジェクトを取り出すのに使用することができる。
開始動作302の後、作成動作304によりオブジェクトが作成される。作成動作304の1つの実装形態では、StoredObjectクラス204のインスタンス(図2)が作成される。格納すべきデータを参照して共にCreate()関数に対して呼び出しが行われる。例えば、ユーザはカスタム感情アイコンフィーチャを使用して、カスタム感情アイコンタイプのStoredObjectを作成することができる。カスタム感情アイコンフィーチャは、カスタム感情アイコンを参照してCreate()関数を呼び出す。
計算動作306で、StoredObject(作成動作304で作成したもの)に関連するデータに対応する第1のハッシュ値を計算する。計算動作306で、StoredObject中のメタデータフィールドに基づいて第2のハッシュ値を計算することがある。ハッシュ値を計算するための様々なリソースおよびアルゴリズムは前述のとおりであり、ここでは繰り返さない。格納動作308で、オブジェクトデータをローカルキャッシュに格納する。オブジェクトデータは、第1のハッシュ値に対応するキャッシュ中のロケーションに格納され、それゆえ、このオブジェクトデータはキャッシュから後で容易に取り出すことができる。
設定動作310で、StoredObjectのメタデータにフィールド(図2のメタデータフィールドを参照)を設定する。オブジェクトメタデータのCreatorフィールドおよびLocationフィールドは、ユーザログイン設定に基づいて設定することができる。Typeフィールドは、格納されたオブジェクトデータのタイプに設定される。FriendlyNameは、ユーザによって指定することができる。Hash1フィールドおよびHash2フィールドは、計算動作306で計算された第1のハッシュ値および第2のハッシュ値にそれぞれ設定される。
返し動作312で、オブジェクト名を返す。オブジェクト名は、設定動作310で設定されたメタデータ中の1つまたは複数のフィールドの連結である。1つの実装形態では、返されるオブジェクト名は、CreatorフィールドおよびLocationフィールドを含む。CreatorフィールドおよびLocationフィールドにより、ObjectStoreは、必要ならローカルキャッシュ以外のロケーションからオブジェクトデータを後で取り出すことができるようになる。
返し動作312で返される名前は、ユニフォームリソース識別子(URI)やユニフォームリソース名(URN)など、指定のフォーマットとすることができる。URIは、画像、テキスト、ビデオ、オーディオ、プログラムを含め、インターネット上のいかなる種類のリソースでも識別することのできるキャラクタ文字列である。URIの一般的なバージョンの1つは、ユニフォームリソースロケータ(URL)である。URNは、オブジェクトについて永続的で、グローバルに固有の名前であるように定義される。以下に、例示的なURIおよびURNを示す。
URI://[Creator]/[Type]/[Hash1]/[Hash2]?fn=[FriendlyName]&URL=[Location];
URN:[Type]:[Creator]:[FriendlyName]:[Location]:[Hash1]:[Hash2]
図4は、コンピュータネットワーク上の様々なロケーションのいずれかに格納される可能性のあるオブジェクトを取り出すための例示的な動作を有するオブジェクト取り出し動作フロー400である。図1に関して論じたように、オブジェクトおよびオブジェクトデータは、ローカルキャッシュ、ローカルファイルシステム、ネットワークストレージ(例えばネットワークサーバ上のディスク)、および/または、リモートクライアントやピアコンピュータに格納することができる。動作フロー400は、オブジェクトに対する要求に対して、オブジェクトがどこにロケーションするかを決定し、次いでそのロケーションからオブジェクトを取り出すことによって応答する。
要求動作402で、返し動作310(図3)で返されたオブジェクト名などのオブジェクト名を使用して、オブジェクトデータを要求する。要求動作402により、リモートクライアントコンピュータまたはネットワークサーバから得られるオブジェクト名を渡すことができる。オブジェクト名は、要求されたオブジェクトのロケーションを指定するロケーション情報(例えばURL、または図2のStoredObject204中のLocationフィールド)を含むものと想定されている。また、オブジェクト名は、要求されたオブジェクトに一意に関係するハッシュ値も含む。要求動作402には、ObjectStore202(図2)のGetObject()関数を呼び出すことを伴うことがある。
照会動作404で、要求されたオブジェクトがローカルキャッシュにあるかどうかを判定する。照会動作404の1つの実装形態では、入力Name中のHash1値を使用して、オブジェクトがローカルキャッシュにあるかどうかを判定する。Hash1値は、StoredObjectに関連するデータのハッシュである。このように、Hash1は、取り出されるオブジェクトデータだけに基づいており、オブジェクトに関連する他のいかなるNameデータからも独立している。Hash1値はキャッシュ中への固有の索引なので、Hash1値を使用して、Hash1値に関連するデータがローカルキャッシュに格納されているかどうかを判定することができる。要求されたオブジェクトがローカルキャッシュにあると判定された場合、オブジェクト取り出し動作400は「YES」に分岐して、取り出し動作406に進む。取り出し動作406で、Hash値を使用して、ローカルキャッシュ中に索引し、オブジェクトデータを取り出す。
オブジェクトに初めてアクセスする場合、オブジェクトデータがローカルキャッシュにないことがある。要求されたオブジェクトがローカルキャッシュにないと判定された場合、オブジェクト取り出し動作400は「NO」に分岐して、取り出し動作408に進む。取り出し動作408で、ローカルキャッシュ以外のロケーションから要求されたオブジェクトを取り出す。このロケーションは、入力Name中のLocationフィールドによって指定される。以下に、どのようにLocationフィールドを使用してローカルキャッシュ以外のロケーションから要求されたオブジェクトを取り出すかを示すいくつかのシナリオを提示する。
ローカルキャッシュ以外のロケーションから要求されたオブジェクトを取り出した後、格納動作410で、オブジェクトをローカルキャッシュに格納する。要求されたオブジェクトをローカルキャッシュから取り出した後、または要求されたオブジェクトをローカルキャッシュに格納した後、返し動作412で要求されたオブジェクトを返す。
(例示的なオブジェクト取り出しシナリオ)
図5に、要求されたオブジェクトデータがローカルファイルシステムに位置する場合の例示的なオブジェクト取り出しシナリオ500を示す。フィーチャ502が、オブジェクト名をオブジェクトストア504に渡すことによって、オブジェクトストア504からのオブジェクトデータを要求する。オブジェクトストア504は、要求されたオブジェクトがローカルキャッシュ506にあるかどうかを判定する。シナリオ500では、要求されたオブジェクトがローカルキャッシュ506中で見つからないと想定している。オブジェクトストア504は、オブジェクト名をパース(parse)して、要求されたオブジェクトデータのロケーションを判定する。シナリオ500では、オブジェクト名の中のロケーションデータがローカルファイルシステム508のようにそのロケーションを指定している。
このように、ローカルファイルシステム508にアクセスして要求オブジェクトデータを取り出す。次いで、要求オブジェクトデータをローカルキャッシュ506に格納し、要求元フィーチャ502に返す。したがって理解されるように、例示的なシナリオ500は完全に、単一のクライアントにおいて行われる。
図6に、要求されたオブジェクトデータがネットワークストレージデバイス上にロケーションする場合の別の例示的なオブジェクト取り出しシナリオ600を示す。フィーチャ602は、ハッシュ値とロケーション情報とを有するオブジェクト名を渡すことによって、オブジェクトストア604からのオブジェクトデータを要求する。オブジェクトストア604は、要求されたオブジェクトデータのハッシュ値を使用して、要求されたオブジェクトがローカルキャッシュ606にあるかどうかを判定する。この例示的なシナリオでは、要求されたオブジェクトがローカルキャッシュ606にないと想定している。オブジェクトストア604は、要求されたオブジェクトがネットワーク608上のロケーションに格納されていることをロケーション情報から判定する
このロケーションは、ネットワークストレージ610を指定するURLによって与えられる。要求されたオブジェクトをネットワークストレージ610から取り出す。その後、要求されたオブジェクトをローカルキャッシュ606に格納し、要求元フィーチャ602に返す。
図7に、要求されたオブジェクトがピアコンピュータに位置する場合の別の例示的なオブジェクト取り出しシナリオ700を示す。クライアント1であるクライアント上で稼動しているフィーチャ702が、ハッシュ値とロケーション情報とを有するオブジェクト名を渡すことによって、オブジェクトストア704からのオブジェクトデータを要求する。オブジェクトストア704は、要求されたオブジェクトデータがローカルキャッシュ706にないと判定する。オブジェクトストア704は、オブジェクト名をパースすることによって、クライアント2であるクライアントコンピュータに要求されたオブジェクトがあると判定する。
クライアント2から要求されたオブジェクトデータを取り出すために、要求がトランスポートプロトコルスタック708に送られる。トランスポートプロトコルスタック708は、クライアント2上のトランスポートプロトコルスタック710へのピアツーピア接続を利用する。クライアント2上のトランスポートプロトコルスタック710に、オブジェクトデータの要求を送信する。トランスポートプロトコルスタック710は、クライアント2上のリモートオブジェクトストア712にコールバックを発行する。リモートオブジェクトストア712は、クライアント2上のリモートファイルシステム714から要求されたオブジェクトデータを取り出す。
その後、トランスポートプロトコルスタック708および710を介して、要求されたオブジェクトデータをクライアント2からクライアント1に送信する。クライアント1で、要求されたオブジェクトデータをローカルキャッシュ706に格納する。このように、今後のこのオブジェクトデータに対する要求は、ピアツーピア要求に頼ることなくローカルキャッシュ706から容易に満たされる。次いで、要求されたオブジェクトデータを要求元フィーチャ702に返す。
(例示的な動作環境)
図8および対応する考察は、オブジェクトを格納および取り出すための前述の配置構成および手順を実施することのできる、適したコンピューティング環境の一般的な記述を提供するものである。例示的なコンピューティング環境820は、適したコンピューティング環境の一例に過ぎず、この記載内容の使用または機能の範囲についていかなる制限を示唆するものではない。また、コンピューティング環境820は、この例示的なコンピューティング環境820に示したコンポーネントのいずれか1つまたは組合せに関していかなる依存性や要件を有するものとも解釈すべきではない。
ネットワーク環境でオブジェクトを管理するための例示的な配置構成および手順は、その他多くの汎用または専用のコンピューティングシステム環境または構成でも機能する。記載の内容と共に使用するのに適する可能性のある周知のコンピューティングシステム、環境、および/または構成の例には、これらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、メインフレームコンピュータ、これらのシステムもしくはデバイスのいずれかを含むサーバファームや企業イントラネットなどの分散コンピューティング環境が含まれる。
コンピューティング環境820は、コンピュータ830の形の汎用コンピューティングデバイスを含む。コンピュータ830は、前述のオブジェクトストアの例示的な一実装形態を含み、そして/またはその働きをすることがある。コンピュータ830のコンポーネントには、これらに限定されないが、1つまたは複数のプロセッサまたは処理ユニット832、システムメモリ834、およびシステムメモリ834を含む様々なシステムコンポーネントをプロセッサ832に結合するバス836が含まれうる。
バス836は、様々なバスアーキテクチャのいずれかを用いた、メモリバスもしくはメモリコントローラ、周辺バス、AGP(accelerated graphics port)、プロセッサもしくはローカルバスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、PCI(Peripheral Component Interconnects)バス(メザニンバスとも呼ばれる)が含まれる。
通常、コンピュータ830は様々なコンピュータ可読媒体を含む。このような媒体は、コンピュータ830によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性および不揮発性、取外し可および取外し不可の両方の媒体が含まれる。
システムメモリは、ランダムアクセスメモリ(RAM)840などの揮発性メモリ、および/または読取り専用メモリ(ROM)838などの不揮発性メモリの形のコンピュータ可読媒体を含む。起動中などにコンピュータ830内の要素間で情報の通信を助ける基本ルーチンが入っているBIOS(basic input/output system)842は、ROM838に格納されている。RAM840は、通常、プロセッサ832によってすぐにアクセス可能な、そして/または現在操作されているデータおよび/またはプログラムモジュールを収容している。
コンピュータ830は、その他の取外し可/取外し不可、揮発性/不揮発性コンピュータ記憶媒体をさらに備えることもある。例に過ぎないが図8には、取外し不可の不揮発性の磁気媒体(図示していないが通常「ハードドライブ」と呼ばれる)に対して読み書きするためのハードディスクドライブ844と、取外し可の不揮発性の磁気ディスク848(例えば「フロッピー(登録商標)ディスク」)に対して読み書きするための磁気ディスクドライブ846と、CD−ROM、DVD−ROM、その他の光媒体など、取外し可の不揮発性の光ディスク852に対して読み書きするための光ディスクドライブ850を示している。ハードディスクドライブ844、磁気ディスクドライブ846、光ディスクドライブ850はそれぞれ、1つまたは複数のインターフェース854によってバス836に接続される。
これらのドライブおよび関連するコンピュータ可読媒体は、コンピュータ830のコンピュータ可読命令、データ構造、プログラムモジュール、その他のデータの不揮発性記憶を提供する。本明細書に記載のこの例示的な環境はハードディスク、取外し可の磁気ディスク848、取外し可の光ディスク852を採用しているが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)など、コンピュータによってアクセス可能なデータを格納することのできる他のタイプのコンピュータ可読媒体をこの例示的な動作環境で使用することができることが当業者には理解されるはずである。
限定ではなく例として、オペレーティングシステム858、1つまたは複数のアプリケーションプログラム860、その他のプログラムモジュール862、プログラムデータ864を含むいくつかのプログラムモジュールがハードディスク、磁気ディスク848、光ディスク852、ROM838、またはRAM840に格納することができる。アプリケーションプログラム860は、本明細書に記載のフィーチャアプリケーションを備えるインスタントメッセージングプログラム、オブジェクトストア、およびトランスポートプロトコルスタックを含むことができる。
ユーザは、キーボード866やポインティングデバイス868(「マウス」など)などオプションの入力デバイスを介して、コンピュータ830にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、シリアルポート、スキャナなどを含めることができる。これらおよび他の入力デバイスは、バス836に結合されているユーザ入力インターフェース870を介して処理ユニット832に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(「USB」)など、その他のインターフェースおよびバス構造によって接続されてもよい。
オプションのモニタ872または他のタイプの表示デバイスが、ビデオアダプタ874などのインターフェースを介してバス836に接続される。モニタに加えて、パーソナルコンピュータは通常、スピーカやプリンタなど他の周辺出力デバイス(図示せず)を含み、これらは出力周辺インターフェース875を介して接続することができる。
コンピュータ830は、リモートコンピュータ882など、1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ882は、コンピュータ830に関して本明細書に記載した要素および特徴の多くまたはすべてを含むことができる。図8に示す論理接続は、ローカルエリアネットワーク(LAN)877および一般的なワイドエリアネットワーク(WAN)879である。LAN877および/またはWAN879は、有線ネットワーク、無線ネットワーク、または有線もしくは無線ネットワークの任意の組合せとすることができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、インターネットでよくみられるものである。
LANネットワーキング環境で使用されるとき、コンピュータ830は、ネットワークインターフェースまたはアダプタ886を介してLAN877に接続される。WANネットワーキング環境で使用されるとき、コンピュータ830は通常、WAN879を介して通信を確立するためのモデム878または他の手段を含む。モデム878は、内蔵でも外付けでもよく、ユーザ入力インターフェース870または他の適切なメカニズムを介してシステムバス836に接続することができる。図8には、インターネットを介した特定の実装形態のWANが示されている。コンピュータ830は通常、インターネット880を介して通信を確立するためのモデム878または他の手段を含む。モデム878は、インターフェース870を介してバス836に接続される。
ネットワーク化された環境では、パーソナルコンピュータ830に関して示したプログラムモジュールまたはその一部をリモートのメモリストレージデバイスに格納することができる。限定ではなく例として、図8には、リモートアプリケーションプログラム889をリモートコンピュータ882のメモリデバイス上にあるものとして示している。図示および記述したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段を使用することもできることが理解されるであろう。
(結び)
記載の配置構成、手順、およびコンポーネントを構造上の特徴および/または方法上の動作に特有の言葉で述べたが、添付の特許請求の範囲に規定された内容は、記載の具体的な特徴または動作に必ずしも限定されないことを理解されたい。そうではなく、これらの具体的な特徴および動作は、請求項に記載の本内容を実施する好ましい形態として開示されている。
オブジェクトストアを利用したインスタントメッセージング会話のための例示的なネットワーク環境を示す図である。 オブジェクト管理のためのオブジェクトストアを提供するためにメッセンジャープラットフォームにおいてインスタンス化することのできる例示的なクラスを有するクラス図である。 オブジェクトを作成し、オブジェクトストアを使用してそのオブジェクトを格納するための例示的な動作を有するオブジェクト格納動作フローを示す図である。 インスタントメッセージングにおける使用のためにコンピュータネットワーク上の様々なロケーションのいずれかに格納されている可能性のあるオブジェクトを取り出すための例示的な動作を示すフローチャートである。 要求されたオブジェクトデータがローカルファイルシステムに位置する場合の例示的なオブジェクト取り出しシナリオ500を示す図である。 要求されたオブジェクトデータがネットワークストレージデバイス上に位置する場合の別の例示的なオブジェクト取り出しシナリオ600を示す図である。 要求されたオブジェクトデータがピアコンピュータに位置する場合の別の例示的なオブジェクト取り出しシナリオ700を示す図である。 フィーチャオブジェクトを管理するためにオブジェクトストアを使用してインスタントメッセージング会話を行うのに適した動作環境を提供する例示的なシステムを示す図である。
符号の説明
100 ネットワーク環境
102 クライアントコンピュータ(1)
104 クライアントコンピュータ(2)
106 ネットワーク
108 直接接続
110 スイッチボードサーバ
112 インスタントメッセージングプラットフォーム
114 フィーチャ(A)...フィーチャ(N)
116 オブジェクトストア
118 オブジェクトキャッシュマネージャ
120 トランスポートプロトコルスタック
122 トランスポートAPI
124 ファイルシステム
126 キャッシュ
128 ストレージ
500 オブジェクト取り出しシナリオ
502 フィーチャ
504 オブジェクトストア
506 キャッシュ
508 ファイルシステム
600 オブジェクト取り出しシナリオ
602 フィーチャ
604 オブジェクトストア
606 キャッシュ
608 ネットワーク
610 ストレージ
700 オブジェクト取り出しシナリオ
702 フィーチャ
704 オブジェクトストア
706 ローカルキャッシュ
708 トランスポートプロトコルスタック
710 トランスポートプロトコルスタック
712 オブジェクトストア
714 リモートファイルシステム

Claims (21)

  1. インスタントメッセージングにおいて第1のコンピュータから第2のコンピュータにオブジェクトデータを通信するための方法であって、
    第1のコンピュータが、オブジェクトデータに基づいてハッシュ値を生成することであって、前記オブジェクトデータは第1のコンピュータのユーザを表すことと、
    第1のコンピュータが、前記オブジェクトデータを前記ハッシュ値に基づいてストレージロケーションに格納することと、
    第1のコンピュータが、前記ハッシュ値および前記ストレージロケーションを識別するロケーション識別子を有するオブジェクト名を返すことであって、前記オブジェクト名によって第2のコンピュータが前記オブジェクトデータにアクセスできるようにすることと
    を備えたことを特徴とする方法。
  2. 第2のコンピュータが、前記オブジェクトデータに対する要求であって、前記オブジェクト名を含む前記要求を受け取ることと、
    第2のコンピュータが、前記オブジェクトデータを前記ハッシュ値に基づいてローカルキャッシュから取り出すことと
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. 第2のコンピュータが、前記オブジェクトデータに対する要求であって、前記オブジェクト名を含む前記要求を受け取ることと、
    第2のコンピュータが、前記要求を受け取ることに応答して、前記ロケーション識別子を使用して前記オブジェクトデータを前記ロケーションから取り出すことと
    をさらに備えることを特徴とする請求項1に記載の方法。
  4. 第2のコンピュータが、前記オブジェクトデータに対する要求であって、前記オブジェクト名を含む前記要求を受け取ることと、
    第2のコンピュータが、前記要求オブジェクトデータがローカルキャッシュにあるかどうかを前記ハッシュ値に基づいて判定することと、
    第2のコンピュータが、前記要求されたオブジェクトデータが前記ローカルキャッシュにある場合、前記ローカルキャッシュから前記オブジェクトデータを取り出すことと、
    そうでない場合、第2のコンピュータが、前記ロケーション識別子によって識別される前記ロケーションから前記要求されたオブジェクトデータを取り出すことと
    をさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記ロケーション識別子によって識別される前記ロケーションから前記要求されたオブジェクトデータを取り出すことは、
    前記要求されたオブジェクトデータをネットワークストレージから取り出すこと
    を備えることを特徴とする請求項4に記載の方法。
  6. 前記ロケーション識別子によって識別される前記ロケーションから前記要求されたオブジェクトデータを取り出すことは、
    前記要求されたオブジェクトデータを第2のコンピュータ内のローカルファイルシステムから取り出すこと
    を備えることを特徴とする請求項4に記載の方法。
  7. 前記ロケーション識別子によって識別される前記ロケーションから前記要求されたオブジェクトデータを取り出すことは、
    前記要求されたオブジェクトデータを第1のコンピュータ内のリモートファイルシステムから取り出すこと
    を備えることを特徴とする請求項4に記載の方法。
  8. 前記要求されたオブジェクトデータを第1のコンピュータ内のリモートファイルシステムから取り出すことは、
    ピアツーピア接続を介して前記リモートファイルシステムにアクセスすること
    を備えることを特徴とする請求項7に記載の方法。
  9. 前記要求されたオブジェクトデータを第1のコンピュータ内のリモートファイルシステムから取り出すことは、
    スイッチボードサーバを通した接続を介して前記リモートファイルシステムにアクセスすること
    を備えることを特徴とする請求項7に記載の方法。
  10. インスタントメッセージングにおける方法を実行するためのコンピュータ実行可能命令を格納したコンピュータ可読媒体であって、前記方法は、
    リモートコンピュータ上のユーザに関連付けられたオブジェクト名であって、前記ユーザを表すデータオブジェクトに一意に関連付けられたハッシュ値と、前記データオブジェクトのロケーションデータとを含む前記オブジェクト名を受け取ることと、
    記ハッシュ値に基づいて、ローカルキャッシュまたは前記ロケーションデータによって識別されるロケーションの一方から前記データオブジェクトを取り出すことと
    を備えたことを特徴とするコンピュータ可読媒体。
  11. 前記ハッシュ値に基づいて、ローカルキャッシュまたは前記ロケーションデータによって識別されるロケーションの一方から前記データオブジェクトを取り出すことは、
    前記データオブジェクトがローカルキャッシュにあるかどうかを前記ハッシュ値に基づいて判定することと、
    前記データオブジェクトが前記ローカルキャッシュにある場合、前記ローカルキャッシュから前記データオブジェクトを取り出すことと、
    そうでない場合、前記ロケーションデータによって識別される前記ロケーションから前記データオブジェクトを取り出すことと
    を備えたことを特徴とする請求項10に記載のコンピュータ可読媒体。
  12. 前記ロケーションデータによって識別される前記ロケーションから前記データオブジェクトを取り出すことは、前記データオブジェクトをリモートファイルシステムから取り出すことを備えたことを特徴とする請求項11に記載のコンピュータ可読媒体。
  13. 前記ロケーションデータによって識別される前記ロケーションから前記データオブジェクトを取り出すことは、前記データオブジェクトをローカルファイルシステムから取り出すことを備えたことを特徴とする請求項11に記載のコンピュータ可読媒体。
  14. 前記ロケーションデータによって識別される前記ロケーションから前記データオブジェクトを取り出すことは、前記データオブジェクトをネットワークストレージから取り出すことを備えたことを特徴とする請求項11に記載のコンピュータ可読媒体。
  15. 前記ロケーションデータによって識別される前記ロケーションから前記データオブジェクトを取り出すことは、ピアツーピア接続を介してリモートコンピュータにアクセスすることを備えたことを特徴とする請求項11に記載のコンピュータ可読媒体。
  16. インスタントメッセージング会話においてユーザを表すオブジェクトを管理するためのシステムであって、
    インスタントメッセージング会話においてユーザを表すデータオブジェクトであって、前記データオブジェクトのロケーション識別子および前記データオブジェクトのハッシュ値を含むオブジェクト名と一意に関連付けられたデータオブジェクトと
    記ロケーション識別子によって識別されるロケーションから前記データオブジェクトを取り出し、前記データオブジェクトを前記ハッシュ値に基づいてローカルキャッシュに格納するように働くオブジェクトストア
    を備えたことを特徴とするシステム。
  17. 前記オブジェクト名は、前記データオブジェクトの作成者を識別する作成者識別子をさらに備えたことを特徴とする請求項16に記載のシステム。
  18. 前記オブジェクトストアがピアツーピア接続を介してリモートストレージロケーションから前記データオブジェクトを取り出すことを可能にするトランスポートプロトコルスタックをさらに備えたことを特徴とする請求項16に記載のシステム。
  19. 前記オブジェクト名は、前記データオブジェクトのメタデータをさらに備え、
    前記メタデータは、
    フレンドリ名フィールドと、
    前記メタデータに基づくハッシュ値と
    を備えたことを特徴とする請求項16に記載のシステム。
  20. 前記ロケーション識別子は、ユニフォームリソースロケータ(URL)を備えたことを特徴とする請求項16に記載のシステム。
  21. 前記ロケーション識別子は、ユニフォームリソース識別子(URI)を備えたことを特徴とする請求項16に記載のシステム。
JP2004195946A 2003-07-01 2004-07-01 インスタントメッセージングオブジェクトストア Expired - Fee Related JP4515839B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/611,599 US7539727B2 (en) 2003-07-01 2003-07-01 Instant messaging object store

Publications (3)

Publication Number Publication Date
JP2005025759A JP2005025759A (ja) 2005-01-27
JP2005025759A5 JP2005025759A5 (ja) 2007-08-16
JP4515839B2 true JP4515839B2 (ja) 2010-08-04

Family

ID=33435438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004195946A Expired - Fee Related JP4515839B2 (ja) 2003-07-01 2004-07-01 インスタントメッセージングオブジェクトストア

Country Status (10)

Country Link
US (1) US7539727B2 (ja)
EP (1) EP1494411B1 (ja)
JP (1) JP4515839B2 (ja)
KR (1) KR101076857B1 (ja)
CN (1) CN100499596C (ja)
AT (1) ATE481803T1 (ja)
BR (1) BRPI0402530A (ja)
CA (1) CA2469503C (ja)
DE (1) DE602004029119D1 (ja)
MX (1) MXPA04006450A (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558828B1 (en) * 2003-05-29 2009-07-07 Aol Llc, A Delaware Limited Liability Company Enabling electronic logging using an instant message system
US7539727B2 (en) * 2003-07-01 2009-05-26 Microsoft Corporation Instant messaging object store
US7363378B2 (en) * 2003-07-01 2008-04-22 Microsoft Corporation Transport system for instant messaging
US7484175B2 (en) * 2003-09-30 2009-01-27 International Business Machines Corporation Method and apparatus for increasing personability of instant messaging with user images
US8171084B2 (en) * 2004-01-20 2012-05-01 Microsoft Corporation Custom emoticons
US7430720B2 (en) * 2004-03-05 2008-09-30 America Online, Inc. System and method for preventing screen-scrapers from extracting user screen names
US20080281950A1 (en) * 2004-03-08 2008-11-13 First Oversi Ltd Method and Device for Peer to Peer File Sharing
US7933958B2 (en) * 2004-06-08 2011-04-26 International Business Machines Corporation Real-time blog interaction
KR100456487B1 (ko) * 2004-08-02 2004-11-09 엔에이치엔(주) 개인 아이콘 제공 시스템 및 그 방법
US7433700B2 (en) 2004-11-12 2008-10-07 Microsoft Corporation Strategies for peer-to-peer instant messaging
US20060195532A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Client-side presence documentation
US7529255B2 (en) 2005-04-21 2009-05-05 Microsoft Corporation Peer-to-peer multicasting using multiple transport protocols
US8161005B1 (en) 2005-06-30 2012-04-17 Emc Corporation Efficient index processing
US7966292B1 (en) 2005-06-30 2011-06-21 Emc Corporation Index processing
US8156079B1 (en) * 2005-06-30 2012-04-10 Emc Corporation System and method for index processing
US7752211B1 (en) 2005-09-30 2010-07-06 Emc Corporation Adaptive index processing
US7698325B1 (en) 2005-09-30 2010-04-13 Emc Corporation Index processing for legacy systems
US7627609B1 (en) 2005-09-30 2009-12-01 Emc Corporation Index processing using transformed values
DE602006015986D1 (de) * 2005-10-21 2010-09-16 Research In Motion Ltd Instant-messaging-einrichtungs- bzw. -serverprotokoll
US8520850B2 (en) * 2006-10-20 2013-08-27 Time Warner Cable Enterprises Llc Downloadable security and protection methods and apparatus
SG145583A1 (en) * 2007-02-22 2008-09-29 Yokogawa Electric Corp System for managing information in a mesh network
DE102007010789A1 (de) 2007-03-02 2008-09-04 Deutsche Thomson Ohg Verfahren zum Betreiben eines Netzwerkes sowie lokales Netzwerk und Netzwerkkomponente
CN101257411B (zh) * 2007-03-02 2011-04-13 华硕电脑股份有限公司 实时通信的监控方法与系统
US9275401B2 (en) * 2007-09-06 2016-03-01 Adobe Systems Incorporated Tamper resistant video rendering
JP4607937B2 (ja) * 2007-10-31 2011-01-05 株式会社東芝 キャッシュ方法及びキャッシュ装置
JP4607936B2 (ja) * 2007-10-31 2011-01-05 株式会社東芝 データ転送方法及びデータ転送システム
US7916863B2 (en) * 2007-11-30 2011-03-29 Hewlett-Packard Development Company, L.P. Security printing method and system for enhancing security printing
TWI395139B (zh) * 2009-05-27 2013-05-01 Apacer Technology Inc 電子裝置及其開機方法
KR101626117B1 (ko) 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
CA2718696C (en) 2010-06-08 2018-06-12 Merge Healthcare, Inc. Remote control of medical devices using instant messaging infrastructure
US8627411B2 (en) 2010-06-17 2014-01-07 Microsoft Corporation Techniques to share binary content
US20120166953A1 (en) * 2010-12-23 2012-06-28 Microsoft Corporation Techniques for electronic aggregation of information
US9679404B2 (en) 2010-12-23 2017-06-13 Microsoft Technology Licensing, Llc Techniques for dynamic layout of presentation tiles on a grid
US9436685B2 (en) 2010-12-23 2016-09-06 Microsoft Technology Licensing, Llc Techniques for electronic aggregation of information
US9715485B2 (en) 2011-03-28 2017-07-25 Microsoft Technology Licensing, Llc Techniques for electronic aggregation of information
US20130254163A1 (en) * 2012-01-10 2013-09-26 Bret SAVAGE Cloud-based distributed data system
KR101295209B1 (ko) * 2012-02-01 2013-09-12 엔에이치엔(주) 클라우드 서버와의 양방향 연동을 통해 파일 공유를 제공하는 그룹 메시징 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
US8938428B1 (en) 2012-04-16 2015-01-20 Emc Corporation Systems and methods for efficiently locating object names in a large index of records containing object names
US10212046B2 (en) * 2012-09-06 2019-02-19 Intel Corporation Avatar representation of users within proximity using approved avatars
US10708203B2 (en) * 2014-06-25 2020-07-07 Convergence Acceleration Solutions, Llc Systems and methods for indicating emotions through electronic self-portraits
US12032598B2 (en) 2021-12-27 2024-07-09 Data Ramp Technologies Llc Personal data association method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002543676A (ja) * 1999-04-26 2002-12-17 ノキア モービル フォーンズ リミテッド インターネットをブラウズするための無線端末装置
WO2003034196A1 (en) * 2001-10-19 2003-04-24 Dmates As Rich communication over internet

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278955A (en) 1990-06-18 1994-01-11 International Business Machines Corporation Open systems mail handling capability in a multi-user environment
US5446888A (en) 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
JPH07311704A (ja) * 1994-05-19 1995-11-28 Fujitsu Ltd ディレクトリシステム
US7013327B1 (en) 1996-02-16 2006-03-14 G&H Nevada -Tek Method and apparatus for computing within a wide area network
US5943478A (en) 1997-04-04 1999-08-24 Flash Communications, Inc. System for immediate popup messaging across the internet
US6003088A (en) 1997-08-29 1999-12-14 International Business Machines Corporation Blocking IP datagrams in a multi-path channel point-to-point environment
US5987515A (en) 1997-08-29 1999-11-16 International Business Machines Corporation Internet protocol assists using multi-path channel protocol
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6252588B1 (en) 1998-06-16 2001-06-26 Zentek Technology, Inc. Method and apparatus for providing an audio visual e-mail system
US6463078B1 (en) 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6490615B1 (en) 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
TW428146B (en) 1999-05-05 2001-04-01 Inventec Corp Data file updating method by increment
US7286115B2 (en) 2000-05-26 2007-10-23 Tegic Communications, Inc. Directional input system with automatic correction
US6549937B1 (en) 1999-07-21 2003-04-15 Microsoft Corporation System and method for multi-protocol communication in a computer network
US6434568B1 (en) 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6535867B1 (en) * 1999-09-29 2003-03-18 Christopher J. F. Waters System and method for accessing external memory using hash functions in a resource limited device
JP2001175550A (ja) 1999-12-07 2001-06-29 Kizna.Com Inc クライアントサーバシステム及びクライアントサーバシステムのデータ伝送方法並びにそのプログラムを記録した媒体
US6993559B2 (en) 2000-02-14 2006-01-31 Bigbow.Com, Inc. System, method, apparatus and computer program product for operating a web site by electronic mail
US7031956B1 (en) 2000-02-16 2006-04-18 Verizon Laboratories Inc. System and method for synchronizing and/or updating an existing relational database with supplemental XML data
US6594665B1 (en) * 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
EP1130869B1 (en) 2000-03-01 2005-06-01 Sony International (Europe) GmbH Management of user profile data
US20030014477A1 (en) 2000-03-22 2003-01-16 Oppenheimer David Mig Integrated system and method of providing online access to files
WO2001093503A2 (en) 2000-05-31 2001-12-06 Snip, Llc Method and system for instant messaging
US6453294B1 (en) 2000-05-31 2002-09-17 International Business Machines Corporation Dynamic destination-determined multimedia avatars for interactive on-line communications
ATE502477T1 (de) 2000-07-25 2011-04-15 America Online Inc Videonachrichtenübermittlung
US20020036990A1 (en) 2000-09-11 2002-03-28 Ben Chodor Still picture capture, editing and distribution system utilizing a publicly accessible wide area network
US7222184B2 (en) 2000-11-29 2007-05-22 Ncr Corporation Method of downloading web content to a network kiosk in advance
KR100377936B1 (ko) 2000-12-16 2003-03-29 삼성전자주식회사 이동통신 단말기의 감정 아이콘 입력방법
AU2002234258A1 (en) 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US20020107925A1 (en) 2001-02-05 2002-08-08 Robert Goldschneider Method and system for e-mail management
US20020194006A1 (en) 2001-03-29 2002-12-19 Koninklijke Philips Electronics N.V. Text to visual speech system and method incorporating facial emotions
US7080139B1 (en) 2001-04-24 2006-07-18 Fatbubble, Inc Method and apparatus for selectively sharing and passively tracking communication device experiences
US7171415B2 (en) 2001-05-04 2007-01-30 Sun Microsystems, Inc. Distributed information discovery through searching selected registered information providers
US6983305B2 (en) 2001-05-30 2006-01-03 Microsoft Corporation Systems and methods for interfacing with a user in instant messaging
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7149189B2 (en) 2001-07-17 2006-12-12 Mcafee, Inc. Network data retrieval and filter systems and methods
US6987991B2 (en) 2001-08-17 2006-01-17 Wildseed Ltd. Emoticon input method and apparatus
US7765484B2 (en) 2001-09-28 2010-07-27 Aol Inc. Passive personalization of lists
US7233979B2 (en) 2002-03-14 2007-06-19 Microsoft Corporation Instant messaging session invite for arranging peer-to-peer communication between applications
US7203356B2 (en) * 2002-04-11 2007-04-10 Canesta, Inc. Subject segmentation and tracking using 3D sensing technology for video compression in multimedia applications
US6629793B1 (en) 2002-04-26 2003-10-07 Westie Intellectual Properties Limited Partnership Emoticon keyboard
US20030225848A1 (en) * 2002-05-31 2003-12-04 Brian Heikes Remote instant messaging personalization items
US7689649B2 (en) * 2002-05-31 2010-03-30 Aol Inc. Rendering destination instant messaging personalization items before communicating with destination
US7779076B2 (en) * 2002-05-31 2010-08-17 Aol Inc. Instant messaging personalization
US7552204B2 (en) 2002-05-15 2009-06-23 Microsoft Corporation Method and system for supporting the communication of presence information among computing devices of a network
US20030217142A1 (en) 2002-05-15 2003-11-20 Microsoft Corporation Method and system for supporting the communication of presence information regarding one or more telephony devices
EP1556956B1 (en) 2002-06-26 2018-03-07 Yahoo Holdings, Inc. System and method for communicating images between intercommunicating users
US7353253B1 (en) 2002-10-07 2008-04-01 Webex Communicatons, Inc. Peer-to-peer messaging system
US7774410B2 (en) 2002-11-18 2010-08-10 Aol Inc. Handling a multimedia object associated with an electronic message
US7289520B2 (en) * 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
US7185285B2 (en) 2003-02-19 2007-02-27 Microsoft Corporation User interface and content enhancements for real-time communication
US7296223B2 (en) 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring
WO2005017660A2 (en) 2003-07-01 2005-02-24 Apple Computer, Inc. Peer-to-peer content sharing
US7539727B2 (en) * 2003-07-01 2009-05-26 Microsoft Corporation Instant messaging object store
US20050027839A1 (en) 2003-07-31 2005-02-03 International Business Machiness Corporation Method, system and program product for dynamic transmission in a messaging session
US7437374B2 (en) 2004-02-10 2008-10-14 International Business Machines Corporation Efficient XML schema validation of XML fragments using annotated automaton encoding
US20060015560A1 (en) * 2004-05-11 2006-01-19 Microsoft Corporation Multi-sensory emoticons in a communication system
US20050273472A1 (en) 2004-06-04 2005-12-08 Prakash Reddy Verifying incremental updates to hierarchicaly structured information
US7437364B1 (en) 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7302270B1 (en) 2004-08-02 2007-11-27 Cisco Technology, Inc. Time interval processing and annotation in presence systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002543676A (ja) * 1999-04-26 2002-12-17 ノキア モービル フォーンズ リミテッド インターネットをブラウズするための無線端末装置
WO2003034196A1 (en) * 2001-10-19 2003-04-24 Dmates As Rich communication over internet

Also Published As

Publication number Publication date
BRPI0402530A (pt) 2005-05-24
CN100499596C (zh) 2009-06-10
KR101076857B1 (ko) 2011-10-25
EP1494411A1 (en) 2005-01-05
EP1494411B1 (en) 2010-09-15
KR20050004060A (ko) 2005-01-12
MXPA04006450A (es) 2005-08-19
ATE481803T1 (de) 2010-10-15
CA2469503A1 (en) 2005-01-01
US7539727B2 (en) 2009-05-26
CN1578279A (zh) 2005-02-09
US20050004993A1 (en) 2005-01-06
JP2005025759A (ja) 2005-01-27
DE602004029119D1 (de) 2010-10-28
CA2469503C (en) 2011-12-13

Similar Documents

Publication Publication Date Title
JP4515839B2 (ja) インスタントメッセージングオブジェクトストア
US6256666B1 (en) Method and system for remotely managing electronic mail attachments
KR102193489B1 (ko) 엔트리들을 위한 옵트-인 영속성을 갖는 메시지 스레드를 유지하는 장치 및 방법
JP4887365B2 (ja) トレーサビリティが減少された電子メッセージシステムおよび方法
US9191347B2 (en) Methods of routing messages using a listener registry
EP1703453B1 (en) Instant Messaging with transmission of presence documents according to the peer to peer paradigm
US8171084B2 (en) Custom emoticons
US8010681B2 (en) Communicating between an application process and a server process to manage peer-to-peer identities
KR101120796B1 (ko) 세션 기술 메시지 확장
US20020019851A1 (en) System and method for the electronic mail based management and manipulation of stored files
US20100005138A1 (en) Electronic file sharing
JP2007531071A (ja) 協働的ファイル更新システム
JP6298197B2 (ja) 対応するプライマリ・アプリケーションデータから導出される識別子に基づく補足データへのアクセス
JP2006099716A (ja) 情報処理システム、情報処理方法、プログラムおよび記録媒体
US20130145277A1 (en) Graphical user interface for electronic file sharing
US20090070410A1 (en) Managing Presence Information Of A Presentity
US20080263456A1 (en) Graphical user interface for electronic file sharing
TWI275007B (en) Font data processing system and method
JP2003157232A (ja) 電子メッセージによって計算資源にアクセスするための方法、システムおよび装置
US20100198919A1 (en) Message-based technique for sharing distribution list contents within electronic messaging systems
JP2007158687A (ja) キャッシュ管理システム、キャッシュ管理方法、キャッシュ管理プログラムおよびキャッシュ管理サーバ
US20070005710A1 (en) Message communication channel
JP2004310464A (ja) 共有コンテンツファイルの更新管理方法
Leiba IMAP" $ Important" Keyword and"\Important" Special-Use Attribute
Leiba RFC 8457: IMAP" Important"Keywordand"\Important"Special-UseAttribute

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070702

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100217

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

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

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130521

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees