Le système de sécurité dans .NET est assez complexe. Je ne suis pas sûr que la réponse soit aussi simple que cela puisse paraître à première vue. Même dans le cas où vous avez un seul assemblage, des contrôles de sécurité sont toujours effectués. Lorsque vous démarrez une application qui a toute la logique dans un fichier .exe unique, vous ne contournez pas les contrôles de sécurité .NET pour le chargement et la vérification de l'assembly, ni ne contournez les contrôles d'héritage de type. Cependant, une fois la sécurité vérifiée pour une portée donnée, elle ne se reproduit généralement plus (il peut y avoir des circonstances atténuantes qui forceraient une nouvelle vérification des preuves.)
Les assemblages multiples ne se comporteront pas différemment. Il peut y avoir des coûts de charge d'assemblage et des coûts d'accès de type initiaux supplémentaires, car chaque nouvel assemblage nécessitera ces contrôles de sécurité initiaux. Cependant, ces contrôles seront généralement pâles en comparaison avec le processus de JITting le code lui-même. Au-delà de la charge d'assemblage de base et des contrôles de sécurité de type, vous pouvez également avoir des demandes d'autorisation explicites. Les espaces de noms du système Microsoft sont criblés de contrôles de sécurité Demand et LinkDemand qui vérifient tous les appelants dans la pile (demande) ou l'appelant immédiat (demande de lien) sont autorisés à passer l'appel. (Votre code devrait également inclure de telles vérifications étaient appropriées pour valider les appelants ont également la permission appropriée.) Ces contrôles de sécurité se produiront indépendamment de l'endroit où le code vit ... localement, dans un autre assembly, ou même dans un assembly dans un autre domaine d'application . Cependant, une fois que vous recevez des appels vers d'autres domaines ou processus d'application, ou même vers des services et d'autres serveurs, le coût de la gestion de ces appels et des connexions est plus élevé.
Il ne s'agit même pas de l'image complète en matière de sécurité .NET. Certaines vérifications de sécurité sont plus coûteuses que d'autres. Certains exigent un justificatif d'identité, d'autres exigent des preuves, etc. La sécurité n'est pas quelque chose que vous pouvez esquiver ... c'est une composante essentielle et essentielle du développement de logiciels modernes. Je ne m'inquiéterais pas autant du coût de la sécurité ... car il est bien implémenté et bien optimisé dans le framework .NET et CLR. Je mettrais tout en œuvre pour que votre demande soit correctement architecturée et organisée.Si la séparation du code en plusieurs assemblages est logique, cela réduit les efforts de maintenance, de déploiement et de refactoring, alors son BIEN vaut le faible coût supplémentaire pour la sécurité.
@Andrew: Fait. – dewald