Stateful vs Apatrides Webservices
Imaginer plus complexe CRUD application qui a trois niveaux de l'architecture et communique via des webservices. Le client commence une conversation sur le serveur et faire une certaine forme d'assistant de trucs. Pour traiter l'assistant le client a besoin de rétroaction donnée par le serveur.
Nous avons commencé une discussion sur avec ou sans état de webservices pour cette approche. J'ai fait quelques recherches combinées avec ma propre expérience, les points qui me à la question ci-après.
Apatrides webservices ayant les propriétés suivantes (dans notre cas):
+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
Mais nous pouvons traverser les deux premiers points, notre application n'a pas besoins d'évolutivité et de disponibilité.
Nous arrivons donc à la dynamique d'un webservice. J'ai lu un tas de blogs et posts sur le forum et la plupart inventé point de la mise en œuvre d'une dynamique webservice était:
+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http
Mais n'a pas de presque toutes les applications web ont ces mauvais points? Les applications Web utilise des cookies, les chaînes de requête, id de session, et tous les trucs pour éviter les cas d'apatridie de http.
Alors pourquoi est-il si mauvais que ça pour les webservices?
Mettre l'état dans un endroit qui peut facilement manipuler de l'état: la base de données
OriginalL'auteur codevour | 2010-04-06
Vous devez vous connecter pour publier un commentaire.
Car le maintien de l'état dans un webservice est difficile et si vous n'êtes pas très prudent et/ou expérimentés, tôt ou tard, vous pourriez frapper certains très difficile de trouver des bugs.
Pourquoi ne pas simplement utiliser un conteneur conçu à cet effet comme un SGBDR.
Je ne suis pas sûr de comprendre. Si vous mettez des trucs dans des SGBDR cela signifie essentiellement rouler vos propres sessions qui effectuera probablement pire. Il ne sonne pas comme il a besoin des informations persistantes dans la session, alors pourquoi le mettre là?
Ce que je voulais dire en mettant de l'état dans une base de données a été de concevoir des méthodes de service web qui sont capables de récupérer l'état de la base de données. Par exemple, préférez une méthode web
User GetUser(int userId)
au lieu deUser GetUser()
qui va chercher dans certains coutume fait état d'un conteneur pour l'id de l'utilisateur courant et le retour de ses informations. C'est, pour le consommateur, le service web de décider de la façon de gérer l'état.OriginalL'auteur Darin Dimitrov
État est l'endroit où la plupart des bugs cacher, trop.
OriginalL'auteur SamB
J'ai eu raisonnable de chance avec dynamique de services web. Ils ne se sentent légèrement sale parce que le trou cookie de session chose sur le dessus de HTTP, c'est que; mais d'un autre côté, ils ont de SAVON, de sorte qu'il serait un peu stupide de se trop bouleversé à propos de la beauté à ce point.
Une chose à garder à l'esprit est l'interopérabilité: si vous faites de la dynamique de service web de vos clients sont à la charge de l'idée même d'etat, vous n' (généralement des cookies). Mais encore une fois -- a bien fonctionné pour moi.
P. S. je suppose que vous êtes dans un conteneur qui sera prendre soin de garder une trace de la sessions pour vous.
OriginalL'auteur MK.