アプリケーションの動作

考慮すべきアプリケーション開発のもう 1 つの側面は、ローカル操作またはコンピューター内操作間の動作と、2 つのネットワークコンピューター間で操作が行われる場合の動作の違いです。 ローカル コンピューターでは適切に動作する可能性があるアプリケーションの動作がありますが、ネットワーク経由で実行すると、パフォーマンスが大幅に低下し、リソースの消費が発生します。 Windows ソケット アプリケーションを開発するときは、次のアプリケーション動作を回避する必要があります。

回避する動作

  • Chatty アプリケーション。

    一部のアプリケーションでは、多数の小さなトランザクションが実行されます。 このような各トランザクションに関連付けられているネットワーク オーバーヘッドと組み合わせると、効果が乗算されます。 ネットワークでは、小規模なトランザクションでは、多くのリソースと、大きなトランザクションと同じくらいの時間を消費できます。 より優れたアプローチは、多数の小さなトランザクションを 1 つの大きなトランザクションに結合することです。

  • シリアル化されたトランザクション。

    トランザクションを不必要にシリアル化すると、パフォーマンスが低下し、スケーラビリティに影響を与える可能性があります。 たとえば、1000 個のシリアル化されたトランザクションの完了には、少なくとも 1000 * RTT が必要です。 関連性のないトランザクションを並列で実行することをお勧めします。 シリアル化されたアプリケーションをチャットアプリケーションと組み合わせると、応答性が深刻に妨げられる可能性があります。

    Note

    アプリケーションを適切に逆シリアル化することは困難な場合があります。 シリアル化から並列への変更が難しすぎる場合は、複数のトランザクションを組み合わせてより少ない大きなトランザクションにすることを検討してください。

     

  • 脂肪トランザクション。

    ネットワーク上で不要なバイトを送信するアプリケーションは、太ったアプリケーションと見なされます。 ネットワーク上で不要なバイトを送信するアプリケーションでは、ネットワークのオーバーヘッドが増加し、パフォーマンスが低下します。 この状況は、多くの場合、非効率的なデータ構造や非効率的なデータ ストリーミングに起因します。 これを解決するには、データ構造を最適化するか、圧縮の使用を検討してください。

次のセクションでは、考慮すべきアプリケーション開発の側面について説明します。

高性能 Windows ソケット アプリケーション