2013-07-11 2 views
2

Szenario:Puis-je utiliser des modèles comme la carte d'identité dans un environnement sans état

J'ai lu le livre P of EAA par Martin Fowler et trébuché sur le motif appelé Identity Map. J'ai pensé à utiliser ce modèle dans une application ASP.NET MVC.

Question:

Pour autant que je sais la demande ASP.NET MVC cycle de vie tue toujours tous les objets après une telle requête traitée, ce qui signifie que ma couche de domaine/couche cartographique (contenant ma carte d'identité) serait également nettoyé. Comment puis-je utiliser ce modèle (voir ci-dessous) dans un environnement sans état tel que ASP.NET MVC? Est-ce logique dans un environnement sans état? Pourrais-je rendre statique la carte d'identité et introduire un identifiant de session pour récupérer mes objets déjà chargés?

Carte d'identité:

assure que chaque objet se charge qu'une seule fois en gardant chaque objet chargé dans une carte. Recherche les objets à l'aide de la carte lorsque y fait référence. Martin Fowler

enter image description here

+0

[Lire ceci] (http://stackoverflow.com/questions/12554213/). En ce qui concerne votre question, une utilisation limitée peut être faite, mais l'utilisation du même contexte pour plusieurs demandes peut vous donner des données périmées. – gdoron

Répondre

1

cartes d'identité sont utilisées pour mettre en œuvre le premier cache de niveau dans de nombreux orientées objet cartographes. Si votre pile d'application implique Entity Framework ou nHibernate (ou encore un autre orm), vous avez probablement déjà une carte d'identité. Mais c'est ce que vous savez probablement déjà.

La question de savoir si oui ou non une carte d'identité pourrait être statique ne dispose pas d'une réponse définitive et je pourrais probablement imaginer une situation où il pourrait travail, mais les inconvénients sont graves:

  • le cache ne serait pas être en mesure de voir facilement les modifications externes
  • la consommation de mémoire grandiraient sans contrôle
  • problèmes de concurrence pourraient se produire

La mise en œuvre d'une carte d'identité qui serait libre de toutes ces questions serait probablement difficile. Il est juste plus sûr et moins coûteux de limiter la durée de vie de la carte à une seule requête. Notez qu'il fait toujours son travail - si une requête implique plusieurs lectures, la carte d'identité sert les données plutôt que la base de données, le cas échéant.

Questions connexes