2009-03-17 15 views
0

J'ai modifié et rogné ceci pour essayer de le fermer parce que le site m'invite à accepter une réponse ou à ajouter une prime. J'ai fait une expérience qui avait des appels à GetUserStoreForAssembly et GetUserStoreForDomain dans une bibliothèque référencée par une application de console, mais je ne comprenais pas pourquoi j'obtenais plus de magasins que prévu dans un cas et moins dans un autre.IsolatedStorage, essayant de démontrer les différents niveaux d'isolation - impossible d'isoler un domaine

Preet m'a aidé à régler mon expérience et j'ai fini avec deux questions légèrement differnt:

  • quand je copiais l'application de la console dans un autre répertoire (si le nom est resté le même), je suis arrivé à deux utilisateurs/magasins d'assemblage soit un par copie quand je les attendais à partager

  • quand je chargé ma bibliothèque dans plusieurs domaines au sein de l'application de la console ils ont tous utilisé toujours le même utilisateur/montage/magasin de domaine quand je les attendais à ne pas partager

D'ici là, la question était froide. J'ai fait ma propre lecture et j'ai pensé que j'ai trouvé les réponses, donc j'ai répondu à la question en espérant que quelqu'un confirmerait/corrigerait. Mais c'était si loin dans la liste qu'il n'y avait aucune chance. J'allais juste le quitter, mais j'ai été invité à accepter ou à ajouter de la générosité. J'ai donc déménagé ma réponse ici et maintenant j'ai juste besoin de quelqu'un pour ajouter un commentaire utile soit confirmer ou corriger afin que je puisse l'accepter et sachez que cela sera utile à quelqu'un d'autre qui veut mieux comprendre le stockage isolé:

réponse possible à la première question:

assemblées fortes nommés sont bien sûr identifiés par leur nom fort. Faiblement nommés (pas sûr que ce soit un terme officiel, mais peu importe) sont identifiés par leur URL ou l'emplacement du fichier. Ainsi, le même nom faiblement copié dans un répertoire différent aura son propre magasin isolé.

answeranswer possible à la seconde question (moins certains de celui-ci):

Le champ renvoyé par GetUserStoreForDomain est limitée à la machine, l'utilisateur, l'application et l'assemblage, en particulier que l'exécution de l'assemblage dans une application spécifique. Mon expérience a créé plusieurs domaines supplémentaires, mais ils font tous partie de la même application. Par conséquent, ils utilisent tous le même magasin de domaine. Par conséquent, pour simuler l'isolation de domaine, j'ai besoin de référencer la bibliothèque à partir de deux applications de console différentes.

Et cela ne fonctionnera correctement que si la bibliothèque (et donc les deux applications de la console) ont un nom fort. Le référencement d'un assemblage entraîne sa copie, ce qui signifie que s'il est faiblement nommé, il aura un magasin d'isolation séparé.

Je viens d'essayer toute l'expérience avec une dénomination forte Je reçois maintenant 2 magasins de domaine et 1 magasin d'assemblage comme prévu.

Répondre

2

Vous pouvez créer plusieurs domaines d'application dans un seul programme/processus. A l'intérieur du domaine, vous pouvez charger l'ensemble.L'appel des méthodes dans chaque domaine d'application/assemblage

Il y a des exemples here (appdomains) et here (AssemblyIdentity) et here

+0

Ah. Je dois avoir été fatigué hier ou quelque chose. Il ne m'est pas venu à l'esprit que je pouvais simplement les créer moi-même. Avez-vous une chance de m'aider avec la première question? Chaque fois que je google pour l'identité d'assemblage, je vois des choses sur la version, la culture, etc Mais rien à voir avec l'emplacement du fichier réel ... –

+0

Je suis assez certain que l'identité de l'Assemblée sera basée sur le nom fort. Le stockage isolé créera des sous-dossiers basés sur certaines fonctions de ce nom fort. Je suis ajouté un autre lien. –

+0

N'hésitez pas à me contacter en privé si vous voulez, je vais voir si je peux vous aider. –

0

Vous pouvez créer plusieurs domaines d'applications dans un seul programme/processus. A l'intérieur du domaine, vous pouvez charger l'ensemble. L'appel des méthodes dans chaque application domaine/assemblage

Il existe des exemples here