web-dev-qa-db-fra.com

Pouvons-nous rendre Webservice Restful stateful

Je lisais que les services Web Restful étaient sans état ... Je peux également voir que la plupart des services Web basés sur Soap sont également sans état et peuvent être rendus avec état si nécessaire et leur création dépendra de la mise en œuvre . Donc, si un service Web basé sur soap est avec état, un identifiant de session sera transmis avec chaque demande pour continuer avec session.

Ma question est pourquoi on ne peut pas en faire de même avec les services Web Restful, je pense que je devrais être capable de mettre en œuvre un service Web qui peut continuer avec la même session où l'identifiant de session est transmis par Restful Webservice.

Ma question est donc la suivante: les services Web RestFul sont-ils juste un concept avec une directive de ne pas les rendre dynamiques? ou il y aura des contrôles dans les bibliothèques Webservice Restful [comme Jersey] pour empêcher les gens de le faire?

18
Lokesh

L'apatridie de REST est conçue pour garantir la bonne évolutivité des applications. Vous pouvez ajouter un état, mais c'est un compromis en matière d'évolutivité.

L'une des raisons les plus courantes d'ajouter un état à REST est l'authentification. Une fois la connexion sécurisée établie, un cookie sécurisé peut être envoyé au client. Ce cookie est ensuite ajouté par le client à toutes les demandes de la session. Le serveur maintient l'état, puis le charge avec chaque demande basée sur le cookie.

Prenons une simple page Web. Si vous ne maintenez pas l'état, vous pouvez créer un proxy inverse, mettre en cache la page en mémoire par URL et répartir cette ressource sur de nombreux serveurs. Si vous ajoutez maintenant le nom de l'utilisateur actuellement connecté à cette page Web, vous ne pouvez plus rien mettre en cache (au moins au niveau HTTP le plus élémentaire). La réponse ne peut désormais être mise en cache qu'avec une combinaison du cookie d'authentification et de l'URL.

13
rich remer

Tant que je sache, nous (développeurs .net) pouvons utiliser la liaison WS dans wcf pour des services Web avec état. 

1
AAAA

Le service Web, qu'il s'agisse de repos ou de SOAP, est conçu par défaut sans état. Mais il peut y avoir des cas d'utilisation où il est nécessaire de spécifier l'état. Le cadre de ressources de services Web (WSRF) fourni par OASIS peut être utilisé pour créer un service Web SOAP avec état. Ajoutez un attribut ResourceProperties au noeud final, ajoutez une opération ResourceProperty au WSDL et transmettez-le aux services Web. 

Le reste s’engage dans le transfert d’état et pour le rendre dynamique, nous pouvons utiliser l’état de session persistante côté client ou persistante dans la base de données et le transférer via des appels de services Web en tant qu’attribut dans l’en-tête ou un paramètre de méthode. 

0