Problèmes de design avancé
Comme les informations de type d'un type distant sont nécessaires au client, il est souvent plus facile de déployer simplement la bibliothèque de types sur le client pour une utilisation comme bibliothèque de métadonnées. Cependant, dans de nombreux cas, vous ne voudrez pas que les clients aient accès à l'implémentation du type. Vous pouvez résoudre ce problème de différentes manières :
Générez un client solitaire à l'aide de l'outil Soapsuds Tool (Soapsuds.exe), comme indiqué dans la rubrique Clients solitaires. Cela ne fonctionne qu'avec un objet HttpChannel.
Déployez, sur le client, un assembly de métadonnées seulement avec les mêmes informations de nom et de type que celles de l'assembly serveur et désactivez la vérification de version ou laissez les versions vides.
Déclarez une interface dans une bibliothèque séparée et déployez cette bibliothèque avec le client. Publiez une classe de serveur qui implémente votre interface ; le client pourra l'utiliser en se procurant un proxy vers l'interface qu'il implémente.
Remarque Le client devra appeler la méthode Activator.GetObject pour acquérir le proxy. L'appel de new (New dans Visual Basic) lèvera une erreur de compilation ; vous ne pouvez pas créer une instance d'une interface.
Générez une classe de wrapper accessible à distance pour la classe réelle. Publiez et déployez la bibliothèque de wrapper. Le client n'aura pas accès à l'objet réel.