拡張性のある Web アプリケーションを開発する
パフォーマンス
単一ユーザー用デスクトップ ソフトウェアの開発では、パフォーマンス要件が明確に定義されます。この場合、通常のタスクの実行において大きな遅延が生じないことが重要です。
World Wide Web の初期のころは、Web ページの速度は遅く、多くのユーザーが長い待ち時間を耐えていました。しかし、新しい Web アプリケーションが増えるにつれて、Web アプリケーションのパフォーマンスの要件が、単一ユーザー用デスクトップにおけるパフォーマンスの要件と変わらなくなってきました。今日、高速の通信テクノロジが一般的になり、ユーザーはより大きなサイト パフォーマンスを求めています。
拡張性
Web アプリケーションの設計における実際の問題は、アプリケーションが単一ユーザーには従来のデスクトップ アプリケーションのように見えていても、実際には数百または数千ものユーザーが同時に使用する可能性のある分散アプリケーションである点です。
Web アプリケーションでは、広範な環境条件の下でのパフォーマンスが要求されます。つまり、拡張性を備えていることが必要です。もちろん、Web アプリケーションはパフォーマンスの良いものでなければなりませんが、単一ユーザーに使用されているときのパフォーマンスの良さは、必ずしも拡張性の良さに転換できるものではありません。
アプリケーションの拡張性を判定するために、多様な測定基準があります。理想的には、確かな拡張性を備えた Web アプリケーションは、次のような機能を持つべきです。
- 単一ユーザーが使用すると共に、数百または数千のユーザーが同時に使用できる。
- 2 倍のリソース (プロセッサ、RAM など) を備えたコンピュータにインストールされた場合は 2 倍、3 倍のリソースを備えたコンピュータにインストールされた場合は 3 倍効率が向上する。
もちろん上記の拡張性要件はあくまで "理想" です。しかし、アプリケーションがこれらの理想に近づけば近づくほど、負荷の下でのアプリケーションの成功率が高まります。
パフォーマンスと拡張性の設計の留意点
Web アプリケーションの開発プロジェクトの開始にあたって最も重要なのは、Web アプリケーションがほとんどの場合サーバー アプリケーションであるという点です。歴史的に見て、サーバー ソフトウェアは複雑さにおいてもプログラミングの難しさにおいても、オペレーティング システム内部の次に位置されてきました。IIS および Windows® は、Web アプリケーション開発をもっと速く容易にする各種の革新的なツールを提供しますが、サーバー ソフトウェア プログラミングの問題と課題は依然存在しています。
アプリケーションの拡張性を高めるために留意するべき重要な点は、次のとおりです。
- テクノロジの選択 どのような開発プラットフォームにおいても、Windows は特定のタスクを完了するためのオプションを多数提供します。適切なテクノロジを選択することが、拡張性のある Web アプリケーションの設計における第一の、そして通常最も重要なステップです。たとえば、クライアント側のテクノロジが、サーバー側で提供される機能と同じ、または同様の機能を提供する場合、多くの場合、クライアント側のオプションが処理に影響を与えます。これは、クライアントが負荷のほとんどを処理することで、アプリケーションの拡張性が高まるためです。適切なテクノロジを選択することにより、クライアントとサーバー間のやり取りを減らすことができ、パフォーマンスがさらに向上します。詳細については、「Web アプリケーションの概要」および Internet Client SDK を参照してください。
- 言語の選択 開発言語の選択は、作成された Web アプリケーションにアクセスするユーザーの範囲を規定するので、アプリケーションに大きく影響します。たとえば、アプリケーションにスクリプティングを含めると、スクリプティングをサポートしないブラウザを使用しているユーザーが除外されてしまいます。次の一覧は、使用できる開発言語です。
- Windows スクリプト コンポーネント
- Visual Basic
- Java
- C++
- アルゴリズムとワーク フローの設計 適切なテクノロジでも、使用方法を誤るとよい結果は得られません。
- マルチスレッド IIS と Windows は、マルチスレッド環境を提供します。拡張性のあるアプリケーションを作成するためには、コンポーネントに適したスレッド モデルを選択する必要があります。
- リソース競合と遅延 リソースの競合とリークは、アプリケーションの拡張性の障害となります。
- "実用的な" テスト Web アプリケーションが使用される実際の環境に類似する環境で、アプリケーションを充分にテストする必要があります。
上記の項目の詳細な分析は、このマニュアルでは扱いません。ここでは、拡張性のある Web アプリケーションの作成に役立つように、IIS に固有の注意やプロシージャをまとめて示します。
説明する項目は次のとおりです
- 拡張性のある ASP アプリケーションを開発する
- 拡張性のあるコンポーネントを開発する
- パフォーマンスの高い ISAPI アプリケーションを設計する
- データ アクセス パフォーマンス
- パフォーマンスとセキュリティをテストする
Web アプリケーションの設計の詳細については、「設計に関する決定事項」を参照してください。