IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダッソー システムズ アメリカス コーポレイションの特許一覧

特開2024-95996ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法
<>
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図1
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図2
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図3A
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図3B
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図3C
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図4
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図5A
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図5B
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図5C
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図5D
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図5E
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図6
  • 特開-ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024095996
(43)【公開日】2024-07-11
(54)【発明の名称】ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法
(51)【国際特許分類】
   G06F 9/54 20060101AFI20240704BHJP
【FI】
G06F9/54 Z
【審査請求】未請求
【請求項の数】13
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023202353
(22)【出願日】2023-11-30
(31)【優先権主張番号】18/147,897
(32)【優先日】2022-12-29
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.JAVASCRIPT
3.UNIX
(71)【出願人】
【識別番号】514180812
【氏名又は名称】ダッソー システムズ アメリカス コーポレイション
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ヘーネ,ジョン
(72)【発明者】
【氏名】ミラー,ジョゼフ
(72)【発明者】
【氏名】デジエル,スティーブン
(72)【発明者】
【氏名】マイヤー,ポール
(57)【要約】
【課題】 ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法を提供する。
【解決手段】 システム及び方法は、リモートサーバと通信するホストコンピューティングデバイス上で走らせるウェブアプリケーションによるネイティブバイナリDLLへのアクセスを提供する。ウェブアプリケーションに対するブラウザ拡張機能とネイティブメッセージングアプリケーションは、標準入力/出力を介して通信する。バイナリDLL用のラッパーとして構成されたホストコンピューティングデバイス上の長時間実行演算プロセスは、ホストコンピューティングデバイスによって実行可能である。ネイティブメッセージングアプリケーションと長時間実行演算プロセスは、名前付きパイプを介して互いに通信し、長時間実行演算プロセス持続時間は、ネイティブメッセージングアプリケーション持続時間とは無関係である。
【選択図】 図1
【特許請求の範囲】
【請求項1】
ホストコンピューティングデバイス上で実行される、ウェブアプリケーションによるネイティブバイナリダイナミックリンクライブラリ(DLL)へのアクセスを提供するためのシステムであって、
リモートサーバと通信する前記ホストコンピューティングデバイス上で走らせる前記ウェブアプリケーションと、
前記ウェブアプリケーションに対するブラウザ拡張機能と、
前記ホストコンピューティングデバイスのオペレーティングシステムによって提供される標準入力/出力(STD IO)を介して前記ブラウザ拡張機能と通信するように構成された前記ホストコンピューティングデバイス上で走らせるネイティブメッセージングアプリケーションと、
前記ホストコンピューティングデバイスによって実行されるように構成された実行可能命令を含む前記バイナリDLLと、
前記ネイティブバイナリDLL用のDLLラッパーとして構成された前記ホストコンピューティングデバイス上の長時間実行演算プロセスと
を含み、
前記ネイティブメッセージングアプリケーション及び前記長時間実行演算プロセスが、名前付きパイプを介して互いに通信するように構成され、前記長時間実行演算プロセスが、前記ネイティブメッセージングアプリケーションの第1の持続時間とは無関係の第2の持続時間を有する、システム。
【請求項2】
前記ネイティブバイナリDLLと通信する周辺デバイスをさらに含む、請求項1に記載のシステム。
【請求項3】
前記周辺デバイスが、カメラを含む、請求項2に記載のシステム。
【請求項4】
前記長時間実行演算プロセスが、Windowsサービスを含む、請求項1に記載のシステム。
【請求項5】
ホストコンピューティングデバイス上で走らせるウェブアプリケーションとネイティブバイナリダイナミックリンクライブラリ(DLL)との間の通信を確立するシステムを初期化するための方法であって、
前記ホストコンピューティングデバイス上で走らせるブラウザ拡張機能に初期化データを送信するステップと、
前記ブラウザ拡張機能によって、前記ホストコンピューティングデバイス上のネイティブメッセージングアプリケーションを立ち上げるステップと、
前記ホストコンピューティングデバイスのオペレーティングシステムによって提供される標準入力出力手段(STD IO)を介して、前記ネイティブメッセージングアプリケーションに初期化データを送信するステップと、
前記ネイティブメッセージングアプリケーションが、前記ネイティブバイナリDLLを含む長時間実行演算プロセスを立ち上げる及び/又は長時間実行演算プロセスに接続するステップと、
名前付きパイプを介して前記長時間実行演算プロセスに前記初期化データを送信するステップと
を含み、
前記ネイティブバイナリDLLが、前記ローカルマシン上で演算集約型の処理を実行するように構成される、方法。
【請求項6】
前記名前付きパイプを初期化するステップをさらに含む、請求項5に記載の方法。
【請求項7】
前記名前付きパイプに接続するステップをさらに含む、請求項5に記載の方法。
【請求項8】
前記長時間実行演算プロセスが、前記ネイティブバイナリDLLに初期化データを提供するステップをさらに含む、請求項5に記載の方法。
【請求項9】
前記長時間実行演算プロセスが、ローカル資源を初期化する及びローカル資源に接続するステップをさらに含む、請求項5に記載の方法。
【請求項10】
前記ローカル資源が、カメラを含み、前記ローカル資源が、前記ホストコンピューティングデバイスに接続された周辺デバイスを含む、請求項9に記載の方法。
【請求項11】
ホストコンピューティングデバイス上で走らせるウェブアプリケーションとネイティブバイナリダイナミックリンクライブラリ(DLL)との間の通信のための方法であって、
前記ウェブアプリケーションによって、ブラウザ拡張機能にデータに対する要求を送信するステップであって、データに対する前記要求の最終受信者が、前記ホストコンピューティングデバイス上で走らせる前記ネイティブバイナリDLLを含む長時間実行演算プロセスを含む、ステップと、
前記ホストコンピューティングデバイスのオペレーティングシステムによって提供される標準入力出力手段(STD IO)を介して、前記ブラウザ拡張機能が、ネイティブメッセージングアプリケーションに前記データ要求を転送するステップと、
前記ネイティブメッセージングアプリケーションが、名前付きパイプを介して前記演算プロセスに前記要求を転送するステップと
を含む、方法。
【請求項12】
前記長時間実行演算プロセスが、前記名前付きパイプを介して、前記ネイティブメッセージングアプリケーションに前記ウェブアプリケーションに対するメッセージを送信するステップと、
前記ネイティブメッセージングアプリケーションが、前記STD IOを介して、前記ブラウザ拡張機能に前記ウェブアプリケーションに対する前記メッセージを転送するステップと、
前記ブラウザ拡張機能が、前記ウェブアプリケーションに前記メッセージを転送するステップと
をさらに含む、請求項11に記載の方法。
【請求項13】
前記ウェブアプリケーションに対する前記メッセージが、ステータスデータ、結果データ及び要求応答データからなる群の1つ又は複数を含む、請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
発明の分野
本発明は、コンピュータシステムにおけるイントラアプリケーション通信に関し、より具体的には、ウェブベースのアプリケーションによるローカルデータ及び/又はプロセッサ負荷の高いアプリケーションへのアクセスに関する。
【背景技術】
【0002】
発明の背景
典型的なウェブベースのアプリケーションの処理負荷は、(ローカル)クライアントホスト型アプリケーションと(リモート)サーバとの間で共有され得、クライアントホスト型アプリケーションは、典型的には、プロセッサ負荷の低いタスクを実行し、プロセッサ負荷の高いタスクに関しては、サーバにデータを転送する。典型的には、クライアントホスト型アプリケーションは、パーソナルコンピュータ、タブレット、スマートフォン又は他の同様のデバイス上で走らせるものであり、ネットワーク接続を介してサーバと通信する。例えば、サーバは、クラウドベースのサーバであり得る。特定のタイプのウェブベースのアプリケーションは、ローカルクライアントデバイスとリモートサーバとの間の大量のデータの転送及び処理に関与する。例えば、ウェブベースの拡張現実アプリケーションは、大容量且つ高帯域幅のデータを生成するカメラを制御し得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
典型的には、ウェブアプリケーションの場合、サーバは、ローカルクライアントからの帯域幅/プロセッサ負荷の高いタスクに対する要求を処理し、クライアントデバイスは、例えば、JavaScriptアプリケーションを通じて、帯域幅及びプロセッサ負荷の低いローカルのタスクを処理する。しかし、ローカルでホストされるアプリケーションの中には、例えば、1秒間に100Kb以上のデータを転送する大容量画像データアプリケーションなど、サーバへのデータ転送における帯域幅及び時間をより多く必要とするものもあり、その処理規模が拡大することはなく、JavaScriptによる処理も遅すぎる。クライアントが、大容量画像データを取り扱うことができる、ローカル実行ファイルをホストするための十分な処理能力を有する場合もあるが、これまで、ウェブアプリケーションがそのようなローカル実行ファイルに確実にアクセスできることはなかった。さらに、一般に、ウェブアプリケーションがホストコンピュータ上の実行ファイルにアクセスすることは、セキュリティリスクと見なされる。例えば、JavaScriptは、バイナリダイナミックリンクライブラリ(DLL)ファイルにアクセスすることはできない。従って、業界において、これらの欠点に対処する必要がある。
【課題を解決するための手段】
【0004】
発明の概要
本発明の実施形態は、ウェブベースのアプリケーションと演算集約型の実行ファイルとの間の通信のためのシステム及び方法を提供する。簡単に説明すると、本発明は、リモートサーバと通信するホストコンピューティングデバイス上で走らせるウェブアプリケーションによるネイティブバイナリDLLへのアクセスを提供するシステム及び方法を対象とする。ウェブアプリケーションに対するブラウザ拡張機能とネイティブメッセージングアプリケーションは、標準入力/出力を介して通信する。バイナリDLL用のラッパーとして構成されたホストコンピューティングデバイス上の長時間実行演算プロセスは、ホストコンピューティングデバイスによって実行可能である。ネイティブメッセージングアプリケーションと長時間実行演算プロセスは、名前付きパイプを介して互いに通信し、長時間実行演算プロセス持続時間は、ネイティブメッセージングアプリケーション持続時間とは無関係である。
【0005】
本発明の他のシステム、方法及び特徴は、以下の図面及び詳細な説明を検討することによって、当業者に明らかであるか又は明らかになるであろう。そのような追加のシステム、方法及び特徴はすべて、この説明に含まれ、本発明の範囲内であり、添付の特許請求の範囲によって保護されることが意図される。
【0006】
図面の簡単な説明
添付の図面は、本発明をより深く理解するために含まれており、この明細書に組み込まれ、この明細書の一部を構成するものである。図面のコンポーネントは、必ずしも原寸に比例するとは限らず、代わりに、本発明の原理を明確に示すことに重点が置かれている。図面は、本発明の実施形態を示し、説明と共に、本発明の原理を説明する上で役立つ。
【図面の簡単な説明】
【0007】
図1】クラウドベースのサーバと通信するウェブアプリケーションをホストするコンピューティングデバイスの概略ブロック図である。
図2】ウェブアプリケーションによるデータ集約型アプリケーションの制御を提供する第1の例示的なシステム実施形態のブロック図である。
図3A図2の第1の例示的なシステム実施形態の第1の初期化ステップのブロック図である。
図3B図2の第1の例示的なシステム実施形態の第2の初期化ステップのブロック図である。
図3C図2の第3の例示的なシステム実施形態の第3の初期化ステップのブロック図である。
図4図2のシステムを初期化するための第1の例示的な方法のフローチャートである。
図5A図2の第1の例示的なシステム実施形態の第1の通信ステップのブロック図である。
図5B図2の第1の例示的なシステム実施形態の第2の通信ステップのブロック図である。
図5C図2の第1の例示的なシステム実施形態の第3の通信ステップのブロック図である。
図5D図2の第1の例示的なシステム実施形態の第4の通信ステップのブロック図である。
図5E図2の第1の例示的なシステム実施形態の第5の通信ステップのブロック図である。
図6図2のシステムを介して通信するための第2の例示的な方法のフローチャートである。
図7】本発明の機能性を実行するためのシステムの例を示す概略図である。
【発明を実施するための形態】
【0008】
詳細な説明
以下の定義は、本明細書で開示される実施形態の特徴に適用される用語を解釈する上で役立ち、本開示内の要素を定義することのみを意図する。
【0009】
この開示内で使用される場合、「ホストコンピューティングデバイス」は、数ある中でも特に、パーソナルコンピュータ、タブレットコンピュータ、スマートフォンなど、ウェブアプリケーションをホストするコンピューティングデバイスを指す。
【0010】
この開示内で使用される場合、「ローカル」は、演算集約型プロセスを走らせる(実行する)ホストコンピューティングデバイスを指す。
【0011】
この開示内で使用される場合、「演算及び/又はデータ集約型プロセス」は、例えば、ホストコンピューティングデバイスの20%を超える演算能力を使用するプロセスを指す。このタイプのプロセスの例は、ビデオストリームのリアルタイム画像処理や、高速プロセスにおける温度、圧力及び反応のリアルタイムデータ収集である。品質的に、演算及び/又はデータ集約型プロセスは、ウェブアプリケーション又は拡張機能によって実行されるクロスプラットフォームコード(例えば、JavaScript)というよりむしろ、ホストコンピューティングデバイスのネイティブプロセッサに対して開発されたコードでの実行に、より適したものである。
【0012】
この開示内で使用される場合、「ウェブアプリケーション」は、ホストコンピューティングデバイスのユーザに対して、1つ又は複数のリモートサーバ上で走らせるリモートアプリケーション(例えば、ウェブブラウザ)とのユーザインタフェースを提供する、ホストコンピューティングデバイス上で走らせるか又はホストコンピューティングデバイスによってアクセスされるソフトウェアアプリケーションを指す。例えば、リモートサーバは、インターネットなどの通信ネットワークを介してウェブアプリケーションと通信するクラウドベースのサーバであり得る。
【0013】
この開示内で使用される場合、「ブラウザ拡張機能」(ウェブ拡張機能又はプラグインとも呼ばれる)は、ユーザがウェブアプリケーションとインタラクションを行う方法を変更するための様々な機能を実行することができるソフトウェアユニットを指す。ブラウザ拡張機能は、例えば、ホストコンピューティングデバイスのオペレーティングシステムを介して、ウェブアプリケーションには利用不可能な、ホストコンピューティングデバイスの機能性にアクセスする特権を有し得る。
【0014】
この開示内で使用される場合、「ネイティブアプリケーション」は、特定のプラットフォーム又はデバイス上での使用のために開発されたソフトウェアプログラムを指す。ネイティブアプリは、特定のデバイス及びそのOS上での使用を目的として構築されるため、デバイス特有のハードウェア及びソフトウェアを使用する能力を有する。ネイティブアプリは、最適化された性能を提供することができ、複数のシステムにわたって汎用的であるように開発されたウェブアプリ又はモバイルクラウドアプリとは対照的に、ホスティングデバイス特有の資源を活用することができる。モバイルウェブアプリの文脈では、ネイティブアプリという用語は、特定のデバイスプラットフォーム上で機能するように記載される任意のアプリケーションを意味するために使用される。
【0015】
この開示内で使用される場合、「ネイティブメッセージングアプリ」は、ホストコンピューティングデバイスの文脈においてネイティブメッセージングを提供する、クライアントデバイス上で走らせるアプリケーションを指す。ネイティブメッセージングは、ウェブアプリケーション拡張機能が、ホストコンピューティングデバイス上にインストールされたネイティブアプリケーションとメッセージを交換できるようにするためのものである。ネイティブメッセージングは、ウェブ上での追加のアクセスを必要とすることなく、拡張機能へのサービス提供を行う。ネイティブメッセージングは、拡張機能が、ウェブ拡張機能API(例えば、特定のハードウェア)を通じてアクセスすることができない資源にアクセスできるようにするためのものである。ネイティブアプリケーションは、ウェブアプリケーション(ブラウザ)によってインストールされることも、管理されることもない。ネイティブアプリケーションは、ホストコンピューティングデバイスのオペレーティングシステムの基本的なインストール機構を使用してインストールされる。ネイティブメッセージングアプリは、メッセージアクセスを許可済みの特定のウェブアプリケーション(ブラウザ拡張機能)に限定する。しかし、例えば、Skype会議ランチャなどのネイティブメッセージングアプリは、典型的には、それらの範囲及び持続時間において制限され、例えば、ネイティブアプリケーションとの特定のトランザクションをサポートするだけの時間しか存在しない。別の例として、ネイティブメッセージングアプリは、事前に定義された無操作時間が経過すると、終了(「タイムアウト」)し得る。
【0016】
この開示内で使用される場合、「名前付きパイプ」は、プロセス間通信(IPC)用のパイプを指す。名前付きパイプ(その挙動に従ってFIFO(先入れ先出し)としても知られている)は、UnixやUnixのようなシステムにおける伝統的なパイプの概念を拡張したものであり、名前付きパイプは、他のコンピュータオペレーティングシステムでも見られるが、セマンティクスは実質的に異なり得る。伝統的なパイプは、「名前なし」であり、それが作成されるプロセスと同じ時間しか存続しないものである。しかし、名前付きパイプは、システムが稼動している限り、それが作成されるプロセスの寿命を超えて存続することができる。名前付きパイプは、2つのエンドポイント間の双方向通信を提供する。名前付きパイプは、使用されなくなれば削除することができる。通常、名前付きパイプは、ファイルとして表示され(例えば、ユーザインタフェースを介して)、一般に、プロセスは、IPCのために名前付きパイプに付随している。名前付きパイプは、中間テンポラリファイルを使用することなく、あるアプリケーションから別のアプリケーションに情報を転送するために使用することができる。名前付きパイプにアクセスするには、名前付きパイプの正確な名前を知る必要があり、それは、セキュリティフィーチャとして活用することができる。例えば、名前付きパイプは、データベースサーバに対する複数のリスナーに対して使用することができる。ここでは、各リスナーは、複数の接続を受け、データベースエンジンに要求を渡す責任を有する(同じマシン上の別個のプロセスである)。メッセージングアプリは、名前付きパイプを使用して、リスナープロセスからエンジンプロセスにこれらの要求を渡す。
【0017】
この開示内で使用される場合、アプリケーション又はプロセスの「持続時間」は、アプリケーション又はプロセスが立ち上がる第1の時間に始まり、アプリケーション又はプロセスが終了する第2の時間に終わる、時間間隔を指す。
【0018】
この開示内で使用される場合、「長時間実行プロセス」は、例えば、不使用によるタイムアウトが原因でネイティブメッセージングアプリが終了した後も持続し得る、例えば、ネイティブメッセージングアプリによって作成されるネイティブアプリケーションを指す。例えば、ターゲットコンピューティングデバイス上でユーザセッションの間に作成される長時間実行プロセスは、ユーザセッションが終わる(例えば、ユーザがログアウトする)まで持続し得る。ここでは、長時間実行プロセスは、サーバ上というよりむしろ、ホストコンピューティングデバイス上でプロセッサ負荷の高いデータ処理を実行するために使用される。例えば、長時間実行プロセスは、ブラウザ拡張機能によって直接実行することができないバイナリDLLを実行するためのシェルとしての役割を果たし得る。特に、長時間実行プロセスの持続時間は、ネイティブメッセージングアプリケーションの持続時間とは無関係であり、一般に、長時間実行プロセスの持続時間は、典型的には、ネイティブメッセージングアプリケーションの持続時間より長いものであり得る。本明細書で説明される実施形態では、長時間実行プロセスの実行ファイルは、名前付きパイプの作成に対する責任を有する。
【0019】
この開示内で使用される場合、「標準入力/出力手段」は、オペレーティングシステムによって認識されたエンティティに対するデータの入力及び/又は出力を提供する、ホストコンピューティングデバイスのオペレーティングシステムによって提供される多数のメカニズムの1つ又は複数を指す。例えば、C言語のstdio.hというヘッダファイルは、数ある中でも特に、例えば、printf()、scanf()、getc()、gets()、getchar()、puts()など、入力及び/又は出力機能を提供する関数一式へのアクセスを提供することができる。
【0020】
この開示内で使用される場合、「ウェブアプリケーションウィジェット」は、スタンドアロンフィーチャとしてウェブサイト又はアプリケーションに追加することができるソフトウェアコンポーネントである。
【0021】
ここでは、本発明の実施形態を詳細に参照し、その例は、添付の図面に示されている。可能な限り、図面及び説明では、同じ又は同様の部分に言及するために同じ参照番号が使用される。
【0022】
本発明の例示的な実施形態は、コンピューティングデバイスにおいて長時間実行プロセスを介してウェブアプリケーションによるネイティブバイナリDLLへのアクセスを提供する方法及びシステムを対象とする。例えば、ウェブアプリケーションは、ホストデバイス上のローカルハードウェア(カメラなど)にアクセスする必要があるウェブブラウザであり得る。
【0023】
ウェブアプリケーションは、演算集約型タスクの実行にはあまり適さない。JavaScript及びウェブアプリケーションは、一般に、バイナリDLLにアクセスできないため、ウェブアプリケーションは、典型的には、例えば、ネイティブメッセージングアプリとインタラクションを行うブラウザ拡張機能を介して、ホストコンピュータ上の特定の安全なメカニズムにアクセスすることしかできない。例示的な実施形態は、以前は利用可能ではなかったウェブアプリケーションによるネイティブバイナリDLLへのアクセス及び/又はネイティブバイナリDLLの制御を提供するという問題に対処する。
【0024】
図1に示されるように、ウェブアプリケーション120は、数ある中でも特に、パーソナルコンピュータ、タブレットコンピュータ又はスマートフォンなどのホストコンピューティングデバイス110上のブラウザで走らせる。ウェブアプリケーション120は、通信ネットワークリンク180を介して、典型的にはクラウドベースのサーバ160からサービス提供が行われる。ウェブアプリケーション120は、一般に、ホストコンピューティングデバイスのユーザとクラウドベースのサーバ160によってホストされるアプリケーションとの間のユーザインタフェースとしての役割を果たし、クラウドベースのサーバ160は、通信ネットワーク180(例えば、インターネット)を介して、ウェブアプリケーション120と通信する。ウェブアプリケーション120は、典型的には、JavaScriptに基づき得る。ウェブアプリケーション120は、ブラウザ拡張機能130を介して、ホストコンピューティングデバイス110の設備にアクセスすることができ、ウェブアプリケーション120は、JavaScriptを使用してブラウザ拡張機能130と通信し、ブラウザ拡張機能は、ホストコンピューティングデバイス110のオペレーティングシステムによって提供される標準入力/出力(STD IO)を介してネイティブメッセージングアプリケーション(アプリ)140と通信する。このチェーンを使用することで、ウェブアプリケーションは、1つ又は複数のネイティブメッセージングアプリケーション140を介して、1つ又は複数のネイティブアプリケーション150と情報を交換することができる。しかし、背景項目で説明されるように、ネイティブメッセージングアプリケーション140は、短時間の低データトランザクション通信に限定される。さらに、ネイティブメッセージングアプリケーション140は、ウェブアプリケーションとネイティブバイナリDLL 170との間の通信パイプを提供しない。
【0025】
図2は、ウェブアプリケーションによるデータ集約型アプリケーションの制御を提供するシステム200の第1の例示的なシステム実施形態のブロック図である。ウェブアプリケーション(ブラウザ)120は、一般に、メインアプリケーションスクリーン220と、1つ又は複数のアプリケーションウィジェット222とを含む。アプリケーションウィジェットは、大きなウェブアプリケーションのサブコンポーネントであり、例えば、これらに限定されないが、グラフ表示、ビデオ表示又はデータ表示などの特定のタスクを実行する。メインアプリケーションスクリーン220は、1つ又は複数のサブウィジェット224へのアクセスをユーザに提供する。1つ又は複数のサブウィジェット226は、例えば、ブラウザ拡張機能130を介する、1つ又は複数のローカルサブプロセスとの通信に関与し得る。ブラウザ拡張機能130は、ローカルデバイス110のオペレーティングシステムによって提供される標準入力/出力を介して、ネイティブメッセージングアプリ140と通信する。メッセージングアプリは、(ローカル)ホストコンピューティングデバイス110にローカル接続される実行ファイルである。長時間実行演算プロセス250(例えば、Windowsサービス)は、1つ又は複数のバイナリDLL 170をカプセル化することができる。これまでに述べたように、ウェブアプリケーション120、ブラウザ拡張機能130及びネイティブメッセージングアプリ140は、バイナリDLL 170に直接アクセスすることはできない。第1の実施形態の下では、バイナリDLL 170は、カメラ280と通信するように及び/又はカメラ280を制御するように構成される。しかし、代替の実施形態では、バイナリDLLは、他のデータ帯域幅及び/又はプロセッサ負荷の高いタスクに関与し得、例えば、数学的な演算(数あるアプリケーションの中で特に、暗号通貨ファーミングなど)に関与し得る。ここでは、カメラ280は、高帯域幅ビデオストリームをバイナリDLL 170に提供することができ、バイナリDLLは、制御及び/又は構成コマンドをカメラに提供することができる。メッセージングアプリ140と長時間実行アプリケーション250は、名前付きパイプ240を介して通信する。
【0026】
図4は、ウェブアプリケーションによるローカルネイティブバイナリDLLへのアクセスを提供するシステムを初期化するための第1の例示的な方法400のフローチャートである。フローチャートのいかなるプロセス説明又はブロックも、プロセスの特定の論理機能を実装するための1つ又は複数の命令を含むモジュール、セグメント、コードの一部又はステップを表すものとして理解すべきであり、本発明の当業者によって理解されるように、代替の実装形態は、本発明の範囲内に含まれ、機能は、関与する機能性に応じて、示される又は論じられる順番とは異なる順番で(実質的に同時に又は逆の順番で、を含む)実行できることに留意すべきである。方法については、図3A~3Cを参照して説明する。
【0027】
ブロック410及び図3Aに示されるように、通信用サブウィジェット226は、ブラウザ拡張機能130に初期化データ225を送信する。ブロック420及び図3Bに示されるように、ブラウザ拡張機能130は、ブラウザ拡張機能の一部であるバックグラウンドプロセススクリプトを介して、STD IO(標準入力/出力)235を使用して、ネイティブメッセージングアプリケーション140を立ち上げ、ネイティブメッセージングアプリケーション140に初期化データを送信する。オブジェクトはステートレスであるため、このステップは、何回も実行することができる。ネイティブメッセージングアプリケーション140は、ホストコンピューティングデバイス110(図1)上のローカル実行ファイルであり得る。背景項目で述べられるように、ネイティブメッセージングアプリ140は、持続時間が限られたものであり得る。ネイティブメッセージングアプリは、トランザクションの間はアクティブ状態のままである。
【0028】
ブロック430及び図3Cに示されるように、ネイティブメッセージングアプリは、ローカルマシン上で演算集約型プロセスを実行するように構成されたバイナリDLL 170を含む長時間実行演算プロセス250を始動する及び/又は長時間実行演算プロセス250に接続する。例えば、長時間実行演算プロセス250は、Windowsサービスであり得、バイナリDLLは、Windows DLLであり得、演算集約型プロセスは、数ある中でも特に、ビデオ又は統計分析であり得る。ブロック450に示されるように、ネイティブメッセージングアプリ140は、名前付きパイプ240を介して、長時間実行演算プロセス250に初期化データを送信する。長時間実行プロセス250は、名前付きパイプの作成に対する責任を有する。ブロック460に示されるように、長時間実行演算プロセス250は、バイナリDLL 170を介して、マシン上のローカル資源280(カメラなど)を初期化する及びローカル資源280に接続する。
【0029】
図6は、ウェブアプリケーションによるローカルネイティブバイナリDLLへのアクセスを提供するシステムを使用して通信するための第2の例示的な方法600のフローチャートである。方法については、図5A~5Eを参照して説明する。
【0030】
ブロック610及び図5Aに示されるように、ウェブアプリケーション120は、例えば、クリックイベントを使用して、ブラウザ拡張機能130にデータに対する要求を送信する。要求されるデータは、演算プロセス250が提供するためのものであるが、述べられるように、ウェブアプリケーション120は、演算プロセス250と直接通信することはできない。ブロック620及び図5Bに示されるように、ブラウザ拡張機能130は、STD IO 235を使用して、ネイティブメッセージングアプリケーション140にデータ要求を送信する。ブロック630及び図5Cに示されるように、ネイティブメッセージングアプリケーション140は、名前付きパイプ240を介して、演算プロセス250に要求を送信する。
【0031】
継続的に、長時間実行演算プロセス250は、カメラ280などのローカル資源を使用して、ブラウザベースのアプリケーションにとっては演算量が多過ぎる複雑なアルゴリズムを実行する。複雑な演算プロセスの例は、数ある中でも特に、ビデオストリーム分析、リアルタイムデータ収集、統計分析及びビットコインマイニングを含む。
【0032】
ブロック640及び図5Dに示されるように、長時間実行演算プロセス250は、名前付きパイプ240を介して、ネイティブメッセージングアプリケーション140に処理済みの結果データ及びステータスを送信する。ブロック650及び図5Eに示されるように、ネイティブメッセージングアプリケーション140は、STD IO 235を使用して、ブラウザ拡張機能130に処理済みの結果データ及びステータスを送信する。ブロック660に示されるように、ブラウザ拡張機能130は、ウェブアプリケーション220に処理済みの結果データ及びステータスを送信する。データは、例えば、カメラ280の通常の連続動作をサポートするために、必要に応じて、アプリケーションの様々な部分の間で交換される。
【0033】
これまで言及した通り、上記で詳細に説明される機能性を実行するための本システムは、コンピュータであり得、その例は、図7の概略図に示されている。システム500は、プロセッサ502と、記憶装置504と、前述の機能性を定義するソフトウェア508が格納されたメモリ506と、入力/出力(I/O)デバイス510(又は周辺機器)と、システム500内の通信を可能にするローカルバス又はローカルインタフェース512とを含む。ローカルインタフェース512は、当技術分野で知られていているように、例えば、これらに限定されないが、1つ又は複数のバス又は他の有線若しくは無線接続であり得る。ローカルインタフェース512は、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ及びレシーバなど、通信を可能にするための追加の要素を有し得るが、それらは、簡略化のため省略されている。さらに、ローカルインタフェース512は、前述のコンポーネントの間の適切な通信を可能にするために、アドレス、コントロール及び/又はデータ接続を含み得る。
【0034】
プロセッサ502は、特にメモリ506に格納された、ソフトウェアを実行するためのハードウェアデバイスである。プロセッサ502は、任意のカスタムメイド若しくは市販のシングルコア若しくはマルチコアプロセッサ、中央処理装置(CPU)、本システム500と関連付けられた複数のプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップ若しくはチップセットの形態)、マクロプロセッサ、又は、一般に、ソフトウェア命令を実行するための任意のデバイスであり得る。
【0035】
メモリ506は、揮発性メモリ素子(例えば、ランダムアクセスメモリ(DRAM、SRAM、SDRAMなどのRAMなど))及び不揮発性メモリ素子(例えば、ROM、ハードドライブ、テープ、CDROMなど)のいずれか1つ又は組合せを含み得る。その上、メモリ506は、電子、磁気、光学及び/又は他のタイプの記憶媒体を組み込み得る。メモリ506は、様々なコンポーネントが互いに離れて位置するが、プロセッサ502によるアクセスが可能である、分散アーキテクチャを有し得ることに留意されたい。
【0036】
ソフトウェア508は、本発明に従って、システム500によって実行される機能性を定義する。メモリ506内のソフトウェア508は、1つ又は複数の別個のプログラムを含み得、その各々は、以下で説明されるように、システム500の論理機能を実装するための実行可能命令の順番付けられたリストを含む。メモリ506は、オペレーティングシステム(O/S)520を含み得る。オペレーティングシステムは、本質的には、システム500内のプログラムの実行を制御し、スケジューリング、入力/出力の制御、ファイル及びデータ管理、メモリ管理、通信制御並びに関連サービスを提供する。
【0037】
I/Oデバイス510は、例えば、これらに限定されないが、キーボード、マウス、スキャナ、マイクなどの入力デバイスを含み得る。その上、I/Oデバイス510は、例えば、これらに限定されないが、プリンタ、ディスプレイなどの出力デバイスも含み得る。最後に、I/Oデバイス510は、例えば、これらに限定されないが、変調器/復調器(モデム;別のデバイス、システム若しくはネットワークにアクセスするためのもの)、無線周波数(RF)若しくは他のトランシーバ、電話インタフェース、ブリッジ、ルータ又は他のデバイスなど、入力と出力の両方を介して通信するデバイスをさらに含み得る。
【0038】
システム500が稼働している際、プロセッサ502は、上記で説明されるように、メモリ506と間でデータを伝達し合うため及び一般にソフトウェア508に準じてシステム500の動作を制御するために、メモリ506内に格納されたソフトウェア508を実行するように構成される。
【0039】
システム500の機能性が稼働している際、プロセッサ502は、メモリ506と間でデータを伝達し合うため及び一般にソフトウェア508に準じてシステム500の動作を制御するために、メモリ506内に格納されたソフトウェア508を実行するように構成される。オペレーティングシステム520は、プロセッサ502によって読み取られ、おそらくはプロセッサ502内にバッファリングされ、次いで、実行される。
【0040】
システム500がソフトウェア508で実装される際、システム500を実装するための命令は、任意のコンピュータ関連デバイス、システム若しくは方法によって使用するため又はそれらと関係して使用するための任意のコンピュータ可読媒体に格納できることに留意すべきである。そのようなコンピュータ可読媒体は、いくつかの実施形態では、メモリ506及び記憶装置504の一方又は両方に相当し得る。この文書の文脈では、コンピュータ可読媒体は、コンピュータ関連デバイス、システム若しくは方法によって使用するため又はそれらと関係して使用するためのコンピュータプログラムを含むか又は格納することができる、電子、磁気、光学又は他の物理デバイス又は手段である。システムを実装するための命令は、プロセッサ又は他のそのような命令実行システム、装置若しくはデバイスによって使用するため又はそれらと関係して使用するための任意のコンピュータ可読媒体において具体化することができる。プロセッサ502は、単なる例として言及してきたが、そのような命令実行システム、装置又はデバイスは、いくつかの実施形態では、任意のコンピュータベースのシステム、プロセッサを含むシステム、又は、命令実行システム、装置若しくはデバイスから命令をフェッチし、命令を実行することができる他のシステムであり得る。この文書の文脈では、「コンピュータ可読媒体」は、プロセッサ又は他のそのような命令実行システム、装置若しくはデバイスによって使用するため又はそれらと関係して使用するためのプログラムの格納、通信、伝播又は輸送を行うことができる任意の手段であり得る。
【0041】
そのようなコンピュータ可読媒体は、例えば、これらに限定されないが、電子、磁気、光学、電磁、赤外線又は半導体システム、装置、デバイス又は伝播媒体であり得る。コンピュータ可読媒体のより具体的な例(非包括的なリスト)は、1つ又は複数のワイヤを有する電気(電子)接続、ポータブルコンピュータディスケット(磁気)、ランダムアクセスメモリ(RAM)(電子)、読み取り専用メモリ(ROM)(電子)、消去可能プログラマブル読み取り専用メモリ(EPROM、EEPROM又はフラッシュメモリ)(電子)、光ファイバ(光学)、ポータブルコンパクトディスク読み取り専用メモリ(CDROM)(光学)を含むであろう。コンピュータ可読媒体は、プログラムが印刷された紙又は別の適切な媒体でもよいが、その理由は、プログラムは、例えば、紙又は他の媒体の光学走査を介して、電子的にキャプチャすることができ、次いで、必要に応じて適切な方法で、コンパイル、解釈又は別の方法での処理を行うことができ、次いで、コンピュータメモリに格納することができるためであることに留意されたい。
【0042】
システム500がハードウェアで実装される代替の実施形態では、システム500は、各々が当技術分野でよく知られている、データ信号において論理機能を実装するための論理ゲートを有する個別論理回路、適切な組合せ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などの技術のいずれか又は組合せで実装することができる。
【0043】
本実施形態の下では、長時間実行プロセスは、ネイティブバイナリDLLをカプセル化する。長時間実行プロセスは、ネイティブメッセージングアプリケーションとネイティブバイナリDLLとの間の通信経路を提供する名前付きパイプ入力を有する。方法及びシステムは、ウェブアプリケーションによるネイティブバイナリDLLへのアクセスを提供する実用的なアプリケーションを対象とする。
【0044】
本実施形態は、以前は利用可能ではなかったウェブアプリケーションとローカルバイナリDLLとの間の通信パイプを提供することによって、一般用途コンピュータの機能性を改善する。これにより、ローカルマシンが、バイナリDLLとブラウザ拡張機能との橋渡しをする名前付きパイプの作成及び/又はアクセスにおける制御を有することを理由に、依然としてローカルマシンのプライバシ及び自律性を維持しながら、ウェブアプリケーションの範囲が拡大される。
【0045】
上記の実施形態は、高帯域幅ビデオデータの受信及び処理を行うDLLに関心が置かれているが、本発明は、ローカルマシンが演算の重労働を行う一方で、ウェブアプリケーションが、演算集約型プロセスを導くためのパラメータを提供し、時折、そのステータスに関して演算集約型プロセスをチェックする(例えば、定期的にポーリングする)ことができる、他の演算集約型のローカルプロセスにも適用可能である。
【0046】
本発明の範囲又は精神から逸脱しない範囲で、本発明の構造に様々な変更及び変形を行えることは、当業者には明らかであろう。以上を踏まえ、本発明は、この発明の変更及び変形が以下の特許請求の範囲及びその均等物の範囲内であることを条件として、この発明の変更及び変形をカバーすることが意図される。
【符号の説明】
【0047】
110 ホストコンピューティングデバイス
120 ウェブアプリケーション
130 ブラウザ拡張機能
140 ネイティブメッセージングアプリケーション
150 ネイティブアプリケーション
160 クラウドベースのサーバ
170 バイナリDLL
180 通信ネットワーク
220 メインアプリケーションスクリーン
222 アプリケーションウィジェット
224 サブウィジェット
225 初期化データ
226 ローカルプロセスとの通信用サブウィジェット
235 標準入力/出力
240 名前付きパイプ
250 長時間実行演算プロセス
280 カメラ
385 ビデオデータ
502 プロセッサ
504 記憶装置
506 メモリ
508 ソフトウェア
510 入力/出力デバイス
512 ローカルインタフェース
図1
図2
図3A
図3B
図3C
図4
図5A
図5B
図5C
図5D
図5E
図6
図7
【外国語明細書】