Introduction à l'extensibilité
Le modèle d’application WCF (Windows Communication Foundation) est conçu pour répondre en grande partie aux exigences de communication de toute application distribuée. Néanmoins, il existe des situations qui ne sont pas prises en charge par le modèle d'application par défaut et les implémentations fournies par le système. Le modèle d’extensibilité de WCF est destiné à prendre en charge des scénarios personnalisés en vous permettant de modifier le comportement du système à tout niveau, et même de remplacer le modèle d’application dans son intégralité. Cette rubrique présente les différentes zones d’extension et fournit des informations détaillées sur chacune d’elles.
Zones à étendre
Vous pouvez étendre les zones suivantes :
Le runtime de l'application. Cela permet d'étendre la distribution et le traitement des messages pour l'application. Dans ce cadre, vous pouvez également étendre le système de sécurité, le système de métadonnées, le système de sérialisation, ainsi que les liaisons et éléments de liaison qui connectent l'application au système de canaux sous-jacent.
Le canal et le runtime du canal. Cela permet d'étendre le système qui fonctionne au niveau du message, en fournissant la prise en charge du protocole, du transport et de l'encodage.
Le runtime de l'hôte. Cela permet d'étendre la relation du domaine de l'application d'hébergement avec le runtime du canal de l'application.
Extension du runtime de l'application
Dans les applications WCF, les messages destinés à un canal correspondant doivent être distingués des messages destinés à l’application elle-même. Les messages de canaux prennent en charge des fonctionnalités relatives aux canaux, comme l'établissement d'une conversation sécurisée ou d'une session fiable. Ces messages ne sont pas disponibles pour le runtime de l'application. Ils sont traités avant que la couche Application ne soit impliquée.
Les messages d'application contiennent des données destinées à une opération de client ou de service que vous ou votre client a créée. Ces messages sont disponibles pour le système d'extension de niveau application sous la forme de message ou d'objet, en fonction de vos besoins.
Tous les messages passent par le système de canaux. Seuls les messages d'application sont passés entre le système de canaux et l'application. Pour créer de nouvelles fonctionnalités de niveau canal, vous devez étendre le système de canaux. Pour créer de nouvelles fonctionnalités de niveau application, vous devez étendre le runtime du service ou du client (respectivement, répartiteurs et fabrications de canaux). Pour plus d’informations sur l’extension du runtime d’application, consultez Extension de ServiceHost et de la couche de modèle de service.
Extension de la sécurité
Pour créer des mécanismes de sécurité personnalisés comme des jetons et des informations d'identification, vous devez étendre le système de sécurité. Pour plus d’informations, consultez Extension de la sécurité.
Extension des métadonnées
Pour exposer vos métadonnées différemment de ce qui est prévu par défaut, vous devez étendre le système de métadonnées. Pour plus d’informations, consultez Extension du système de métadonnées.
Extension de la sérialisation
Pour créer des encodeurs personnalisés, proposer des substituts de données ou pour tout autre travail impliquant la personnalisation des données transférées, vous devez étendre le système de sérialisation. Pour plus d’informations, consultez Extension des encodeurs et des sérialiseurs.
Extension de liaisons
Pour associer des canaux de transport ou de protocole à la couche Application, vous devez étendre le système de liaison. Pour plus d’informations, consultez Extension de liaisons.
Extension du système de canaux
Pour créer des canaux qui prennent en charge des fonctionnalités de transport ou de protocole personnalisées, consultez Extension de la couche du canal.
Extension du système d'hébergement de service
Pour modifier le modèle d'application à l'échelle du service, vous devez étendre la classe System.ServiceModel.ServiceHostBase. Pour plus d’informations, consultez Extension de ServiceHost et de la couche de modèle de service.
Pour modifier la relation entre le domaine de l'application d'hébergement et l'hôte de service, vous devez étendre la classe System.ServiceModel.Activation.ServiceHostFactory. Pour plus d’informations, consultez Extension de l’hébergement à l’aide de ServiceHostFactory.