2010-08-26 2 views
1

Возможно, я использую datacontracts в WCF для потоковой передачи вместо сообщения Контракт.Могу ли я использовать datacontracts в WCF для потоковой передачи

Если да, предложит ли какое-либо повышение производительности?

THanks

+0

Можете ли вы разместить пример? Какую привязанность вы собираетесь использовать? –

+0

хорошо, я не уверен, что я очень новичок в WCF. Не могли бы вы предоставить мне ссылку, которая поможет мне начать работу с потоком, используя WCF. – Amit

ответ

5

Ответ зависит от того, что вы используете. Для протоколов TCP или Named pipe вы можете передавать любые данные, включая контракты данных. Если вы хотите использовать для потокового вещания через HTTP (поддерживается BasicHttpBinding) у вас есть некоторые несколько ограничений:

  • Streaming должен быть разрешен на связывание
  • Операции должен работать с экземпляром потока или договором сообщения, который содержит только одного элемент тела типа Stream. Контракты данных разрешены только в качестве настраиваемых заголовков сообщений в контракте Message.

только действительные определения операции для потокового вещания через HTTP являются:

// StreamedResponse 
[OperationContract] 
Stream GetData(int id); 

// StreamedRequest 
[OperationContract] 
int PostData(Stream data); 

// Streamed 
[OperationContract] 
Stream WorkWithData(Stream data); 

[OperationContract] 
DoSomethingResponse DoSomething(DoSomethingReqest request); 

[MessageContract] 
public class DoSomethingRequest 
{ 
    // Custom data and data contract allowed only as SOAP headers which are always buffered 
    [MessageHeader] 
    public MyDataContract CustomHeader { get; set; } 

    // No other member allowed 
    [MessageBodyMember] 
    public Stream Data { get; set; } 
} 

[MessageContract] 
public class DoSomethingResponse 
{ ... } 

Если вы не будете следовать этим ограничениям вы в конечном итоге с двумя случаями:

  • Операция не потоковом даже если вы настраиваете привязку для потоковой передачи - это происходит, если вы не используете экземпляр Stream в качестве содержимого сообщения
  • Исключение - это происходит, если вы используете экземпляр Stream + другие данные/данные договор как содержание сообщения
+0

Что значит потоковое видео здесь. просто отправляя назад, говорят, что данные о сотрудниках рассматриваются как потоковые? – Mou

Смежные вопросы