2014-05-15 4 views
13

스트림을 통해 이진 문서를 제공하는 WCF 서비스 끝점이 있습니다.wcf 바인딩에서 transferMode가 "Buffered"에서 "Streamed"로 변경되면 클라이언트의 주요 변경 사항이 무엇인가요?

public Stream GetFile(int fileId){ 
... 
} 

은 BasicHttpBinding이 서비스 끝점에 대해 된 transferMode = "버퍼"를 사용하도록 잘못 구성되어 있습니다 : 엔드 포인트는 다음과 같이 보인다. 서비스 엔드 포인트는 현재 내 통제 범위를 벗어나는 당사자를 통합하여 사용됩니다. 버퍼링 된 transfermode의 메모리 소비 문제로 인해 이것을 TransferMode = "Streamed"로 변경하려고합니다.

서비스 바인딩 구성에서이 변경을 안전하게 수행 할 수 있으며 통합하는 당사자에게 아무런 영향을 미치지 않을 것으로 예상합니까?

+0

.NET <-> .NET 시나리오에서 클라이언트와 서버간에 TransferMode가 다른지 여부는 중요하지 않습니다. –

+0

일반적으로 Java 또는 .Net 일지라도 클라이언트가있을 수 있습니다. –

+0

답변으로 게시 할만큼 자신감이 부족하지만 급변하는 변화라고 생각합니다. 이것은 스트리밍으로 설정하는 것을 잊어 버렸기 때문에 클라이언트가 작동하지 않는 문제가 있다는 것을 알고 있기 때문입니다. –

답변

4

내가 아는 한 WCF 스트리밍 모드 전송은 클라이언트에서 옵트 인됩니다. 즉, 서버에서 서버를 변경하더라도 클라이언트가 끝을 변경하지 않는 한 계속 스트림을 수신합니다. 전체 데이터를 버퍼링 된 데이터 덩어리로 제공하기 전에 다시 말해 고객에게 투명해야하지만 스트리밍 된 응답을 허용 할 수 있습니다.

+0

스트리밍 전송 모드를 고려할 수 있다고 생각합니다. 클라이언트와 서버의 구현 세부 사항 서버 측에서 스트리밍 전송 모드를 가질 수 있고 클라이언트가 버퍼링 할 수 있거나 그 반대 일 수 있음을 의미합니다. 내 가정은 정확합니까? Transfermode 설정은 클라이언트 또는 서버의 내부 성능 특성 (일반적으로 메모리 사용량)에만 영향을 미칩니다. –

+0

@AndreasPresthammer 나는 당신이 옳다고 믿습니다. 이 문서에 대한 좋은 문서를 찾기는 어렵지만 일반적으로 양방향 스트리밍 전송 모드를 사용하는 것은 구현 세부 사항입니다. 양 끝은 데이터를받으며, 작업을 시작할 때 정의 할 수 있습니다 (코드가 필요한 WCF 계약 제약 조건에 맞게 변경 될 수도 있음). – Haney

+0

데이터가 도착하기 시작하면서 수신을 시작하고 서버 및/또는 클라이언트가 모든 것을 기다리는 데 병목이있는 경우 수신을 시작하기 때문에 양 끝에서 스트리밍되는 것이 종종 이상적입니다. 계속하기 전에 메모리에로드 할 데이터 – Haney