次の方法で共有


アプリケーションの動作

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

回避する動作

  • Chatty アプリケーション。

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

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

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

    手記

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

     

  • Fat Transactions.

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

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

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