2009-12-12 2 views
4

Je travaille sur une application où des développeurs tiers pourront écrire des plugins. J'ai regardé un peu à Managed Extensibility Framework et il semble que la bonne voie à suivre. Une chose cependant, je veux empêcher les plugins d'accéder librement au reste de l'application (en appelant des singletons, etc.) mais souhaiterais limiter à communiquer via une interface, idéalement chaque plugin devrait "demander" l'autorisation pour différents des choses comme l'accès à d'autres plugins et données utilisateur, y at-il un bon moyen d'y parvenir?Plugins de sandboxing avec framework d'extensibilité géré

La seule chose que je peux penser autrement est d'avoir une chaîne de sécurité est passé à chaque méthode et obscurcir l'enfer du code, mais il semble comme une solution laide: P

Répondre

4

Qu'est-ce que vous avez besoin est une nouvelle AppDomain à Soyez le bac à sable pour votre plugin, mais je ne pense pas que MEF supporte le chargement des exportations dans un AppDomain en ce moment (je suis sûr que quelqu'un me corrigera si ce n'est plus le cas).

Si cela vous préoccupe sérieusement, envisagez d'utiliser les bits de l'espace de noms System.Addin et consultez cette section sur Activation, Isolation, Security, and Sandboxing pour plus d'informations. C'est une alternative beaucoup plus robuste et sécurisée au MEF, mais elle est beaucoup moins flexible.

Mise à jour: Kent Boogaart a un blog post montrant comment vous pouvez utiliser MEF et MAF ensemble.

Questions connexes