(57)【要約】デジタル電子デバイス用サービスおよびアプリケーションコントローラ（「ＳＡＣ」）（１００）を提供する。ＳＡＣは、それぞれ４つの異なる環境と相互作用する４つのインターフェース、すなわち、アプリケーション環境（１１２）およびアプリケーション（１１４）と相互作用するアプリケーションインターフェース（１１０）と、エンジン（１２２）およびイネーブラ（１２４）と相互作用する拡張インターフェース（１２０）と、デバイスプラットフォーム環境（１３２）と相互作用するプラットフォームインターフェース（１３０）と、サービスおよびサービスインフラストラクチャ（１４２）ならびにネットワーク（１４４）と相互作用するサービスおよびネットワークインターフェース（１４０）とを含む。
2011514586.tif 000002
【特許請求の範囲】
【請求項１】
デジタル電子デバイス用サービスおよびアプリケーションコントローラであって、
通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを備える、一組のコアモジュールと、
複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースと、
複数のサービス、サービスインフラストラクチャ、およびネットワークとインターフェース接続するための複数のサービスＡＰＩを備える、サービスおよびネットワークインターフェースであって、該サービスおよびネットワークインターフェースは、該サービスＡＰＩを介して、該サービス、サービスインフラストラクチャ、およびネットワークの抽象化の層を提供する、サービスおよびネットワークインターフェースと、
複数のアプリケーションエンジンおよびイネーブラとインターフェース接続するための複数の拡張ＡＰＩを備える、拡張インターフェースであって、該拡張インターフェースは、該拡張ＡＰＩを介して、該アプリケーションエンジンおよびイネーブラの抽象化の層を提供する、拡張インターフェースと、
複数のアプリケーションおよびアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、該アプリケーションインターフェースは、該アプリケーションＡＰＩを介して、該アプリケーションおよびアプリケーション環境の抽象化の層を提供し、該アプリケーションＡＰＩ、該プラットフォームＡＰＩ、該サービスＡＰＩ、および該拡張ＡＰＩの間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと
を備え、該一組のコアモジュールは、該プラットフォームインターフェース、該アプリケーションインターフェース、該拡張インターフェース、ならびに該サービスおよびネットワークインターフェースにより共有される、サービスおよびアプリケーションコントローラ。
【請求項２】
前記ＡＬＣのうちの少なくとも１つは、ネイティブアプリケーション環境用であり、該ＡＬＣのうちの少なくとも１つは、手続き型ランタイム環境用であり、該ＡＬＣのうちの少なくとも１つは、宣言型ランタイム環境用であり、
該手続き型ランタイム環境用の該ＡＬＣは、該ランタイム環境においてサポートされない、または容易に実行されないランタイムアプリケーションのための機能を実行するアプリケーションロジックを備え、
該宣言型ランタイム環境用の該ＡＬＣは、共通機能を実行するアプリケーションロジックを備える、請求項１に記載のアプリケーションコントローラ。
【請求項３】
前記ＡＬＣのうちの少なくとも１つは、前記アプリケーションをさらに抽象化するアプリケーションロジックを実行するためのものである、請求項１に記載のアプリケーションコントローラ。
【請求項４】
デジタル電子デバイス用アプリケーションコントローラであって、
通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと、
複数のアプリケーションおよびアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、該アプリケーションインターフェースは、該アプリケーションＡＰＩを介して、該アプリケーションおよび該アプリケーション環境の抽象化の層を提供し、複数の該アプリケーションＡＰＩ間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと
を備え、該一組のモジュールは、該アプリケーションインターフェースにより共有される、アプリケーションコントローラ。
【請求項５】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該プラットフォームインターフェースにより共有される、請求項４に記載のアプリケーションコントローラ。
【請求項６】
複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該プラットフォームインターフェースにより共有される、請求項４に記載のアプリケーションコントローラ。
【請求項７】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して、該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該サービスインターフェースにより共有される、請求項４に記載のアプリケーションコントローラ。
【請求項８】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記サービスインターフェース、および該プラットフォームインターフェースにより共有される、請求項７に記載のアプリケーションコントローラ。
【請求項９】
アプリケーションエンジンおよびイネーブラを含む群から選択される、一組の１つ以上の拡張とインターフェース接続するための一組の１つ以上の拡張ＡＰＩを備える、拡張インターフェースであって、該拡張インターフェースは、該拡張ＡＰＩを介して、該一組の１つ以上の拡張の抽象化の層を提供する、拡張インターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該拡張インターフェースにより共有される、請求項４に記載のアプリケーションコントローラ。
【請求項１０】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記拡張インターフェース、および該プラットフォームインターフェースにより共有される、請求項９に記載のアプリケーションコントローラ。
【請求項１１】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して、該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記拡張インターフェース、および該サービスインターフェースにより共有される、請求項９に記載のアプリケーションコントローラ。
【請求項１２】
デジタル電子デバイス用アプリケーションコントローラであって、
通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと、
複数のアプリケーションおよび複数のアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、該アプリケーションインターフェースは、該アプリケーションＡＰＩを介して、該アプリケーションおよび該アプリケーション環境の抽象化の層を提供し、複数の該アプリケーションＡＰＩ間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと
を備え、該一組のモジュールは、該アプリケーションインターフェースにより共有される、アプリケーションコントローラ。
【請求項１３】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該プラットフォームインターフェースにより共有される、請求項１２に記載のアプリケーションコントローラ。
【請求項１４】
複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該プラットフォームインターフェースにより共有される、請求項１２に記載のアプリケーションコントローラ。
【請求項１５】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して、該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該サービスインターフェースにより共有される、請求項１２に記載のアプリケーションコントローラ。
【請求項１６】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記サービスインターフェース、および該プラットフォームインターフェースにより共有される、請求項１５に記載のアプリケーションコントローラ。
【請求項１７】
アプリケーションエンジンおよびイネーブラを含む群から選択される、一組の１つ以上の拡張とインターフェース接続するための一組の１つ以上の拡張ＡＰＩを備える、拡張インターフェースであって、該拡張インターフェースは、該拡張ＡＰＩを介して、該一組の１つ以上の拡張の抽象化の層を提供する、拡張インターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェースおよび該拡張インターフェースにより共有される、請求項１２に記載のアプリケーションコントローラ。
【請求項１８】
デバイスプラットフォーム環境とインターフェース接続するためのプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記拡張インターフェース、および該プラットフォームインターフェースにより共有される、請求項１７に記載のアプリケーションコントローラ。
【請求項１９】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して、該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記アプリケーションインターフェース、前記拡張インターフェース、および該サービスインターフェースにより共有される、請求項１７に記載のアプリケーションコントローラ。
【請求項２０】
デジタル電子デバイス用コントローラであって、
通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと、
複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、該プラットフォームインターフェースは、該プラットフォームＡＰＩを介して、該デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースと
を備え、該一組のモジュールは、該プラットフォームインターフェースにより共有される、コントローラ。
【請求項２１】
アプリケーションエンジンおよびイネーブラを含む群から選択される、一組の１つ以上の拡張とインターフェース接続するための一組の１つ以上の拡張ＡＰＩを備える、拡張インターフェースであって、該拡張インターフェースは、該拡張ＡＰＩを介して、該一組の１つ以上の拡張の抽象化の層を提供する、拡張インターフェースをさらに備え、
前記一組のモジュールは、前記プラットフォームインターフェースおよび該拡張インターフェースにより共有される、請求項２０に記載のコントローラ。
【請求項２２】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記プラットフォームインターフェース、前記拡張インターフェース、および該サービスインターフェースにより共有される、請求項２１に記載のコントローラ。
【請求項２３】
サービスおよびサービスインフラストラクチャならびにネットワークを含む群から選択される、一組の１つ以上のサービスとインターフェース接続するための一組の１つ以上のサービスＡＰＩを備える、サービスインターフェースであって、該サービスインターフェースは、該サービスＡＰＩを介して、該一組の１つ以上のサービスの抽象化の層を提供する、サービスインターフェースをさらに備え、
前記一組のモジュールは、前記プラットフォームインターフェースおよび該サービスインターフェースにより共有される、請求項２０に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、２００８年２月８日に出願された米国仮特許出願第６１／０６５，２３８号の利益を主張し、その全体が本明細書に参考として援用される。
【０００２】
（本発明の分野）
本発明は、概して、デジタル電子デバイスを制御するため、より具体的には、デジタル電子デバイス上のアプリケーション、サービス、プラットフォーム、および／または拡張を制御するためのシステム、方法、および装置に関する。
【背景技術】
【０００３】
（本発明の背景）
（関連技術の説明）
図１は、説明のために単純化された形態の通信ネットワークを示す。例えば、通信ネットワークには、例えばＧＳＭ、ＧＰＲＳ、ＥＤＧＥ、ｃｄｍａＯｎｅ、ｃｄｍａ２０００、ＷＣＤＭＡ、およびＵＭＴＳネットワーク等を含み得る従来の携帯電話ネットワーク１０が含まれるが、他のアクセス技術も使用することができる。携帯電話ネットワーク１０は、顧客に音声および／またはデータサービスを提供するモバイルネットワークオペレータ（図示せず）により運営される。携帯電話ネットワーク１０に接続された３つの例示的なデバイス、すなわち携帯電話１１、スマートフォン１２、および携帯電話ネットワーク接続デバイスがインストールされたモバイルＰＣ１３が示されている。通信ネットワークはまた、ゲートウェイ（図示せず）を介して携帯電話ネットワーク１０と相互接続された、ＩＰネットワークおよびサービスインフラストラクチャ２０を含む。ＩＰネットワーク２０は、有線および無線手段の両方によりＩＰサービスを提供する。ＩＰネットワーク２０に接続された６つのネットワーク化されたデバイス、例示的にはサーバ２１、ゲーム機２２、デジタルテレビ２３が接続されたデジタルオーディオ／ビデオデバイス、例えばセットトップボックス２４、高性能デジタル家電２５（例えば、セキュリティデバイス、ウェブカメラ、または高性能キッチン家電等）、デスクトップ型パーソナルコンピュータ２６、携帯型パーソナルコンピュータ２７（例えば、ラップトップ型、タブレット型、またはノート型コンピュータ等）、およびスマートフォン２８が示されている。デバイス上の様々なユーザアプリケーションとインターフェース接続してユーザエージェントとして機能し、ネットワーク化されたデジタル電子デバイスのいずれかの間、および異なるネットワークにわたる通信セッションを確立、修正、および停止する好適なソフトウェアを、デジタル電子デバイスの各々が含んでいる。
【０００４】
サービスは、ネットワークを介して、ネットワークオペレータおよびサービスプロバイダにより提供される。サービスは、特殊技術、ネットワークおよびアプリケーションプロトコル、ならびにコンテンツ方法を介してアクセス、配信、および使用され、様々な標準を使用して動作する。直接デバイス間で動作する機能およびアプリケーションもあれば、サービスインフラストラクチャにおけるサーバにより、またはインターネットを介して接続されたサーバにより発信されるものもある。デバイス上のアプリケーションは、様々なネットワーク、サービス、コンテンツ、および他のデバイスアプリケーションにより使用される特定の標準および技術をサポートしていなければならない。
【０００５】
デバイス２１〜２８等のデジタル電子デバイスは、通常は特定の型のデジタル電子デバイス用に記述されたアプリケーションソフトウェアを含む。そのようなアプリケーションソフトウェアは、アプリケーションまたはサービス特定のユーザインターフェースおよびアプリケーション機能だけでなく、エンドツーエンドの接続、配信、およびプロトコルやコンテンツの処理、ならびに使用されるデバイスプラットフォーム、オペレーティングシステム環境、アプリケー  ション環境、およびネットワークやサービスシステム特定の要素も含むため、複雑となる傾向にある。残念ながら、様々なデバイスプラットフォーム、アプリケーション環境、技術および標準、ネットワーク、ならびにサービスシステムを管理しサポートする複雑性に個々に対応するデバイスアプリケーションを開発する難しさは、長期の開発および配備サイクル、高コストおよびリスク、ならびにアプリケーション開発者、デバイス供給者、およびサービスプロバイダのリソースの不十分な使用および重複をもたらした。さらに、この著しい時間およびコストは、新たなサービスおよびアプリケーション機能のための専用アプリケーションおよびサービスへとつながった。これらの複雑なアプリケーションのモノリシックで垂直型の性質はまた、アプリケーションを創造することができる利用可能な開発者コミュニティを制限し、専門のトレーニングおよびツールのコストを増加させ、プロバイダおよびユーザが能力および機能を適合させ再度目的を持たせる柔軟性を低下させる。彼らは、追加の使用をサポートする新たなアプリケーションもしくはユーザインターフェースを容易に追加する、新たなマーケットに適合させる、または使用を個々のニーズもしくは使用様式にパーソナライズすることができない。この制限されたアプリケーションサポートおよび利用可能性は、機能およびサービスの導入、使用、および経済的価値を制限する。
【０００６】
アプリケーションおよびサービスに使用される技術および標準は、常に進化および変化している。ネットワーク、サービスアプリケーション、およびコンテンツが変化すると、アプリケーションもまたこれらの新たな要件、技術、および標準を含むように変更される。各アプリケーションを変更し、各デバイスおよびアプリケーション環境において各アプリケーションを試験し、様々なネットワークおよびサービスアプリケーションシステムにおいて各アプリケーションを試験するために、著しい時間および投資が費やされる。これは、技術および機能アップグレードに対しおびただしい時間、リスク、およびコストを追加し、新たな標準および能力への移行を遅らせる。
【０００７】
デバイスの数および種類は劇的に増加し、各デバイスのカテゴリー、製造者、およびサービスは、広範なデバイスプラットフォームおよびオペレーティングシステム、ならびに複数のアプリケーション環境を有し得、多くのネットワークおよびシステムにわたり相互運用することが必要とされる。アプリケーションはデバイスおよびサービス特定であるため、これによって、新たな機能および能力の利用可能性および使用が、選択されたデバイスに限定されている。複雑なデバイスポートフォリオ全体にわたり新たな能力を実装するために必要な時間および投資は、デバイスの範囲および種類が増加するに従い増加し続ける。開発者、デバイス供給者、およびサービスプロバイダは、投資を十分に活用し、より多くの顧客および市場にサービスおよび価値を提供するために、多くのデバイスの種類およびモデルを、より低い付加的時間、コスト、およびリスクでサポートするより良い手段を必要としている。
【０００８】
産業には、一体となって完全なエンドツーエンドのサービスおよびアプリケーションを提供しなければならない、技術、製品、プロバイダ、およびビジネスモデルの異なる組がある。これらは、産業エコシステムと呼ぶことができる。主要なエコシステムには、デバイスプラットフォーム、アプリケーション環境および開発者コミュニティ、技術および標準、ならびにネットワークおよびサービスインフラストラクチャシステムが含まれる。
【０００９】
デバイスエコシステムは、カテゴリーおよび供給者ごとに異なるコンポーネントおよびプラットフォーム、オペレーティングシステム環境、ならびに電気的な、ソフトウェア上の、機械的な、および産業上の様々な設計要素を含む。それらは、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ、Ｌｉｎｕｘ、Ｓｙｍｂｉａｎ、ＢＲＥＷおよび様々な専用のリアルタイムオペレーティングシステム等のネイティブオペレーティングシステムに特定のアプリケーション環境等のアプリケーション環境を含む。Ｊａｖａ（登録商標）等の一般的な手続き型ランタイムアプリケーション環境、Ａｄｏｂｅ  ＦｌａｓｈおよびＡｉｒ、ＷｅｂＫｉｔ  Ｗｉｄｇｅｔ  Ｒｕｎｔｉｍｅ、Ｙａｈｏｏ  Ｗｉｄｇｅｔｓ等の宣言型ランタイムアプリケーション環境、ならびにＧｏｏｇｌｅ  ＧａｄｇｅｔｓおよびＡＪＡＸ対応モバイルおよびＰＣブラウザ等のブラウザベースアプリケーション環境の複数のバージョンおよび適合がある。これらの環境の各々は、独特の能力、利点および欠点を有し、異なるレベルおよび種類のアプリケーションに好適である。それらは、特定の知識およびツールを必要とし、それらをサポートするデバイスおよびサービスの相対数、ならびにそれらの環境を開発する経済的価値に基づき、開発者のコミュニティを有する傾向がある。
【００１０】
多くのデバイスは、複数のアプリケーション環境を含む。例えば、ほとんどのスマートフォンは、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｏｂｉｌｅ、Ｓｙｍｂｉａｎ、またはＬｉｎｕｘ等のネイティブプログラミング環境を含み、これらは、性能に敏感であるか、セキュリティに敏感であるか、または他の環境においては利用できない特定のプラットフォームおよびＯＳへのアクセスを必要とするコアアプリケーションのための好ましい環境となり得る。これらは、通常は、利用可能な特定のプラットフォームおよびオペレーティングシステムリソースを使用する、Ｃ言語で記述された非常に複雑なアプリケーションであり、デバイス、プログラミング環境およびツール、サービスシステム、特殊技術、ならびに該当する標準の特別な知識および技術を必要とする。デバイスはまた、Ｊａｖａ（登録商標）等の手続き型ランタイムアプリケーション環境を含み得る。これらは、より高いレベルの手続き言語を提供し、一般に、よりデバイス特定ではない。しかしながら、アプリケーションの機能は、アプリケーション環境でサポートされた能力に制限されている。これらの環境は、一般に、デバイスリソースへの低レベルアクセスを提供しない。アプリケーションは、適合する環境による他のデバイス上での使用への修正がより少なくてすむ傾向があるが、それらは通常、ネイティブアプリケーションより能力が低く、実行が遅い。デバイスはまた、宣言型ランタイム環境を含み得る。これらの環境は、スクリプト記述およびマークアップ言語等のよりウェブのようなプログラミングおよびコンテンツ方法を使用する。Ａｄｏｂｅ’ｓ  Ｆｌａｓｈおよび業界標準Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｊａｖａ（登録商標）  ａｎｄ  ＸＭＬ  （ＡＪＡＸ）ベースの環境が、一般的な例である。いくつかの場合では、これらのアプリケーション環境はまた、デバイス上に含められていない場合はユーザによりインストールされ得る。これは、ウェブ開発者の非常に大きいコミュニティが、環境に合わせてアプリケーションをすばやく開発し、また必要または所望に応じてデバイスにそれらを動的に配備することができることを意味する。残念ながら、これらの環境の制限されたプログラミングおよびアプリケーション管理能力、ならびに高性能および特殊機能へのアクセスの欠落により、洗練されたサービスのためのアプリケーション開発における使用、およびより特殊な能力を必要とする使用が制限されている。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
現在の状況では、開発者は、各アプリケーションにおける複雑なエコシステム要件のすべてに対応し、次いでデバイス、技術および標準、ネットワーク、ならびにサービスの各々の組み合わせに対しアプリケーション全体を修正する必要がある。一般に、最大の開発者コミュニティを有する環境は開発がより容易であり、デバイスおよびサービスにわたるより高い移植性を提供する。しかしながら、それらはまた能力が制限され、新たな技術および標準をサポートするのが遅い。これにより、特定のニーズおよび市場に対するアプリケーションの利用可能性が制限され、能力の経済的価値が低下する。
【課題を解決するための手段】
【００１２】
（本発明の簡潔な概要）
当技術分野におけるこれらの欠点、および他の欠点を克服するため、また上記能力を可能とするために、アプリケーション開発を可能とし単純化し、開発および試験時間を短縮し、多くの異なる種類のデジタル電子デバイス用にアプリケーションの利用可能性および移植性を高める上で、有用な様々な能力を有するサービスおよびアプリケーションコントローラならびに関連した装置および方法が記載される。
【００１３】
本発明の一実施形態は、デジタル電子デバイス用サービスおよびアプリケーションコントローラであって、通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを備える一組のコアモジュールと；複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、プラットフォームＡＰＩを介して、デバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースと；複数のサービス、サービスインフラストラクチャ、およびネットワークとインターフェース接続するための複数のサービスＡＰＩを備える、サービスおよびネットワークインターフェースであって、サービスＡＰＩを介して、サービス、サービスインフラストラクチャ、およびネットワークの抽象化の層を提供する、サービスおよびネットワークインターフェースと；複数のアプリケーションエンジンおよびイネーブラとインターフェース接続するための複数の拡張ＡＰＩを備える、拡張インターフェースであって、拡張ＡＰＩを介して、アプリケーションエンジンおよびイネーブラの抽象化の層を提供する、拡張インターフェースと；複数のアプリケーションおよびアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、アプリケーションＡＰＩを介して、アプリケーションおよびアプリケーション環境の抽象化の層を提供し、アプリケーションＡＰＩ、プラットフォームＡＰＩ、サービスＡＰＩ、および拡張ＡＰＩの間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと、を備え、一組のコアモジュールは、プラットフォームインターフェース、アプリケーションインターフェース、拡張インターフェース、ならびにサービスおよびネットワークインターフェースにより共有される、サービスおよびアプリケーションコントローラである。
【００１４】
本発明の別の実施形態は、デジタル電子デバイス用アプリケーションコントローラであって、通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと；複数のアプリケーションおよび複数のアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、アプリケーションＡＰＩを介してアプリケーションおよびアプリケーション環境の抽象化の層を提供し、アプリケーションＡＰＩ間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと、を備え、一組のモジュールは、アプリケーションインターフェースにより共有される、アプリケーションコントローラである。
【００１５】
本発明の別の実施形態は、デジタル電子デバイス用アプリケーションコントローラであって、通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと；複数のアプリケーションおよびアプリケーション環境とインターフェース接続するための複数のアプリケーションＡＰＩを備える、アプリケーションインターフェースであって、アプリケーションＡＰＩを介してアプリケーションおよびアプリケーション環境の抽象化の層を提供し、アプリケーションＡＰＩ間で変換するための複数のアプリケーションロジックコントローラ（「ＡＬＣ」）を備える、アプリケーションインターフェースと、を備え、一組のモジュールは、アプリケーションインターフェースにより共有される、アプリケーションコントローラである。
【００１６】
本発明の別の実施形態は、デジタル電子デバイス用コントローラであって、通信モジュール、アプリケーションモジュール、拡張モジュール、状態モジュール、サーバモジュール、データ管理モジュール、ポリシーモジュール、信号伝達モジュール、および統括モジュールを含む群から選択される、一組の１つ以上のモジュールと；複数のデバイスプラットフォーム環境とインターフェース接続するための複数のプラットフォームＡＰＩを備える、プラットフォームインターフェースであって、プラットフォームＡＰＩを介してデバイスプラットフォーム環境の抽象化の層を提供する、プラットフォームインターフェースと、を備え、一組のモジュールは、プラットフォームインターフェースにより共有される、コントローラである。
【図面の簡単な説明】
【００１７】
【図１】図１は、通信ネットワークおよび関連したデジタル電子デバイスの概略図である。
【図２】図２は、サービスおよびアプリケーションコントローラと、それが相互作用する４つの環境との間の相互作用を示す概略ブロック図である。
【図３】図３は、機能およびその様々なインターフェースの共通の組を含む、サービスおよびアプリケーションコントローラアーキテクチャの例示的実装の概略ブロック図である。
【図４】図４は、セッション開始プロトコルおよびインターネットプロトコルマルチメディアサブシステム技術ならびに標準を使用した、サービスおよびアプリケーションコントローラ、通信ソフトウェア、ならびにサービスソリューションの例示的実装の概略ブロック図である。
【図５】図５は、電子商取引のためのサービスおよびアプリケーションコントローラ、通信ソフトウェア、ならびにサービスソリューションの例示的実装の概略ブロック図である。
【図６】図６は、例示的ＡＳＩＣ実装の概略的ブロック図である。
【発明を実施するための形態】
【００１８】
（最良モードを含む、本発明の詳細な説明）
図２は、デジタル電子デバイスに好適なサービスおよびアプリケーションコントローラ（「ＳＡＣ」）１００を示す。ＳＡＣ１００は、それぞれ４つの異なる環境と相互作用する４つのインターフェース、すなわち、アプリケーション環境１１２およびアプリケーション１１４と相互作用するアプリケーションインターフェース１１０と、エンジン１２２およびイネーブラ１２４と相互作用する拡張インターフェース１２０と、デバイスプラットフォーム環境１３２と相互作用するプラットフォームインターフェース１３０と、サービスおよびサービスインフラストラクチャ１４２ならびにネットワーク１４４と相互作用するサービスおよびネットワークインターフェース１４０とを含む。ＳＡＣ１００は、一組のコア機能を提供して環境を相互から抽象化し、これにより、相互作用のために環境が他の環境の特定の局面を認識することを必要とせずに、これらの環境間の相互作用が可能となる。
【００１９】
図３は、ＳＡＣ１００のコア機能およびインターフェースをより詳細に見た図である。ＳＡＣ１００は、４つのエコシステムにより共有される機能および能力の共通の組を提供し、（ａ）モジュール式および柔軟なアプリケーションエンジンならびに技術および標準イネーブラモジュールと、（ｂ）コアソフトウェアへの変更を必要としない複数のオペレーティングシステムおよびプラットフォーム環境と、（ｃ）様々なネットワークおよびサービスインフラストラクチャシステムとの相互運用およびそこからの抽象化とをサポートする。ＳＡＣ１００のアプリケーションインターフェース１１０は、２００、２０２、２１０、２１２、２２０および２２２等のアプリケーションロジックコントローラ（ＡＬＣ）を含む。ＡＬＣ２００、２０２、２１０、２１２、２２０および２２２は、アプリケーションプログラムインターフェース（ＡＰＩ）およびアプリケーションロジックを含み、これはＳＡＣ１００が一組のアプリケーション機能ならびに異なるアプリケーション環境およびアプリケーション、例えばネイティブアプリケーション環境２０４および関連したアプリケーション２０６、手続き型ランタイム環境２１４および関連したアプリケーション２１６、ならびに宣言型ランタイム環境および関連したアプリケーション２２６等をサポートすることを可能にする。ＳＡＣ１００はまた、拡張インターフェース１２０を含み、これはＳＡＣが多くの異なるアプリケーションエンジン１２２ならびに技術および標準イネーブラ１２４と相互作用するのを可能にする。ＳＡＣ１００はまた、プラットフォームインターフェース１３０を含み、これはＳＡＣ１００が多くの異なるデバイスプラットフォーム環境１３２と相互作用するのを可能にする。プラットフォームインターフェース１３０は、ＳＡＣ１００ならびにアプリケーション２０６、２１６および２２６、アプリケーションエンジン１２２、ならびにＳＡＣ１００を使用するイネーブラ１２４により使用される様々なプラットフォームリソースおよび機能との統合をサポートするプラットフォームドライバ（ＰＦＤ）、例えばＰＦＤ２３０、ＰＦＤ２３２、ＰＦＤ２３４およびＰＦＤ２３６を含む。ＳＡＣ１００はまた、サービスおよびネットワークインターフェース１４０を含み、これはＳＡＣ１００が多くの異なるサービスおよびサービスインフラストラクチャシステム１４２、ならびに多くの異なる種類のネットワーク１４４と相互作用するのを可能にする。
【００２０】
抽象化方法は、以下の例からより良く理解することができる。アプリケーションに共通した機能は、プラットフォームコーデックからビデオストリームを得ることである。異なるプラットフォームは異なるＡＰＩまたはＡＰＩの組、およびこの機能の異なるパラメータを使用し、また異なるアプリケーションプログラミング言語はこの機能の異なる命令を使用する。アプリケーションプログラミングを単純化するために、各々のサポートされたアプリケーションプログラミング言語から抽象化されたＡＰＩが、アプリケーションインターフェース１１０に提供され、各々の種類のサポートされたプラットフォームから抽象化されたＡＰＩが、プラットフォームインターフェース１３０に提供される。ＳＡＣ１００は、アプリケーションインターフェース１１０における関連したＡＰＩとプラットフォームインターフェース１３０における関連したＡＰＩとの間で変換する。例えば、アプリケーションプログラマがプラットフォームコーデックからビデオストリームを得たい場合、プログラマは、その言語に対応するアプリケーションインターフェース１１０における適切なＡＰＩを使用して、任意のサポートされたプログラミング言語で命令を符号化すればよい。有利なことに、プログラマは、プラットフォームにより機能がどのように実行されるかに関するある特定の知識を有する必要はない。これは、動作中、ＳＡＣ１００はアプリケーションモジュール２４２を介してアプリケーションからの要求を受信し、使用されているプラットフォームに適切なプラットフォームドライバを呼び出し、アプリケーションインターフェース１１０におけるＡＰＩと、使用中のプラットフォームに適切なプラットフォームインターフェースにおけるＡＰＩとの間でパラメータを受け渡すためである。このプロセスは、「変換」として知られている。プラットフォームインターフェース１３０における適切なプラットフォームは、次いで、プラットフォームに適切な呼び出しおよびプロトコルを使用してプラットフォームにアクセスし、ビデオストリームを得る。
【００２１】
同様に、拡張インターフェース１２０ならびにサービスおよびネットワークインターフェース１４０は、「抽象化された」ＡＰＩを含み、ＳＡＣ１００は、インターフェース１１０、１２０、１３０および１４０のいずれかの間で変換することができる。例えば、拡張インターフェース１２０の場合、新たなエンジンがエンジン１２２に接続されると、それは手続きおよびパラメータを拡張インターフェース１２０に発行する。
【００２２】
（ＳＡＣ１００のコア機能）
ＳＡＣ１００はコア機能を含む。例えば、図３に示されるＳＡＣ１００は、例示的に、通信モジュール２４０、アプリケーションモジュール２４２、拡張管理モジュール２４４、状態モジュール２４６、サーバモジュール２４８、関連したデータベース２５１を有するデータ管理モジュール２５０、ポリシーモジュール２５２、信号伝達モジュール２５４、および統括モジュール２５６のコア機能を含む。
【００２３】
通信モジュール２４０は、サービスおよびサービスインフラストラクチャ１４２ならびにネットワーク１４４と通信するために使用されるチャネルのためのリソースの管理を担う。これは、様々なプラットフォームドライバ（ＰＦＤ）、例示的にはプラットフォームインターフェース１３０におけるＰＦＤ２３０、ＰＦＤ２３２、ＰＦＤ２３４およびＰＦＤ２３６において実装されるプラットフォーム特定の機能を使用して、利用可能なローカルＩＰアドレスおよびチャネルのポートを得る。利用可能なローカルＩＰパラメータ（アドレスまたはポート）が変わると、プラットフォームドライバにより通信モジュール２４０に通知される。続いて、通信モジュール２４０は、将来の通信の必要性のためにこれらのチャネルを再形成する。通信モジュール２４０はまた、ネットワークとのＵＤＰまたはＴＣＰ接続を形成する。
【００２４】
通信モジュール２４０は、４つの主要な機能、すなわちセッション管理、サービス管理、ネットワーク管理、およびサービス品質（ＱｏＳ）を含む。セッション管理に関して、アプリケーションまたはエンジンがネットワーク構成要素、例えばサーバ等と通信する必要がある場合、通信モジュール２４０はセッションを形成し、形成時間、プロトコルの種類（例えばＵＤＰまたはＴＣＰまたはＨＴＴＰ）、ネットワークの種類（例えば２Ｇもしくは３Ｇ携帯電話、または８０２．１１ＷＬＡＮ）、ならびに、必要な帯域幅および通信に必要なビットレート等のＱｏＳパラメータ等、セッションについての関連情報を維持する。通信モジュールはまた、必要に応じて、このセッションデータをＳＡＣ１００内の他のモジュールと共有する。通信が必要なくなった場合、通信モジュール２４０はセッションをリリースし、セッションデータを保持するために使用されたメモリを解放する。サービス管理に関して、ネットワーク構成要素を介してデータを送信する必要がある場合、通信モジュール２４０は、使用されるプロトコル標準を決定し、適切なプラットフォーム特定のＡＰＩを呼び出してデータを送信する。例えば、アプリケーションがＵＤＰを介してデータを送信する必要がある場合、通信モジュール２４０は、好適なプラットフォームドライバ機能を呼び出し、ＵＤＰを介してデータを送信する。通信モジュール２４０はまた、通信の正常および異常な状態、例えばエラー回復および再試行等を管理する。ネットワーク管理に関して、デバイス上でのネットワーク接続の監視は、プラットフォーム特定の機能を使用して行われ、ネットワーク接続状態が変化した際の通知にレジスタが使用される。このイベントにおいて、プラットフォームは通信モジュール２４０に通知し、一方これがさらなる処理のために適切なアプリケーションまたはエンジンに通知する。これは、例えば携帯電話ネットワークを使用して開始されるが、不十分な携帯電話受信範囲によりＷＬＡＮネットワークに引き渡される必要があるボイスオーバーＩＰ呼び出しがある場合等、複数のネットワークにまたがるサービスをサポートするために非常に有用である。サービス品質（「ＱｏＳ」）に関して、これはボイスまたはビデオオーバーＩＰ等の多くの通信の種類に必要とされる重要なパラメータである。サービス品質を決定付けるパラメータにはいくつかある。利用可能なＩＰ帯域幅、メディアビットレート、および使用されるコーデックの種類（圧縮／解凍）がＱｏＳを決定付ける。通信モジュール２４０は、デバイス（例えばコーデック）からＱｏＳの詳細を得て、通信のための保証された帯域幅に関してネットワークと交渉する。ネットワークがＱｏＳの変化に関してデバイスに通知すると、通信モジュール２４０は、よりスムーズな通信のためにデバイス上の適切なコーデックを選択するようにアプリケーションまたはエンジンに知らせる。
【００２５】
アプリケーションモジュール２４２は、ＡＬＣ２００、ＡＬＣ２０２、ＡＬＣ２１０、ＡＬＣ２１２、ＡＬＣ２２０およびＡＬＣ２２２等のアプリケーションロジックコントローラ（「ＡＬＣ」）を介したアプリケーションへの主要なインターフェースである。アプリケーションモジュール２４２は、ＳＡＣ１００内のアプリケーションの配備および削除を提供する。これはまた、アプリケーションの状態、アプリケーションへ、およびアプリケーションから情報または信号をルーティングするために使用されるフィルタ基準、ならびに登録されたアプリケーションおよびアプリケーションマッピングを含むテーブルを維持する。さらに、アプリケーションモジュール２４２はまた、アプリケーション間の競合の解消、およびアプリケーションからＳＡＣ１００内の様々な他のモジュールへの要求のキューイングおよび優先順位付けを担う。
【００２６】
アプリケーションモジュール２４２は、アプリケーションの配備および削除を提供する。これは、通常オペレーティングシステムにおいて説明される登録／登録解除機能と非常に類似している。アプリケーションは、まずアプリケーションモジュール２４２を使用してＳＡＣ１００に配備される。配備プロセスの間、アプリケーションは、デプロイメントディスクリプタにおけるアプリケーションモジュール２４２に複数の構成パラメータを受け渡す（例えばＸＭＬドキュメント形式で）。アプリケーションモジュール２４２は、このデプロイメントディスクリプタファイルを解析し、ＳＡＣ１００にアプリケーションを登録する。アプリケーションが必要なくなったら、アプリケーションをアプリケーションモジュール２４２から「削除」することができる。削除プロセス中、アプリケーションモジュール２４２は、登録を除去し、アプリケーションにより使用されたリソースを解放する。
【００２７】
アプリケーションモジュール２４２は、フィルタ基準を使用して、受信メッセージ、信号、またはデータがどのアプリケーションに属するかを決定する。フィルタ基準は、通常は、デプロイメントディスクリプタにおいて特定される。これらは、適用されると特定のアプリケーションまたはエンジンを識別する規則の集まりを含む。例えば、ネットワーク構成要素がアプリケーションに向けて情報またはデータを送信した場合、それはまず通信モジュールにより受信され、これらの規則がアプリケーションマネージャにより適用されてサーバモジュールに送信され、適切なアプリケーションまたはエンジンにルーティングされる。
【００２８】
アプリケーションモジュール２４２は、様々なアプリケーション２０６、２１６および２２６、アプリケーションエンジン１２２、ならびにＳＡＣ１００の間の連動システムとして実装される競合解消機構を含む。例示的な一実施形態において、競合が発生した場合はいつでも、ＳＡＣ１００は、その競合を解消するための措置を行うよう、対応するアプリケーションまたはアプリケーションエンジンに知らせる。この機構は、ポリシーおよびデータ駆動型であり、サービスおよびアプリケーションのニーズに適合するようにカスタマイズすることができる。競合解消ポリシーは、ＳＡＣ１００におけるポリシーモジュール２５２を使用して伝送およびプロビジョニングすることができる。ＳＡＣ１００が更新された競合解消ポリシードキュメントを受信したら、更新されたポリシーパラメータが将来の競合解消管理に使用される。
【００２９】
アプリケーションモジュール２４２は、要求、応答、および通知の優先キューイングを提供する。特に、ＳＡＣ１００は、優先ポリシーに基づいて送信もしくは受信応答または受信通知を優先順位付けし、ネットワークまたはデバイス内での変化する状態を監視する規則ベースのプロセスを含み得る。アプリケーションがアプリケーションモジュール２４２に配備されると、それはデプロイメントディスクリプタの一部として、ネットワークへの／ネットワークからのメッセージを送信および／または受信する優先順位を設定する。ポリシードキュメント（例えばＸＭＬ形式ドキュメント）がポリシーモジュール２５２を使用してプロビジョニングされ、例えばボイスオーバーＩＰ（「ＶｏＩＰ」）アプリケーションは、同期的であるためその優先順位を高に設定することができ、インスタントメッセージング（「ＩＭ」）アプリケーションは、非同期的であるためにその優先順位を中に設定することができる。このシナリオにおいて、ユーザがＶｏＩＰを使用して誰かを呼び出してＩＭを使用してメッセージを送信しようとし、また両方のアプリケーションが同時に処理を要求した場合、ＳＡＣ１００は、ＶｏＩＰ呼び出しを優先させ、テキストメッセージの送信を遅らせる。同様に、ＶｏＩＰおよびＩＭアプリケーションに同時に受信信号メッセージがあった場合、ＳＡＣ１００はＶｏＩＰメッセージを優先させ、まずそれを送信してからＩＭアプリケーションへのメッセージを送達する。
【００３０】
拡張モジュール２４４は、アプリケーションエンジン１２２およびイネーブラ１２４の統合およびサポートの管理を担う。拡張モジュール２４４は、アプリケーションマネージャがその要求を送信するとアプリケーションの拡張をロードする。拡張の構成パラメータに基づき、拡張モジュール２４４はまた、現在の拡張が必要とするその他任意の拡張をロードすることができる。ローディングは、メモリもしくはストレージデバイス等のプラットフォーム上のソースから、またはネットワークを介してサーバから行うことができる。拡張モジュール２４４はまた、アプリケーションおよびそれが使用する拡張（複数を含む）をマッピングするテーブルを維持する。アプリケーションが拡張モジュール２４４を使用して拡張における機能を呼び出すと、呼び出しの前に拡張モジュール２４４はそのような機能の存在を検証する。拡張モジュール２４４は、シリアルで単一スレッドを使用した、または複数のスレッドを使用したパラレルでの拡張における機能の実行をサポートする。実行のシリアルまたはパラレルモードは、プラットフォームにおけるスレッドのサポートに依存する。
【００３１】
状態モジュール２４６は状態管理を担い、これには状態の集約と、アプリケーション２０６、２１６および２２６、アプリケーションエンジン１２２、サービスおよびサービスインフラストラクチャ１４２、ならびにデバイスプラットフォーム環境１３２の間での状態情報の共有とが含まれる。状態モジュール２４６は、他のマネージャとインターフェース接続し、ＳＡＣ１００内でインターフェース接続してアプリケーション、エンジン、デバイスモジュールおよびサービスの間で状態情報を共有する。
【００３２】
状態モジュール２４６は、ポインタ法およびデータベース法を含む様々な技法を使用した共有状態マネージャとして実装されてもよい。ポインタ法では、アプリケーションエンジン１２２の各々がそれ自体の状態情報（例えばネットワーク登録状態または場所）を格納および維持し、状態情報へのポインタ（複数を含む）を状態モジュール２４６に公開する。状態モジュール２４６は、これらの状態ポインタを維持する。アプリケーションまたは別のエンジンが状態情報について状態モジュール２４６に問い合わせると、状態モジュール２４６は、ポインタを使用して関連したアプリケーションエンジンまたはサービスから状態情報を読み出し、それをアプリケーションと共有する。データベース法では、状態プロバイダが状態情報を状態モジュール２４６に提出し、これは状態モジュール２４６によりデータベース管理モジュール２５０を介してＳＡＣデータベース２５１内に格納される。状態モジュール２４６は、ストレージベースのデータベースまたはインメモリデータベースのいずれかにおいて状態情報を集約し、状態情報の完全性を維持する。アプリケーション、サービス、または別のエンジンが状態情報について状態モジュール２４６に問い合わせると、状態モジュール２４６は、データベースから状態情報を読み出し、それを共有する。これらの方法はともに、アクセスを制御するために、任意の状態データ要求に対してポリシー管理を実行するオプションを提供する。
【００３３】
状態モジュール２４６は、状態情報およびデータがアプリケーション２０６、２１６および２２６内の複数のアプリケーションの間で共有される必要がある場合、アプリケーションインターフェース１１０を使用する。例えば、プレゼンス対応電話帳（「ＰＥＢ」）アプリケーションは、データベース管理モジュール２５０を介してＰＥＢを格納し他の承認されたアプリケーションと共有することができる。アクセスの承認は、ポリシーモジュール２５２により統括され得る。ＰＥＢアプリケーションは、ユーザから、またはプレゼンスエンジンから、プレゼンス状態更新等の状態の変更を受け取ることができる。ＰＥＢアプリケーションは、アプリケーションインターフェース１１０を介してＰＥＢを更新することができる。ＰＥＢアプリケーションは、状態モジュール２４６およびアプリケーションインターフェース１１０を介してＰＥＢを使用した承認されたアプリケーション、例えばインスタントメッセージアプリケーション等に状態の変更を信号で伝えることができる。
【００３４】
状態モジュール２４６は、状態情報が複数のエンジン１２２またはイネーブラ１２４の間で共有される必要がある場合、拡張インターフェース１２０を使用する。例えば、ネットワーク認証プロセス中、承認エンジン（図示せず）は、ＳＡＣ１００内に格納された鍵を有し得る。商取引エンジン（図示せず）等の別のエンジンがトランザクション目的でその鍵を必要とする場合、商取引エンジンは拡張インターフェース１２０を使用して状態モジュール２４６に問い合わせ、鍵を得ることができる。
【００３５】
状態モジュール２４６は、状態情報がネットワーク１４４における構成要素と共有される必要がある場合、サービスおよびネットワークインターフェース１４０を使用する。例えば、ネットワークが、アプリケーションが有効であるか否かを知る必要がある場合、サービスおよびネットワークインターフェース１４０を使用して状態モジュール２４６に問い合わせ、情報を得ることができる。情報は、ＵＤＰ、ＴＣＰもしくはＨＴＴＰ等の標準プロトコルを使用して、またはＳＩＰ等のアプリケーションレベル信号伝達プロトコルを使用して受け渡すことができる。
【００３６】
状態モジュール２４６は、状態情報がデバイスまたはプラットフォームにおける他のモジュールと共有される必要がある場合、プラットフォームインターフェース１３０を使用する。これは、プル法またはプッシュ法のいずれかを使用して達成される。プル法では、デバイスは、情報について状態モジュール２４６に問い合わせ、それを得ることができる。情報は、状態モジュール２４６により、コールバックまたは通知チャネルを使用してデバイスにプッシュされ得る。例えば、デバイス上のマルチメディアフレームワークは、ＳＡＣ１００内に配備され有効な任意のマルチメディアアプリケーションが存在するかどうかを知る必要がある可能性がある。この場合、マルチメディアフレームワークは、プラットフォームインターフェース１３０を使用して、状態モジュール２４６から情報を得る。別の例において、プラットフォームは、承認されたアプリケーション、エンジン、およびサービスによる使用のために、状態データの形態で場所情報をＳＡＣ１００に提供することができる。
【００３７】
ＳＡＣ１００内のデータ管理モジュール２５０は、ＳＡＣ１００内のデータの管理だけでなく、アプリケーション２０６、２１６および２２６、ならびにアプリケーションエンジン１２２等のインターフェース構成要素からのデータ共有サービスの提供を担う。データ管理モジュール２５０のデータベース法は、実装要件に基づき変動し得る。例えば、データベースは、セットトップボックスおよび携帯電話等の外部ストレージデバイスを有さないデバイス上のインメモリであってもよい。データベースは、デバイスに内蔵された、または接続されたストレージデバイス、例えばフラッシュメモリカードまたはディスクドライブ等に基づく永続的なデータベースであってもよい。ＳＱＬ、Ａｃｃｅｓｓ、Ｏｒａｃｌｅ、ＩＢＭデータベースシステム等の様々なデータベース管理方法を使用することができる。データ管理モジュール２５０は、データ管理モジュール２５０を使用したアプリケーションおよび機能が基礎をなす方法に曝されないように、様々なＳＡＣインターフェース１１０、１２０、１３０および１４０を介してこのメカニズムを抽象化する。データを格納または共有するために、アプリケーション（例えば、２０６、２１６、２２６）またはアプリケーションエンジン（例えば１２２）は、データ構造ドキュメントを使用して構造を定義する。所有アプリケーションはまた、ポリシーモジュール２５２を介して定義されたデータのアクセスおよび制御のためのポリシーを設定することができる。定義されたデータの使用が承認されたアプリケーションは、次いで、関連したＳＡＣインターフェースを介してデータベースにアクセスすることができる。
【００３８】
データ管理モジュール２５０はまた、ＳＡＣ１００の様々なモジュールからの内部データを格納するために使用される。例えば、状態モジュール２４６は、データ管理モジュール２５０を使用して、他の構成要素から得られた状態情報を格納する。同様に、アプリケーションモジュール２４２は、データ管理モジュール２５０を使用して、配備されたアプリケーションおよびそれらのパラメータに関する詳細をデータベース２５１に格納することができる。
【００３９】
ポリシーモジュール２５２はＳＡＣ１００のポリシー機能を扱い、これは動作管理パラメータ、アクセス制御、ならびにセキュリティおよびプライバシーポリシーの統括を提供するために使用される。ポリシーおよびパラメータは、ユーザ、ネットワークプロバイダ、サービスプロバイダ、デバイス、または技術および標準プロバイダにより確立され得る。例えば、ネットワークオペレータおよびサービスプロバイダは、ネットワークの使用、サービスシステムへのアクセス、または敏感な状態もしくはアプリケーションデータへのアクセス制御のためのポリシーを設定することができる。これらのポリシーは、例えばネットワークおよびセッション管理機能、状態管理機能、データ登録およびアプリケーションロジック制御層におけるアプリケーションアクセス等、ＳＡＣ１００内の様々な機能により管理される。例えば、ユーザプライバシーポリシーまたはオペレータポリシーに基づき、アプリケーションは、指定のＡＰＩおよびデータにアクセスするためにサービスプロバイダ発行鍵または証明書を提出することが必要となり得る。
【００４０】
ポリシーモジュール２５２は、ポリシー管理を担う。
サービスプロバイダにより承認されたユーザプロファイル、サービスプロバイダプロファイル、および第三者プロファイル等のポリシープロファイルを含む１つ以上のポリシープロファイルが、デジタル電子デバイス上に存在し得る。プロファイルは、ＡＰＩへのアクセスのためのアクセス制御情報、状態データ、ネットワークサービス、ネットワークおよびサービス提供サービス品質、ユーザデータ等を含む。ポリシープロファイルは、任意選択で、鍵交換および確実な機関により発行された証明書等の業界標準セキュリティメカニズムを使用して認定されてもよい。ユーザプロファイルは、通常は、例えば「自分の存在または場所情報を一組の承認されたアプリケーションで共有する」等、データおよびアプリケーションのプライバシーおよびセキュリティのためのポリシーを含む。サービスプロバイダプロファイルは、ＳＡＣを介して管理またはアクセスされる項目に対するアクセス、プライバシー、およびセキュリティのための、サービスプロバイダによりプロビジョニングされたポリシーである。
【００４１】
ポリシーモジュール２５２に対するポリシーのプロビジョニングは、製造時、販売時、オンラインで、またはポリシードキュメントをＳＡＣ１００に送信することにより無線で、またはユーザがポリシーパラメータを設定することにより、行うことができる。例えば、ＯＭＡ  （オープンモバイルアライアンス）デバイス管理上でポリシーを設定するために、サービスプロバイダは、既存のＯＭＡ−ＤＭ対応デバイス管理システムを使用し、通常はＸＭＬ構造を使用してポリシードキュメントを管理し、プロバイダ特定のポリシードキュメントの安全な認証された提供を行うことができる。ＳＡＣ１００には、無線で送信されたその特定の種類のプロビジョニングドキュメントを受信するために、オンデバイスＯＭＡ−ＤＭアプリケーションが登録されている。ポリシードキュメントの種類の「ハンドラ」として機能するアプリケーションエンジンがＳＡＣ１００と統合されており、ドキュメントの構文解析およびＳＡＣに管理されるポリシーパラメータのプロビジョニングを実行する。
【００４２】
信号伝達モジュール２５４は、アプリケーション、エンジン、デバイスおよびサービスからの信号の分析、ならびにそれらの適切な送付先へのルーティングを担う。送付先は、アプリケーション（例えば２０６、２１６、２２６）、エンジン（例えば１２２）、デバイス（例えば１３２）、またはサービス（例えば１４２）であってもよい。信号伝達モジュール２５４は、例えば信号が標準プロトコルに埋め込まれている場合、イネーブラを使用して信号メッセージを分析することができる。あるいは、信号は、単に受信者の情報を含む信号メッセージ（例えばＸＭＬデータドキュメント）であってもよい。この例において、信号伝達モジュール２５４は、アプリケーション、エンジン、デバイスまたはサービスがそれらを使用して信号を構築することができるようにＸＭＬスキームを公開する。
【００４３】
アプリケーション２０６、２１６および２２６、ならびにエンジン１２２は、ＳＡＣ１００で配備プロセスを実行する際、アプリケーションインターフェース１１０を介してルーティングおよび受信する信号を宣言することができる。これは、アプリケーションインターフェース１１０およびデプロイメントディスクリプタを使用して行われる。アプリケーションモジュール２４２は、信号（通常はコマンド）を、信号伝達モジュール２５４にルーティングする。例えば、カメラアプリケーションは、その信号（撮影開始、撮影停止等）をＳＡＣ１００に公開することができる。メッセージングアプリケーションは、信号伝達モジュール２５４に問い合わせ、カメラアプリケーションによりサポートされる信号を得、カメラアプリケーションに到達する信号を信号伝達モジュール２５４に発行する。
【００４４】
エンジン（例えば１２２）は、ＳＡＣ１００で配備プロセスを実行する際、拡張インターフェース１２０を介してそれにルーティングされることが要求される信号を宣言することができる。これは、拡張インターフェース１２０およびデプロイメントディスクリプタを使用して行われる。拡張モジュール２４４は、信号を、信号伝達モジュール２５４にルーティングする。例えば、支払いエンジン（図示せず）は、その信号（残高取得、残高支払い等）をＳＡＣ１００に公開することができる。支払いアプリケーション（図示せず）は、信号伝達モジュール２５４に問い合わせ、支払いエンジンによりサポートされる信号を得、支払いエンジンに到達する信号を信号伝達モジュール２５４に発行する。
【００４５】
サービスおよびネットワークインターフェース１４０を使用して、アプリケーション（例えば２０６、２１６、２２６）またはエンジン（例えば１２２）は、配備プロセスを実行する際、ＳＡＣ１００を介してネットワークまたはネットワークベースサービスからそれにルーティングされることが要求される信号を宣言することができる。これは、アプリケーションインターフェース１１０または拡張インターフェース１２０、およびデプロイメントディスクリプタを使用して行われる。信号伝達モジュール２５４がネットワーク（例えば１４４）からメッセージを受信する際、それはフィルタ基準に基づきメッセージをフィルタリングし、メッセージをアプリケーション（例えば２０６、２１６、２２６）またはエンジン（例えば１２２）に送信する。例えば、ＩＭＳ対応ネットワークにおいて、ネットワークに格納されたフィルタ基準に基づき受信ＳＩＰメッセージをアプリケーションサーバにルーティングする、Ｐ−ＣＳＣＦと呼ばれるネットワーク構成要素がある。信号伝達モジュール２５４は、ＩＭＳベースの通信のために有効化された際、デバイスにおいて同様の機能を実行する。
【００４６】
統括モジュール２５６は、ＳＡＣ１００の内部機能の追跡を担う。統括モジュール２５６は、データ管理モジュール２５０を使用して格納されたデータおよび情報にアクセスし、統括アプリケーション（図示せず）に対し利用可能にする。統括アプリケーションは、特別なＡＰＩを使用して統括モジュール２５６にアクセスすることができる特権アプリケーションである。これらのＡＰＩは、配備されて有効となっているアプリケーションの数、開いていて有効となっている通信チャネルの種類、およびデータベース２５１に格納された、またはＳＡＣ１００内の様々なコア機能および拡張により提供された他のデータを決定するために使用される。
【００４７】
サーバモジュール２４８は、モジュールまたはインターフェースのいずれかからの要求に基づくＳＡＣ１００内の他のモジュールの呼び出しを担う。アプリケーションまたはエンジンがＳＡＣ１００で配備されると、サーバモジュールは、タイマーを開始し、それらとのハートビート通信を維持する。これにより、ＳＡＣ１００は状態を維持し、アプリケーションまたはエンジンが有効で応答しているかどうかを決定することができる。通常の削除プロセス中にアプリケーションまたはエンジンが終了したら、サーバモジュール２４８はタイマーおよびハートビートメカニズムを停止する。アプリケーションが通常の削除なしで終了した場合、アプリケーション状態は予想外または異常な終了と設定される。
【００４８】
サーバモジュール２４８はまた、アプリケーション、エンジン、サービス、およびデバイスプラットフォームに能力情報を提供するためのＳＡＣ１００に対する発見要求の実行を担う。ＳＡＣ１００を介して提供される、およびその中の利用可能な拡張が要求者に報告される。これは、配備プロセスにおいて、および発見プロセスにより提供され追跡された情報における、拡張モジュール２４４で登録された、標準化またはバンドル化された拡張ファイルの検索により行われる。
【００４９】
サーバモジュール２４８はまた、プロセス間通信を使用したＳＡＣ１００からアプリケーションまたはエンジンへのデータまたは信号の受け渡しを担う。ＩＰＣメカニズムは、プラットフォームごとに変動する。いくつかのプラットフォームでは、ＩＰＣはローカルソケットを使用して行われる。他のプラットフォームでは、これはパイプを使用して行われる。サーバモジュール２４８は、ＩＰＣの実装から独立しており、これはＳＡＣ１００によりアプリケーションとエンジンとの間で日付を交換するために必要なより高いレベルの機能を高める。
【００５０】
（プラットフォームインターフェース１３０）
コアソフトウェアへの変更のない複数のオペレーティングシステムおよびプラットフォーム環境のポーティングをサポートするために、ＳＡＣ１００は、ＳＡＣ１００およびＳＡＣ１００に統合された要素の機能のプラットフォーム非依存性を提供する。具体的には、ＳＡＣ１００のアーキテクチャは、プラットフォームドライバ（「ＰＦＤ」）を含むプラットフォーム抽象化およびポーティング層であるプラットフォームインターフェース１３０を含む。プラットフォームインターフェース１３０は、メモリの割り当ておよびメディア再生等のプラットフォーム特定の動作をインターフェース接続し、それらをアプリケーションから抽象化する。プラットフォームドライバは、通常はオペレーティングシステムにより提供される機構および機能であるＯＳサービス、例えばメモリの割り当ておよびファイルシステム動作等と、通常はオペレーティングシステムにより提供されない機構および機能である非ＯＳサービス、例えばメディアパケットの圧縮および解凍、ならびにネットワークトランザクションにおけるサービス品質パラメータの設定等を扱うことができる。例示的なオペレーティングシステムおよびプラットフォームリソースには、ＵＤＰ／ＴＣＰサービス、ＰＤＰサービス、ＨＴＴＰサービス、メディアコーデック、オペレーティングシステム、ならびにメッセージングおよび場所等の埋め込みアプリケーションを含む。
【００５１】
基本および高度の２種類のプラットフォームドライバＡＰＩがある。
基本ＡＰＩは、通常は、Ｗｉｎｄｏｗｓ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｏｂｉｌｅ、Ｓｙｍｂｉａｎ、およびＬｉｎｕｘ等の汎用オペレーティングシステムにおいて利用可能である。基本ＡＰＩのいくつかには、これらに限定されないが、メモリ割り当ておよび管理機能、ストリング管理機能、Ｓｏｃｋｅｔ等の通信機能、ファイル入力および出力機能、ミューテックスおよびセマフォを含むスレッド管理機能、ならびに開始／停止タイマー等のそれらの管理機能が含まれる。高度ＡＰＩは、通常、プラットフォーム上での第三者ソフトウェアモジュールの統合を含む。高度ＡＰＩのいくつかには、これらに限定されないが、Ｃｏｄｅｃ等のメディア管理、Ｍｅｄｉａ  Ｐｌａｙｅｒ機能、サービス品質設定等のネットワーク管理、複数スレッドプラットフォームにおける任意選択のアプリケーションランチャー機能、プロセス間通信機能、ＳＩＭツールキット機能を読み出すかもしくはアクセスする機能、ＯＭＡデバイス管理（ＤＭ）機能に管理する機能、データを安全に保存するためのメモリまたはＳＩＭカードにおける保護されたストレージが含まれる。これは、安全なメモリパーティションまたはデバイスにおいてデジタルＩＤまたはデジタル財布データ等の敏感な情報が保持され管理される場合、特に有用である。有利なことに、一度ＰＦＤ層（例えばＰＦＤ２３０、２３２、２３４、２３６）がプラットフォームインターフェース１３０内にが構築されたら、異なるプラットフォームに適合させることが比較的容易であり、通常、基本プラットフォーム機能が変化しない限り、追加の作業をほとんど必要としない。
【００５２】
（アプリケーションインターフェース１１０）
ＳＡＣは、アプリケーションインターフェース１１２を使用して、手続き型および宣言型を含む複数の環境において様々なアプリケーション（例えば２０６、２１６、２２６）を有効化し、アプリケーションおよびアプリケーション環境の様々なカテゴリに好適なアプリケーションプログラミングインターフェース（「ＡＰＩ」）を確立する。アプリケーションプログラミングインターフェースまたはＡＰＩは、アプリケーションの構築をサポートするためにライブラリおよび／またはオペレーティングシステムサービスにより提供される、一組のルーチン、データ構造、オブジェクトクラスおよび／またはプロトコルである。アプリケーション環境は、Ｃ／Ｃ＋＋等の言語で記述されたアプリケーション用の、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｏｂｉｌｅ、ＳｙｍｂｉａｎおよびＢＲＥＷ等のネイティブアプリケーション環境２０４、ならびにＪａｖａ（登録商標）等の手続き型ランタイム環境２１４を含む。宣言型ランタイム環境２２４は、Ｙａｈｏｏ  ＷｉｄｇｅｔｓおよびＷｅｂｋｉｔ  Ｒｕｎ−Ｔｉｍｅ等のＡＪＡＸベースウィジェット環境、Ａｄｏｂｅ’ｓ  Ｆｌａｓｈ  Ｌｉｔｅ等の専用環境、ならびにＭｉｃｒｏｓｏｆｔ  ＳｉｌｖｅｒｌｉｇｈｔおよびＡｄｏｂｅ  Ｆｌａｓｈ  ａｎｄ  Ａｉｒ等のＡＪＡＸまたは専用プラグイン対応ブラウザ等、ウェブのようなスクリプト記述およびマークアップ言語を使用する。
【００５３】
アプリケーションインターフェース１１０は、様々なカテゴリの機能および様々なアプリケーション環境のためのアプリケーションロジックコントローラ（ＡＬＣ）を含む。ＡＬＣは、環境の規約および能力をサポートするように変動し得る。例えば、ネイティブアプリケーション環境２０４用の２００および２０２等のＡＬＣは、通常、ＳＡＣ１００内で使用されるＡＰＩ、アプリケーションエンジン１２２、およびイネーブラ１２４の間で変換を行い、アプリケーションロジックを実行して、基礎となる技術または実装における変動の複雑性からアプリケーションを抽象化する。Ｊａｖａ（登録商標）等の手続き型ランタイム環境２１４をサポートする２１０および２１２等のＡＬＣは、拡張された機能を有するアプリケーション環境のバーチャルマシンを有効化するために結合が形成されたネイティブ環境に使用される同じＡＬＣであってもよく、あるいは、環境においてサポートされない、または容易に実行されないランタイムアプリケーションのための機能を実行するアプリケーションロジックを追加してもよい。同様に、宣言型ランタイム環境２２４に拡張機能を追加するために使用される２２０および２２２等のＡＬＣは、選択された機能のために追加された結合を有する他の環境に使用される同じＡＬＣであってもよく、あるいは、ＡＬＣは、宣言型アプリケーションが、ユーザインターフェース機能および基本アプリケーションロジックを実行することのみを必要とするように、そのカテゴリの共通機能を実行するために必要なアプリケーションロジックのほとんどを含んでいてもよい。複数の派生ＡＬＣを使用して、アプリケーションインターフェースのレベルおよび種類は、サポートされる異なる環境に対し変動し得る。ほとんどの場合、すべての環境に利用可能なＡＰＩの共通の組が定義されてＡＬＣによりサポートされ、次いで追加のレベルおよび機能が他のものに含められてもよい。例えば、ポリシーモジュール２５２および状態モジュール２４６は、ＳＡＣ１００内で機能し、選択されたアプリケーション機能は、すべてのＡＬＣおよび環境において必要とされ得るが、特定のエンジンおよびイネーブラへのアクセスは、ある特定の環境に制限され得る。同様に、ネイティブアプリケーション環境２０４に対するＡＬＣは、低レベルＡＰＩの大きな組を提供し得るが、一方宣言型ランタイム環境２２４に対するＡＬＣは、より高いレベルのＡＰＩの単純化された組がより能力の低い環境に提供されるように、追加のアプリケーションロジックを含み得る。
【００５４】
（サービスおよびネットワークインターフェース１４０）
ＳＡＣ１００のアーキテクチャは、サービスおよびネットワークインターフェース１４０、ならびに通信モジュール２４０を含み、接続管理、サービス品質（ＱｏＳ）管理、およびセッション管理等の機能を含む。ＳＡＣ１００は、（ａ）他からの１つのシステムの変化または変動の影響を最小限化するため、（ｂ）異なるデバイスプラットフォームおよび製品にわたって実装する際にケースバイケースの試験の労力および技術的リスクを最小限化するため、ならびに（ｃ）様々なネットワークシステムおよびデバイスにわたって移植可能な所与のアプリケーション環境用に開発されたアプリケーションを作製するために、サービスアプリケーションおよびサービス／ネットワークインフラストラクチャ（例えば１４２および１４４）、デバイスアプリケーション（例えば２０６、２１６、２２６）およびアプリケーション環境（例えば２０４、２１４、２２４）、ならびにデバイスプラットフォーム（例えば１３２）の変動を、相互から抽象化する。
【００５５】
サービスおよびネットワークインターフェース１４０の接続管理機能は、様々なネットワーク接続および３Ｇ、Ｗ−ＬＡＮ、１ＸＲＴＴ等のベアラを監視し、事前に設定されたポリシーに基づき処置し、接続の変化についてアプリケーションおよびアプリケーションエンジンに関連した詳細とともに通知する。これは、３Ｇ携帯電話ネットワークサポートを必要とするＶｉｄｅｏ  Ｓｈａｒｅ等のアプリケーションに非常に有用である。３Ｇネットワークが利用不可能となり、接続が２．５Ｇネットワークに戻ると、例えば、ビデオ共有が無効となる。Ｖｉｄｅｏ  Ｓｈａｒｅアプリケーションは、サービスおよびネットワークインターフェース１４０の接続管理機能を有することにより利点を得、接続状態を監視および管理する必要なくこの要件を満たす。
【００５６】
ＳＡＣ１００のＱｏＳ管理機能は以下のように動作する。多くのネットワークは、様々な種類のデータ転送のサービス品質をサポートする。アプリケーションの優先度に依存して、データ転送に高い優先度を設定するのが望ましい可能性がある。これらの設定は、通常はプラットフォームレベルで行われ、アプリケーション層には容易にアクセスできない。ＱｏＳマネージャ機能は、アプリケーションのためにこの機構を促進する。
【００５７】
ＳＡＣ１００のセッション管理機能は、ＴＣＰ／ＩＰポートの開放およびそれらの状態の監視等、セッションの確立および監視を担う。データがある場合、またはセッション中に中断がある場合、セッション管理機能は、設定されたポリシーに基づいて処置するか、または関連したアプリケーションおよびアプリケーションエンジンにそのイベントについて知らせ、関連した詳細を提供する。
【００５８】
ネットワークベアラ管理は、ＳＡＣ１００により扱われ、アプリケーションおよび他の統合された要素、例えばアプリケーションエンジンのためのネットワークベアラ管理の詳細からの非依存性を提供する。ベアラを使用するために必要な様々な接続手続きが、ＳＡＣ１００内で扱われる。プラットフォームインターフェース１３０は、要求している要素により特定される依存性および要件に基づき、特定のプラットフォームＡＰＩを呼び出し、最適なベアラを使用して接続を形成および管理するために使用される。これにより、アプリケーションエンジンおよびアプリケーションが接続要件を特定し、一方ＳＡＣ１００がベアラおよび接続管理に関連した複雑なタスクを管理することが可能となる。
【００５９】
ネットワークプロトコルは、プラットフォームインターフェース１３０を介してＳＡＣ１００により扱われる。ＳＡＣ１００は、ＵＤＰおよびＨＴＴＰオーバーＩＰ等の任意のプロトコルを使用して、サービスプロバイダインフラストラクチャ１４２と相互作用する。プラットフォームインターフェース１３０は、特定のプラットフォームＡＰＩを呼び出して最適なプロトコルでＩＰパケットを送信および／または受信するために使用される。
【００６０】
プロトコルは、イネーブラ１２４を介して管理される。具体的には、ＳＡＣ１００は、拡張インターフェース１２０を介して統合されたステートレスなイネーブラ１２４を使用して、ＳＩＰ、ＳＤＰ、およびＭＳＲＰ等のアプリケーションレベルプロトコルを送信／受信する。これにより、アプリケーションおよびアプリケーションエンジンは低レベルの詳細プロトコルを実行する複雑なタスクなしでこれらの機能を使用することができ、また、アプリケーション自体に対する変更を必要としないモジュール式の技術および標準更新が提供される。
【００６１】
（拡張インターフェース１２０）
拡張インターフェース１２０は、モジュール式および柔軟なアプリケーションエンジンならびに技術および標準イネーブラライブラリ統合をサポートする。ＳＡＣ１００は、（ａ）様々なモジュール供給者からのＡＰＩセットおよび規約、ならびにＡＰＩ規約を、共通統合および抽象化層、拡張インターフェース１２０を介して適合し、（ｂ）アプリケーションとは独立したエンジンおよびライブラリの交換（アプリケーションＡＰＩは不変のまま）を可能とし、（ｃ）共通および制御インターフェースを介してエンジン間の状態データ共有をサポートする。
【００６２】
ＳＡＣアーキテクチャにより、第三者技術プロバイダは、アプリケーションエンジン１２２およびイネーブラ１２４により実装された機構がアプリケーションインターフェース１１０を介してＳＡＣ１００からアクセス可能となるように、拡張インターフェース１２０を介してアプリケーションエンジン１２２およびイネーブラ１２４をＳＡＣ１００に統合することができる。拡張インターフェース１２０は、モジュール式アーキテクチャ、ならびにアプリケーションエンジン１２２およびイネーブラ１２４の柔軟な統合を提供する。拡張インターフェース１２０は、アプリケーションエンジン１２２およびステートレスなイネーブラ１２４に実装された機能および機構のための抽象化の層を提供する。これにより、複数のアプリケーションエンジン１２２およびイネーブラ１２４と連動することができる共通アプリケーションおよびアプリケーションロジックコントローラ（ＡＬＣ）が構築され得る。拡張インターフェース１２０により、アプリケーションエンジン１２２およびイネーブラ１２４は、ＳＡＣ１００で維持された状態を共有することができる。この方法論は、すべてのエンジン、イネーブラ、およびアプリケーションに対し一元的にアクセス制御およびポリシー管理を行う手段を提供する。またこれによって、エンジン１２２およびイネーブラ１２４は、それらにアクセスするために使用されるＡＰＩを変更することなしに、またそれらを使用するアプリケーションとは独立して、変更または更新され得る。
【００６３】
汎用およびアプリケーション特定という、アプリケーションエンジンの２つのカテゴリを想定することができる。汎用エンジンは、通常は、多くのアプリケーションおよびアプリケーションロジックコントローラにより、またはシステムが起動した時に使用される。一例は、セッション開始プロトコル（「ＳＩＰ」）ユーザエージェント（例えば図４の４３１を参照）であり、これは、ボイスオーバーＩＰおよびインスタントメッセージング等の多くのＳＩＰアプリケーションにより使用される。ＩＭＳ始動エンジン（例えば図４の４３５を参照）は、汎用エンジンの別の例である。アプリケーション特定エンジンは、ロジックを実行し、状態の管理（例示的には、プレゼンス、場所、および識別等の状況認識における使用のため）およびアプリケーション機能を実行するために必要なデータ管理を行う。例えば、インスタントメッセージングエンジンは、特定のＩＭプロトコルのページモードおよびセッションモード動作を実行するとともに、それらをサポートするために必要な必須の状態を管理することができる。他の例としては、デジタル識別管理、デジタル財布管理、権利管理、状況管理、連絡先およびグループリスト管理、ビデオ共有、ＶｏＩＰおよびＰｏＣが挙げられる。ユーザおよびアプリケーションデータの管理、状態遷移の維持、データパッキングおよび管理の提供は、エンジンの通常の機能である。
【００６４】
イネーブラ１２４は、一般に「ステートレス」であり、つまりそれらは保持されるべき状態情報を必要としない機能を実行し、通常「要求−応答」モデルに基づき動作する。イネーブラ１２４は、一般に、業界標準または特定の技術により定義されるプロトコルを実装する。業界標準イネーブラの例としては、ＳＩＰ、ＨＴＴＰ、ＲＴＰ、ＲＴＣＰ、ＳｉｇＣｏｍｐ、ＩＭＳライブラリ機能、ＸＤＭ、ＭＳＲＰ、プレゼンス、およびデバイス管理等のプロトコルを実行するモジュールが挙げられる。独自の仕様に基づくイネーブラの例としては、場所、デジタル識別、デジタル権利、およびセキュリティプロトコル等の機能およびプロトコルが挙げられる。
【００６５】
アプリケーションエンジン１２２およびイネーブラ１２４は、アプリケーションインターフェース１１０においてＡＰＩを使用してＳＡＣに統合されそれを介してアクセスされ得、また直接アクセスが望ましく、ＳＡＣ１００の機能は必要ではない場合には、アプリケーション２０６、２１６、２２６から、または他のアプリケーションエンジン１２２から直接アクセス可能であり得るという点で、「デュアル」ＡＰＩアクセスを有することができる。
【００６６】
いくつかの場合では、エンジンおよびイネーブラスタックは、複数の方法をサポートする機能およびＡＰＩの共通の組を提供するように層化され得る。使用される方法は、規則の組またはプロビジョニング可能なポリシーにより決定される。一例は、図４を参照して以下で説明されるＳＩＰスタックである。ネットワークおよび／またはサービスインフラストラクチャ要件に基づき必要とされ得る複数のＳＩＰ法がある。これらは、使用されるアプリケーションおよびサービスインフラストラクチャ要素に依存して変動し得る。
【００６７】
（実装例１：リアルタイム通信システム）
図４は、複数のインターネットプロトコルマルチメディアサブシステム（「ＩＭＳ」）アプリケーションを扱うための例示的なＩＭＳクライアントアーキテクチャの概略ブロック図であり、アプリケーションエンジンおよびイネーブラが特に強調されている。アーキテクチャは、図２に示される一般的アーキテクチャに基づいており、ＳＡＣ１００は、プラットフォーム環境、アプリケーション環境、ネットワーク環境、および共有エンジン／イネーブラ環境と相互作用する。ＳＡＣ１００は、これらの環境を抽象化し、機能の共通の組を含み、これにより、相互作用のために環境が他の環境の特定の局面を認識することを必要としないこれらの環境間の相互作用が可能となる。
【００６８】
図４に示される例示的なネットワークは、２．５Ｇ携帯電話ネットワーク３６２および３Ｇ携帯電話ネットワーク３６４である。例示的なサービスおよびサービスインフラストラクチャ４５０は、ボイスオーバーＩＰ（「ＶｏＩＰ」）アプリケーションサーバ３５２およびインスタントメッセージング（「ＩＭ」）アプリケーションサーバ３５４であり、ＶｏＩＰおよびＩＭサービスを実装している。
【００６９】
図４に示されている例示的なアプリケーションおよびアプリケーション環境は以下の通りである。ＶｏＩＰアプリケーション３０４は、ネイティブ環境３０２に実装されている。このアプリケーションは、画面、ダイアログ、アイコン、およびユーザからの入力等のユーザインターフェースを実装している。このアプリケーションは、連絡先への電話、連絡先からの電話の受信、電話の転送等の様々なＶｏＩＰ機構がユーザに提供された場合の画面遷移を含む。ＩＭアプリケーション３１４は、Ｊａｖａ（登録商標）環境３１２に実装されている。このアプリケーションは、画面遷移、ダイアログ、アイコン、およびユーザからの入力を含み、インスタントメッセージを送信する、またはメッセージを受信および表示する等のＩＭ機構をサポートする。通常の通信システムは、バディリストアプリケーションを含む。この例示的な実装では、バディリストは、ウィジェット環境３２２においてバディリストウィジェット３２４として実装されている。バディリストウィジェット３２４は、バディの追加、バディの削除、バディおよびそれらの連絡先情報のリストの取得等のバディリスト管理機構をサポートする。任意選択で、ＩＭ機能は、ブラウザ環境３２６においてウェブページＩＭウィジェット３２８等のウィジェットとして実装することができる。
【００７０】
図４のリアルタイム通信システムを実現するために様々なエンジン３３０およびイネーブラ３４０が使用される。ＩＭＳ始動エンジン４３５は、ＩＭＳベースのリアルタイム通信システムにおけるネットワークへの最初の登録の作成を担う。ＩＭＳ始動エンジン４３５はまた、デバイスのネットワークへの有効な登録を完了および維持するために必要な認証および再試行を扱う。ＳＩＰユーザエージェント３３１は、ＩＥＴＦ  ＲＦＣ  ３２６１に述べられているような、ＳＩＰダイアログおよびトランザクションを含むステートフルなＳＩＰセッション、ならびに３ＧＰＰおよび３ＧＰＰ２技術仕様において推奨されるようなプロファイルを追跡する。グループエンジン３３６は、ネットワーク上のグループリストを作成および維持するために必要な機能を提供する。プレゼンスエンジン３３７は、オンライン／オフライン、通話可能／話し中／不在、場所の情報等、ユーザのプレゼンスをネットワークに公開するための機能を提供する。ＩＭエンジン３３２は、単一の連絡先または連絡先のグループとのＩＭセッションの形成、およびこれらのＩＭセッションの維持等の機能の提供を担う。ＶｏＩＰエンジン３３３は、ＶｏＩＰセッションの形成、およびセッションの終了を含むセッションの維持等の機能を実装する。ジッタバッファエンジン３３４は、リアルタイム通信におけるメディアのスムーズな再生の形成に必要なジッタバッファを含む。この実施形態において、ジッタバッファエンジン３３４は、適正な順番でオーディオパケットをキューイングし、ジッタバッファに十分なパケットがある場合、デバイスオーディオシステムによりそれらを再生する。ジッタバッファエンジン３３４内の構成パラメータは、拡張インターフェースを使用して構成することができる。メディア制御エンジン３３８は、ＩＥＴＦ  ＲＦＣ  ３２６１ならびに３ＧＰＰおよび３ＧＰＰ２技術使用において定義されたＳＤＰパラメータを使用したＳＩＰセッション中のメディアコーデックネゴシエーションを担う。
【００７１】
図４に示されるリアルタイム通信システムはまた、一組のイネーブラを使用して、ＩＥＴＦ、ＯＭＡ、３ＧＰＰおよび３ＧＰＰ２等の標準に従い通信メッセージを作成および分析する。イネーブラの例示的な組は、ＳＩＰ３４６、ＳｉｇＣｏｍｐ３４７、ＲＴＰ３４８、ＲＴＣＰ３４９、ＩＭＳライブラリ３４５、ＭＳＲＰ３４３、ＸＤＭ３４２、ＸＣＡＰ３４４、およびプレゼンス３４１を含む。リアルタイム通信システムのための事実上の信号伝達プロトコルとして、セッション開始プロトコル（「ＳＩＰ」）が使用され始めている。ＳＩＰイネーブラ３４６は、ＳＩＰ形式で符号化されたメッセージの構築および分析を担う。ＳｉｇＣｏｍｐ（信号圧縮）イネーブラ３４７は、ネットワーク上の利用可能な帯域幅が効果的に利用されるように、ＳＩＰメッセージの圧縮を促進する。リアルタイム転送プロトコル（「ＲＴＰ」）は、オーディオおよびビデオ等のメディアパケットを符号化するとともにＩＰネットワーク上でそれらを送信するために使用される標準的なプロトコルである。ＲＴＰイネーブラ３４８は、ＲＴＰメッセージを構築および分析するための機能を提供する。ＲＴＰ制御プロトコル（「ＲＴＣＰ」）は、ＲＴＰパケットが送信または受信される時等のＲＴＰメッセージの制御を提供する。このプロトコルは、ネットワーク内でのジッタの計算に有用であり、メディアのフローおよび再生をスムーズにする。ＲＴＣＰイネーブラ３４９の機能は、ＲＴＣＰメッセージを構築および分析するために使用される。ＩＭＳライブラリ３４５は、これらのプロトコルにおけるＩＭＳ特定の変動がサポートされるように、ＳＩＰイネーブラ３４６、ＳｉｇＣｏｍｐイネーブラ３４７、ＲＴＰイネーブラ３４８、およびＲＴＣＰイネーブラ３４９に対する抽象化を提供する。メッセージセッションリレープロトコル（「ＭＳＲＰ」）は、メディアセッションを形成しＴＣＰチャネルを介して任意のコンテンツを伝送するための標準的なプロトコルである。ＭＳＲＰイネーブラ３４３は、ＭＳＲＰパケットの構築および分析を促進する。ＸＤＭ（ＸＭＬベースデータモデル）イネーブラ３４２は、バディリスト、ウォッチャーリスト、ブラックリスト等の様々なリストをＸＭＬデータを使用して作成し、それらを分析するのを補助する。ＸＭＬ構成アクセスプロトコル（「ＸＣＡＰ」）は、クライアントが、サーバ上にＸＭＬ形式で格納されたアプリケーション構成データの読み出し、書き込みおよび修正を行うことができるようにする。ＸＣＡＰイネーブラ３４４は、ＸＣＡＰメッセージの構築および分析を補助する。プレゼンスイネーブラ３４１は、プレゼンス、またはサブスクリプションリスト等のプレゼンス関連リストを有するＳＩＰおよびＸＤＭメッセージの構築および分析を担う。
【００７２】
図４のリアルタイム通信システムの各種コンポーネントは、以下のように相互作用する。ＳＡＣ１００は、ＩＭＳ始動エンジン３３５、ＳＩＰユーザエージェントエンジン３３１、ジッタバッファエンジン３３４、およびメディア制御エンジン３３８、ならびにイネーブラ３４０のすべてをロードするように構成される。ＳＡＣ１００は、ＳｙｍｂｉａｎまたはＷｉｎｄｏｗｓ（登録商標）等のオペレーティングシステム上のサービスとして起動した時に、これらのエンジンおよびイネーブラをロードする。ＩＭＳ始動エンジン３３５はＳＡＣ１００にネットワークと通信するために必要な必須チャネルを作成するよう要求し、これらのチャネルを使用してデバイスをＩＭＳネットワーク等のネットワークに登録する。ユーザがＶｏＩＰアプリケーション３０４を呼び出すと、それはＳＡＣ１００に配備され、ＶｏＩＰエンジン３３３がロードされることを要求する。ＳＡＣ１００はＶｏＩＰエンジン３３３をロードし、ＶｏＩＰエンジン３３３の使用準備が整ったことをＶｏＩＰアプリケーション３０４に通知する。次いでユーザがＶｏＩＰを使用して連絡先を呼び出そうとすると、ＶｏＩＰアプリケーション３０４はＶｏＩＰエンジン３３３に対するＡＰＩを呼び出し、ユーザと連絡先との間のＶｏＩＰセッションをセットアップする。ＶｏＩＰエンジン３３３はＳＩＰユーザエージェントエンジン３３１ならびにＩＭＳライブラリイネーブラ３４５およびＳＩＰイネーブラ３４６をＳＡＣ１００とともに使用し、ネットワーク上のＶｏＩＰサーバ３５２とのセッションを形成する。ＶｏＩＰセッションの間、ＶｏＩＰエンジン３３３は、メディア制御エンジン３３８に対し、メディア転送に適切なオーディオコーデックをネゴシエートするよう要求する。ＶｏＩＰセッションが確立された後、ユーザはマイクロフォンを使用して話すことができる。ＶｏＩＰエンジン３３３はオーディオデータを取得し、ＳＡＣ１００およびプラットフォームドライバのうちの適切な１つを使用して、それを連絡先に送信する。受信者側では、オーディオパケットがプラットフォームドライバのうちの好適な１つにより受信され、ＶｏＩＰエンジン３３３に受け渡されて処理される。ＶｏＩＰエンジン３３３は、ＲＴＰイネーブラ３４８を使用して、オーディオデータを解読し、それをジッタバッファエンジン３３４に渡し、キューイングおよび再生を行う。ジッタバッファエンジン３３４は、正しい時間系列に従いオーディオパケットをつなぎ合わせ、プラットフォームドライバのうちの好適な１つを使用してオーディオを再生する。ユーザがＩＭメッセージを送信したい場合、ＶｏＩＰアプリケーション３０４は、ＳＡＣ１００に、ＩＭアプリケーション３１４を呼び出す必要があることを知らせる。サーバモジュール２４８および信号伝達モジュール２５４（図３）を使用して、ＳＡＣ１００はＩＭアプリケーション３１４を呼び出す。ＩＭアプリケーション３１４はＳＡＣ１００に対し、ＩＭエンジン３３２をロードすることを要求する。ＳＡＣ１００はＩＭエンジン３３２をロードし、ＩＭエンジン３３２の使用準備が整ったことをＩＭアプリケーション３１４に知らせる。次いで、ＩＭアプリケーション３１４は、ＩＭを介して送信される必要があるデータを受領することができ、ＳＡＣ１００を介してＩＭエンジン３３２を呼び出しデータを受け渡す。ＩＭエンジン３３２は、ＳＡＣ１００を使用してデータをネットワークに送信する。
【００７３】
（実装例２：新規アプリケーションカテゴリの追加）
図５は、新規アプリケーションカテゴリを追加するために実施例１の実装に追加され得る、追加の拡張、ＡＬＣおよびＰＦＤの概略ブロック図である。本実施例では、携帯商取引のカテゴリが追加されている。
【００７４】
拡張インターフェース１２０を介して追加される追加のエンジン４３０には、ユーザのアプリケーションおよびサービス識別およびクレデンシャルを管理するデジタル識別エンジン４３２；銀行口座、クレジットカード、支払いクレジット、財政上およびポイントの情報、ロイヤルティおよびメンバーシップ情報等のユーザの情報を管理するデジタル財布エンジン４３４；広告、クーポンおよび特価提供等の販促、ならびに推奨等の商品販売を扱う商業マネージャエンジン４３６；場所、利用可能性、ローカル接続およびサービス利用可能性等の状況認識情報を提供する状況エンジン４３８；優先傾向、履歴、ならびに承認されたアプリケーション、サービス、およびエンジンの使用プロファイリング機能および情報を提供するコンテキストエンジン；販売時のクーポン、リベート、およびメンバーシップポイント等のアイテムの償還を管理、供給、追跡、および報告する償還エンジン４４２；販売時の支払いを扱う支払いエンジン４４４が含まれる。拡張インターフェース１２０を介して追加される追加のイネーブラ４５０には、バーコードデータのバーコードリーダへの発信をサポートするＭｏｂｅａｍイネーブラ４５２、および近距離無線通信（「ＮＦＣ」）トランシーバへのＮＦＣ転送をサポートするＮＦＣイネーブラ４５４が含まれる。ＭｏＢｅａｍ（登録商標）技術は、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＥｃｈｏ  Ｉｎｃ．から利用可能であり、２００４年２月３日発行のＣｈａｌｌａらに対する米国特許第６，６８５，０９３号；２００５年４月１２日発行のＣｈａｌｌａらに対する米国特許第６，８７７，６６５号；２００６年４月１８日発行のＣｈａｌｌａらに対する米国特許第７，０２８，９０６号；２００８年７月８日発行のＣｈａｌｌａらに対する米国特許第７，３９５，９６１号；Ｃｈａｌｌａらの名前で２００８年２月１４日に公開された米国特許出願公開第ＵＳ  ２００８／００３５７３４号、（これらのすべては、その全体が本明細書に参考として援用される）を含む多くの特許および特許出願において、様々なパーソナルデジタル電子デバイスとともに説明されている。
【００７５】
様々なアプリケーション環境に追加の商取引機能を提供するために、追加のＡＬＣが追加される。ネイティブ商取引ＡＬＣ４００は、ＳＡＣ１００を介してエンジン、イネーブラ、デバイスプラットフォーム、およびサービスからネイティブ環境４０２により使用される規約に提供された追加のＡＰＩを変換する。これはまた、信号伝達、状態共有、およびデータ共有機能をサポートする。ＪＡＶＡ（登録商標）商取引ＡＬＣ４１０は、ネイティブＡＬＣ機能を含み、さらに、存在する場合にはＪａｖａ（登録商標）  ＶＭネイティブインターフェースを介した、またはＶＭ環境への結合を介したＪａｖａ（登録商標）バーチャルマシンへの統合を含む。これはまた、リアルタイムイベント操作のためのバックグラウンド処理等のＪａｖａ（登録商標）プログラミング環境により容易にサポートされない追加のアプリケーション能力およびロジック、ならびにＪａｖａ（登録商標）アプリケーションにより必要とされるプログラミングを最小限化するためのＡＰＩのより高レベルの組を含む。ＡＪＡＸ商取引ＡＬＣ４２０は、ＪＡＶＡ（登録商標）商取引ＡＬＣにより提供される機能、ＡＪＡＸ環境への結合およびウィジェットランタイムおよびブラウザ、ならびに商取引機能を実行するために必要とされるＡＰＩの数および複雑性を最小限化するための追加のアプリケーションロジックを含む。
【００７６】
３つの追加のプラットフォームドライバが、既存のＰＦＤに、または別個のモジュールとして追加される。ＶＰＮ  ＰＦＤ機能４６２は、プラットフォームにインストールされた特殊な安全トランスポート機能を統合する。安全ストレージＰＦＤ機能４６４は、プラットフォームの安全ストレージリソースをＳＡＣ１００に統合する。ＬＢＳ  ＰＦＤ機能４６６は、プラットフォームの場所機能および情報と統合する。
【００７７】
各モジュールの登録には、アクセス制御およびセキュリティ要件を定義するためのポリシーおよびセキュリティドキュメントが含まれる。ポリシープロビジョニングは、定義されたデータ構造に従うＸＭＬドキュメントを使用して実行される。ポリシーには、ユーザ、サービスプロバイダ、およびエンジンにより設定されたプライバシーおよびセキュリティ優先傾向が含まれる。定義されたＡＰＩ、状態データ、および共有データへのアクセスを制御するために安全証明書がインストールされる。機能またはデータへのアクセスを得るために、要求要素は安全なチャネルを介して適切な鍵を供給する。
【００７８】
キャンペーンサービスは、商業エンジン４３６に、広告、クーポン、および値引き等、プロファイルおよび販促アイテムを送信する。これは、ＯＭＡデバイス管理プロビジョニングイベントを介して提供されるＸＭＬベースのドキュメントを使用したプロビジョニングにより行われ、ドキュメントは、その商業ドキュメントの種類のハンドラとしてデバイス上のＯＭＡ−ＤＭアプリケーションに登録されている商業エンジン４３６により分析される。商業エンジン４３６は、配置および使用のための標的状況を説明する関連したプロファイルおよびメタデータを含む共有データベース内にアイテムを格納する。
【００７９】
状況エンジン４３８は、承認された要求要素に利用可能な場所等の状況データを定義し格納する。
【００８０】
買物アプリケーション（図示せず）または広告支払済みゲームアプリケーション（図示せず）は、関連した商業データ、必要に応じてアクセスを承認するための供給クレデンシャル、および他のアプリケーションにより提供された状況データに基づく選択された販促を発見するための発見機能を実行し、ユーザからの応答を収集し、メタデータまたは他の応答情報を提供し、代わりにプロバイダからクレジットまたはポイントを受領する。様々なアプリケーションまたは機能が異なる環境にあってもよい。例えば、商業アプリケーションはＪａｖａ（登録商標）環境にあってもよく、状況マネージャはネイティブＣアプリケーションまたはアプリケーションエンジン（４３８）にあってもよく、ゲームはＦｌａｓｈまたはＡＪＡＸウィジェットランタイム環境にあってもよく、買物アプリケーションはウェブページに埋め込まれたウィジェットを使用してＡＪＡＸブラウザを介して実行されてもよい。
【００８１】
状況ウィジェット４２４は、呼び出されて現在の場所およびコンテキスト状態が所定の基準に一致することを通知され得る。次いで値引きおよび推奨ウィジェット（図示せず）が呼び出されて、コンテキストエンジンにより供給される情報に基づいてローカルサービスによりプロビジョニングされた推奨および値引き情報を収集することができる。販売時に、Ｊａｖａ（登録商標）償還アプリケーション４１４を使用してクーポンおよびリベートデータをデジタル財布から読み出し、償還エンジンを呼び出してＭｏＢｅａｍイネーブラ４５２を使用してクーポンおよびリベートデータをバーコードスキャナに発信することができる。償還エンジン４４２はトランザクションを確認し、償還サービスにメッセージを生成する。次いで償還アプリケーション４１４は支払いアプリケーション４０４を呼び出す。支払いアプリケーション４０４を使用して、識別エンジンにおいてユーザＩＤを確認し、支払い方法を選択し、銀行サービスを介して残高をチェックし、支払いクレデンシャル情報をデジタル財布エンジン４３４から読み出す支払いエンジンを呼び出し、次いでＮＦＣイネーブラ４５４を使用して支払いクレデンシャルをＮＦＣトランシーバに転送する。支払い確認およびトランザクション履歴が更新され、使用プロファイルがコンテキストエンジン４４０により更新される。
【００８２】
本明細書に記載のシステムおよび方法は、多くの異なる種類のデジタル電子デバイスに有用であるが、第２の実装例は、パーソナルデジタル電子デバイス、特に無線通信対応および携帯型のものに特に有用である。「パーソナルデジタル電子デバイス」とは、ユーザに合わせてパーソナライズすることができるデジタル電子デバイスである。それらは個人が容易に持ち歩くことができ、また携帯電話、携帯情報端末（「ＰＤＡ」）、ゲームデバイス、オーディオおよびビデオプレーヤ、フォブ、ならびにＵＳＢフラッシュドライブ等のデバイスを含む。それらは、家、オフィスまたは車両での固定された場所での使用が意図されてもよく、外付けハードドライブおよびオンデマンドケーブルボックス等のデバイスを含む。パーソナルデジタル電子デバイスは、通信、娯楽、セキュリティ、商取引、ガイド、データストレージおよび転送等を含む多くの用途に好適であり、また特定の用途専用となり得、または用途の組み合わせに好適となり得る。パーソナルデジタル電子デバイスは、スピーカ、画面、ＵＳＢおよびＦｉｒｅＷｉｒｅ等の有線パーソナルエリアネットワーク、ＩｒＤＡ、Ｂｌｕｅｔｏｏｔｈ、ＵＷＢ、Ｚ−ＷａｖｅおよびＺｉｇＢｅｅ等の無線パーソナルエリアネットワーク、ならびにＭｏＢｅａｍ技術を含む、トランザクション設備でのデジタルトランザクションドキュメントおよび安全なデジタルトランザクションドキュメントの表示に使用することができる様々な能力を有する。
【００８３】
本明細書に記載のシステムおよび方法は、ソフトウェア、またはＡＳＩＣもしくはチップセット等のハードウェア、またはソフトウェアおよびハードウェアの組み合わせにおいて実現することができる。ハードウェアを使用して実装が行われる場合、これはプロセッサおよびメモリを含む。ＳＡＣのコア機能はＡＳＩＣにおいて実装され、状態、データおよびＳＡＣを機能させるのに必要な他の情報を格納するためにメモリが使用される。機能、インターフェースおよび実施形態において説明された様々なモジュール間の相互通信は、ハードウェアベースの実装に対してもまた同様である。ＡＬＣおよびＰＦＤモジュールにおいて行われるアルゴリズム、ロジックおよび処理はＡＳＩＣにおいて実装され、インターフェースを外部コンポーネントに曝す。ＳＡＣ  ＡＳＩＣ内の拡張モジュールは、拡張の実行ファイル（複数を含む）をメモリにロードし、必要な時にいつでもそれらを実行する。
【００８４】
図６は、例示的なＳＡＣ  ＡＳＩＣ実装５００を示す。ＳＡＣコア機能５３０、アプリケーションインターフェース５１０、拡張インターフェース５２０、プラットフォームインターフェース５３０、サービスおよびネットワークインターフェース５４０、マイクロプロセッサ５５２、メモリ５５４、Ｉ／Ｏインターフェース５５６、ならびにＩ／Ｏモジュール５５８が、ＡＳＩＣチップ上に実装される。アプリケーションインターフェース５１０、拡張インターフェース５２０、プラットフォームインターフェース５３０、ならびにサービスおよびネットワークインターフェース５４０を使用してＳＡＣ  ＡＳＩＣ５００と相互作用する様々なコンポーネントは、特定のプラットフォームおよびアプリケーション要件への変化および適合を促進するソフトウェアに基づく。具体的には、エンジン５６１、ＡＬＣ５６２、ＰＦＤ５６３、イネーブラ５６４、およびサービスインターフェースモジュール５６５は、ドライバを使用してインターフェースを介しＳＡＣ  ＡＳＩＣ５００と相互に関連するソフトウェアモジュールである。例えば、図６に描かれているように、１つの例示的な実装において、ソフトウェア要素は、適切な信号伝達チャネルにより高速シリアル入力／出力チャネルを制御するＳＡＣドライバ５６０を介してＳＡＣ  ＡＳＩＣ５００と相互に関連する。Ｉ／Ｏモジュール５５８は、適切なインターフェースおよびＳＡＣコア機能５５０へのプロセス間通信を管理する。ＳＡＣドライバ５６０は、インターフェースの種類に基づき、ＡＬＣ５６２、ＰＦＤ５６３、エンジン５６１、イネーブラ５６４、およびサービスモジュール５６５にＡＰＩを提供する。ＳＡＣドライバ５６０はＡＰＩをサポートし、それらをシリアルデータ形式およびＳＡＣ  ＡＳＩＣ５００により使用されるプロトコルに転換するために必要とされる変換および符号化を実行する。同様に、ＳＡＣドライバ５６０は、ＳＡＣ  ＡＳＩＣ５００からの情報を適切なインターフェース形式に転換し、ＡＬＣ５６２、ＰＦＤ５６３、エンジン５６１、イネーブラ５６４、およびサービスモジュール５６５により必要とされるＡＰＩサポートを実行する。この例示的な実装では、ＳＡＣ  ＡＳＩＣ５００と相互作用するコンポーネントは、ＳＡＣドライバ５６０と相互に関連する際、ＳＡＣのソフトウェア実装と直接的に相互作用する場合と同じＡＰＩおよび方法論を使用する。サービスモジュール５６５は、サービスおよびネットワークインターフェースにより、様々なネットワーク、サービスインフラストラクチャ、およびサービスアプリケーションシステムと相互運用するためのアダプタとして使用される。
【００８５】
Ｉ／Ｏインターフェース５５６およびドライバの方法論は、他の要件をサポートするように変化することができる。例えば、より要求が厳しく複雑な実装においては、Ｉ／Ｏインターフェース５５６は、多重チャネルまたはバスインターフェースとして実装することができる。各々のインターフェースの種類に対し別個のドライバを実装することができる。
【００８６】
本明細書に記載の技術は、様々な様式で組み合わせることができる。１つの例示的な実装において、ＳＡＣはデバイスインターフェースを介してデバイスプラットフォームに統合され、ネットワークベースのサービスはサービスおよびネットワークインターフェースを介して含められる。ＳＡＣは、サービスアプリケーションが、データ、信号、メッセージ、または状況情報を発見およびアクセスする、または未知のデバイス機能へ、またはそこから送達することができるようにするオンデバイスサービスを提供するために使用される。同様に、デバイスプラットフォーム機能は、未知のサービス機能により提供される情報を発見しアクセスすることができる。この場合、サービスアプリケーションおよびデバイス機能は共通の方法を使用する必要はなく、また情報源を認識する必要さえない。例えば、デバイスの場所ベースのサービス機能は、ＳＡＣに場所データを登録および格納することができる。サービスは、場所データについてＳＡＣに問い合わせを行い、ＳＡＣからデータディスクリプタおよび場所データを読み出すことができる。サービスは、ネットワークの使用についてＳＡＣ内にサービスポリシーを設定することができ、様々なデバイスプラットフォームがポリシー情報を読み出してポリシーにより定義された動作を実行する。この実装は、アプリケーションエンジン、イネーブラ、またはアプリケーションを使用しない。
【００８７】
別の例示的な実施形態において、セキュリティまたはテレメトリデバイス等、接続を介したサービスの監視およびそれとの通信のためのデバイスが使用される。ＳＡＣは、ネットワーク接続およびサービスをサポートするために使用されるサービスおよびネットワークインターフェースを有するデバイスにおいて実装され、プラットフォームインターフェースを使用してデバイスと統合され、拡張インターフェースを使用してイネーブラおよび独自の安全トランスポートプロトコルを実装し特殊デバイスからのデータを監視するために使用されるエンジンと統合される。この場合、アプリケーションはサービス上で実行されるため、アプリケーション統合は必要ではない。この方法により、サービスエンジンおよびイネーブラ構成は、デバイスプラットフォームリソースを使用しながら、使用されている特定の方法およびセキュリティについてデバイスが認識することなく複数のソースからの複数のデバイスにおいて使用され得る。あるいは、この方法を使用して、単一のデバイスプラットフォームからの独自のプロトコルおよび方法を有する複数のサービスをサポートすることができる。
【００８８】
背景として有用となり得る、または本明細書に記載のアーキテクチャおよび方法の様々な局面を実装するために有用となり得るさらなる技術情報は、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＥｃｒｉｏ  Ｉｎｃ．から入手可能であり、その全体が本明細書に参考として援用される、以下の文献において説明されている：（Ａ）Ｅｃｒｉｏ  Ｉｎｃ．，Ａｄｖａｎｃｅｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ａｎｄ  Ｃｏｍｍｅｒｃｅ  Ｓｏｌｕｔｉｏｎｓ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｐｈｏｎｅｓ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｍｕｌｔｉｍｅｄｉａ  Ｓｕｂｓｙｓｔｅｍ（ＩＭＳ）  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ（ＳＤＫ），２００７（インターネットでサイトｈｔｔｐ：／／ｗｗｗ．ｅｃｒｉｏ．ｃｏｍ／ｐｒｏｄｕｃｔｓ／ｉｍｓ＿ｌｉｂｒａｒｙ．ｈｔｍｌから０２／０１／２００８にダウンロード）；（Ｂ）Ｅｃｒｉｏ  Ｉｎｃ．，Ｅｃｒｉｏ  ＳＡＣ  Ｐｒｏｄｕｃｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｏｃｕｍｅｎｔ；（Ｃ）Ｅｃｒｉｏ  Ｉｎｃ．，Ｅｃｒｉｏ  ＳＡＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｄｅｓｉｇｎ  Ｄｏｃｕｍｅｎｔ；（Ｄ）Ｅｃｒｉｏ  Ｉｎｃ．，Ｅｃｒｉｏ  ＳＡＣ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｏｃｕｍｅｎｔ。
【００８９】
本明細書に記載の本発明の様々な実施形態は、本発明の例示である。本明細書に開示された実施形態の変形および修正が可能であり、本特許文献を検討すれば実施形態の様々な要素の実用的な代替物および均等物が当業者により理解される。本明細書に開示された実施形態のこれらの、および他の変形および修正は、以下の請求項に記載される本発明の範囲および精神から逸脱せずに行うことができる。
【図１】
2011514586.tif 000003
【図２】
2011514586.tif 000004
【図３】
2011514586.tif 000005
【図４】
2011514586.tif 000006
【図５】
2011514586.tif 000007
【図６】
2011514586.tif 000008
【国際調査報告】
2011514586.tif 000009
2011514586.tif 000010
2011514586.tif 000011