2010-04-13 2 views
3

데이터 계층에 WCF 서비스를 사용하는 프로젝트를 시작했습니다. 현재 모눈에 데이터가 필요한 경우 모든 행이 반환되고 결과가 표에 바인딩되고 데이터 집합이 페이징/정렬/리 바인딩을위한 세션 변수에 채워집니다. 우리는 이미 최대 메시지 크기 문제를 겪었으므로 가져 오기와 캐시를 변환하여 현재 페이지 만 가져 오는 것이 좋습니다.WCF 페이징 된 결과 및 데이터 내보내기

액면가 이것은 충분히 쉬운 것처럼 보이지만 작은 잡기가 있습니다. 사용자는 언제든지 전체 결과 집합을 내보낼 수 있습니다. 즉, 그리드보기 목적으로 현재 페이지를 가져 오는 것이 좋습니다. 그러나 내보내기를 수행하려면 모든 데이터를 호출해야합니다.

이렇게하면 최대 메시지 크기 문제가 다시 발생합니다. 이 유형의 설치에 권장되는 접근 방식은 무엇입니까? 우리는 현재있는 wsHttpBinding을 사용하는

... 어떤 도움을

감사합니다.

답변

2

대용량 파일의 권장 방법은 WCF 스트리밍을 사용하는 것입니다. 나는 당신의 시나리오에 대한 정확한 세부 사항 모르겠지만, 당신은 시작 지점으로 이것 좀 걸릴 수 있습니다 : 아마도 귀하의 경우 같은 것을 할 것

http://msdn.microsoft.com/en-us/library/ms789010.aspx

2

  • "페이징 된"GetData() 메소드로 서비스를 생성하십시오. 여기서 페이지 인덱스와 페이지 크기를 추가 매개 변수로 지정합니다. 이렇게하면 "일반"사용을위한 깨끗한 인터페이스가 제공되어야하며 maxMessageSize 제한을 초과해서는 안됩니다.

  • 모든 데이터를 전송하는 두 번째 서비스 또는 메소드를 생성하십시오. 이상적으로는이를 ZIP 파일이나 뭔가를 서버에 보내십시오. 서비스 거부 공격을 피하기 위해 : 그 ZIP 파일이 여전히 너무 큰 경우 앤디는 이미 maxMessageSizeLimit 좋은 이유 장소에

을 지적, 당신은 큰 파일을 처리하는 WCF 스트리밍을 확인 할 수 있습니다 여기서 WCF 서비스는 큰 메시지를 쏟아 내고 무릎을 꿇게됩니다. 가능하다면 항상 염두에 두십시오. maxMessageSize를 2GB까지 올려 놓지 마십시오. 다시 물으십시오 :-)