2010-06-23 2 views
1

J'utilise le modèle Model-View-Presenter dans mon site Web de projet et maintenant je suis incertain. Comment je fais pour traiter la session et cookie ce scénario? Comment je fais pour écrire un fichier en utilisant "Response.WriteFile" par exemple?demande de réponse de session mvp

Répondre

1

Je pense que l'approche la plus typique (et, en fait, celle utilisée par ASP.Net MVC) est d'enrouler le HttpContext dans une abstraction (comme IContext ou quelque chose) qui expose le sous-ensemble de fonctionnalités contextuelles dont vous avez besoin accès à. Si vous utilisez un conteneur IoC, vous pouvez facilement configurer un IContext qui a une implémentation par défaut qui appelle simplement HttpContext.Current sous les couvertures. Les choses commencent à être un peu plus compliquées lorsque vous devez référencer des objets Session et Request/Response, car vous aurez généralement besoin d'envelopper également ces objets (du moins si vous voulez maintenir la testabilité dans votre code de présentation). L'astuce consiste vraiment à trouver une certaine abstraction qui fonctionne pour vous du point de vue de l'API, et ensuite faire de cette façon la façon dont vous gérez tous les détails.

+0

Ok, mais j'ai raison de définir/utiliser des données dans Session, ou Cookie, ou Context, ou Cache, Response.WriteFile, ou Response.Redirect? –

+0

Je pense que c'est quelque chose que vous ne pouvez pas vraiment éviter lorsque vous traitez avec une plate-forme Web. Vous devriez probablement essayer de minimiser votre utilisation de choses comme des sessions ou des cookies, mais il y a des moments où c'est la seule vraie option. Vous pourriez essayer de faire abstraction d'un grand nombre de ces choses, mais à la fin, votre programmation pour le Web, alors vous allez devoir les aborder. La clé est d'essayer de vous assurer que vous limitez votre utilisation à vos présentateurs (et Vues si vous avez besoin de lire un cookie en javascript ou quelque chose). – ckramer

+0

Ok. J'ai pensé que je devrais traiter la session en vue parce que c'est une nécessité de l'asp.net. Mais je devrais le faire dans le présentateur, bien sûr? –

Questions connexes