モバイルミドルウェア設計の最適化
理想的なモバイルミドルウェアアーキテクチャは、論理的なアプリケーション配信のベースとなるサーバ要素を持つべきです。これらのアプリケーションは、データの消費者、または外部サービスやデータアクセスに対応するAPI、すなわちミドルウェア層のバックエンドのいずれかを表すことができます。サーバーのフロントエンドに位置するAPIやインターフェースは、情報や経験を提供するためのプラットフォームとして機能します。これをまとめると、ユーザー-サーバー-アプリケーション-リソースの伝統的な4層構造になります。
このことは、アプリケーション作成の初期段階から、優れた設計プラクティスのプログラムを組み込む必要があることを意味します。フレームワークから始めて、優れたセキュリティとコンプライアンスサポート、アクティブログイン、そして、すべてのプラクティスを確実にするためのフレームワーク構造への他の様々な要素を提供する必要があります。
モバイル・ミドルウェア・アプリケーション・フレームワークの大きな核となる問題の1つは、APIの使用方法です。ブラウザからのアクセスをサポートしたい場合、ベースとなるアプリケーションはRESTfulなフロントエンドを提供しなければなりません。さらに、ほとんどのモバイルデバイスアプリケーションもRESTful APIを使用する必要があります。RESTful APIを使用する場合、表現力豊かな状態転送を前提にアプリケーションを設計する必要があることを強調することが重要です。つまり、アプリケーションが状態を維持することを前提にしてはいけないということです。つまり、これはアプリケーションからリソースへの接続メカニズムにとって非常に重要です。
パフォーマンス向上への道
アプリケーションで Web サービスを使用してミドルウェアに直接アクセスする場合は、BYOD ポリシーで各プラットフォームが API をどの程度サポートしているかを確認する必要があります。各プラットフォームがサポートするすべての API の表を作成し、それを基に、ニーズに合わせて使用する API の最小数を簡単に見つけます。
モバイルミドルウェアは開発時間を大幅に短縮します。
ほとんどの場合、各 API に対して異なるフロントエンドを提供する必要があります。各ユーザー・インターフェースに対してアプリケーション・ロジックを直接複製する代わりに、同じアプリケーション・バックエンドのセットをディスパッチする複数のフロントエンドのセットを作成することを検討してください。これにより、デバイスOSやモバイルデバイスのポリシーに基づいてAPIを定期的に調整する必要がある場合、アプリケーションのライフサイクル管理プロセスが簡素化されます。
アプリケーション・ロジックからAPIを切り離すことは、ミドルウェア・リソースの観点からも実用的です。API用に定義された汎用データスキーマは、データスキーマにすべての必要なリソース要素が含まれている場合、アクセスの観点からは基本的なソリューションとしか考えられません。効果的なリソースの優先順位付けモデルは、アプリケーションが使用する必要のある要素をユーザーではなくデータスキーマに提供するだけで実現できます。次に、バックエンドを使用して、どのようなリソース実装ともインターフェースをとることができます。
このアプローチの主な課題の1つはパフォーマンスで、ほとんどの場合、モバイルミドルウェアにとって大きな障害となります。アプリケーションの柔軟性を最大限に引き出すためには、リソースとユーザーの両方の観点から、アプリケーションをマルチAPIでゆるやかに特徴付けることが望ましい場合があります。パフォーマンスを最適化するためには、ユーザーとリソースへの負担を軽減するために、柔軟性とハードコードされたインターフェースの一部をあきらめたり、アプリケーションロジックを複製したりする必要があることがよくあります。
考慮すべきもう1つのパフォーマンス改善は、ミドルウェアの複数のコピーの外向きのスケーリングです。しかし、このアプローチには、アプリケーション、ミドルウェア、ユーザーAPI間の接続にパフォーマンスの障壁がある場合にのみ有効であるという制限もあります。例えば、直面しているパフォーマンスの問題がデータベースの処理速度に起因している場合、ミドルウェアのコピーを複製しても役に立ちません。
モバイル・ミドルウェアは、特にモバイル・アクティビティが特定のリソースの投入や金融取引を伴う場合、接続性の損失に非常に敏感です。ユーザーからリソースへの経路は、アクティビティタイプの全範囲に及びますが、障害が発生してもユーザーがリソースの提出に気付かなかったり、管理されていないリソースが立ち往生したりしないように、徹底的に調査し、テストする必要があります。