WCF 빅 데이터 전송 시 관련 설정

5046 단어 WCF
최근 에 회사 에서 WCF 로 server 단 을 만 들 었 는데 나중에 성능 테스트 를 할 때 문제 가 하나 발견 되 었 습 니 다. 클 라 이언 트 가 서버 에서 실체 대상 목록 을 되 찾 았 을 때 channel is faulted status 의 이상 이 발생 했 습 니 다.
이 이상 을 자세히 분석 한 결과 빅 데 이 터 를 전달 해서 생 긴 것 일 것 이다. 한 가방 에 100 여 개의 실체 대상 이 있 는 목록 을 전송 할 때 클 라 이언 트 가 정상 적 인 모습 을 보 였 고 리 턴 된 실체 대상 목록 의 수량 이 500 + 에 이 르 렀 을 때 이상 이 나 타 났 기 때문이다.
사실 WCF 는 비교적 유연 하 게 만 들 었 습 니 다. 기본 적 인 모든 설정 항목 은 프로그램의 app. config 파일 에 놓 여 있 습 니 다. 해당 파 라 메 터 를 변경 할 때 프로그램 을 다시 컴 파일 할 필요 가 없습니다.한편, WCF 디자인 의 취 지 는 DOS 와 같은 공격 을 피하 기 위해 기본적으로 프로필 을 생 성 할 때 전 송 된 buffer 수치 에 대해 일정한 제한 이 있 고 기본 값 은 65535, 즉 64KB 이다.그러나 일부 특정한 응용 장면 에서 64KB 의 buffer 는 우리 의 수 요 를 만족 시 킬 수 없다.설정 파일 에서 buffer 의 size 를 수 동 으로 조정 해 야 합 니 다.
설정 파일 에서 조정 해 야 할 매개 변 수 는 대체적으로 다음 과 같은 몇 가지 가 있 습 니 다.
WCF binding 의 maxBufferSize, maxReceived Message SizeWCF binding ReaderQuotas 의 maxArray Length, maxBytes PerRead, maxDepth 등
일부 극단 적 인 장면 에서 우 리 는 그것 을 최대 2147483647, 즉 약 2GB 크기 의 buffer 로 설정 할 수 있다.네, 1080 P 의 고 화질 영 화 를 WCF 로 전송 하지 않 으 면 2GB 의 크기 가 절대 다수의 상황 의 수 요 를 만족 시 킬 수 있 을 것 이 라 고 생각 합 니 다.
나중에 저 는 관련 매개 변수 크기 를 바 꾼 후에 이상 이 아직도 존재 한 다 는 것 을 알 게 되 었 습 니 다. 이 문 제 는 제 가 오랫동안 답답 하고 다음 날 에 야 인터넷 에서 답 을 찾 았 습 니 다.원래 WCF 의 서버 와 클 라 이언 트 는 실체 대상 (Entitiy Model) 과 같은 데 이 터 를 전달 하면 전송 에서 직렬 화 문제 와 관련 될 수 있 고 WCF 에는 EndPoint 에 대한 설정 항목 이 있 으 며 그 안에 직렬 화 대상 의 최대 size 를 설정 할 수 있다.나중에 나 는 dataContract Serializer 의 max Items InObjectGraph 속성 을 변경 한 후에 야 이 문 제 는 원만 하 게 해결 되 었 다.프로필 을 수정 하려 면 아래 의 예 를 참고 하 십시오.
클 라 이언 트 설정:
? [Copy to clipboard]
View Code XML
 
1

2

3

4

5

<endpointBehaviors> 

          <behavior name="ClientBehavior"> 

            <dataContractSerializer maxItemsInObjectGraph="10000000"/> 

          </behavior> 

        </endpointBehaviors>

서버 설정:
? [Copy to clipboard]
View Code XML
 
1

2

3

4

5

<serviceBehaviors> 

        <behavior name="HostBehavior"> 

          <dataContractSerializer maxItemsInObjectGraph="10000000"/> 

        </behavior> 

      <serviceBehaviors>

수 정 된 클 라 이언 트, 지원 과 서버 에서 1000 + 의 실체 대상 목록 을 전송 합 니 다. 이 수량 뿐만 아니 라 위의 1w 대상 도 문제 가 없 을 것 이 라 고 생각 합 니 다.
원문

좋은 웹페이지 즐겨찾기