[WCF] 대용량 데이터를 서버로 전송하기 위해 필요한 설정

2009. 11. 27. 19:07WEB/WebService

Client에서 대량의 List나 이진파일을 WCF로 전송하기 위해서는 Web.Config에 특별한 설정이 필요합니다.

문제

  1. 총 92건의 리스트를 WCF로 전송
  2. 그리고 Exception 발생
     

 

해결

이 문제는 WCF에서 다음과 같이 간단한 설정으로 해결하실 수 있습니다.

  1. WCF의 Web.Config에서 maxRecievedMessageSize를 조정하였습니다.
    <configuration>
      <system.serviceModel>
        <bindings>
          <customBinding>
            <binding>
              <httpTransport maxReceivedMessageSize=”409600” />
  2. Client에서 WCF로 파일업로드 처럼 대용량의 데이터를 전송하기 위해서 조정해야하는 값입니다.
  3. 기본값은 65,536Byte이며 최대 값은 Int32의 양수 최대값인 2,147,483,647까지 설정하실 수 있습니다.

성능

MSDN의 다음 문서를 확인해보시면 다음과 같은 글을 확인해 보실 수 있습니다.

악의적인 클라이언트가 메모리를 과도하게 사용하여 서비스에 대한 서비스 거부 공격을 하지 못하도록 기본적으로 65,536바이트로 설정됩니다. 일반적으로 값을 낮추면 성능이 향상됩니다.

이 값이 크면 사용자가 대용량의 데이터를 Server로 전송할 수 있게 되고, 이는 상대적으로 서버가 DDOS(서비스 거부공격)에 쉽게 노출 될 수 있다는 의미입니다. 따라서 이 설정을 높게 잡으실 경우, 연속적인 서비스 호출이나 서버에 과부하를 주는 요청을 보류하거나 거부시키는 방법을 적용하거나, 인증된 사용자만 서비스를 이용하게 함으로서 공격에 대한 취약성을 낮추도록 해야합니다.