2010-08-26 6 views
1

S'il vous plaît, puis-je utiliser les contrats de données dans WCF pour la diffusion en continu au lieu du contrat Contrat.Puis-je utiliser les contrats de données dans WCF pour le streaming?

Si oui, cela améliorera-t-il les performances?

THanks

+0

Pouvez-vous publier un exemple? Quelle liaison allez-vous utiliser? –

+0

Eh bien, je ne suis pas sûr que je suis très nouveau à WCF. Pouvez-vous s'il vous plaît me fournir un lien qui peut m'aider à commencer à diffuser en utilisant WCF. – Amit

Répondre

5

La réponse dépend de la liaison que vous utilisez. Pour les protocoles de transport TCP ou Named, vous pouvez diffuser des données, y compris des contrats de données. Si vous souhaitez utiliser le streaming via HTTP (pris en charge par BasicHttpBinding) vous devez quelques plusieurs contraintes:

  • streaming doit être autorisée sur la liaison
  • opération doit travailler avec l'instance flux ou d'un contrat de message qui ne contient que seul élément de corps de type Stream. Les contrats de données sont autorisés uniquement en tant qu'en-têtes de message personnalisés dans le contrat de message.

Définitions fonctionnement uniquement valides pour le streaming sur HTTP sont:

// 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 
{ ... } 

Si vous ne suivez pas ces contraintes que vous finirez avec deux cas:

  • opération n'est pas transmis en continu même si vous configurez la liaison pour la diffusion en continu - cela se produit si vous n'utilisez pas l'instance de flux comme contenu de message
  • Exception - cela se produit si vous utilisez l'instance de flux + autres données/données contrat comme contenu du message
+0

ce qui signifie le streaming ici. juste renvoyer dire que les données des employés sont considérées comme en streaming? – Mou

Questions connexes