2010-02-04 4 views
47

Je voudrais faire une photo de ce que sont les cas possibles pour une participation efficace de l'AOP dans la conception de l'application. Tout ce que j'ai rencontré jusqu'à présent est:Quels sont les cas d'utilisation AOP possibles?

  • contrôles de sécurité liés à la consignation-
  • gestion des transactions
  • peaufinage d'une application héritée

de rien d'autre?

(Il ne doit pas être nécessairement l'AOP à base de proxy Spring - plutôt JBoss AOP.)

(Related question)

+1

"les cas possibles"? C'est une collection presque * infinie *. Cependant, toutes ne sont pas une bonne idée. Tout est possible Y a-t-il un moyen de restreindre ou de cibler cette question? –

+1

Bien lire: la question contenait "les cas possibles pour l'invocation efficace de l'AOP dans la conception de l'application". Je veux dire par là que c'est une bonne idée d'utiliser AOP. Désolé si la question n'est pas claire. –

+0

Devrait être wiki de la communauté – skaffman

Répondre

25

Je peux vous donner deux exemples où nous utilisons:

  • Enregistrement automatique d'objets dans JMX pour la gestion à distance. Si une classe est annotée avec notre annotation @AutoRegister, nous avons un aspect qui surveille les nouvelles instanciations de cette classe et les enregistre automatiquement dans JMX.

  • Consignation d'audit (le cas d'utilisation AOP de référence). C'est un peu grossier mais l'approche générale est d'annoter des méthodes qui représentent une action auditable. Combiné avec quelque chose comme la sécurité du printemps, nous pouvons obtenir une assez bonne idée de:

    • qui l'utilisateur est
    • quelle méthode ils invoquer
    • les données qu'ils fournissent
    • quel moment la méthode a été invoquée
    • si l'appel a réussi ou non (par exemple, si une exception a été levée)
3

mise en mémoire cache de niveau méthode, si le procédé est sans état (I signifie des rendements même valeur lorsqu'elle est appelée à plusieurs reprises avec les mêmes valeurs de paramètres). Ceci est plus efficace dans le cas des méthodes DAO car cela évite les attaques de base de données.

4
  • Verrous de lecture/écriture. Au lieu de répliquer le même extrait, j'ai utilisé un aspect pour définir les méthodes qui nécessitaient un verrou de lecture ou un verrou exclusif.
7

Pour voir la couverture de AOP en termes d'applicabilité, je vous recommande vraiment de lire le livre Aspect-Oriented-Software-Development-Use-Cases.Ce livre élabore des cas d'utilisation d'exigences fonctionnelles et non fonctionnelles en utilisant AOP. Après cela, vous verrez que les aspects peuvent être utilisés pour plus d'exigences que l'exploitation forestière, la localisation, la sécurité, etc.

2
  • Exception Handling: ne pas besoin de répéter la liste horrible try ... catch, catch, catch etc - signifie également que la gestion des exceptions est garantie pour être cohérente. Surveillance des performances: Très utile car l'utilisation d'un aspect est non intrusive et peut être effectuée après coup, puis coupée lorsqu'elle n'est plus nécessaire.
1

Je recommande aussi les aspects pour:

  • méthode Async appelle
  • Surveillance

avec Spring et tcServer (développeur), vous pouvez facilement surveiller tous vos grains de printemps avec @Annotation de composant. Vous pouvez voir le temps utilisé, les données d'entrée et de retour, y compris les exceptions.

1

INotifyPropertyChanged et horreurs similaires.

Fondamentalement, partout où il y a du code qui ressemble à ceci - utilisez un aspect et vous avez terminé.

3

Nous l'utilisons pour la gestion des licences logicielles, c'est-à-dire que le logiciel ne peut s'exécuter que si des licences spécifiques sont installées sur l'ordinateur. Ce n'est pas si différent de vos utilisations énumérées, car c'est une forme de vérification de sécurité.

I a publié une entrée de blog décrivant une mise en œuvre pratique here

1

contrôle d'exécution des contrats de code. Code Contracts for .NET utiliser AOP pour

Vérification de l'exécution. Notre réécriveur binaire modifie un programme en injectant les contrats, qui sont vérifiés dans le cadre de l'exécution du programme.

0

Nous utilisons AspectJ pour accomplir l'AOP. Les cas d'utilisation autres que ceux mentionnés ci-dessus sont les suivants:

  • Restreindre l'accès aux appels de méthode à quelques classes seulement.
  • Annotation automatique des méthodes/classes/champs sélectionnés.
Questions connexes