Dans mon travail, nous développons différentes applications utilisant .net framework 4. Toutes les applications utilisent des assemblages communs que nous avons développés, par exemple la couche de données dans data.dll. Ces applications résident sur un lecteur réseau et sont lancées directement à partir de là.Comment précharger les assemblages .net
La plupart des grandes applications mettent un certain temps, comme peut-être 4-5 secondes, pour lancer la première fois (démarrage à froid). Les lancements suivants sont beaucoup plus rapides, presque instantanés. Je ne pense pas que cela ait à voir avec le réseau, puisque le plus gros assemblage se situe autour de 900Ko et que nous utilisons un réseau Gigabit.
Je voudrais créer un service qui démarre au démarrage de l'ordinateur et qui charge tous les assemblages .net sous un répertoire spécifique. J'espère que lorsque l'utilisateur lancera un programme, tous les assemblages nécessaires seront déjà chargés et 'JITed', donc le démarrage devrait être plus rapide.
Je sais comment créer un service, mais je voudrais savoir si cela pourrait fonctionner parce que ma compréhension du CLR est assez limitée ... Aussi, ferait quelque chose comme Assembly.LoadFrom (fileName) de précharger le assemblées? Si je ne lance aucun programme pendant un certain temps, reste-t-il chargé ou se décharge-t-il après un certain temps? Que se passe-t-il si je change un assemblage déjà chargé?
Fondamentalement, je voudrais faire quelque chose comme le OpenOffice Quick starter, mais pour notre propre cadre d'application.
Merci à tous !!!
--- EDIT ---
This is interresting... semble aller dans le bon sens, mais pas sûr de tout comprendre ...
duplication possible de [Preloading Assemblies] (http://stackoverflow.com/questions/548915/preloading-assemblies) –
J'ai cherché mais je n'ai pas trouvé ce post ... Quoi qu'il en soit, ce n'est pas vraiment la même chose. Il essayait de précharger des assemblages pendant son 'temps d'inactivité' alors que je voulais les charger depuis une autre application. –