현재 클라이언트가 메시지와 함께 XML 파일을 보내 서버와 통신하는 서비스를 개발 중입니다. 메시징의 신뢰성을 향상시키기 위해 (클라이언트는 저 대역의 제한된 대역 스위치 모바일 인터넷을 사용할 것입니다.)이 메시지를 64KB 또는 128KB 크기의 작은 부분으로 채우고 BasicHttp 바인딩에서 전송 = "스트리밍"으로 전송합니다.WCF : WS- 듀얼 바인딩 또는 basichttp 바인딩을 스트림 파일에 청크로
이제 문제가 생겼습니다 : 서버가 클라이언트에게 청크를 성공적으로보고하면 fe 5 청크가 전송되지 않은 후 전송 프로세스가 취소되고 나중에 시도되도록 연기됩니다. 어떤 청크가 수신되고 어떤 청크가 수신되지 않는지 추적한다.
콜백 메커니즘을 사용하여 클라이언트와 통신 할 생각입니다. 서버가 콜백 메소드 인 ChunkReceived를 호출합니다. 서버 쪽에서 파일에 청크를 저장하면 ChunkReceived가 호출됩니다. 잘못되었지만 콜백은 WS Dual http 바인딩에서만 작동하며 basichttp 바인딩에서는 지원되지 않습니다. 그러나 스트리밍 된 전송은 WS 이중 바인딩에서 지원되지 않습니다.
그럼 WS 이중 바인딩으로 전환하고 transfer = "버퍼링 됨"(청크 크기가 비교적 작다고 가정)을 사용하면 전송 안정성이 떨어지지 않습니까? 아니면 어떻게 든, 어쩌면 응답 메시지의 어떤 종류를 반환하여, 기본 HTTP 바인딩에서 클라이언트와 통신 할 수 있습니다 즉 ServerResponse가 SendChunk 작업을 확인하는 경우 클라이언트에게 몇 가지 열거 나 부울 플래그를 개최한다
[OperationContract]
ServerResponse SendChunk (Chunk chunk);
. 그런 다음 모든 청크 상태를 추적하기 위해 클라이언트 및 서버 측에서 일종의 배열을 유지해야합니다. 나는 거기에 사용할 수있는 가장 좋은 패턴이 무엇인지 모르겠습니다. 모든 조언을 높이 평가 될 것입니다.
알고리즘을 주셔서 감사합니다,하지만 보내기? –