WCF(Windows Communication Foundation)에는 스트리밍된 데이터를 처리하는 여러 가지 모델이 있습니다. WCF에서는 응용 프로그램 코드(서비스)에서 Stream의 인스턴스를 반환하고 하위 수준 인프라에 상주하는 "끌어오기" 모델을 구현하여 이 스트림에서 데이터를 가져오고 네트워크에 씁니다. ASP.NET에서는 인프라에서 OutputStream 속성을 사용하여 출력 스트림을 만들고 응용 프로그램 코드(IHttpHandler)에서 사용할 수 있도록 하는 "밀어넣기" 모델을 사용합니다. 응용 프로그램 코드는 스트림에 데이터를 쓰는 작업을 담당합니다. 두 모델 모두 유효한 접근 방식이며 일반적으로 여러 가지 방법으로 두 메서드를 연결합니다.
참고
이 샘플을 빌드하고 실행하려면 .NET Framework 버전 3.5가 설치되어 있어야 하며 프로젝트 및 솔루션 파일을 열려면 Visual Studio 2008이 필요합니다.
이 샘플에서는 웹 프로그래밍 모델을 사용하는 ASP.NET 시나리오로 스트리밍에 주소를 지정하는 방법을 보여 줍니다.
서비스
서비스에서는 다음 코드와 같이 일반적인 ASP.NET 시나리오를 보여 주는 두 가지 작업을 구현합니다.
[OperationContract]
[WebGet(UriTemplate = "images")]
public Message GetDynamicImage()
{
string text = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["text"];
Bitmap theBitmap = GenerateImage(text);
Message response = StreamMessageHelper.CreateMessage(MessageVersion.None, "", "image/jpeg",
delegate(Stream outputStream)
{
theBitmap.Save(outputStream, ImageFormat.Jpeg);
});
return response;
}
GetDynamicImage() 메서드는 Stream이 아닌 Message를 반환합니다. BodyWriter(DelegateBodyWriter)의 사용자 지정 구현을 사용하여 "밀어넣기" 스트리밍 의미 체계를 구현합니다.
DelegateBodyWriter에서는 출력 스트림을 입력으로 사용하는 대리자 매개 변수를 사용합니다.
public delegate void StreamWriterDelegate(Stream output);
class DelegateBodyWriter : BodyWriter
{
StreamWriterDelegate writer;
public DelegateBodyWriter(StreamWriterDelegate writer)
: base(false)
{
this.writer = writer;
}
protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
writer.WriteStartElement("Binary");
XmlWriterStream stream = new XmlWriterStream(writer);
this.writer(stream);
stream.Close();
writer.WriteEndElement();
}
}
그러면 RawStreamResponseMessage.OnWriteBodyContents()를 실행하는 동안 StreamWriterDelegate 대리자가 호출됩니다.
XmlWriterStream 클래스는 Message 클래스에서 사용하는 XmlDictionaryWriter를 통해 Stream API를 제공하는 어댑터입니다.
샘플의 출력은 웹 브라우저에서 볼 수 있습니다. 샘플과 상호 작용하려면 서비스가 실행되는 동안 다음 URL로 이동합니다.
https://localhost:8000/images?text=Hello, world!
https://localhost:8000/text?text=Hello, world!
샘플을 설치, 빌드 및 실행하려면
Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.
C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.
단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.
참고 항목
작업
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.