Dans quel scénario est stateful mieux que apatride pour le web?
J'ai toujours défendu les apatrides web, mais je voudrais savoir ce que les défenseurs de la dynamique du web sont en train de dire.
Avez-vous une situation où la dynamique est plus approprié que apatride?
source d'informationauteur |
Vous devez vous connecter pour publier un commentaire.
Notre projet utilise le Guichet web framework, qui permet avec ou sans état de l'interaction. Stateful pages ont un certain nombre d'avantages:
Tout ce qui est possible dans une dynamique de demande pourrait également être mis en œuvre comme des apatrides: il vous suffit de stocker l'état sur le client, et de soumettre toutes les informations d'état sur chaque demande.
Lien vers le guichet: http://wicket.apache.org/
À l'aide des états rend en général le programmateur de tâche plus facile.
Toutefois, les états sont également introduire toutes sortes de problèmes de concurrence, qui sont tout simplement pas présent dans apatrides situations.
C'est essentiellement le débat entre fonctionnelle et la programmation impérative.
Des choses comme des formes longues (et vraiment tout ce qui prend plus d'une actualisation de la page) sont beaucoup plus facile avec la persistance d'un état, puisque vous pouvez effectivement garder une trace de ce page/stade, l'utilisateur est dans un facile et simple. Cependant, personnellement, je ne pense pas que ces un petit avantage en vaut la peine, mais cela dépend fortement de l'application web en question.
Je suis dans le statefull client-serveur sans état (stateless camp à cause d'évolutivité, mais face à des obstacles d'expliquer pourquoi et ce qui est devenu plus difficile à mettre en œuvre à l'aide d'un serveur sans état (stateless, vous obtenez le genre de résignés dans le long terme, c'est là que stateful serveur brille:).
Même si je préfère statefull client ce n'est pas facile à mettre en œuvre de manière efficace en utilisant asp.net viewstate et c'est peut-être où statefull web se pratique.
Je pense que statefull client, serveur sans état (stateless vous rend plus conscient de la quantité de données qui est transporté en arrière et en avant entre les pneus. Qui est parfois caché jusqu'à ce que la difficulté se fait à l'aide de statefull serveur modèle de programmation. Également, passant de apatrides pour statefull est facile (il suffit de les ignorer l'état de l'info que vous donnez car vous le savez déjà.. ). Va le contraire est presque impossible/pas la peine. Une autre chose à l'aide d'un statefull serveur, c'est que la compensation de l'état/cache est souvent un problème lorsque vous utilisez également un statefull client. C'est juste pas intuitive et confus, ou maby juste que je suis 🙂
De toute façon, GWT et beaucoup d'autres boîtes à outils modernes (Silverlight parler à WCF) semble préférer stateful client, apatrides serveur en raison d'évolutivité questions. Peut-être stateful serveur doit être l'exception à la apatrides règle ... on pourrait choisir par page/fenêtre.
sources:
http://groups.google.com/group/google-web-toolkit/browse_thread/thread/2871ef5076c1bdb6/43e7a5377047aa44?#43e7a5377047aa44
Apatrides, les applications web sont essentielles lorsque vous commencez à avoir plus de trafic.
Il pourrait y avoir beaucoup de données de l'utilisateur que vous ne voulez pas stocker sur le côté client pour des raisons de sécurité par exemple. Dans ce cas, vous devez le stocker côté serveur. Vous pouvez utiliser les applications web de session par défaut, mais si vous avez plus d'une seule instance de l'application, vous devez vous assurer que chaque utilisateur est toujours dirigé vers la même instance.
Équilibreurs de charge ont souvent la possibilité d'avoir des "collants sessions" où l'équilibreur de charge certains comment sait que le serveur pour envoyer la demande par l'utilisateur. Ce n'est pas l'idéal si, par exemple, cela signifie que chaque fois que vous redémarrez votre application web, tous les utilisateurs connectés vont perdre leur session.
Une meilleure approche consiste à stocker la session derrière les serveurs web dans une sorte de banque de données, ces jours, il ya des charges de grande nosql produits disponibles (redis, mongo, elasticsearch, memcached). De cette façon, les serveurs web sont apatrides, mais vous avez encore de l'état côté serveur et de la disponibilité de cet état peut être géré en choisissant le magasin de données de configuration. Ces magasins de données ont généralement un grand redondance, donc ça devrait presque toujours être possible d'apporter des modifications à votre application web, et même la banque de données, sans impact sur les utilisateurs.