AOP peut être utilisé pour partager des données entre différents threads en cours d'exécution dans le processus d'application?

StackOverflow https://stackoverflow.com/questions/1431463

  •  07-07-2019
  •  | 
  •  

Question

UPDATE: Je ne sais pas dans quel contexte AOP devrait être utilisé? Comme nous pouvons utiliser AOP à des fins de journalisation, de sécurité (authentification), veuillez suggérer quelques autres scénarios dans lesquels nous pouvons tirer parti de l’AOP.

Peut-on utiliser l'AOP pour partager des données entre différents threads en cours d'exécution dans le processus d'application?

Était-ce utile?

La solution

La programmation orientée aspect est idéale lorsque vous devez réduire les "coupes transversales". fonctionnalité dans votre base de code. Cela signifie que vous avez le code commun (journalisation, sécurité) que les classes doivent implémenter, mais vous ne pouvez pas résumer cette fonctionnalité dans les classes de base.

Donc, AOP prend vraiment ces petites fonctionnalités et les incorpore, au moment de l'exécution ou de la compilation, dans votre code où la "coupe transversale" la fonctionnalité est présente.

Ressources

Actuellement, AOP n'est pas intégré à C #, mais les frameworks suivants peuvent construire AOP:

AOP pour les données de thread

En règle générale, utiliser AOP pour partager des données entre threads n’est pas la solution. Les développeurs peuvent utiliser d'autres techniques pour le faire:

  • [ThreadStaticAttribute] Ajoutez cet attribut aux champs pour indiquer au moteur d'exécution .NET que le champ suivant sera unique pour plusieurs threads

  • Synchronisation (technique la plus courante) Utilisez Mutex , Semaphores , verrous ReaderWriter et EventWaitHandles à synchroniser l'accès aux données locales ou globales à partir de plusieurs threads. En C #, l’instruction lock est un sucre syntaxique pour la classe Monitor , qui peut être utilisée pour "verrouiller". accès à un objet à partir d'un seul thread.

Autres conseils

J'aime penser à AOP en tant que génération intelligente de code en arrière-plan (compilation) / exécution (à l'exécution), de sorte que vous pouvez pratiquement faire pratiquement n'importe quoi. Il présente tous les avantages (et plus encore) de la génération de code traditionnelle sans ses inconvénients (par exemple, sa facilité de maintenance).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top