스트리밍 공급자(WCF Data Services)
데이터 서비스에서 BLOB(Binary Large Object) 데이터를 노출할 수 있습니다. 이 이진 데이터는 비디오 및 오디오 스트림, 이미지, 문서 파일 또는 다른 형식의 이진 미디어를 나타낼 수 있습니다. 데이터 모델의 엔터티에 이진 속성이 하나 이상 포함되어 있는 경우 데이터 서비스가 이 이진 데이터를 응답 피드의 항목 안에 base-64로 인코딩하여 반환합니다. 이러한 방식으로 큰 이진 데이터를 로드하고 serialize하면 성능이 저하될 수 있기 때문에 Open Data Protocol(OData)에서는 이진 데이터가 속한 엔터티와 독립적으로 이진 데이터를 검색하기 위한 메커니즘을 정의합니다. 이 작업은 엔터티의 이진 데이터를 하나 이상의 데이터 스트림으로 구분하여 수행됩니다.
OData 프로토콜은 이진 데이터를 엔터티와 관련된 스트림으로 노출하는 방법으로 다음 두 가지 메커니즘을 지원합니다.
미디어 리소스/미디어 링크 항목
AtomPub(Atom 게시 프로토콜)은 미디어 링크 항목이라고 하는 데이터 피드의 항목에 미디어 리소스로 이진 데이터를 연결하는 메커니즘을 정의합니다. 지정된 미디어 링크 항목에 하나의 미디어 리소스만 정의할 수 있습니다. 미디어 리소스는 엔터티에 대한 기본 스트림으로 간주할 수 있습니다. OData는 AtomPub에서 이 스트리밍 동작을 상속합니다.
명명된 리소스 스트림
OData 버전 3부터는 엔터티가 이름으로 액세스하는 여러 관련 리소스 스트림을 가질 수 있습니다. 이 메커니즘은 AtomPub에 의존하지 않으므로 엔터티가 명명된 리소스 스트림을 가질 수 있고 미디어 링크 항목이 아니어도 됩니다. 또한 미디어 링크 항목이 명명된 스트림을 가질 수도 있습니다. 자세한 내용은 다음 항목을 참조하십시오. 게시물 명명된 리소스 스트림.
WCF Data Services에서 스트리밍 데이터 공급자를 구현하여 이진 리소스 스트림을 정의합니다. 스트리밍 공급자 구현에서는 특정 엔터티와 연결된 스트림을 Stream 개체로 데이터 서비스에 제공합니다.
이진 데이터의 스트리밍을 지원하도록 데이터 서비스를 구성하려면 다음 단계를 수행해야 합니다.
관련 리소스 스트림이 있는 데이터 모델에서 엔터티 특성을 지정합니다. 각 데이터 공급자는 자체 요구 사항이 있으며, 각 유형의 이진 리소스 스트림은 다른 메커니즘에 의해 데이터 모델에 정의됩니다.
다음 스트림 공급자 인터페이스를 구현합니다.
IDataServiceStreamProvider - 이진 리소스 스트림의 두 종류를 지원하는 데 필요합니다.
IDataServiceStreamProvider2 - 명명된 리소스 스트림에만 필요합니다.
IServiceProvider 인터페이스를 구현하는 데이터 서비스를 정의합니다. 데이터 서비스는 GetService 구현을 사용하여 스트리밍 데이터 공급자 구현에 액세스합니다. 이 메서드는 적절한 스트리밍 공급자 구현을 반환합니다.
웹 응용 프로그램 구성에서 큰 메시지 스트림을 사용하도록 설정합니다.
서버나 데이터 소스의 이진 리소스에 대한 액세스를 사용하도록 설정합니다.
이 항목의 예제는 데이터 서비스 스트리밍 공급자 시리즈: 스트리밍 공급자 구현(1부) 게시물에서 자세히 설명하는 샘플 스트리밍 사진 서비스를 기반으로 합니다. 이 샘플 서비스에 대한 소스 코드는 MSDN 코드 갤러리의 스트리밍 사진 데이터 서비스 샘플 페이지에서 볼 수 있습니다.
데이터 모델에서 리소스 스트림 정의
이진 리소스 스트림을 데이터 모델에서 정의하는 방법은 스트림이 미디어 리소스인지 또는 명명된 리소스 스트림인지와 사용하는 데이터 소스 공급자 둘 다에 따라 달라집니다. 다음 예제는 데이터 서비스에서 반환된 메타데이터의 미디어 리소스의 정의를 보여 줍니다. 여기서 PhotoInfo는 명명된 리소스 스트림(Thumbnail)이 정의된 미디어 링크 항목입니다.
<EntityType Name="PhotoInfo" m:HasStream="true">
<Key>
<PropertyRef Name="PhotoId" />
</Key>
<Property Name="PhotoId" Type="Edm.Int32" Nullable="false"
p9:StoreGeneratedPattern="Identity"
xmlns:p9="https://schemas.microsoft.com/ado/2009/02/edm/annotation" />
<Property Name="FileName" Type="Edm.String" Nullable="false" />
<Property Name="FileSize" Type="Edm.Int32" Nullable="true" />
<Property Name="DateTaken" Type="Edm.DateTime" Nullable="true" />
<Property Name="TakenBy" Type="Edm.String" Nullable="true" />
<Property Name="DateAdded" Type="Edm.DateTime" Nullable="false" />
<Property Name="Exposure" Type="PhotoData.Exposure" Nullable="false" />
<Property Name="Dimensions" Type="PhotoData.Dimensions" Nullable="false" />
<Property Name="DateModified" Type="Edm.DateTime" Nullable="false" />
<Property Name="Comments" Type="Edm.String" Nullable="true" MaxLength="Max"
Unicode="true" FixedLength="false" />
<Property Name="ContentType" Type="Edm.String" Nullable="true" MaxLength="50"
Unicode="true" FixedLength="false" />
<Property Name="Thumbnail" Type="Edm.Stream" Nullable="false" />
</EntityType>
Entity Framework 공급자
Entity Framework 공급자를 사용하는 경우 스트림의 종류에 따라 다음 중 한 가지 방법으로 데이터 모델 자체에 이진 리소스 스트림을 정의합니다.
미디어 리소스 스트림:
엔터티가 연결된 미디어 리소스가 있는 미디어 링크 항목임을 나타내려면 개념 모델의 엔터티 형식 정의에 HasStream 특성을 추가합니다. 또한 네임스페이스 xmlns:m=https://schemas.microsoft.com/ado/2007/08/dataservices/metadata에 대한 참조를 미디어 링크 항목 또는 데이터 모델의 해당 부모 요소 중 하나에 추가해야 합니다.
명명된 리소스 스트림:
미디어 링크 항목에 속하는 명명된 스트림은 개념 모델에서 Stream 형식의 속성으로 정의됩니다.
중요
Stream 데이터 형식은 버전 2.2부터 엔터티 데이터 모델(EDM)에 지원됩니다.그러나 .NET Framework 4에서는 Entity Framework가 이 버전의 EDM을 지원하지 않습니다.해결 방법으로 대신 엔터티를 나타내는 데이터 모델 개체 계층에서 클래스에 NamedStreamAttribute를 적용하여 데이터 모델에서 명명된 리소스 스트림을 정의할 수 있습니다.이 특성에서 name 매개 변수는 스트림의 이름입니다.별도의 코드 파일에 유지되는 부분적 클래스 정의를 만들어 이 특성을 엔터티 클래스에 추가하는 것이 좋습니다. 그렇지 않으면 Entity Framework에 의해 엔터티 데이터 클래스가 재생성될 때 이 사용자 지정이 덮어 쓰여집니다.리플렉션 공급자와 마찬가지로, 데이터 서비스는 데이터 모델에 Stream 형식의 제공된 name을 가진 속성을 만듭니다.
의 예제는 Entity Framework 공급자를 사용하여 미디어 리소스 노출에 대해서는 게시물 데이터 서비스 스트리밍 공급자 시리즈: 스트리밍 공급자 구현(1부) 게시물을 참조하십시오.
리플렉션 공급자
리플렉션 공급자를 사용할 경우 스트림 종류에 따라 다음 중 한 가지 방법으로 엔터티 형식인 클래스에 특성을 적용하여 이진 리소스 스트림이 엔터티 형식에 속한다는 것을 식별합니다.
미디어 리소스 스트림:
미디어 링크 항목인 형식에 속하는 미디어 리소스(기본) 스트림을 정의하려면 HasStreamAttribute를 적용합니다.
명명된 리소스 스트림:
엔터티 형식에 속하는 명명된 리소스 스트림을 정의하려면 NamedStreamAttribute를 적용합니다. 여기서 제공된 name 매개 변수는 스트림의 이름입니다.
사용자 지정 데이터 서비스 공급자
사용자 지정 서비스 공급자를 사용하는 경우 IDataServiceMetadataProvider 인터페이스를 구현하여 데이터 서비스에 대한 메타데이터를 정의합니다. 자세한 내용은 사용자 지정 데이터 서비스 공급자(WCF Data Services)를 참조하십시오. 다음 중 한 가지 방법으로 이진 리소스 스트림이 ResourceType에 속한다는 것을 나타냅니다.
미디어 리소스 스트림:
미디어 링크 항목인 엔터티 형식을 나타내는 ResourceType에서 IsMediaLinkEntry 속성을 true로 설정합니다.
명명된 리소스 스트림:
각 명명된 스트림에 대해 ResourceProperty를 ResourceType에 추가합니다. 명명된 스트림을 나타내는 ResourceProperty에는 Stream의 ResourcePropertyKind 값이 있어야 하며 속성의 ResourceType은 Stream 형식에 기초해야 합니다. ResourceType에 GetPrimitiveResourceType(Type) 메서드를 사용하여 Stream 기본 형식을 기반으로 ResourceType을 만듭니다.
스트림 공급자 인터페이스 구현
이진 데이터 스트림을 지원하는 데이터 서비스를 만들려면 최소한 IDataServiceStreamProvider 인터페이스를 구현해야 합니다. 이 구현을 통해 데이터 서비스에서 이진 데이터를 스트림으로 클라이언트에 반환하고 클라이언트에서 전송되는 스트림으로 이진 데이터를 사용할 수 있습니다. 명명된 스트림을 지원하기 위해서는 IDataServiceStreamProvider2 인터페이스도 구현해야 합니다. 데이터 서비스는 스트림으로 이진 데이터에 액세스해야 할 때마다 적절한 인터페이스의 인스턴스를 만듭니다.
IDataServiceStreamProvider
IDataServiceStreamProvider 인터페이스는 다음 멤버를 지정합니다.
멤버 이름 |
설명 |
---|---|
이 메서드는 미디어 링크 항목이 삭제될 때 해당 미디어 리소스와 명명된 모든 스트림을 삭제하기 위해 데이터 서비스에서 호출됩니다. IDataServiceStreamProvider를 구현하는 경우 이 메서드에는 제공된 미디어 링크 항목과 연결되고 스트리밍된 모든 이진 데이터를 삭제하는 코드가 포함됩니다. |
|
이 메서드는 미디어 리소스를 스트림으로 반환하기 위해 데이터 서비스에서 호출됩니다. IDataServiceStreamProvider를 구현하는 경우 이 메서드에는 제공된 미디어 링크 항목과 연결된 미디어 리소스를 반환하기 위해 데이터 서비스에서 사용되는 스트림을 제공하는 코드가 포함됩니다. |
|
이 메서드는 미디어 링크 항목의 미디어 리소스를 요청하는 데 사용되는 URI를 반환하기 위해 데이터 서비스에서 호출됩니다. 이 값은 미디어 링크 항목의 콘텐츠 요소에서 데이터 스트림을 요청할 때 사용되는 src 특성을 만드는 데 사용됩니다. 이 메서드가 null을 반환하면 데이터 서비스에서 자동으로 URI를 결정합니다. 스트림 공급자를 사용하지 않고 이진 데이터에 직접 액세스할 수 있는 권한을 클라이언트에 제공해야 할 때 이 메서드를 사용합니다. |
|
이 메서드는 지정된 미디어 링크 항목과 연결된 미디어 리소스의 Content-Type 값을 반환하기 위해 데이터 서비스에서 호출됩니다. |
|
이 메서드는 지정된 엔터티와 연결된 데이터 스트림의 eTag를 반환하기 위해 데이터 서비스에서 호출됩니다. 이 메서드는 이진 데이터의 동시성을 관리할 때 사용됩니다. 이 메서드가 null 을 반환하면 데이터 서비스에서 동시성을 추적하지 않습니다. |
|
이 메서드는 클라이언트에서 전송된 스트림을 받을 때 사용되는 스트림을 가져오기 위해 데이터 서비스에서 호출됩니다. IDataServiceStreamProvider를 구현하는 경우 데이터 서비스가 수신된 스트림 데이터를 쓰는 쓰기 가능한 스트림을 반환해야 합니다. |
|
삽입될 미디어 리소스의 데이터 스트림과 연결된 미디어 링크 항목에 대해 데이터 서비스 런타임이 만들어야 하는 형식을 나타내는 네임스페이스로 한정된 형식 이름을 반환합니다. |
IDataServiceStreamProvider2
IDataServiceStreamProvider2 인터페이스는 IDataServiceStreamProvider 멤버를 오버로드하여 명명된 리소스 스트림인 ResourceProperty 매개 변수를 사용하는 다음 멤버를 지정합니다.
멤버 이름 |
설명 |
---|---|
GetReadStream(Object, ResourceProperty, String, Nullable<Boolean>, DataServiceOperationContext) |
이 메서드는 명명된 스트림을 반환하기 위해 데이터 서비스에서 호출됩니다. IDataServiceStreamProvider2를 구현하는 경우 이 메서드에는 제공된 미디어 링크 항목과 연결되어 있고 요청된 명명된 스트림을 반환하기 위해 데이터 서비스에서 사용되는 스트림을 제공하는 코드가 포함됩니다. |
GetReadStreamUri(Object, ResourceProperty, DataServiceOperationContext) |
이 메서드는 미디어 링크 항목의 명명된 특성 스트림을 요청하는 데 사용되는 URI를 반환하기 위해 데이터 서비스에서 호출됩니다. 이 값은 명명된 스트림을 요청하는 데 사용되는 atom:link 요소를 만드는 데 사용됩니다. 이 메서드가 null을 반환하면 데이터 서비스에서 자동으로 URI를 결정합니다. 스트림 공급자를 사용하지 않고 이진 데이터에 직접 액세스할 수 있는 권한을 클라이언트에 제공해야 할 때 이 메서드를 사용합니다. |
GetStreamContentType(Object, ResourceProperty, DataServiceOperationContext) |
이 메서드는 지정된 미디어 링크 항목과 연결되어 있고 명명된 특정 스트림의 Content-Type 값을 반환하기 위해 데이터 서비스에서 호출됩니다. |
GetStreamETag(Object, ResourceProperty, DataServiceOperationContext) |
이 메서드는 지정된 엔터티와 연결되어 있고 명명된 특정 스트림의 eTag를 반환하기 위해 데이터 서비스에서 호출됩니다. 이 메서드는 이진 데이터의 동시성을 관리할 때 사용됩니다. 이 메서드가 null 을 반환하면 데이터 서비스에서 동시성을 추적하지 않습니다. |
GetWriteStream(Object, ResourceProperty, String, Nullable<Boolean>, DataServiceOperationContext) |
이 메서드는 클라이언트에서 전송된 명명된 스트림을 받을 때 사용되는 스트림을 가져오기 위해 데이터 서비스에서 호출됩니다. IDataServiceStreamProvider2를 구현하는 경우 데이터 서비스가 수신된 스트림 데이터를 쓰는 쓰기 가능한 스트림을 반환해야 합니다. |
스트리밍 데이터 서비스 만들기
WCF Data Services 런타임에 IDataServiceStreamProvider 및 IDataServiceStreamProvider2 구현에 대한 액세스 권한을 제공하려면 만든 데이터 서비스에서 IServiceProvider 인터페이스도 구현해야 합니다. 다음 예제에서는 IDataServiceStreamProvider 및 IDataServiceStreamProvider2를 구현하는 PhotoServiceStreamProvider 클래스의 인스턴스를 반환하기 위해 GetService 메서드를 구현하는 방법을 보여 줍니다.
Partial Public Class PhotoData
Inherits DataService(Of PhotoDataContainer)
Implements IServiceProvider
' This method is called only once to initialize service-wide policies.
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
config.SetEntitySetAccessRule("PhotoInfo", _
EntitySetRights.ReadMultiple Or _
EntitySetRights.ReadSingle Or _
EntitySetRights.AllWrite)
' Named streams require version 3 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3
End Sub
#Region "IServiceProvider Members"
Public Function GetService(ByVal serviceType As Type) As Object _
Implements IServiceProvider.GetService
If serviceType Is GetType(IDataServiceStreamProvider) _
Or serviceType Is GetType(IDataServiceStreamProvider2) Then
Return New PhotoServiceStreamProvider(Me.CurrentDataSource)
End If
Return Nothing
End Function
#End Region
End Class
public partial class PhotoData : DataService<PhotoDataContainer>, IServiceProvider
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("PhotoInfo",
EntitySetRights.ReadMultiple |
EntitySetRights.ReadSingle |
EntitySetRights.AllWrite);
// Named resource streams require version 3 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
public object GetService(Type serviceType)
{
if (serviceType == typeof(IDataServiceStreamProvider2))
{
// Return the stream provider to the data service.
return new PhotoServiceStreamProvider(this.CurrentDataSource);
}
return null;
}
}
데이터 서비스를 만드는 방법에 대한 일반적인 내용은 데이터 서비스 구성(WCF Data Services)을 참조하십시오.
호스팅 환경에서 큰 이진 스트림 사용
ASP.NET 웹 응용 프로그램에서 데이터 서비스를 만들 때 WCF(Windows Communication Foundation)은 HTTP 프로토콜 구현을 제공하는 데 사용됩니다. 기본적으로 WCF에서는 HTTP 메시지의 크기를 65KB로만 제한합니다. 데이터 서비스에서 보내고 받는 큰 이진 데이터를 스트리밍할 수 있으려면 큰 이진 파일을 사용할 수 있고 전송에 스트림을 사용하도록 웹 응용 프로그램도 구성해야 합니다. 이렇게 하려면 응용 프로그램의 Web.config 파일에 있는 <configuration /> 요소에 다음을 추가합니다.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<!-- The name of the service -->
<service name="PhotoService.PhotoData">
<!--you can leave the address blank or specify your end point URI-->
<endpoint binding="webHttpBinding" bindingConfiguration="higherMessageSize"
contract="System.Data.Services.IRequestHandler"></endpoint>
</service>
</services>
<bindings>
<webHttpBinding>
<!-- configure the maxReceivedMessageSize value to suit the max size of
the request (in bytes) you want the service to receive-->
<binding name="higherMessageSize" transferMode="Streamed"
maxReceivedMessageSize="2147483647"/>
</webHttpBinding>
</bindings>
</system.serviceModel>
참고
요청 및 응답 메시지의 이진 데이터가 WCF에서 스트리밍되고 버퍼링되지 않도록 하려면 TransferMode.Streamed 전송 모드를 사용해야 합니다.
자세한 내용은 Streaming Message Transfer 및 Transport Quotas을 참조하십시오.
기본적으로 인터넷 정보 서비스(IIS)는 요청 크기를 4MB로 제한합니다. 데이터 서비스가 IIS에서 실행될 때 4MB보다 큰 스트림을 받을 수 있도록 하려면 다음 예제와 같이 <system.web /> 구성 섹션에서 httpRuntime Element의 maxRequestLength 특성도 설정해야 합니다.
<system.web>
<!-- maxRequestLength (in KB): default=4000 (4MB); max size=2048MB. -->
<httpRuntime maxRequestLength="2000000"/>
</system.web>
클라이언트 응용 프로그램에서 데이터 스트림 사용
다음 URI 중 하나를 사용하여 이진 데이터 스트림에 직접 액세스할 수 있습니다.
미디어 리소스 스트림:
https://localhost/PhotoService/PhotoData.svc/PhotoInfo(1)/$value
명명된 리소스 스트림:
https://localhost/PhotoService/PhotoData.svc/PhotoInfo(1)/Thumbnail
WCF Data Services 클라이언트 라이브러리를 사용하면 클라이언트에서 이진 스트림으로 노출된 이러한 리소스를 검색하고 업데이트할 수 있습니다. 자세한 내용은 이진 데이터로 작업(WCF Data Services)을 참조하십시오.
스트리밍 공급자로 작업하기 위한 고려 사항
스트리밍 공급자를 구현하는 경우와 데이터 서비스에서 미디어 리소스에 액세스하는 경우 고려할 사항은 다음과 같습니다.
미디어 리소스 또는 명명된 리소스 스트림을 지원할 때는 IDataServiceStreamProvider 인터페이스를 구현해야 합니다. 명명된 리소스 스트림을 지원하려면 IDataServiceStreamProvider2 인터페이스도 구현해야 합니다.
미디어 링크 항목에 속하는 명명된 리소스 스트림을 정의할 때는 데이터 모델에 정의된 엔터티가 스트림과 같은 이름의 속성을 포함할 수 없습니다.
미디어 리소스에 대한 MERGE 요청은 지원되지 않습니다. 기존 엔터티의 미디어 리소스를 변경하려면 PUT 요청을 사용하십시오.
POST 요청을 사용하여 새 미디어 링크 항목을 만들 수 없습니다. 대신 POST 요청을 실행하여 새 미디어 리소스를 만들어야 하며, 이 경우 데이터 서비스에서 기본값을 사용하여 새 미디어 링크 항목을 만듭니다. 이 새 엔터티는 이후 MERGE 또는 PUT 요청으로 업데이트할 수 있습니다. 또한 엔터티를 캐시하는 것을 고려할 수 있으며 속성 값을 POST 요청의 Slug 헤더 값으로 설정하는 등, 삭제기에서 업데이트를 수행할 수 있습니다.
POST 요청을 받으면 데이터 서비스는 SaveChanges를 호출하여 미디어 링크 항목을 만들기 전에 GetWriteStream을 호출하여 미디어 리소스를 만듭니다.
GetWriteStream 구현에서 MemoryStream 개체를 반환하면 안 됩니다. 이러한 종류의 스트림을 사용하는 경우 서비스가 매우 큰 데이터 스트림을 받으면 메모리 리소스 문제가 발생합니다.
데이터베이스에 미디어 리소스를 저장하는 경우 고려할 사항은 다음과 같습니다.
미디어 리소스인 이진 속성이 데이터 모델에 포함되면 안 됩니다. 데이터 모델에서 노출된 모든 속성은 응답 피드의 항목에 반환됩니다.
큰 이진 스트림의 성능을 높이려면 사용자 지정 스트림 클래스를 만들어 데이터베이스에 이진 데이터를 저장하는 것이 좋습니다. 이 클래스는 GetWriteStream 구현에 의해 반환되며 이진 데이터를 청크로 데이터베이스에 보냅니다. SQL Server 데이터베이스의 경우 이진 데이터가 1MB보다 크면 FILESTREAM을 사용하여 데이터를 데이터베이스로 스트리밍하는 것이 좋습니다.
사용하는 데이터베이스가 데이터 서비스를 통해 받을 큰 이진 스트림을 저장하도록 디자인되었는지 확인합니다.
클라이언트가 POST 요청을 보내 단일 요청에서 미디어 리소스와 함께 미디어 링크 항목을 삽입하면 GetWriteStream이 호출되어 데이터 서비스가 새 엔터티를 데이터베이스에 삽입하기 전에 스트림을 가져옵니다. 스트리밍 공급자 구현에서 이 데이터 서비스 동작을 처리할 수 있어야 합니다. 엔터티가 데이터베이스에 삽입된 후까지 파일에 데이터 스트림을 저장하거나 이진 데이터를 저장하려면 별도의 데이터 테이블을 사용하는 것이 좋습니다.
DeleteStream, GetReadStream 또는 GetWriteStream 메서드를 구현하는 경우 메서드 매개 변수로 제공되는 eTag 및 Content-Type 값을 사용해야 합니다. IDataServiceStreamProvider 공급자 구현에서 eTag 또는 Content-Type 헤더를 설정하지 마십시오.
기본적으로 클라이언트는 청크된 HTTP Transfer-Encoding을 사용하여 큰 이진 스트림을 보냅니다. ASP.NET Development Server는 이러한 종류의 인코딩을 지원하지 않으므로 이 웹 서버를 사용하여 큰 이진 스트림을 받아들여야 하는 스트리밍 데이터 서비스를 호스트할 수 없습니다. ASP.NET Development Server에 대한 자세한 내용은 Web Servers in Visual Web Developer를 참조하십시오.
버전 관리 요구 사항
스트리밍 공급자에 대한 OData 프로토콜 버전 관리 요구 사항은 다음과 같습니다.
스트리밍 공급자의 경우 데이터 서비스가 OData 프로토콜 버전 2.0 이상을 지원해야 합니다.
명명된 스트림을 지원하려면 클라이언트와 데이터 서비스가 모두 OData 프로토콜 버전 3.0 이상을 지원해야 합니다.
자세한 내용은 데이터 서비스 버전 관리(WCF Data Services)를 참조하십시오.
참고 항목
개념
데이터 서비스 공급자(WCF Data Services)