JP2015501479A - ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス - Google Patents

ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス Download PDF

Info

Publication number
JP2015501479A
JP2015501479A JP2014535891A JP2014535891A JP2015501479A JP 2015501479 A JP2015501479 A JP 2015501479A JP 2014535891 A JP2014535891 A JP 2014535891A JP 2014535891 A JP2014535891 A JP 2014535891A JP 2015501479 A JP2015501479 A JP 2015501479A
Authority
JP
Japan
Prior art keywords
local
server
event
application
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014535891A
Other languages
English (en)
Other versions
JP6088531B2 (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
Priority claimed from US13/650,022 external-priority patent/US9363334B2/en
Publication of JP2015501479A publication Critical patent/JP2015501479A/ja
Application granted granted Critical
Publication of JP6088531B2 publication Critical patent/JP6088531B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

サーバー/クライアントアーキテクチャーでは、サーバーアプリケーションおよびクライアントアプリケーションは、しばしば種々の言語で開発され、各アプリケーションの種々のコンテキストに向けて専門化された種々の環境下(たとえばサーバーにおける低レベルで、性能基準を満たす、プラットフォームに専門化され、ステートレスな命令、およびクライアントにおける高レベルで、フレキシブルで、プラットフォームにとらわれない、ステートフルな言語)で実行され、しばしば種々の装置上で実行される。これらの環境の収束(たとえばNode.jsを使用するサーバー側のジャバスクリプト)によって、同じ装置上で実行されるクライアントアプリケーションにサービスを提供するサーバーのプロビジョニングができるようになる。ローカルサーバーは、装置上で発生するローカルイベントをモニターすることができ、ローカルイベントをサブスクライブするローカルクライアントに代わって特定のローカルイベントと関連付けられた1つまたは複数のサーバースクリプトを(たとえばサブスクリプションモデルを介して)実行することができる。これらの技法は、クライアントアプリケーションと同じ言語および環境でローカルイベントのサービスを開発できるようにし、ローカルイベントのサービスのプロビジョニングにおいてサーバー側のコードを使用できるようにし得る。

Description

本願発明の一実施例は、例えば、ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービスに関する。
[0001]計算分野内では、数多くのシナリオが、クライアント上でアプリケーションを実行できるようにするためのサーバー/クライアントアーキテクチャーに関係する。第1の例として、ウェブサーバー装置が、ウェブブラウザー内で実行させるために、ウェブアプリケーションを含む命令および/またはコンテンツを第2の装置に提供することができる。第2の例として、アプリケーションストアが、第2の装置上で完全に実行することができる展開可能なローカルアプリケーションを含む命令を提供することができる。第3の例として、データベースサーバーが、第2の装置上でのアプリケーションの実行を容易にするために、データを提供することができる。
[0002]これらおよび他のシナリオに鑑みて、サーバー/クライアントアーキテクチャーは、各装置上で実行される専門化された技術に繋がっている。いくつかの場合、そのような専門化は、サーバーおよびクライアントの異なる状況の観点から直接対照的な開発に繋がっている。たとえば、サーバー装置は、サーバーコンテキストに向けて専門化されたコードをしばしば伴い、そのサーバー装置は、たとえば、いくつかのクライアントに代わって並行してアプリケーションを実行する;実行可能で拡張可能な事柄で要求を満たす(たとえば要求を迅速に満たし、ユーザーインターフェースに対する依存を軽減する、または無くすように処理するのを促進するために、高度に最適化されたコードを実行する);ステートフルな(stateful)相互作用を減少させ、そこではサーバーが、第2のトランザクションを履行するために、第1のトランザクションと関連付けられたデータを格納する;かつセキュリティーの脆弱性を緩和するために、異なるクライアントから受け取った要求の実行コンテキストを確認して分離する。同様に、クライアント装置は、クライアントのコンテキストに向けて専門化されたコードをしばしば伴い、そのクライアント装置は、たとえば、特定の装置構成に依存しない、プラットフォームにとらわれない言語で命令をエンコードする;ウェブブラウザー内で実行される命令を構成する;ロバストなユーザーインターフェースをプロビジョニングする;および第2のトランザクションを促進させるために、第1のトランザクションからの情報を持続するようにクライアント上に情報を記憶する(たとえばウェブブラウザーのキャッシュ中に格納されるクッキーの形態で)。これらおよび他のやり方で、サーバーおよびクライアントのコンテキストの専門化は、これらの異なる装置で実行される、極めて異なるタイプの命令に繋がっている。
[0003]この「発明の概要」は、「発明を実施するための形態」においてさらに後述される概念の選択を簡単な形で紹介するために提供される。この「発明の概要」は、特許請求される主題の重要なファクターまたは本質的な特徴を識別する意図はなく、特許請求される主題の範囲を限定するために使用する意図もない。
[0004]サーバーおよびクライアントのコンテキストの分岐的な専門化によって各タイプの装置の性能が推進される一方で、そのような分岐性のために様々な問題が引き起こされている。1つのそのような例として、サーバーが1つのタイプのコード(たとえばサーバーの能力のために特別に構成される命令)を実行し、クライアントが第2のタイプのコード(たとえば多くの装置上で同等に実行させることができるフレキシブルでプラットフォームにとらわれない命令)を実行した場合、そのような差により、サーバーアプリケーションおよびクライアントアプリケーションの相互間で動作可能な開発が、言語、アプリケーションプログラミングインターフェース(API:application programming interface)およびデータ標準の差を起因として複雑になる恐れがある。さらに、開発者は、2つの異なる言語、実行環境およびそれらの間で交換されるデータタイプおよびオブジェクトを変換するための技法を理解する必要がある。その結果、最近の開発は、これらの環境の開発、たとえばNode.jsモデルの開発および普及に収束してきており、それによって、サーバーコンテキストに専門化された言語構造体およびAPIを有するサーバー側のジャバスクリプト(Java(登録商標)Scrip)コードが含まれて、それゆえサーバーコードおよびクライアントコードの開発を同じ言語でできるようになり、かつAPIおよびデータ型を共有できるようになる。しかし、そのように収束したサーバーおよびクライアントの開発環境は、通常、サーバー装置上で実行されるサーバーアプリケーションと1つまたは複数のクライアント装置上で実行されるクライアントアプリケーションの相互作用において適用される。
[0005]単一装置上で使用するための収束したサーバーおよびクライアントの開発環境を適用するための技法を本明細書に提示する。特に、そのような技法によって、装置が、装置上で実行されるクライアントアプリケーションに代わってローカルイベントに関連する処理を、同じ装置上に設けられるローカルサーバーによって実行できるようになる。たとえば、装置は、ローカル装置イベントをモニターし、かつ1つまたは複数のローカルイベントをそれにサブスクライブするための、同じ装置上のクライアントアプリケーションによる要求を受け入れるように構成されているローカルサーバー(ウェブサーバーなど)を実行させることができる。ローカルサーバーは、また、1つまたは複数のサーバースクリプトを関連付けることができ、ローカルサーバーは、クライアントアプリケーションがサブスクライブしているローカルイベントの発生を検出すると、ローカル装置に代わってそのローカルイベントと関連付けられたサーバースクリプト(複数可)を実行することができる。
[0006]たとえば、ローカルイベントは、着信した音声通信セッションなどのモバイルイベントを含むことができ、クライアントアプリケーションは、音声通信セッションに対してある特定の処理、たとえばセッションを記録することを要求することができる。しかし、モバイル装置上で実行されるクライアントアプリケーションが、音声通信セッションの着信時に実行されていない可能性があり、それゆえ、そのようなローカルイベントの発生をモニターしていないこともある。あるいは、モバイル装置のセキュリティーモデルによって、通常、クライアンオアプリケーションがセキュリティーまたはサービス品質方策として、そのようなローカルイベントと相互作用しないように禁止することができる(たとえばローカルアプリケーションは、装置の分離構造体内で、たとえばウェブブラウザー内で実行させることがある)。むしろ本明細書に提示する技法によって、クライアントアプリケーションは、同じ装置上のローカルサーバー(絶えず、かつウェブブラウザーの外側で実行される)に対して、着信した音声通信セッションのローカルイベントを識別するサブスクリプション要求を発行することができる。ローカルサーバーは、そのようなイベントを検出すると、クライアントアプリケーションに代わってローカルイベントに関連する1つまたは複数のサーバースクリプトを実行することができる。さらに、サーバースクリプトは、クライアントアプリケーションと同様の開発環境で設計することができる(たとえばサーバースクリプトとローカルクライアントアプリケーションの両方をジャバスクリプトで書くことができ、そこでは、サーバースクリプトは、Node.jsでのサーバー側のAPIを利用する)、それゆえ、これらの相互作用的なアプリケーションの開発が、一貫性があり互換性があるようにして促進される。そのような利点は、本明細書に提示するサーバー/クライアントアーキテクチャーの変形形態によって、達成可能とすることができる。
[0007]前述および関連する目的の達成に向けて、次の記述および付属図面によって、ある種の例示的な態様および実装形態を述べる。これらは、1つまたは複数の態様を採用することができる様々なやり方のいくつかだけを示す。本開示の他の態様、利点および新規な特徴は、付属図面とともに検討すると、次の詳細な説明から明らかになるはずである。
[0008]クライアント装置およびサーバー装置上に生じるイベントに関連するクライアントアプリケーションの要求を満たすためのクライアント/サーバーアーキテクチャーを示す例としてのシナリオの例示図である。 [0009]本明細書に提示する技法による、ローカルイベントに関連するクライアントアプリケーションの要求を満たすためのクライアント/サーバーアーキテクチャーを示す例としてのシナリオの例示図である。 [0010]本明細書に提示する技法による、ローカルイベントに関連するクライアントアプリケーションの要求を満たすように装置を構成する例としての方法の例示図である。 [0011]本明細書に提示する技法による、ローカルイベントに関連するクライアントアプリケーションの要求を満たすための例としてのシステムを示す構成要素ブロック図である。 [0012]本明細書に述べるプロビジョニングの1つまたは複数を具体化するように構成されているプロセッサー実行可能命令を含む例としてのコンピューター可読媒体の例示図である。 [0013]それぞれの構成要素が構成要素アドレスによって識別される、装置の構成要素によって生成されるローカルイベントに、ローカルアプリケーションがサブスクライブできるようにするイベントサブスクリプションモデルを特徴付ける例としてのシナリオの例示図である。 [0014]装置網の他の装置上で実行されるローカルクライアントアプリケーションとリモートクライアントアプリケーションの両方から受け取られるイベントサブスクリプション要求を受け取り満たすように構成されているローカルサーバーをそれぞれ実行させる装置のセットを含む装置網を特徴付ける例としてのシナリオの例示図である。 [0015]本明細書に述べるプロビジョニングの1つまたは複数を実施することができる例としての計算環境を例示する図である。
[0016]次に、特許請求される主題が、図面を参照して説明される、図面では、同様の参照番号が、全体にわたって同様の要素を参照するために使用される。次の記述では、説明する目的で、特許請求される主題を完全に理解してもらうために、多数の具体的な細部を述べる。しかし、特許請求される主題は、これらの具体的な細部が無くても、実施することができることは、明らかになり得る。他の事例では、特許請求される主題について述べるのを容易にするために、構造および装置をブロック図の形式で示す。
[0017]A.序論
[0018]計算分野内では、多くのシナリオが、サーバー/クライアントアーキテクチャーを含み、それは、1つまたは複数のクライアントアプリケーションに代わって1つまたは複数のサービスを提供するサーバーアプリケーション(たとえばウェブサーバー)を含む。第1の例として、サービスは、クライアント装置のウェブブラウザー内でレンダリングされるウェブページおよびウェブアプリケーションを含むウェブコンテンツのプロビジョニングを含むことができる。第2の例として、サービスは、様々な装置上で実行可能なアプリケーションのセットを格納し、かつその上で実行させることができる1つまたは複数のアプリケーションを特定の装置に提供するように構成されているアプリケーションの記憶を含むことができる。第3の例として、サービスは、データの記憶(たとえばデータベース中に)およびそれぞれのクライアント装置上で実行される様々な「データ駆動型」のアプリケーション内で使用するためのそのようなデータのプロビジョニングを含むことができる。従来のモデルでは、サーバーアプリケーションは、装置の常駐プロセスとして、サービスをクライアントアプリケーションの提供するために、クライアントアプリケーションによって接続が開始されるのを待ち、クライアントアプリケーションによる要求を受け取り、そのような要求を満たすように動作する。
[0019]多くのそのようなシナリオでは、サーバーアプリケーションは、サーバー装置上で実行され、クライアントアプリケーションは、1つまたは複数のクライアント装置上で実行される。装置は、各役割に適した異なる能力を提示することができる。たとえば、クライアント装置は、ユーザーに代わってクライアントアプリケーションを実行するユーザー指向の装置(たとえばワークステーション、ラップトップ、タブレット、携帯電話または他の電化製品)を含むことができ、そのような相互作用(たとえばタッチ可能な入力装置、高解像度ディスプレイおよび音声構成要素を含む)に向けて専門化することができる。それに反して、サーバー装置は、サービス指向の装置(たとえば専用のディスプレイ構成要素を欠いた「ヘッドレス(headless)」サーバー構成要素)を含むことができ、非常に性能基準を満たすやり方でサービス要求を満足させるように専門化することができる(たとえばハイスループットのプロセッサー、大容量データキャッシュおよび豊富なネットワークリソースを有する)。サーバー装置は、サーバーファームの形で相互運用される、いくつかのサーバー装置を含むことができる。つまり、クライアント装置は、ユーザー経験にアピールするように構成することができ、一方サーバー装置は、サービス要求の取り扱いを迅速に処理し、そのような装置の信頼性を助長するように構成することができる(たとえばサーバーファーム中に設けられるフェイルオーバー能力を通じて)。
[0020]これらおよび他の考慮事項の観点で、サーバーアプリケーションを開発するための技法は、通常、いくつかの注目すべき点で、クライアントアプリケーションを開発するための技法と異なってきている。第1の例として、クライアントアプリケーションは、広範な様々なクライアント装置上で実行されようにしばしば考案され、したがってプラットフォームにとらわれない言語(たとえばジャバスクリプト、それは、いずれものウェブブラウザー内で実行させることが可能である)で開発することができる。対照的に、サーバーアプリケーションは、性能を高めるために、サーバーの特定の構成に向けて高度に調整しカスタマイズする開発技法を使用してしばしば開発される。第2の例として、クライアントアプリケーションは、「ステートフルな(stateful)」ように、すなわちクライアントアプリケーションによってサーバー装置に発行される第2の要求に対してコンテキストおよび継続性をもたらすために、クライアントアプリケーションによってサーバー装置に発行される第1の要求に関するある情報を持続するように考案することができる。たとえば、ウェブブラウザーは、サーバーがクライアント装置を後で再び識別できるようにするために、ユーザーのマシン上に「クッキー」を格納するようにしばしば構成されている。対照的に、サーバーアプリケーションは、「ステートレスな(stateless)」やり方でしばしば考案され、それによって、いずれかの特定の第1のトランザクションに関して格納されるデータは、多くのクライアントアプリケーションに代わって遂行するとき、サーバーアプリケーションのスケーラビリティーを高めるために、減少される。
[0021]図1は、サーバー装置102上で実行されるサーバーアプリケーション104とクライアント装置106上で実行されるクライアントアプリケーション108の相互作用を特徴付ける、例としてのシナリオ100の例示図を提示する。サーバー装置102は、ネットワーク(たとえばインターネットまたはローカルエリアネットワーク(LAN))に接続することができ、1つまたは複数のクライアントアプリケーション108からの接続を待つように構成されている。クライアントアプリケーション108は、そのような接続時に、1つまたは複数の要求、たとえばウェブコンテンツ、クライアント装置106上で実行可能なアプリケーションまたは「データ駆動型」のアプリケーションによって利用されるデータを求める要求をサーバーアプリケーション104に提供することができる。サーバーアプリケーション104は、クライアントアプリケーション108に代わってそのような要求を満たすことができ、クライアント装置106は、そのようなサービスの結果をユーザー110に提示することができる。サーバーアプリケーション104は、これらの装置の異なる役割を果たすために、しばしば、サーバー装置102の特定の能力を利用するように特別に構成されている。対照的に、クライアントアプリケーション108は、しばしば、ジャバスクリプトなどの高水準言語で提供され、特定のクライアント装置106の能力にかかわりなく、広範な様々なクライアント装置106上で実行させることができる。
[0022]具体的な例として、サーバーアプリケーション104は、サーバー装置102が検出したサーバーイベント112、たとえばサーバー装置102による新しいデータの受領またはローカル環境の状況のモニタリング(たとえばサーバー装置102が位置付けられている環境の気象モニタリングまたはそれを捉えた画像)について、クライアントアプリケーション108および/またはクライアント装置106に通知するように設けることができる。クライアントアプリケーション108は、そのようなサーバーイベント112に関する通知を要求することができ、サーバーアプリケーション104は、サーバーイベント112検出時に、サーバーイベント通知114をクライアントアプリケーション108に送ることができる。加えて、クライアント装置106は、クライアント装置イベント116、たとえばユーザー110または入力構成要素から受け取られるユーザー入力をモニターすることができ、クライアント装置イベントのモニタリング118を実行し、それによって検出して、そのようなサービスをレポートすることができる。たとえば、クライアント装置106は、ハードウェアイベントをモニターし、そのようなハードウェアイベントをレポートするクライアント装置イベントに関する通知120をクライアントアプリケーション108に提供するように構成されているハードウェアドライバーを含むことができる。このように、異なる役割で異なる装置上で実行されるサーバーアプリケーション104およびクライアントアプリケーション108は、サーバーアプリケーション104によって検出されたサーバーイベント112およびクライアント装置イベントのモニタリング118によって検出されたクライアント装置イベント116について、クライアントアプリケーション108に知らせるように相互運用することができる。
[0023]しかし、図1の例としてのシナリオ100で提示したアーキテクチャーは、いくつかの弱点を示す恐れがある。特に、サーバーアプリケーション104の開発は、サーバー装置102が専門化される性質の点から、様々な装置のために汎用化された言語によるクライアントアプリケーション108の開発とは著しく異なる可能性がある。開発環境および言語が異なるので、開発者は、両方の開発環境を理解し、サーバーアプリケーション104とクライアントアプリケーション108の相互運用に対する差をネゴシエートする必要があり得る(たとえば利用できるアプリケーションプログラミング環境(API)およびデータフォーマット変換における差に対処する)。そのような差を調和させるために、より最近のサーバーアプリケーション開発モデルは、そのような相互運用のアプリケーションの開発で一貫性をもたらすクライアントアプリケーション開発に収斂してきている。第1の例として、ジャバスクリプトは、サーバーアプリケーションに対して不適切に性能基準を満たすと従来見なされてきたが、開発者コミュニティの間でジャバスクリプが広く熟知されるようになったので、Node.jsでのジャバスクリプトのコードをサーバー側で実行させるジャバスクリプトのモジュールによる開発に繋がってきている。第2の例として、サーバーが、より効率の良いやり方で、たとえばジャバスクリプトを、サーバー装置102上でより速く実行させることができるネイティブコードにコンパイルすることによって、高水準言語(ジャバスクリプトなど)を実行できるようにする技法が考案されてきた。したがって、開発者は、サーバーアプリケーション104とクライアントアプリケーション108の両方を開発するために、同じ言語および同様のAPIを使用することができる。そのように収斂した技術に鑑みて、新しいシナリオでサーバー側のコードを利用する技法を考案することができる。
[0024]B.提示される技法
[0025]サーバーアプリケーション104が、クライアント装置106と関連付けられたクライアント装置イベント116に関連するサービスを提供することができる1つのそのようなシナリオを本明細書に提示する。特に、サーバーアプリケーション104は、装置106上で実行することができ、それによって、同じ装置上で実行する1つまたは複数のクライアントアプリケーション108にローカルイベント関連のサービスを提供する。たとえば、従来のウェブサーバーは、クライアント装置107上で受動的に、しかし連続的に実行することができ、同じクライアント装置106上においてウェブブラウザー内で実行する1つまたは複数のローカルクライアントウェブアプリケーションによって開始されるローカルイベントサービスを求める要求を待つことができる。そのような要求は、たとえばローカルイベントについてクライアント装置106に通知するステップ、またはクライアントアプリケーション108に代わってローカルイベントに関連するある処理を適用するステップを含むことができる。サーバーアプリケーション104が、そのようなクライアント装置イベント116をモニターし、かつその装置イベント116に対する実行を適用できるようにすることによって、このモデルは、このモニタリングおよび計算の負荷をクライアントアプリケーション108から取り除くことができ、そのモデルは、高度に相互作用的な、その場その場のやり方でユーザー110の要求について実行することができる(たとえばクライアント装置イベント116のモニタリングおよび取り扱いは、クライアントアプリケーション108がユーザー110によって終了された後でさえ、続くことができる)。加えて、このモデルは、クライアント装置イベント116とサーバーアプリケーション104との相互作用を有効にすることができるが、そのような相互作用は、クライアントアプリケーション108が許可することはできない。たとえば、クライアントアプリケーション108は、セキュリティーの理由から、クライアントアプリケーション108をローカルクライアント装置イベント116から分離するウェブブラウザー内で実行することができるが、しかし、クライアントアプリケーション108は、サーバーアプリケーション104を要求することができ、そのサーバーアプリケーションは、ウェブブラウザーの外側で、許可を受けた能力のより広いセットを用いて実行し、検証でき信頼されるやり方でクライアント装置イベント116と相互作用する。
[0026]図2は、本明細書に提示する技法によって構成されるクライアント/サーバーアーキテクチャーを特徴付ける、例としてのシナリオ200の例示図を提示する。この例としてのシナリオ200では、クライアント装置106は、サーバーアプリケーション104と1つまたは複数のクライアントアプリケーション108の両方を実行し、クライアントアプリケーション108が、クライアントサーバーアプリケーション104との相互作用を通じてローカルイベント206と相互作用できるようにすることができる。特に、サーバーアプリケーション104は、様々なローカルイベント206のコンテキスト中で実行されるとき、異なるタイプの処理を行う1つまたは複数のサーバースクリプト202を含むことができる。クライアントアプリケーション108は、サーバーアプリケーション104に対して、クライアント装置106内で生じる可能性がある1つまたは複数の特定のローカルイベント206を識別するイベントサブスクリプション要求204を出すことができる。サーバーアプリケーション104は、1つまたは複数のサーバースクリプト202をローカルイベント206と関連付けることによって、したがって、そのようなローカルイベント206が発生したとき、サーバーアプリケーション104は、サブスクライブしたクライアントアプリケーション108に代わってサーバースクリプト202のサーバースクリプトの実行208を実行することができて、イベントサブスクリプション要求204を満たすことができる。
[0027]図2の例としてのシナリオ200で提示したアーキテクチャーのモデルは、他のローカルイベント処理モデルに関して様々な利点を可能にすることができる。第1の例として、アーキテクチャーは、サーバーアプリケーション104が、ローカルイベント206をバックグラウンドで連続的にモニターできるようにすることができ、信用されるサーバースクリプト202の実行によって、ローカルイベント206が信用されるように処理され、一方、信用されないクライアントアプリケーション104は、間欠的に、信用されないやり方で(たとえばウェブブラウザーの分離構造体内で)実行されることができる。第2の例として、広範囲なローカルイベント206をモニターし、それに対して処理を適用するように1つのサーバーアプリケーション104を提供することは、ローカルイベント206の同じセットをモニターするように、いくつかのクライアントアプリケーション108のそれぞれを構成することより効率的であることができる。第3の例として、サーバースクリプト202は、クライアントアプリケーション104と同様の開発環境で開発することができる(たとえば、サーバースクリプト202は、Node.jsでのジャバスクリプトのサーバー側のプログラミングモデルを利用することができ、クライアントアプリケーション104は、クライアント装置102のウェブブラウザー内で実行するクライアント側のジャバスクリプトとして開発することができる)。たとえば、ローカルイベント206は、クライアントアプリケーション104がそれを直接処理することがしばしば許可されないイベント、たとえば低レベルのハードウェアイベントまたはクライアントアプリケーション104がそれと相互作用することを禁じられている、クライアント装置102の異なるプロセス内で生じるイベントを含むことができる。第4の例として、これらの技法は、リモート装置上のサービスの呼び出しとして情報を送ることよりはむしろ同じユーザー装置上で情報を処理することによって、ユーザーが流布させたいと望まない可能性がある情報、たとえばユーザーに私的な情報(たとえばユーザーのアイデンティティーおよびロケーション)および/またはセキュリティー情報(たとえばパスワード)の分離を推進する。第5の例として、同じ装置上で実行されるクライアントアプリケーションのサービス中にサーバーによって実行されるアプリケーションのプログラミングシナリオは、新規の計算シナリオを提供することができ、そのようなアプリケーションのまわりで新しいマーケットの開発を可能にすることができる。これらおよび他の利点は、図2の例としてのシナリオ200で例示したアーキテクチャーおよび本明細書に提示する技法を通じて達成可能とすることができる。
[0028]C.例示的な実施形態
[0029]図3は、本明細書に提示する技法の第1の例としての実施形態を提示し、それは、プロセッサーを有し、少なくとも1つのローカルクライアントアプリケーション108を実行する装置上で要求を満たす例としての方法300として例示する。例としての方法300は、たとえば、装置のメモリー構成要素、たとえばメモリー回路、ハードディスクドライブの円盤状の記憶媒体、半導体記憶装置、または磁気または光ディスク中に格納され、かつ装置において実行されたとき、その装置に本明細書に提示する技法に従って動作させるように編成される命令のセットとして、実装することができる。例としての方法300は、302で開始され、装置のプロセッサー上で命令を実行するステップ304を含む。具体的には、これらの命令は、少なくとも1つのサーバースクリプト202を、装置で生じる可能性がある少なくとも1つのローカルイベント206と関連付けるローカルサーバーを生成306するように構成することができる。命令は、また、ローカルクライアントアプリケーション108から、選択されたローカルイベント206を指定するイベントサブスクリプション要求204を受け取ると、選択されたローカルイベント206をローカルクライアントアプリケーション108と関連付ける308ように構成されている。命令は、また、少なくとも1つのサーバースクリプト202およびローカルクライアントアプリケーション108と関連付けられたローカルイベントを検出すると、ローカルサーバー内で、ローカルクライアントアプリケーション108に代わってローカルイベント206と関連付けられ、かつそれに関連するサーバースクリプト202を実行310するように構成されている。ローカルクライアントアプリケーション108に代わってローカルイベント206を、同じ装置上で実行されるローカルサーバーを使用して処理を達成すると、例としての方法300は、本明細書に提示する技法を達成し、したがって312で終了する。
[0030]図4は、本明細書に提示する技法の第2の例としての実施形態を提示し、それは、プロセッサー404を有し、少なくとも1つのローカルクライアントアプリケーション108を実行する装置402上で要求を満たすように構成されている例としてのシステム406を特徴付ける、例としてのシナリオ400として例示する。例としてのシステム406は、たとえば、装置402のメモリー構成要素中に格納され、かつプロセッサー404上で実行されたとき、装置402に本明細書に提示する技法に従って動作させるように構成されている命令として実装することができる。例としてのシステム406は、少なくとも1つのサーバースクリプト202を少なくとも1つのローカルイベント206と関連付けるように構成されているローカルサーバー構成要素408を含む。例としてのシステム406は、また、ローカルサーバーのバインド構成要素410を含み、その構成要素は、選択されたローカルイベント206を指定するイベントサブスクリプション要求204をクライアントアプリケーション108から受け取ったとき、選択されたローカルイベント206をローカルクライアントアプリケーション108と関連付け;かつ少なくとも1つのサーバースクリプト202およびクライアントアプリケーション108と関連付けられたローカルイベント206を検出すると、ローカルサーバー構成要素408内で、クライアントアプリケーション108に代わってローカルイベント206と関連付けられ、かつそれに関連するサーバースクリプト202を実行するように構成されている。例としてのシステム406は、ローカルイベント206の発生をモニターし、そのローカルイベント206に応答してクライアントアプリケーション108に代わってサーバースクリプト202を実行することによって、装置402内で本明細書に提示する技法のアプリケーションを達成する。
[0031]なお別の実施形態は、本明細書に提示する技法を適用するように構成されているプロセッサー実行可能命令を含むコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、たとえば、有体形の装置、たとえばメモリー半導体(たとえばスタティックランダムアクセスメモリー(SRAM)、ダイナミックランダムアクセスメモリー(DRAM)および/または同期型ダイナミックランダムアクセスメモリー(SDRAM)の技術を利用する半導体)、ハードディスクドライブの円盤状の記憶媒体、フラッシュメモリー装置、または磁気または光ディスク(たとえばCD−R、DVD−Rまたはフロッピー(登録商標)ディスク)を含み、かつ装置のプロセッサーによって実行されたとき、装置に本明細書に提示する技法を実装させるコンピューター可読命令のセットをエンコードするコンピューター可読記憶媒体を含むことができる。そのようなコンピューター可読媒体は、また、様々なタイプの通信媒体、たとえば様々な物理的な現象(たとえば電磁信号、音波信号または光信号)を通じて、かつ様々な有線のシナリオ(たとえばイーサネット(登録商標)または光ファイバーケーブルを介して)および/または無線のシナリオ(たとえばWiFiなどの無線ローカルエリアネットワーク(WLAN)、ブルーツゥースなどのパーソナルエリアネットワーク(PAN)またはセル形式または無線のネットワーク)の形態で伝搬させることができる信号を含むことができ(コンピューター可読記憶媒体とはっきりと異なる技術のクラスとして)、その通信媒体は、装置のプロセッサーによって実行されたとき、装置に本明細書に提示する技法を実装させるコンピューター可読命令のセットをエンコードする。
[0032]これらの方法で考案することができる例としてのコンピューター可読媒体を図5に例示し、実装形態500は、コンピューター可読媒体502(たとえばCD−R、DVD−Rまたはハードディスクドライブの円盤状の記憶媒体)を含み、そこにはコンピューター可読データ504がエンコードされる。このコンピューター可読データ504は、次いで、本明細書に述べる原理に従って動作するように構成されているコンピューター命令506のセットを含む。1つのそのような実施形態では、プロセッサー実行可能命令506は、ローカルイベント105に関連するクライアントアプリケーション108の要求を満たす方法508、たとえば図3の例としての方法300を実行するように構成することができる。別のそのような実施形態では、プロセッサー実行可能命令506は、ローカルイベント206に関連するクライアントアプリケーション108の要求を満たすためのシステム、たとえば図4の例としてのシステム406を実装するように構成することができる。このコンピューター可読媒体のいくつかの実施形態は、このように構成されるプロセッサー実行可能命令を格納するように構成されているコンピューター可読記憶媒体(たとえばハードディスクドライブ、光ディスクまたはフラッシュメモリー装置)を含むことができる。本明細書に提示する技法に従って動作するように構成されている、多くのそのようなコンピューター可読媒体は、当業者によって考案することができる。
[0033]D.変形形態
[0034]本明細書で議論する技法は、多くの態様で変形形態を用いて考案することができ、いくつかの変形形態は、これらおよび他の技法の他の変形形態に関して追加の利点をもたらす、および/または弱点を緩和することができる。さらに、いくつかの変形形態は、組み合わせて実装することができ、いくつかの組み合わせは、相乗的な協調作用を通じて追加の利点を特徴付ける、および/または弱点を緩和することができる。変形形態は、様々な実施形態(たとえば図3の例としての方法300および図4の例としてのシステム406)中に組み込み、そのような実施形態に対して個別の、および/または相乗的な利点を与えることができる。
[0035]D1.シナリオ
[0036]これらの技法の実施形態の間で変わることができる第1の態様は、そのような技法を利用することができるシナリオに関するものである。
[0037]この第1の態様の第1の変形形態として、本明細書に提示する技法は、多くのタイプの装置402、たとえばサーバー、サーバーファーム、ワークステーション、ラップトップ、タブレット、携帯電話、ゲームコンソールおよびネットワーク電化製品とともに利用することができる。そのような装置402は、また、様々な計算構成要素、たとえば有線または無線の通信装置;ヒューマン入力装置、たとえばキーボード、マウス、タッチパッド、タッチセンサー式ディスプレイ、マイクロフォンおよびジェスチャーベースの入力構成要素;自動入力装置、たとえばスチールまたはモーションカメラ、全地球測位(GPS)装置および他のセンサー;出力装置、たとえばディスプレイおよびスピーカー;および通信装置、たとえば有線および/または無線のネットワーク構成要素を提供することができる。
[0038]この第1の態様の第2の変形形態として、本明細書に提示する技法は、様々なタイプのサーバーアプリケーション104、たとえばウェブサーバー、ファイルサーバー、アプリケーションサーバー、メディアサーバー、ピアツーピア分担調整(peer−to−peer sharing coordination)サーバー、データベースサーバー、電子メールサーバー、物理的測定基準モニタリングサーバーおよび監視制御およびデータ収集(SCADA:supervisory control and data acquisition)自動サーバーとともに利用することができる。
[0039]この第1の態様の第3の変形形態として、本明細書に提示する技法は、多くのタイプのクライアントアプリケーション108、たとえばウェブブラウザー、ファイル共有アプリケーション、メディアレンダリングアプリケーションおよびデータ駆動型クライアントアプリケーションにサービスを提供するために利用することができる。さらに、クライアントアプリケーション108は、様々なコンテキスト、たとえば装置402上でのネイティブ実行(native execution)で、1つまたは複数の管理ランタイムによって推進される管理される実行;仮想環境内の仮想実行、たとえばウェブブラウザー内で実行されるウェブアプリケーション;および分離構造内での分離された実行を実行させることができる。そのようなクライアントアプリケーション108、たとえば装置402とバンドルされるクライアントアプリケーション108;様々なサービス、たとえばネットワークによって提供され、アプリケーションサーバーから読み出されるクライアントアプリケーション;ウェブページ中に埋め込まれたコンテンツ;装置402の構成要素によって提供されるハードウェアまたはソフトウェアのドライバー;またはサーバーアプリケーション104によって提供されるクライアントアプリケーション108は、また、様々な技法を通じて、装置402が受け取ることができる。これらおよび他のシナリオは、本明細書に提示する技法に適合することができ、有利にもそれを利用することができる。
[0040]D2.ローカルイベントおよびサーバースクリプトタイプ
[0041]本明細書に提示する技法の実施形態の間で変わることができる第2の態様は、サーバーアプリケーション104がモニターすることができるローカルイベント206のタイプと、サーバーアプリケーション104が、そのようなローカルイベント206の発生時に1つまたは複数のクライアントアプリケーション108に代わって実行することができるサーバースクリプト202のタイプとを含む。
[0042]この第2の態様の第1の変形形態として、本明細書に提示する技法は、装置402上での多くのタイプのローカルイベント206、たとえば装置402の入力構成要素によるローカル入力の受領を含むローカル入力イベント;装置の検出器によるローカルユーザーから受け取られる相互作用の存在の検出またはそれのアイデンティティーを示すローカルユーザーイベント;装置によるローカルデータ処理インスタンスの完了を示すローカル処理イベント;またはクライアントアプリケーション108によるサーバーアプリケーション104に向けたイベントサブスクリプション要求204のモニタリングに関連することができるものである。1つのそのような例として、ローカルイベント206は、装置402上での第3のアプリケーション(サーバーアプリケーション104およびクライアントアプリケーション108以外)、たとえばハードウェアドライバー、オペレーティングシステムの構成要素、別のサーバーアプリケーション104または別のクライアントアプリケーション108の実行の間に生じるローカルアプリケーションイベントを含むことができる。したがって、サーバーアプリケーション104は、ローカルアプリケーションイベント(たとえば第3のアプリケーションのインスタンス化;第3のアプリケーションの一時停止、完了または終了;第3のアプリケーション内で生じる論理的例外)の発生を検出するために、装置402上で第3のアプリケーションの実行をモニターすることができ、ローカルアプリケーションイベントと関連付けられた1つまたは複数のサーバースクリプト202を実行することができる。さらに、第3のアプリケーションは、第3のアプリケーションにカスタムの1つまたは複数のアプリケーション固有のイベントを定義することができ、サーバーアプリケーション104は、別のクライアントアプリケーション108に代わって実行するために、1つまたは複数のサーバースクリプト202をアプリケーション固有のイベントと関連付けることができる。
[0043]この第2の態様の第2の変形形態として、サーバースクリプト202は、ローカルイベント206に関連する多くのタイプの処理、たとえばローカルイベント206をクライアントアプリケーション108にレポートすること、ローカルイベント206の発生をログすること、またはローカルイベント206の取り扱いの間に追加のロジックを適用することを指定することができる。さらに、サーバースクリプト202は、多くのソースから受け取ることができる;たとえば、サーバースクリプト202は、サーバーアプリケーション104とともに含めることができる、ユーザー110が提供することができる、装置402に備える、および/またはそれによって自動的に生成することができる、あるいはクライアントアプリケーション108または外部のソースから受け取ることができる。さらに、サーバーアプリケーション104は、サーバースクリプト202の完了時に、クライアントアプリケーション108に通知するように構成することができる。たとえば、クライアントアプリケーション108によって出されるイベントサブスクリプション要求204は、ローカルイベント206を検出すると、および/またはローカルイベント206と関連付けられたサーバースクリプト(複数可)202の実行が完了したとき、アプリケーションのコールバックが起動されるように指定することができる。
[0044]この第2の態様の第3の変形形態として、本明細書に提示する技法は、多くのタイプのサーバースクリプト202の実行を含むことができる。この第3の変形形態の第1の例として、そのようなサーバースクリプト202は、Node.jsモジュールを起動するサーバー側のジャバスクリプトを含む様々な技術を使用して、ローカルウェブサーバーによって実行されるように設計することができる。
[0045]この第3の変形形態の第2の例として、サーバースクリプト202は、装置402のプロセスの動作を中断することができるブロック要求を含むことができる。たとえば、サーバースクリプト202は、非常に長い計算を含む複雑なロジックを含むことがある、または別のプロセスが、現在独占的に利用しているデータまたはリソースへのアクセスを含むことがある。そのようなブロック要求は、クライアントアプリケーション108では持続不可能とすることができる(たとえばブロック要求を発行するウェブアプリケーションは、一時的に、または無期限に中断させることができ、それゆえユーザーインターフェースおよび/またはウェブアプリケーションを含むウェブブラウザーが中断される、および/または処理タイムアウト閾値を超える可能性があり、ウェブアプリケーションを終了させることになる)。その代わりに、クライアントアプリケーション108は、そのようなブロック要求をサーバーアプリケーション104に委託することができ、サーバースクリプト202は、ブロック要求および/またはロジックをブロック要求の後で実行するように指定する。バックグラウンドで実行されるサーバーアプリケーション104は、装置402のいずれものフォアグラウンドのプロセスを中断することなく、そのようなブロック要求をブロック可能なスレッドとして持続的に実行することができる、および/または延長される期間、容認可能にブロック要求の処理を継続することができる(たとえば、長時間実行されるプロセスの完了またはリソースの利用できるのを待つ)。
[0046]この第3の変形形態の第3の例として、サーバースクリプト202は、非同期のプロセスの完了を達成したとき、サーバースクリプトのコールバックが起動されるように指定することができる。サーバースクリプトのコールバックは、サーバースクリプト202によって、サーバーアプリケーション104によって、ユーザー110によって、および/またはクライアントアプリケーション108によって指定することができる。1つのそのような例として、クライアントアプリケーション108のサブスクリプション要求は、クライアントのユーザーインターフェースイベントと関連付けることができる(たとえば、クライアントアプリケーション108は、ユーザー110からの入力のある形態を待つことができる)、クライアントアプリケーション108は、入力を検出すると、アプリケーションのコールバックが起動されるように指定することができる。サーバーアプリケーション108は、サブスクリプション要求204を受け取ったとき、クライアントアプリケーション108のアプリケーションのコールバックを起動するように、サーバースクリプト202を構成する、または生成することができ、サーバースクリプト202を、ユーザー入力の検出を含むローカルイベント206と関連付けることができる。装置402は、そのなかでもたらされるクライアントのユーザーインターフェースイベントを含むクライアントアプリケーション108の実行を継続することができ、それゆえ、そのような検出のために入力構成要素をモニターする必要がなく(たとえばポーリングを介して)、クライアントアプリケーション108に、ユーザー入力イベントの検出について通知できるようにすることができる。これらおよび他のタイプのローカルイベント206および/またはサーバースクリプト202は、本明細書に提示するサーバー/クライアントアーキテクチャーおよび技法中に含めることができる。
[0047]D3.サーバースクリプトのサブスクリプションおよび実行
[0048]これら技法の実施形態の間で変わることができる第3の態様は、方法を含み、その方法によって、サーバーアプリケーション108は、それぞれのクライアントアプリケーション108からサブスクリプション要求204を受け入れる、および/または1つまたは複数のクライアントアプリケーション108に代わってローカルイベント206と関連付けられたサーバースクリプト(複数可)202を実行する。
[0049]この第3の態様の第1の変形形態として、サーバーアプリケーション104は、クライアントアプリケーション108がそれに対してサブスクライブすることができる、利用できるローカルイベント206に関する情報を提供することによって、ローカルイベント206についてのクライアントアプリケーション108のサブスクリプションを容易にすることができる。たとえば、サーバーアプリケーション104は、クライアントアプリケーション108からサブスクライブ可能なローカルイベント206のセットを識別する要求を受け取ったとき、クライアントアプリケーション108がサブスクライブ可能なローカルイベント206を列挙することができる。代替えとして、サーバーアプリケーション104は、クライアントアプリケーション108によってクエリー可能な、サブスクライブ可能なローカルイベント206のディレクトリーを単に維持することができる。
[0050]この第3の態様の第2の変形形態として、ローカルサーバーアプリケーション104は、多くのやり方でサブスクライブ可能なローカルイベント206を識別することができる。1つのそのような例として、それぞれのローカルイベント206は、ローカルイベントアドレス、たとえばクライアントアプリケーション108が、ローカルサーバーアプリケーション104からそれを通じてリソースを要求することができるハイパーテキスト転送プロトコル(HTTP:hypertext transport protocol)アドレスと関連付けることができる。ローカルサーバーアプリケーション104は、特定のアドレスを指定するクライアント要求を受け取ったとき、そのアドレスが、ローカルイベント206に対するサブスクリプション要求と関連付けられたローカルイベントアドレスであるのかどうかを決定することができ、そうである場合、クライアント要求を、ローカルクライアントアプリケーション108によって開始されたイベントサブスクリプション要求204として取り扱うことができる。さらなるそのような例として、装置402のそれぞれの構成要素は、その構成要素の構成要素名を含むローカルイベントアドレスによって識別することができ、ローカルクライアントアプリケーション108は、構成要素の構成要素名を含むローカルイベントアドレスを指定するクライアント要求を開始することによって、そのような構成要素を含むローカルイベント206をサブスクライブすることができる。
[0051]図6は、本明細書に提示する技法のこれらの変形形態のいくつかを特徴付ける、例としてのシナリオ600の例示図を提示する。この例としてのシナリオ600では、装置402は、1つまたは複数のローカルクライアントアプリケーション108がそれについてサブスクライブすることができるローカルイベント206を生成することができる構成要素のセット、たとえばユーザー110がポインター入力を生成するように動作可能なマウス構成要素602;ユーザー110がスチールまたはモーション画像を取るように動作可能なカメラ構成要素604;および専門化されたタイプの処理を実行するように構成されているプロセッサー構成要素606(たとえばレイトレーシング(ray−traced)のグラフィックプロセッサー)を含む。装置402は、それぞれの構成要素を構成要素アドレス612と関連付けることによって、そのようなイベントサブスクリプション要求204を満たすように、ローカルサーバーアプリケーション104を利用することができる。クライアントアプリケーション108は、ローカルサーバーアプリケーション104に、イベント列挙要求608(たとえば、ローカルクライアントアプリケーション108がそれをサブスクライブすることができる、ローカルクライアントアプリケーション108にアクセス可能な構成要素を含む、ローカルイベント206のタイプを、ローカルサーバーアプリケーション104が列挙するように求める要求)を送ることができ、ローカルサーバーアプリケーション104は、それぞれの構成要素について、ローカルクライアントアプリケーション108が、構成要素によって生成されるローカルイベント206をサブスクライブするために指定することができる構成要素アドレス612を識別するサブスクライブ可能なイベントの列挙610を用いて、応答することができる。ローカルクライアントアプリケーション108が、サーバーアプリケーション104に、構成要素の構成要素アドレス614を指定するイベントサブスクリプション要求204を送った場合、そのとき、ローカルサーバーアプリケーション104は、ローカルアプリケーション108をその構成要素によって生成されるローカルイベント206と関連付けることができ、そのようなローカルイベント206を検出すると、装置402の構成要素によって生成されるローカルイベント206と関連付けられ、かつそれに関連するサーバースクリプト202を実行することができる。このように、ローカルサーバーアプリケーション104は、ローカルクライアントアプリケーション108と装置402の構成要素との相互作用を可能にし、仲立ちすることができる。
[0052]この第3の態様の第3の変形形態として、装置402は、1つまたは複数のローカルクライアントアプリケーション108にローカルイベントサブスクリプションサービスを提供するローカルサーバーアプリケーション104を提供することに加えて、また、他の装置402上で実行される他のアプリケーションを含むことができる(たとえば従来のマルチデバイスのサーバー/クライアントアーキテクチャーも含むように、本明細書で提供されるローカルサービスモデルを拡張する)。第1のそのような例として、装置402は、ローカルクライアントアプリケーション108が、ローカルサーバーアプリケーション104またはリモート装置上で実行されるリモートサーバーアプリケーションのどちらかをサブスクリプション要求の対象にすることができるようにし得る。装置402は、ローカルクライアントアプリケーション108のイベントサブスクリプション要求204の対象がローカルサーバーアプリケーション104であると決定すると、イベントサブスクリプション要求204をローカルサーバーアプリケーション104に提示することができるが;しかし、装置402は、イベントサブスクリプション要求204の対象がリモート装置のリモートサーバーアプリケーションを含むと決定すると、そのサブスクリプション要求204をリモート装置に転送することができる。代替実施形態または追加実施形態として、ローカルサーバーアプリケーション104は、ローカルクライアントアプリケーション108によって提供されたイベントサブスクリプション要求204を受け取りそれにサービスを提供することに加えて、第2の装置上で実行されるリモートクライアントアプリケーションから受け取られるイベントサブスクリプション要求204を受け取ることができ、リモートアプリケーションがサブスクライブされたローカルイベント206を検出すると、第2の装置上で実行されるリモートクライアントアプリケーションに代わってローカルイベント206と関連付けられ、かつそれに関連する1つまたは複数のサーバースクリプト(複数可)202を実行することによって、そのようなイベントサブスクリプション要求204を満たすことができる。1つのそのような例として、装置網として相互運用される装置のセットのそれぞれ上にローカルサーバーアプリケーション104を提供することが大いに有利であり得て、そこでは、各ローカルサーバーアプリケーション104は、同じ装置402上でローカルに実行されるローカルクライアントアプリケーション108、ならびに装置網の他の装置402上で実行されるリモートクライアントアプリケーションに代わって、ローカルイベント206に対するイベントサブスクリプション要求204にサービスを提供するように構成されている。
[0053]図7は、本明細書に提示する技法によって装置網702を含むいくつかの装置704の相互運用を特徴付ける、例としてのシナリオ700の例示図を提示する。この例としてのシナリオ700では、装置網702のそれぞれの装置704は、各装置704内で生じるローカルイベント206に関する情報を共有するために、互いに通信し合うことができる(たとえば有線または無線のネットワークを通じて)。この目的で、各装置704は、同じ装置704上で実行されるローカルクライアントアプリケーション108によってだけでなく、装置網702の別の装置704上で実行されるリモートクライアントアプリケーションによっても提供されるイベントサブスクリプション要求204を受け取り満たすように構成されているサーバーアプリケーション104を含むことができる。さらに、第1の装置704が、装置網702の第2の装置704上で実行されるリモートサーバーアプリケーションを要求の目標として指定するイベントサブスクリプション要求204をローカルクライアントアプリケーション108から受け取ったとき、第1の装置704は、そのイベントサブスクリプション要求204を第2の装置に転送することができる。サーバーアプリケーション104は、ローカルイベント206の発生を検出すると、ローカルクライアントアプリケーション108および他の装置704上で実行されるリモートクライアントアプリケーションを識別することができ、各そのようなサブスクライブしたクライアントアプリケーション108に代わってローカルイベント206と関連付けられた1つまたは複数のサーバースクリプト202のサーバースクリプト実行208を開始させることができる。したがって、この変形形態によって、本明細書に提示するローカルイベントサービスのモデルが、本明細書に提示する技法によって他の装置704上で実行される他のクライアントアプリケーション106を含むように拡張される。
[0054]この第3の態様の第4の変形形態として、装置402は、装置402、たとえばバッテリー容量が限られて、および/または低消費電力の制限内で動作するモバイル装置、または処理および/またはメモリーを節約して使用する場合、より高い装置性能を発揮するプロセッサーのリソースを節約して使用するように、ローカルサーバーアプリケーション104および/またはローカルクライアントアプリケーション(複数可)108の実行を調節することができる。
[0055]この第4の態様の第1の変形形態として、ローカルサーバーアプリケーション108は、イベントサブスクリプション要求204が1つまたは複数のクライアントアプリケーション108から保留になっているときだけ、実行することができる。たとえば、装置402は、イベントサブスクリプション要求204を受け取ると、ローカルサーバーアプリケーション104が実行されているのかどうかを決定することができ、そうでない場合、イベントサブスクリプション要求204を満たすために、ローカルサーバーアプリケーション104の実行を起動することができる。代替実施形態または追加実施形態として、装置402は、ローカルサーバーアプリケーション104が検出することが可能であるローカルイベント206に対してイベントサブスクリプション要求がないことを検出すると、一時的に、または無期限にローカルサーバーアプリケーション104の実行を終了させることができる。このように、装置402は、その場その場でローカルサーバーアプリケーション104を動作させることができ、ローカルサーバーアプリケーション104が使用中でないとき、別な形で装置402のリソースを節約して使うことができる。
[0056]この第4の態様の第2の変形形態として、装置402のそれぞれの処理構成要素は、ローカルイベント206が検出されたときだけ、利用することができる。たとえば、ローカルイベント206が、入力構成要素を通じて受け取られるユーザー入力の処理を含む場合、装置402は、そのようなローカルイベント206が生じていないとき、その処理構成要素のパワーを抑えることができる。さらに、そのような処理は、処理構成要素と関連付けられたローカルイベント206に対する1つまたは複数のクライアントアプリケーション108のサブスクリプションを条件とすることができる。たとえば、装置402が、タッチセンサー式ディスプレイ構成要素を通じて受け取られるタッチ入力を解釈するように構成されている処理構成要素を含む場合、装置402は、タッチセンサー式ディスプレイ構成要素がタッチ入力を受け取っていないとき、その処理構成要素に供給するパワーを減少させる、または無くすことができ、任意選択で、いずれかのクライアントアプリケーション108が、現在、タッチセンサー式ディスプレイ構成要素を通じたタッチ入力を受け取り処理するように構成されているのかどうかをさらに条件とすることができる。そのような技法は、本明細書に提示する技法によって装置のリソース(たとえばパワー、プロセッサー、メモリーおよび通信容量)の節約を容易にすることができる。サーバースクリプト202のサブスクリプションおよび実行のこれらおよび他の変形形態は、本明細書に提示する技法によって、様々なローカルイベント206の検出に応答して、かつそれと関連付けられて、1つまたは複数のクライアントアプリケーション108に代わってサーバーアプリケーション104が利用することができる。
[0057]E.計算環境
[0058]図8および次の議論によって、本明細書に述べるプロビジョニングの1つまたは複数についての実施形態を実装するのに適切な計算環境に関して簡単に概括的な説明を提供する。図8の動作環境は、適切な動作環境の単に例の1つあり、動作環境の使用または機能性の範囲に対していずれもの限定を示唆する意図はない。例の計算装置は、ただしこれらに限定されないが、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップ装置、モバイル装置(たとえば携帯電話、携帯情報端末(PDA)、メディアプレーヤーなど)、マルチプロセッサーシステム、家庭用電化製品、ミニコンピューター、メインフレームコンピューター、上記のシステムまたは装置のいずれかを含む分散型計算環境などを含む。
[0059]必要ではないが、実施形態を、1つまたは複数の計算装置によって実行される「コンピューター可読命令」の概括的なコンテキストで述べる。コンピューター可読命令は、コンピューター可読媒体を介して分散させることができる(以下で論じる)。コンピューター可読命令は、プログラムモジュール、たとえば関数、オブジェクト、アプリケーションプログラミングインターフェース(API)、データ構造などとして実装することができ、それは、特定のタスクを実行する、または特定の抽象データ型を実装する。通常、コンピューター可読命令の機能性は、様々な環境下で所望のように結合する、分散させることができる。
[0060]図8は、本明細書に提供する1つまたは複数の実施形態を実装するように構成されている計算装置802を含むシステム800の例を例示する。1つの構成では、計算装置802は、少なくとも1つの処理ユニット806およびメモリー808を含む。計算装置の正確な構成およびタイプに依存して、メモリー808は、揮発性(たとえばRAMなど)、不揮発性(たとえばROM、フラッシュメモリーなど)またはその2つのある組み合わせとすることができる。この構成は、図8に点線804によって例示する。
[0061]他の実施形態では、装置802は、追加の特徴および/または機能性を含むことができる。たとえば、装置802は、また、ただしこれらに限定されないが、磁気記憶装置、光記憶装置などを含む、追加の記憶装置(たとえば取り外し可能な、および/または取り外しできない)を含むことができる。そのような追加の記憶装置は、図8に記憶装置810によって例示する。一実施形態では、本明細書に提供する1つまたは複数の実施形態を実装するコンピューター可読命令が、記憶装置810中に存在することができる。記憶装置810は、また、オペレーティングシステム、アプリケーションプログラムなどを実装する他のコンピューター可読命令を格納することができる。コンピューター可読命令は、たとえば、処理ユニット806によって実行するためにメモリー808中にロードすることができる。
[0062]用語「コンピューター可読媒体」は、本明細書で使用するとき、コンピューター記憶媒体を含む。コンピューター記憶媒体は、情報、たとえばコンピューター可読命令または他のデータを記憶するために、いずれかの方法または技術で実装される揮発性および不揮発性、取り外し可能な、および取り外しできない媒体を含む。メモリー808および記憶装置810は、コンピューター記憶媒体の例である。コンピューター記憶媒体は、ただしこれらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリーまたは他のメモリー技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、装置802がアクセスすることができる、いずれもの他の媒体を含む。いずれものそのようなコンピューター記憶媒体は、装置802の一部とすることができる。
[0063]装置802は、また、装置802が他の装置と通信することを可能にする通信接続部(複数可)816を含むことができる。通信接続部(複数可)816は、ただしこれらに限定されないが、モデム、ネットワークインターフェースカード(NIC)、統合ネットワークインターフェース、無線周波送信機/受信機、赤外線ポート、USB接続部、または計算装置802を他の計算装置に接続するための他のインターフェースを含むことができる。通信接続部(複数可)816は、有線接続部または無線接続部を含むことができる。通信接続部(複数可)816は、通信メディアを送信する、および/または受信することができる。
[0064]用語「コンピューター可読媒体」は、通信メディアを含むことができる。通信メディアは、通常、搬送波または他の移送メカニズムなどの「変調されるデータ信号」の形態でコンピューター可読命令または他のデータを具体化し、いずれもの情報配信メディアを含む。用語「変調されるデータ信号」は、情報を信号中にエンコードするように、その特性の1つまたは複数が設定される、または変化する信号を含むことができる。
[0065]装置802は、入力装置(複数可)814、たとえばキーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外線カメラ、ビデオ入力装置および/またはいずれもの他の入力装置を含むことができる。出力装置(複数可)812、たとえば1つまたは複数のディスプレイ、スピーカー、プリンターおよび/またはいずれもの他の出力装置も、装置802中に含めることができる。入力装置(複数可)814および出力装置(複数可)812は、有線接続部、無線接続部またはそのいずれもの組み合わせを介して装置802に接続することができる。一実施形態では、別の計算装置からの入力装置または出力装置は、計算装置802用の入力装置(複数可)814および出力装置(複数可)812として使用することができる。
[0066]計算装置802の構成要素は、様々な相互接続部、たとえばバスによって接続することができる。そのような相互接続部は、ペリフェラルコンポーネントインターコネクト(PCI)、たとえばPCIエクスプレス、ユニバーサルシリアルバス(USB)、ファイアワイア(Firewire)(IEEE1394)、光バス構造などを含むことができる。別の実施形態では、計算装置802の構成要素は、ネットワークによって相互接続することができる。たとえば、メモリー808は、ネットワークよって相互接続され、異なる物理的な記憶場所に位置決めされる複数の物理的なメモリーユニットから構成することができる。
[0067]当業者は、コンピューター可読命令を格納するために利用される記憶装置は、ネットワークにわたって分散させることができることを理解されるはずである。たとえば、ネットワーク818を介してアクセス可能な計算装置820は、本明細書で提供する1つまたは複数の実施形態を実装するコンピューター可読命令を格納することができる。計算装置802は、計算装置820にアクセスし、実行するためにコンピューター可読命令の一部、またはそのすべてをダウンロードすることができる。代替実施形態として、計算装置802は、必要に応じてコンピューター可読命令の複数の部分をダウンロードすることができる、またはいくらかの命令は、計算装置802で、いくらかの命令は、計算装置820で実行することができる。
[0068]F.用語の使用法
[0069]構造上の特徴および/または方法論的な動作に固有の言語で主題を述べてきたが、添付の特許請求の範囲で定義される主題は、上記に述べた具体的な特徴または動作に必ずしも限定されないことを理解すべきである。それどころか、上記に述べた具体的な特徴および動作は、特許請求の範囲を実施する例の形態として開示されたものである。
[0070]用語「構成要素」、「モジュール」、「システム」、「インターフェース」などは、本出願で使用するとき、概して、コンピューター関連の実体、あるいはハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアを指すことを意図する。たとえば、構成要素は、ただしこれらに限定されないが、プロセッサー上で動作するプロセス、プロセッサー、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピューターとすることができる。例示として、コントローラー上で動作するアプリケーションとコントローラーの両方は、構成要素とすることができる。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に常駐することができ、構成要素は、1つのコンピューター上にローカライズする、および/または2つ以上のコンピューターの間で分散させることができる。
[0071]さらにまた、特許請求される主題は、方法、機器または標準のプログラミングおよび/またはエンジニアリング技法を使用して製造品目として実装することができ、それによって、開示する主題を実装するようにコンピューターを制御するソフトウェア、ファームウェア、ハードウェア、またはそのいずれもの組み合わせを生成する。用語「製造品目」は、本明細書で使用するとき、いずれかのコンピューター可読装置、通信事業者またはメディアからアクセス可能なコンピュータープログラムを包含すると意図する。もちろん、当業者は、特許請求される主題の範囲または趣旨から逸脱せずに、この構成に対して多くの変更を行うことができることを認識されるはずである。
[0072]実施形態の様々な動作が、本明細書で提供されている。一実施形態では、述べた動作の1つまたは複数は、1つまたは複数のコンピューター可読媒体上に格納されるコンピューター可読命令の構成要素になることができ、それは、計算装置によって実行された場合、計算装置に述べた動作を実行させることになる。動作のいくつか、またはそのすべてを述べた順序は、これらの動作が必然的に順序に依存すると暗示していると解釈すべきでない。この記述の恩恵を受ける当業者は、代替の順序付けを理解されるはずである。さらに、動作のすべてが、本明細書で提供する各実施形態中に必ずしも存在しないことを理解されるはずである。
[0073]さらに、言葉「例としての、例示的な(exemplary)」は、例、事例または例示するものとして働くことを意味するように本明細書で使用する。「例としての」として本明細書に述べたいずれもの態様および設計は、他の態様または設計より必ずしも有利であると解釈すべきでない。むしろ、言葉「例としての、例示的な」の使用は、具体的な様子で概念を提示するためと意図する。用語「or」は、この出願で使用するとき、排他的な「or」よりはむしろ包含的な「or」を意味すると意図する。すなわち、他に指定のない限り、またはコンテキストから明らかでない限り、「Xは、AまたはBを用いる」は、自然の包含的な置換のいずれも意味すると意図する。つまり、XがAを用いる、XがBを用いる、またはXがAとBの両方を用いる場合、「XがAまたはBを用いる」は、前述の事例のいずれでも成立する。さらに、冠詞「a」、「an」は、この出願および添付の特許請求の範囲で使用するとき、他に指定のない限り、または単数形を対象とすることがコンテキストから明らかでない限り、概して、「1つまたは複数の」を意味すると解釈することができる。
[0074]また、1つまたは複数の実装形態に関して本開示を示し述べてきたが、同等の代替形態および変更形態が、この明細書および付属の図面を読み理解したことに基づき、当業者の心に浮かぶことになるはずである。本開示は、そのような変更形態および代替形態のすべてを含み、次の特許請求の範囲によってのみ限定される。特に、上記に述べた構成要素(たとえば要素、リソースなど)によって実行される様々な機能に関して、そのような構成要素を述べるために使用する用語は、他に示されていない限り、たとえ本明細書に例示した本開示の実装例としての実装形態の機能を実行する開示した構造に構造上同等でなくても、述べた構成要素(たとえば機能的に同等である)の指定された機能を実行する、いずれもの構成要素に対応すると意図する。加えて、本開示の具体的な特徴は、いくつかの実装形態の1つだけに関して開示している場合があり、そのような特徴は、いずれもの所与の、または特定の適用に所望のように、有利なようになり得るように他の実装形態の1つまたは複数の他の特徴と組み合わせることができる。さらにまた、用語「含む(include)」、「有する(having)」、「有する(has)」、「備える(with)」またはその変形を、発明を実施するための形態または特許請求の範囲中のどちらかで使用する限りにおいて、そのような用語は、用語「備える、含む(comprising)」と同様に包含的であると意図する。

Claims (10)

  1. 少なくとも1つのローカルクライアントアプリケーションを実行するプロセッサーを有する装置上で要求(requests)を満たす(fulfilling)方法であって、
    前記装置上で、
    少なくとも1つのサーバースクリプト(script)を少なくとも1つのローカルイベントと関連付けるローカルサーバーを生成し、
    前記ローカルクライアントアプリケーションから、選択されたローカルイベントを指定するサブスクリプション要求を受け取ると、前記選択されたローカルイベントを前記ローカルクライアントアプリケーションと関連付け、
    少なくとも1つのサーバースクリプトおよびローカルクライアントアプリケーションと関連付けられたローカルイベントを検出すると、前記ローカルサーバー内で、前記ローカルクライアントアプリケーションに代わって前記ローカルイベントと関連付けられ、かつそれに関連する前記サーバースクリプトを実行する
    ように構成されている命令を実行するステップ
    を含む、方法。
  2. 前記ローカルサーバーは、Node.jsモジュールを含むウェブサーバーを含み、
    少なくとも1つのサーバースクリプトが、前記ローカルクライアントアプリケーションに代わって前記ウェブサーバーの前記Node.jsモジュールを起動するジャバスクリプトを含む、
    請求項1に記載の方法。
  3. ローカルイベントのセットから選択された前記ローカルイベントは、
    前記装置の入力構成要素によるローカル入力の受領(receipt)を示すローカル入力イベントと、
    前記装置の検出器構成要素によるローカルユーザーの検出(detection)を示すローカルユーザーイベントと、
    前記装置によるローカルデータ処理インスタンスの完了を示すローカル処理イベントと、
    クライアントアプリケーションによって前記ローカルサーバーに向けられるクライアント要求と、
    を含む、請求項1に記載の方法。
  4. 前記ローカルイベントは、前記装置上での第3のアプリケーションの実行(execution)の間に生じるローカルアプリケーションイベントを含み、
    前記ローカルイベントを検出するステップは、前記ローカルアプリケーションイベントを検出するために、前記第3のアプリケーションの前記実行をモニターするステップを含む、
    請求項1に記載の方法。
  5. 前記第3のアプリケーションは、アプリケーション固有(application-specific)のイベントを定義し、
    前記命令は、さらに、前記ローカルクライアントアプリケーションから、前記第3のアプリケーションの前記アプリケーション固有のイベントを指定するサブスクリプション要求を受け取ると、前記アプリケーション固有のイベントを前記第3のアプリケーションと関連付けるように構成されている、
    請求項4に記載の方法。
  6. 前記命令は、前記ローカルクライアントアプリケーションから、目標(target)を指定するサブスクリプション要求を受け取ると、
    前記目標は前記装置上に前記ローカルサーバーを含むのかどうかを決定することと、
    前記目標は前記装置上に前記ローカルサーバーを含むと決定すると、前記サブスクリプション要求を前記ローカルサーバーに提示することと、
    前記目標は前記装置の外部に在るリモートサーバーを含むと決定すると、前記サブスクリプション要求を前記リモートサーバーに送ることと、
    を行うようにさらに構成されている、
    請求項5に記載の方法。
  7. 前記命令は、第2の装置上で実行されるリモートクライアントアプリケーションからサブスクリプション要求を受け取ると、前記選択されたローカルイベントを前記リモートクライアントアプリケーションと関連付けることと、
    少なくとも1つのサーバースクリプトおよびリモートクライアントアプリケーションと関連付けられたローカルイベントを検出すると、前記ローカルサーバー内で、前記リモートクライアントアプリケーションに代わって(on behalf of)前記ローカルイベントと関連付けられた前記サーバースクリプトを実行することと、
    を行うようにさらに構成されている、
    請求項4に記載の方法。
  8. 前記ローカルサーバーは、それぞれアドレスを指定するサブスクリプション要求に応答し、
    それぞれのローカルイベントが、ローカルイベントアドレスと関連付けられ、
    前記サブスクリプション要求をクライアントから受け取るステップが、前記クライアントアプリケーションから、ローカルイベントと関連付けられたローカルイベントアドレスを指定するサブスクリプション要求を受け取るステップを含む、
    請求項4に記載の方法。
  9. それぞれのローカルイベントは、構成要素(component)名によって識別可能な(identifiable)、前記装置の少なくとも1つの構成要素と関連付けられ、
    ローカルイベントの前記ローカルイベントアドレスは、前記ローカルイベントと関連付けられた前記構成要素の前記構成要素名を含む、
    請求項8に記載の方法。
  10. 前記命令は、
    前記ローカルイベントが検出される前に、前記装置の少なくとも1つの処理構成要素へのパワー(power)を減少させることと、
    前記ローカルイベントを検出すると、前記少なくとも1つの処理構成要素へのパワーを回復させることと
    を行うようにさらに構成されている、
    請求項1に記載の方法。
JP2014535891A 2011-10-11 2012-10-11 ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス Active JP6088531B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161546049P 2011-10-11 2011-10-11
US61/546,049 2011-10-11
US201261617474P 2012-03-29 2012-03-29
US61/617,474 2012-03-29
US13/650,022 US9363334B2 (en) 2011-10-11 2012-10-11 Event service for local client applications through local server
US13/650,022 2012-10-11
PCT/US2012/059832 WO2013055973A1 (en) 2011-10-11 2012-10-11 Event service for local client applications through local server

Publications (2)

Publication Number Publication Date
JP2015501479A true JP2015501479A (ja) 2015-01-15
JP6088531B2 JP6088531B2 (ja) 2017-03-01

Family

ID=50548846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014535891A Active JP6088531B2 (ja) 2011-10-11 2012-10-11 ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス

Country Status (11)

Country Link
EP (2) EP4105777A1 (ja)
JP (1) JP6088531B2 (ja)
KR (1) KR101955744B1 (ja)
CN (2) CN107515791B (ja)
AU (1) AU2012322684B2 (ja)
BR (1) BR112014008762B1 (ja)
CA (1) CA2851514C (ja)
IN (1) IN2014CN02434A (ja)
MX (1) MX345059B (ja)
RU (1) RU2616162C2 (ja)
WO (1) WO2013055973A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9876849B2 (en) * 2014-11-05 2018-01-23 Google Llc Opening local applications from browsers
US9876852B2 (en) * 2015-07-23 2018-01-23 Microsoft Technology Licensing, Llc Coordinating actions across platforms
KR101865343B1 (ko) * 2017-05-29 2018-07-13 김희민 웹 서비스 애플리케이션 개발을 위한 서버측 프레임워크 장치, 이에 의해 개발된 웹 서비스 애플리케이션의 실행 방법 및 이를 위한 컴퓨터 프로그램

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728736A (ja) * 1993-07-15 1995-01-31 Hitachi Ltd マルチウィンドウ制御方式
JPH09167097A (ja) * 1995-12-15 1997-06-24 Mitsubishi Electric Corp リモート・プロシジャ・コールシステム
JP2006260372A (ja) * 2005-03-18 2006-09-28 Fujitsu Ltd 情報処理装置、高速起動方法、及びプログラム
JP2008158637A (ja) * 2006-12-21 2008-07-10 Hitachi Ltd 情報処理装置、プログラム及び情報処理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6268852B1 (en) * 1997-06-02 2001-07-31 Microsoft Corporation System and method for facilitating generation and editing of event handlers
US8001232B1 (en) * 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US6625804B1 (en) * 2000-07-06 2003-09-23 Microsoft Corporation Unified event programming model
US7752214B2 (en) * 2000-09-01 2010-07-06 Op40, Inc. Extended environment data structure for distributed digital assets over a multi-tier computer network
US7509651B2 (en) * 2003-05-23 2009-03-24 Hewlett-Packard Development Company, L.P. System and method for providing event notifications to information technology resource managers
US7559065B1 (en) * 2003-12-31 2009-07-07 Emc Corporation Methods and apparatus providing an event service infrastructure
US7461134B2 (en) * 2004-11-19 2008-12-02 W.A. Krapf, Inc. Bi-directional communication between a web client and a web server
CN101005396B (zh) * 2006-01-16 2010-07-28 中国科学院计算技术研究所 一种网格环境下支持网格资源动态集成和协作的方法
RU2466450C2 (ru) * 2007-01-16 2012-11-10 Гизмокс Лтд. Способ и система для создания ит-ориентированных серверных сетевых приложений
US8443346B2 (en) * 2007-01-18 2013-05-14 Aol Inc. Server evaluation of client-side script
CN101309165B (zh) * 2007-05-14 2012-04-04 华为技术有限公司 信息报告的控制方法、装置和设备
CN101110822B (zh) * 2007-07-06 2011-11-02 华为技术有限公司 基于网络配置协议的事件通知发送方法、系统及设备
CN101855883A (zh) * 2007-10-19 2010-10-06 皇家Kpn公司 用于管理服务交互的系统
US8161160B2 (en) * 2008-02-28 2012-04-17 Microsoft Corporation XML-based web feed for web access of remote resources
US8762759B2 (en) * 2008-04-10 2014-06-24 Nvidia Corporation Responding to interrupts while in a reduced power state
CN201210690Y (zh) * 2008-05-06 2009-03-18 上海海事大学 基于浏览器和服务器结构的船舶动态和海运服务查询系统
JP4748819B2 (ja) * 2009-01-28 2011-08-17 インターナショナル・ビジネス・マシーンズ・コーポレーション クライアントプログラム、端末、方法、サーバシステムおよびサーバプログラム
CN101854371B (zh) * 2009-03-31 2016-08-03 华为技术有限公司 JavaScript对象的调用及处理的方法、装置
US20110239108A1 (en) * 2010-03-26 2011-09-29 Microsoft Corporation Configurable dynamic combination of html resources for download optimization in script based web page
CN102158516B (zh) * 2010-08-19 2013-08-07 华为技术有限公司 服务组合编译方法及编译器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728736A (ja) * 1993-07-15 1995-01-31 Hitachi Ltd マルチウィンドウ制御方式
JPH09167097A (ja) * 1995-12-15 1997-06-24 Mitsubishi Electric Corp リモート・プロシジャ・コールシステム
JP2006260372A (ja) * 2005-03-18 2006-09-28 Fujitsu Ltd 情報処理装置、高速起動方法、及びプログラム
JP2008158637A (ja) * 2006-12-21 2008-07-10 Hitachi Ltd 情報処理装置、プログラム及び情報処理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016027502; 清水俊博: 'スケーラブルなWebアプリを実現 サーバサイドJavaScript 「Node.js」を知る' SoftwareDesign 251号, 20110918, 64-71ページ, (株)技術評論社 *
JPN6016027504; 'Kinect Geeks 第5回 ユーザー・ジェネレータ' I/O 第36巻 第8号, 20110801, 143-145ページ, 株式会社工学社 *

Also Published As

Publication number Publication date
CN107515791A (zh) 2017-12-26
EP4105777A1 (en) 2022-12-21
AU2012322684B2 (en) 2017-05-25
CA2851514A1 (en) 2013-04-18
RU2616162C2 (ru) 2017-04-12
MX345059B (es) 2017-01-16
MX2014004482A (es) 2014-08-01
EP2766806A4 (en) 2015-11-11
IN2014CN02434A (ja) 2015-06-19
RU2014114277A (ru) 2015-10-20
AU2012322684A1 (en) 2014-05-01
WO2013055973A1 (en) 2013-04-18
CN107515791B (zh) 2021-03-02
CA2851514C (en) 2020-04-21
BR112014008762B1 (pt) 2021-08-17
CN103975301B (zh) 2017-06-09
JP6088531B2 (ja) 2017-03-01
EP2766806A1 (en) 2014-08-20
KR20140077170A (ko) 2014-06-23
EP2766806B1 (en) 2022-08-24
BR112014008762A2 (pt) 2018-06-05
KR101955744B1 (ko) 2019-03-07
CN103975301A (zh) 2014-08-06

Similar Documents

Publication Publication Date Title
US11223704B2 (en) Event service for local client applications through local server
TWI573075B (zh) 持續及有彈性之工作處理
US10201750B2 (en) Method and apparatus of preloading browser game on client
US10579442B2 (en) Inversion-of-control component service models for virtual environments
US20170147415A1 (en) Techniques to remotely access object events
JP6088531B2 (ja) ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス
US20240143740A1 (en) Securing function as a service cloud computing environments
US11755375B2 (en) Aggregating host machines into a single cloud node for workloads requiring excessive resources
KR20210040333A (ko) 요청 처리 방법,장치,기기, 컴퓨터 저장매체 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161006

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170203

R150 Certificate of patent or registration of utility model

Ref document number: 6088531

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250