Share via


애플리케이션 동작

고려해야 할 애플리케이션 개발의 또 다른 측면은 로컬 또는 인트라컴퓨터 작업 간의 동작과 두 네트워크 컴퓨터 간에 작업이 수행될 때의 동작입니다. 로컬 컴퓨터에서 제대로 작동할 수 있는 애플리케이션 동작이 있지만 네트워크를 통해 실행하면 성능이 크게 저하되고 리소스 소비가 발생합니다. Windows 소켓 애플리케이션을 개발할 때는 다음 애플리케이션 동작을 피해야 합니다.

피해야 할 동작

  • 수다스러운 애플리케이션.

    일부 애플리케이션은 많은 작은 트랜잭션을 수행합니다. 이러한 각 트랜잭션과 연결된 네트워크 오버헤드와 결합하면 효과가 곱됩니다. 네트워킹에서 소규모 트랜잭션은 많은 리소스와 대규모 트랜잭션만큼 많은 시간을 사용할 수 있습니다. 더 나은 방법은 많은 작은 트랜잭션을 단일 큰 트랜잭션으로 결합하는 것입니다.

  • 직렬화된 트랜잭션.

    트랜잭션을 불필요하게 직렬화하면 성능이 저하되고 확장성에 영향을 줄 수 있습니다. 예를 들어 1,000개의 직렬화된 트랜잭션을 완료하려면 1000 * RTT 이상이 걸립니다. 더 나은 방법은 관련 없는 트랜잭션을 병렬로 실행하는 것입니다. 직렬화된 애플리케이션이 수다스러운 애플리케이션과 결합되면 응답성이 심각하게 방해받을 수 있습니다.

    참고

    애플리케이션을 올바르게 역직렬화하는 것은 어려울 수 있습니다. 직렬화된 에서 병렬로 변경하는 것이 너무 어렵다는 것을 증명하는 경우 여러 트랜잭션을 더 적은 수의 큰 트랜잭션으로 결합하는 것이 좋습니다.

     

  • 지방 거래.

    네트워크에서 불필요한 바이트를 보내는 애플리케이션은 뚱뚱한 애플리케이션으로 간주됩니다. 네트워크에서 불필요한 바이트를 보내는 애플리케이션은 네트워크 오버헤드를 증가시키고 성능이 저하됩니다. 이러한 상황은 종종 비효율적인 데이터 구조 또는 비효율적인 데이터 스트리밍에서 비롯됩니다. 이를 해결하려면 데이터 구조를 최적화하거나 압축을 사용하는 것이 좋습니다.

다음 섹션에서는 고려해야 할 애플리케이션 개발의 측면을 다룹니다.

고성능 Windows 소켓 애플리케이션