ユーザーは、エクスペリエンスによってアプリケーションのパフォーマンスを判断します。
- アプリケーションは迅速に応答できますか?
- バックグラウンド操作の実行中に砂時計アイコンが表示されますか?
- アプリケーションはすぐに起動して閉じますか?
- エラーは理解しやすい方法で処理されますか?
要約すると、ユーザーはアプリケーションを迅速かつ予測可能にしたいと考えています。
これに対し、管理者は、ネットワーク リソースをどれだけ効率的に使用するかについて、アプリケーションのパフォーマンスを判断することがよくあります。 管理者は次の質問を行う場合があります。
- アプリケーションのオーバーヘッドが低く、ネットワークの効率的な使用が行われますか?
- サーバーができるだけ多くのユーザーに一度にサービスを提供できるように、接続の最小数は使用されますか?
- 私は常にヘルプデスクを呼び出していますか?
つまり、管理者はアプリケーションのスケーリングを望んでいます。
パフォーマンス ニーズのベスト プラクティス
Windows ソケット アプリケーションを開発する場合、これらのパフォーマンス要件は有用なルールに変換されます。
ネットワーク アプリケーションを迅速に初期化します。
ユーザー インターフェイスは、ネットワーク応答を待機する必要はありません。 一部のタスクは、ネットワークが使用可能になる前に、またはネットワークなしで実行できます。 ネットワークが応答していない場合、ユーザーは、アプリケーションを閉じるなどの単純な操作のためにユーザー インターフェイスが必要になる場合があります。
ネットワークのシャットダウンを待つ必要はありません。
適切に記述されたクライアント/サーバー アプリケーションは、中止切断を適切に処理します。 シャットダウン時に中断できない、サーバーとのファイルやフォルダーの同期など、時間のかかる操作を開始しないでください。 ネットワークは一貫して応答しないため、小規模な操作でも時間がかかる可能性があります。 進行状況の表示や推定完了時間など、ユーザーに肯定的なフィードバックを提供します。
応答性の高いユーザー インターフェイスを確保します。
アプリケーションの応答性は、不要なヘルプデスクの呼び出しを排除するのに役立ちます。 対話型応答の適切なガイドラインは 500 ミリ秒です。 ユーザーは、500 ミリ秒を超える一時停止をパフォーマンスの遅延として認識します。 アプリケーションは、アプリケーションに対する信頼をユーザーに提供するのに十分な応答性を備える必要があります。
ネットワーク エラーを調査します。
すべてのネットワーク エラーが重大であるわけではありません。 たとえば、すべてのデータを受信または投稿したアプリケーションでは、接続を閉じるときにエラーが無視される可能性があります。 ネットワークまたはユーザーが使用可能であると想定しないでください。ユーザーの介入なしにエラーを処理するか、エラーが重要でない場合は無視します。
アプリケーションでは、独自の妥当なタイムアウトを定義する必要があります。
たとえば、Windows Sockets connect() 要求は、一部の条件下で 21 秒間ブロックされる場合があります。 アプリケーションでは、ユーザーに応じて独自のタイムアウトを導入する必要がある場合があります。
プロトコルのオーバーヘッドを最小限に抑えます。
ネットワーク帯域幅の節約は、アプリケーションによって発生するプロトコルのオーバーヘッドを最小限に抑えることです。 また、不要なネットワーク トラフィックを排除する方法についても説明します。 ヘッダーのオーバーヘッドが低いプロトコルを使用して、アプリケーション データを転送できます。 たとえば、重要度の低いデータや反復可能なデータを少量送信する場合は、TCP ではなく UDP を使用して、接続の確立とメンテナンスに関連するオーバーヘッドを軽減します。 同じデータを複数の受信者に送信する必要がある場合は、マルチキャストを検討してください。 UDP アプリケーションはフロー制御されていないことに注意してください。使用可能な帯域幅を超えてプッシュすると、致命的なネットワーク障害が発生する可能性があります。 Netstat ユーティリティは、-e および -s オプションと共に使用して、さまざまなプロトコルの統計情報を表示できます。
システム リソースを節約する。
適切な制約が使用されていない場合は、システム リソースをすばやく使用できます。 たとえば、ソケットと TCP 接続はリソースを消費します。 クライアントごとに複数の TCP 接続を使用しないでください。この接続は、アプリケーションの目的に対応します。
トランザクション アプリケーションの場合、優れたユーザー エクスペリエンスとネットワーク使用率の低い目標は競合しません。 ネットワークはボトルネックです。 ネットワーク集中型アプリケーションは、待ち時間が長くなり、適切に記述されたネットワーク アプリケーションは、ユーザー インターフェイスとネットワーク転送の両方で不要な待機時間を最小限に抑えるように設計されています。
関連トピック