J'essaye d'exécuter de la logique sur plusieurs AppDomains en parallèle. Je fais cela parce que je travaille avec du code hérité qui est "non modifiable" et je veux améliorer les performances en parallélisant certaines choses. Le problème est que si j'exécute plusieurs instances dans 1 AppDomain, elles reposent toutes sur des structures de données statiques et interfèrent les unes avec les autres.Accélérer la communication inter-AppDomain
Ma mise en œuvre est simple. Je veux exécuter plusieurs instances de ma classe "ExecutionHarness" - chacune dans leur propre AppDomain - donc j'ai créé une classe "ExecutionHarnessProxy: MarshalByRefObject" que j'instancie dans chacun de mes AppDomains (puisque ExecutionHarness n'hérite pas de MarshalByRefObject). Ensuite, je viens de passer le paramètre "ExecutionData [] data" à la méthode "ExecutionHarnessProxy.Execute()". Ce gars appelle alors "ExecutionHarness.Execute()" et tout va bien.
Mon problème maintenant est que chaque fois que je passe mon tableau de données à la classe proxy, cela prend FOREVER. La classe ExecutionData a l'attribut [Serializable], et fonctionnellement tout fonctionne, mais je me demandais s'il y avait un moyen d'accélérer cela.
- Pourrait-il être plus rapide si je fais la sérialisation/désérialisation moi-même, des deux côtés de la limite AppDomain?
- Tout ce temps est-il consacré à la sérialisation? ou est-ce juste le transfert des données sérialisées entre AppDomains?