2011-11-29 2 views
2

나는 문서를 가져 와서 WCF 응용 프로그램의 이미지로 변환해야하는 주도권이 있습니다. Word 문서와 같은 파일이 스트림을 통과하면 문서에 대한 여러 이미지, 즉 문서의 각 페이지에 대해 하나의 이미지가 표시됩니다.WCF의 스트림에서 여러 파일 반환하기

이러한 복수의 이미지를 클라이언트로 되돌리고 싶습니다. 이러한 모든 파일을 스트림을 통해 반환하는 좋은 방법은 무엇입니까? 또한 클라이언트에게 파일의 이름과 반환 할 파일의 수를 알려주는 것이 좋습니다. 그렇게하는 좋은 방법은 무엇입니까?

WCF/웹 서비스를 처음 사용했습니다.

너무 오랜 시간이 걸리거나 너무 많은 이미지를 만들어서 오류가 발생하는 경우 전환 소요 시간을 고려해야합니다. SOAP 오류를 사용하는 것이 클라이언트에게 알리는 좋은 방법입니까?

방금 ​​배열 배열을 만들고 배열을 클라이언트에 반환합니까? 또는 모든 이미지를 하나의 스트림으로 결합하여 반환합니까? 스트림 크기가 너무 크면 (즉 2MB 이상) 파일을 전송하는 데 문제가 발생하지 않습니까 (느리게)?

+1

WCF를 사용하여 전송하는 데이터의 양에 관심이있는 경우이 흥미로운 기사를 확인하십시오. http://msdn.microsoft.com/en-us/library/ms733742.aspx – Kolky

+0

또한 whats a 이 서비스를 일반화하는 좋은 방법은 무엇입니까? Java 및 다른 언어 클라이언트가이 웹 메서드를 호출하고 동일한 파일 스트림을받을 수 있습니까? – user724535

답변

4

모든 크기의 스트림을 전송할 수 있으며 아마도 스트림을 직접 작성하는 것일뿐입니다. 스트림에서 여러 파일을 결합하려면 가장 쉬운 방법은 모든 내용을 포함하는 zip 파일을 작성하여 전송하는 것입니다.

메서드 서명은 단순히 WCF가 기본 바인딩에 직접 보내는 Stream을 반환해야합니다. 바인딩에는 사용할 수있는 몇 가지 제한 사항이 있지만 WebHttpBinding은이를 지원합니다.

+0

클라이언트가 파일을 하나의 스트림에서 어떻게 분리합니까? 그것은 지퍼없이 그것을 할 수 있습니까? 클라이언트에게 트랜잭션 ID와 파일 이름을 알려줘야합니다. – user724535

+0

그러면 아마도 일종의 통제 구조를 써야합니다. 스트림의 파일 수와 각 스트림의 이름과 크기를 포함한 헤더를 만들 수 있습니다. 순전히 바이너리 형식을 피하기 위해 XML을 반환하도록 선택할 수도 있습니다 (여전히 스트림 내부에 있음). 그러면 파일 내용을 base64로 인코딩 할 수 있습니다. 큰 파일의 경우 보어가 될 수 있으며 제어 데이터를 반환하는 방법과 개별 파일의 다른 내용을 반환하는 두 가지 방법으로 분할 할 수 있습니다. – faester

+0

두 가지 방법으로 나누어 무엇을 의미합니까? 따라서 클라이언트는 두 가지 메소드를 호출해야합니다. 하나는 스트림을 얻기위한 것이고 하나는 XML 정보를 얻기위한 것인가? 그러나 클라이언트는 스트림에서 모든 이미지를 어떻게 분리합니까? – user724535

관련 문제