NetHttpBinding

L'exemple NetHttpBinding montre comment implémenter une liaison qui empile le HttpTransportBindingElement ou le HttpsTransportBindingElement au-dessus du BinaryMessageEncodingBindingElement. Les liaisons définies par le système basées sur HTTP fournies avec Windows Communication Foundation (WCF), telles que BasicHttpBinding ou WsHttpBinding, empilent le HTTP sur le TextMessageEncodingBindingElement principalement pour permettre l'envoi et la réception des messages au format texte/XML à des fins d'interopérabilité. Les liaisons définies par le système basées sur NamedPipe ou TCP fournies avec Windows Communication Foundation (WCF), telles que NetTcpBinding ou NetNamedPipeBinding, écrivent et consomment des messages sous forme binaire. Le format binaire, bien que non interopérable, est plus efficace et réglé pour plus de performance.

Aa395198.note(fr-fr,VS.100).gifRemarque :
La procédure d'installation ainsi que les instructions de génération correspondant à cet exemple figurent en fin de rubrique.

Aa395198.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

<LecteurInstall>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding

L'exemple montre comment vous pouvez utiliser l'architecture de WCF pour combiner les éléments de liaison de votre choix dans votre pile de canaux afin de configurer vos liaisons comme vous le souhaitez. Les étapes de la création d'une liaison personnalisée sont les suivantes :

  1. Décidez quels éléments de liaison vous souhaitez empiler pour créer votre liaison.

  2. Assurez-vous de connaître l'ordre dans lequel les éléments de liaison doivent être empilés pour la pile pour fonctionner correctement. Imaginons que vous souhaitiez ajouter le transport en bas de votre pile.

  3. Créez votre classe Binding, qui hérite de Binding. Dans ce cas particulier, la NetHttpBinding implémente également l'interface ISecurityCapabilities parce qu'elle permet à l'utilisateur de cette liaison d'inspecter le ProtectionLevel et de vérifier la prise en charge par la liaison de l'authentification du client et du serveur.

  4. La liaison expose d'autres propriétés qui doivent être exposées à l'utilisateur pour lui permettre de configurer les éléments de liaison constitutifs. Par exemple, exposez la propriété BypassProxyOnLocal de manière à pouvoir configurer la même propriété sur le TransportBindingElement HTTP ou HTTPS sous-jacent.

  5. Dans la méthode CreateBindingElements, l'exemple montre l'ordre dans lequel les éléments de liaison doivent être empilés. Par exemple, il ajoute en premier l'encodeur, puis le transport parce que le transport doit être en bas de pile de liaison.

  6. Enfin, implémentez la méthode ApplyConfiguration pour permettre le remplissage de NetHttpBinding à l'aide de la configuration. En fait, plusieurs autres classes sont requises pour permettre à votre liaison d'être configurable depuis un fichier de configuration. Heureusement, vous pouvez utiliser l'outil ConfigurationCodeGenerator pour créer ces classes. L'outil ConfigurationCodeGenerator est également disponible comme un exemple WCF.

L'exemple de service NetHttpBinding

Le service d'exemple qui utilise NetHttpBinding est localisé dans le sous-répertoire de service. La liaison utilisée pour configurer le point de terminaison est NetHttpBinding. L'exemple de service est auto-hébergé à l'aide d'une méthode Main mais pourrait également être hébergé dans les services IIS (Internet Information Services).

L'exemple de client NetHttpBinding

Le client configure également sa liaison au NetHttpBinding pour se connecter au service. Le client montre qu'il peut configurer la liaison dans le code ou la configuration. Le fait de pouvoir configurer NetHttpBinding grâce à la configuration dépend de l'ajout de classes visant à exposer la liaison à la configuration. Comme mentionné précédemment, l'outil ConfigurationCodeGenerator peut vous aider à générer ces classes.

Pour configurer et générer l'exemple

  1. Installez ASP.NET 4.0 à l'aide de la commande suivante.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Assurez-vous d'avoir effectué la Procédure d'installation unique pour les exemples Windows Communication Foundation.

  3. Pour générer la solution, suivez les instructions indiquées dans la rubrique Génération des exemples Windows Communication Foundation.

  4. Assurez-vous que le chemin d'accès inclut le dossier dans lequel Makecert.exe se trouve.

  5. Sur l'ordinateur où le serveur s'exécutera, exécutez Setup.bat à partir du dossier d'installation de l'exemple pour créer le certificat de serveur et son certificat d'émetteur requis par le serveur.

  6. Sur le même ordinateur serveur, configurez le certificat de serveur avec HTTP.SYS en suivant l'instruction donnée dans la documentation conceptuelle sur Configuration de HTTP et HTTPS.

Pour exécuter l'exemple sur le même ordinateur

  1. Lancez Service.exe dans service\bin. L'activité du service s'affiche dans sa fenêtre de console.

  2. Lancez Client.exe à partir de \client\bin. L'activité du client s'affiche sur son application de console.

  3. Supprimez les certificats en exécutant Cleanup.bat une fois l'exemple terminé.

Pour exécuter l'exemple sur plusieurs ordinateurs

  1. Lancez Service.exe à partir de service\bin. L'activité du service s'affiche dans sa fenêtre de console.

  2. Vu que le serveur est auto-hébergé, vous devez spécifier une identité dans le fichier App.config du client si vous exécutez le client et le serveur en tant qu'utilisateurs de domaine :

         <client>
           <endpoint
              name="EchoServer"
              address=
              https://localhost:8000/TestService/BinaryEncoderOverHTTP
              binding=
              "netHttpBinding" bindingConfiguration="netHttpBinding"
              contract=
              "Microsoft.ServiceModel.Samples.Client.IEchoService" >
              <identity>
                 <userPrincipalName value="user_name@service_domain"/>
              </identity>
           </endpoint>
         </client>
    
  3. Lancez Client.exe depuis \client\bin : passez l'URL HTTPS affichée dans la fenêtre de service comme paramètre de ligne de commande. L'activité du client s'affiche sur son application de console.

  4. Supprimez les certificats en exécutant Cleanup.bat une fois l'exemple terminé.