Cliquez pour évaluer et commenter
MSDN
MSDN Library
Développement .NET
.NET Framework 3.5
.NET Framework
Bibliothèque de classes ....
 TransferMode, énumération

  Passer à l'affichage pour faible bande passante
Cette page est spécifique à
Microsoft Visual Studio 2008/.NET Framework 3.5

D'autres versions sont également disponibles pour :
Bibliothèque de classes .NET Framework
TransferMode, énumération

Mise à jour : novembre 2007

Indique si un canal utilise des modes de transmission en continu ou par mise en mémoire tampon pour les messages de demande et de réponse.

Espace de noms :  System.ServiceModel
Assembly :  System.ServiceModel (dans System.ServiceModel.dll)
Visual Basic (Déclaration)
Public Enumeration TransferMode
Visual Basic (Utilisation)
Dim instance As TransferMode
C#
public enum TransferMode
VisualC++
public enum class TransferMode
J#
public enum TransferMode
JScript
public enum TransferMode
Nom de membreDescription
Aa345086.CFW(fr-fr,VS.90).gifBufferedLes messages de demande et de réponse sont mis en mémoire tampon.
StreamedLes messages de demande et de réponse sont transmis en continu.
StreamedRequestLe message de demande est transmis en continu et le message de réponse est mis en mémoire tampon.
StreamedResponseLe message de demande est mis en mémoire tampon et le message de réponse est transmis en continu.

Les transports Windows Communication Foundation (WCF) prennent en charge deux modes de transfert dans chaque direction :

  • Les transferts mis en mémoire tampon conservent la totalité des messages en mémoire tampon tant que leur transfert n'est pas terminé.

  • Les transferts en continu ne mettent que les en-têtes de message en mémoire tampon et exposent le corps du message sous forme de flux continu, dont des portions peuvent être lues progressivement.

L'affectation au mode de transfert de la valeur Streamed permet d'assurer des communications en flux continu dans les deux sens. En revanche, la valeur StreamedRequest ou StreamedResponse ne permet d'assurer des communications en flux continu que dans le sens spécifié.

Les transferts en flux continu peuvent améliorer l'évolutivité d'un service car ils évitent d'avoir à recourir à de grandes mémoires tampon. Le gain réel d'évolutivité dépend de la taille des messages transférés. Il est plus significatif dans le cas de messages volumineux.

Par défaut, les transports HTTP, TCP/IP et de canal nommé utilisent la mise en mémoire tampon. Vous pouvez donner à TransferMode la valeur des liaisons fournies par le système BasicHttpBinding, NetTcpBinding, NetNamedPipeBinding à l'aide des propriétés du mode de transfert exposées. Le mode peut recevoir la valeur NetTcpBinding, par exemple, à l'aide de la propriété TransferMode. Il peut également être réglé dans la section de configuration pour la liaison.

Pour les liaisons qui n'exposent pas la propriété du mode de transfert, celui-ci peut être défini sur l'élément de liaison de transport, et cet élément peut ensuite être ajouté à une liaison personnalisée. Par exemple, créez HttpTransportBindingElement et utilisez la propriété TransferMode pour définir le mode de transfert lors de la création d'une liaison personnalisée. Le mode de transfert peut également être défini dans la section de configuration pour la liaison personnalisée.

Le choix de l'un ou l'autre mode de transfert (mise en mémoire tampon ou flux continu) revient en local au point de terminaison pour les transports HTTP. Pour les transports HTTP, le mode de transfert ne se propage pas sur une connexion ou sur des serveurs proxy et d'autres intermédiaires. La description de l'interface de service ne reflète pas le mode de transfert défini. Après avoir généré un proxy sur un service, vous pouvez (mais ne devez pas) modifier le fichier de configuration des services destinés à être utilisés avec des transferts en continu pour définir le mode. Pour les transports TCP et les transports de canal nommé, le mode de transfert est propagé sous forme d'assertion de stratégie.

Le mode de transfert Streamed provoque l'exécution de WCF pour appliquer certaines restrictions.

  • Le contrat des opérations intervenant sur un transport en flux continu peut contenir au maximum un paramètre d'entrée ou de sortie au niveau de la couche du modèle de programmation. Ce paramètre correspond au corps entier du message et doit être un Message, un sous-type de Stream ou implémenter l'interface IXmlSerializable. Disposer d'une valeur de retour pour une opération équivaut à disposer d'un paramètre de sortie.

  • Certaines fonctionnalités de WCF, telles que la messagerie fiable et la sécurité de niveau message SOAP s'appuient sur les messages en mémoire tampon pour leurs transmissions. L'utilisation de ces fonctionnalités peut réduire, voire annuler les gains en termes de performances obtenus grâce au flux continu. Pour sécuriser un transport en flux continu, utilisez la sécurité de niveau transport uniquement ou la sécurité de mode mixte, qui associe des revendications WS-Security à la sécurité de niveau transport.

  • Les en-têtes SOAP sont toujours mis en mémoire tampon, même lorsque le mode de transfert a la valeur Streamed. Les en-têtes de message ne doivent pas dépasser la taille du quota de transport MaxBufferSize exposé sur les divers éléments de liaison et liaisons.

Modifier le mode de transfert de Buffered en Streamed modifie également la forme du canal natif des transports TCP et des transports de canal nommé. Pour les transferts mis en mémoire tampon, la forme du canal natif est IDuplexSessionChannel. Pour les transferts en flux continu, les canaux natifs correspondent à IRequestChannel et à IReplyChannel. Une conséquence de ce principe réside dans le fait que les contrats de service de session ne composent pas avec la diffusion en flux continu du transport.

L'exemple de code suivant montre l'attribution à la propriété TransferMode de la valeur Streamed à l'aide du code :

c#
TcpTransportBindingElement transport = new TcpTransportBindingElement();transport.TransferMode = TransferMode.Streamed;
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();
CustomBinding binding = new CustomBinding(encoder, transport);

L'exemple suivant montre l'affectation à la propriété TransferMode de la valeur Streamed par le biais de la configuration :

<customBinding>   <binding name="streamingBinding">      <binaryMessageEncoding />      <tcpTransport transferMode=”Streamed” />   </binding></customBinding>

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

.NET Compact Framework

Pris en charge dans : 3.5
Contenu de la communauté   Qu'est-ce que le Contenu de la communauté ?
Ajouter du contenu RSS  Annotations
Processing
© 2009 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation  |  Marques  |  Confidentialité
Page view tracker