Proxy de service
Un proxy de service est le proxy côté client pour un service. Le proxy de service permet aux applications d’envoyer et de recevoir des messages sur un canal en tant qu’appels de méthode.
Les proxys de service sont créés en fonction des besoins, ouverts, utilisés pour appeler un service et fermés quand vous n’en avez plus besoin. Une application peut également réutiliser un proxy de service pour se connecter à plusieurs reprises au même service sans les dépenses de temps et les ressources requises pour initialiser un proxy de service plusieurs fois. Le diagramme suivant illustre le déroulement des États possibles du proxy de service et des appels de fonction ou des événements qui mènent d’un État à un autre.

Ces États du proxy de service sont énumérés dans l’énumération de l' _ État du _ proxy _ WS service .
Comme le montre le diagramme ci-dessus et le code suivant, un proxy de service est créé par un appel à la fonction WsCreateServiceProxy . En tant que paramètres pour cet appel, WWSAPI fournit les énumérations suivantes :
Il accepte également les paramètres facultatifs à l’aide des types de données suivants :
Lorsque le proxy de service a été créé, la fonction WsCreateServiceProxy retourne une référence au proxy de service, à WS _ service _ proxy, via un paramètre out.
WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
WS_TCP_CHANNEL_BINDING,
WS_CHANNEL_TYPE_DUPLEX_SESSION,
NULL,
NULL,
0,
NULL,
0,
&serviceProxy,
error);
Lorsque le proxy de service a été créé, l’application peut ouvrir le proxy de service pour la communication avec un service en appelant la fonction WsOpenServiceProxy , en passant une structure d' adresse contenant l’adresse réseau du point de terminaison de service auquel se connecter.
WS_ENDPOINT_ADDRESS address = {0};
address.uri.chars = "net.tcp://localhost/example";
address.uri.length = wcslen("net.tcp://localhost/example";);
hr = WsOpenServiceProxy(serviceProxy, &address, NULL, error);
Lorsque le proxy de service a été ouvert, l’application peut l’utiliser pour effectuer des appels au service.
hr = Add(
serviceProxy,
1,
2,
&result,
NULL,
0,
NULL,
error);
Lorsque l’application n’a plus besoin du proxy de service, elle ferme le proxy de service en appelant la fonction WsCloseServiceProxy . Elle libère également la mémoire associée en appelant WsFreeServiceProxy.
hr = WsCloseServiceProxy(
serviceProxy,
NULL,
error);
hr = WsFreeServiceProxy(
serviceProxy,
error);
Réutilisation du proxy de service
Sinon, après avoir appelé WsCloseServiceProxy , une application peut réutiliser le proxy de service en appelant la fonction WsResetServiceProxy .
hr = WsResetServiceProxy(
serviceProxy,
error);
Pour plus d’informations sur l’utilisation des proxys de service dans différents contextes, consultez les rubriques suivantes :
- Proxy de service et sessions
- Opération de service
- Opérations de service côté client
- HttpCalculatorClientExample
Sécurité
Les considérations suivantes relatives à la conception des applications doivent être soigneusement notées quand vous utilisez l’API du proxy du service WWSAPI :
- Le proxy de service n’effectue aucune validation des données au-delà de la validation de base du profil 2,0 et de la sérialisation XML. Il incombe à l’application de valider les données contenues dans les paramètres qu’elle reçoit dans le cadre de l’appel.
- Configuration du nombre maximal d’appels en attente sur le proxy de service, à l’aide de la valeur d’énumération de l' _ ID de _ propriété _ du proxy WS nombre maximal d' _ _ _ _ _ appels en attente, offre une protection contre un serveur en cours d’exécution lent. La valeur maximale par défaut est 100. Les applications doivent être prudentes lors de la modification des valeurs par défaut.
- Le proxy de service ne fournit aucune garantie de sécurité au-delà de celles spécifiées dans la structure de _ _ Description de sécurité WS utilisée pour communiquer avec le serveur.
- Soyez vigilant lorsque vous modifiez les valeurs par défaut des messages et des canaux sur le proxy de service. Lisez les considérations de sécurité associées aux messages et aux canaux avant de modifier les propriétés associées.
- Le proxy de service chiffre toutes les informations d’identification qu’il conserve en mémoire.
Les éléments d’API suivants sont liés aux proxys de service.
| Rappel | Description |
|---|---|
| _rappel de _ message de proxy WS _ | Appelée lorsque les en-têtes du message d’entrée sont sur le ou lorsqu’un en-tête de message de sortie vient d’être reçu. |
| Énumération | Description |
|---|---|
| ID de propriété de l' _ appel WS _ _ | Énumère les paramètres facultatifs pour la configuration d’un appel sur une opération de service côté client. |
| _ID de _ propriété du proxy WS _ | Énumère les paramètres facultatifs pour la configuration du proxy de service. |
| _État du _ proxy WS service _ | État du proxy de service. |
| Fonction | Description |
|---|---|
| WsAbandonCall | Abandonne un appel spécifié sur un proxy de service spécifié. |
| WsAbortServiceProxy | Annule toutes les entrées et sorties en attente sur un proxy de service spécifié. |
| WsCall | Interne uniquement. Sérialise les arguments dans un message et les envoie sur le canal. |
| WsCloseServiceProxy | Ferme un proxy de service pour la communication. |
| WsCreateServiceProxy | Crée un proxy de service. |
| WsFreeServiceProxy | Libère la mémoire associée à un proxy de service. |
| WsGetServiceProxyProperty | Récupère une propriété de proxy de service spécifiée. |
| WsOpenServiceProxy | Ouvre un proxy de service à un point de terminaison de service. |
| WsResetServiceProxy | Réinitialise le proxy de service. |
| Handle | Description |
|---|---|
| _proxy WS service _ | Type opaque utilisé pour référencer un proxy de service. |
| Structure | Description |
|---|---|
| _propriété d’appel WS _ | Spécifie une propriété d’appel. |
| WS _ _propriété de proxy. | Spécifie une propriété de proxy. |