Cette documentation est archivée et n’est pas conservée.

Binding, classe

Mise à jour : novembre 2007

Contient les éléments de liaison spécifiant les protocoles, les transports et les codeurs de message utilisés pour la communication entre les clients et les services.

Espace de noms :  System.ServiceModel.Channels
Assembly :  System.ServiceModel (dans System.ServiceModel.dll)

public abstract class Binding : IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts

Représente une collection d'éléments de liaison qui décrivent chacun un aspect de la façon dont un point de terminaison communique avec d'autres points de terminaison et qui sont générés de manière régulière dans une fabrication de canal sur le client et dans un écouteur de canal sur le service. Une liaison contient une collection d'éléments de liaison qui correspondent aux canaux de protocole, aux canaux de transport et aux codeurs de message. Les canaux de protocole peuvent avoir n'importe quel nombre d'éléments de liaison, mais le transport et le codeur de message ne peuvent en avoir qu'un. Il y a généralement six couches d'éléments de liaison dans une liaison. Seuls les éléments de transport et de codage de liaison du bas de la pile sont requis. Si vous n'avez pas spécifié de codage, Windows Communication Foundation (WCF) en ajoute un par défaut étant donné qu'un codage est requis pour chaque liaison. La valeur par défaut est Text/XML pour les transports HTTP et HTTPS, et Binary pour les autres transports.

Le tableau suivant récapitule les options de chaque couche.

Couche

Options

Obligatoire

Flux de transaction

TransactionFlowBindingElement

Non

Fiabilité

ReliableSessionBindingElement

Non

Sécurité

Symétrique, asymétrique, au niveau du transport

Non

Modification de la forme

CompositeDuplexBindingElement

Non

Mises à niveau de transport

Flux SSL, flux Windows, programme de résolution d'homologue

Non

Codage

Text, Binary, MTOM, Custom

Oui

Transport

TCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom

Oui

Chaque élément de liaison fournit la spécification permettant de générer une fabrication de canal sur le client et un écouteur de canal sur le service. Une fois que la pile de fabrications de canaux est construite, par exemple, il existe une fabrication de canal dans la pile pour chaque élément de liaison dans la liaison. Le même type de mappage s'applique aux écouteurs de canal dans la pile sur le service. La cohérence sur le client et le service est primordiale à l'établissement d'une la connexion basée sur canal entre ces points de terminaison. Chaque fabrication et écouteur procèdent, à tour de rôle, à l'émission et l'acceptation des canaux correspondants dans la pile de canaux qui les connecte et ces canaux peuvent ensuite envoyer et recevoir les messages utilisés pour communiquer.

Chaque instance d'une classe Binding a une propriété Name et une propriété Namespace qui l'identifient de façon unique dans les métadonnées du service. Si aucun nom ou espace de noms n'est spécifié, WCF ajoute une valeur par défaut pour vous. Le nom par défaut a la valeur null et l'espace de noms par défaut est http://tempuri.org/. Le nom d'utilisateur de cette liaison est différent de celui qui est précisé dans la spécification du nom de protocole, effectuée par la propriété Scheme. Si vous souhaitez ajouter plus de liaisons HTTP, par exemple, vous avez la possibilité de leur attribuer un nom de votre choix et de définir leurs modèles sur "http". Il n'existe pas d'application inhérente ou de répartition d'ordinateurs basées sur la propriété Scheme. Vous évitez ainsi le problème fréquent de ne pas pouvoir enregistrer de gestionnaires supplémentaires aux protocoles connus. Vous pouvez également facilement travailler côte à côte avec plusieurs versions différentes d'une même liaison en attribuant un nom différent à chacune d'entre elles.

La classe Binding implémente l'interface IDefaultCommunicationTimeouts afin de limiter les attaques par déni de service (DOS) qui monopolisent les ressources dans le but d'allonger les intervalles de temps. L'implémentation spécifie les valeurs des délais d'attente de communication pour l'ouverture et la fermeture des connexions et pour la lecture et l'écriture des opérations associées à la réception et l'envoi de messages. Les propriétés utilisées pour obtenir et définir ces délais d'attente ainsi que les opérations se basant sur leurs valeurs par défaut sont résumées dans le tableau suivant.

Propriété du délai d'attente

Valeur par défaut

OpenTimeout

1 minute

CloseTimeout

1 minute

SendTimeout

1 minute

ReceiveTimeout

10 minutes

Lorsque vous créez une liaison en héritant de Binding, vous devez remplacer CreateBindingElements.

De plus, vous pouvez définir vos propres éléments de liaison et les insérer entre chacune des couches définies dans le tableau précédent. Pour plus d'informations, consultez la classe CustomBinding.

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}


Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

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
Afficher: