Il y a quelques mois, j'ai découvert PostSharp, et pendant un certain temps, c'était bon.Est-ce que Spring.Net peut fonctionner comme PostSharp?
Mais alors juridique est revenu avec une réponse disant qu'ils n'aiment pas la licence des anciennes versions. Ensuite, le ministère m'a dit que le prix de la 2.0 était trop élevé (pour le nombre de sièges dont nous avions besoin) ... J'étais extrêmement déçu, mais pas découragé. Je ne peux pas être le seul cadre de ce genre, pensais-je.
j'ai gardé la recherche d'un remplacement, mais la plupart était soit mort, mal entretenu (en particulier dans le département de documentation), pour une utilisation académique, ou tout ce qui précède (je vous regarde Aspect.Net)
Puis j'ai découvert Spring.Net, et pendant un temps, c'était bon.
J'ai lu la documentation et j'ai continué à peindre ce qui semblait être une image supplémentaire d'un nirvana AOP. Je n'étais plus verrouillé aux attributs pour marquer où je voulais que l'interception de code ait lieu, mais il pouvait être configuré en XML et les modifications ne nécessitaient pas de re-compilation. Génial.
Je regardai les échantillons et vu ce qui suit, dans chaque scénario d'utilisation unique:
// Create AOP proxy using Spring.NET IoC container.
IApplicationContext ctx = ContextRegistry.GetContext();
ICommand command = (ICommand)ctx["myServiceCommand"];
command.Execute();
if (command.IsUndoCapable)
{
command.UnExecute();
}
Pourquoi les deux premières lignes de code doit exister? Ça gâche tout. Cela signifie que je ne peux pas simplement fournir à un utilisateur un ensemble d'aspects et d'attributs ou de config XML qu'ils peuvent utiliser en collant des attributs appropriés sur les méthodes/classes/etc appropriées ou en modifiant le motif de correspondance en XML. Ils doivent modifier leur logique de programme pour que cela fonctionne!
Existe-t-il un moyen de faire en sorte que Spring.Net se comporte comme PostSharp dans ce cas? (par exemple, l'utilisateur n'a besoin que d'ajouter des attributs/config XML, pas de modifier le contenu des méthodes.)
Sinon, existe-t-il une alternative valable et fonctionnelle à PostSharp? J'ai vu quelques questions intitulées comme ça sur SO, mais aucune d'entre eux cherchaient en fait à remplacer PostSharp, ils voulaient seulement compléter sa fonctionnalité.J'ai besoin de remplacement complet
La réponse courte est non, car PostSharp réécrit réellement votre code en tant qu'étape post-construction. Je vais laisser les experts du printemps peser, cependant; Je sais que vous pouvez être très proche si vous utilisez DI pour instancier vos services et êtes prêt à essayer l'interception de méthodes. – Aaronaught
Enfer, je suis tout pour réécrire! Je ferais même ce qui est nécessaire moi-même. Si seulement CCI-AST était suffisamment bien documenté, ou du moins son code était fonctionnel et suffisamment diversifié? _> Y a-t-il autre chose qui puisse répondre à mes besoins? –
Peut-être que vous pouvez être plus précis sur ce que vous essayez de faire et où vous avez trouvé cet exemple? Je ne suis pas très au printemps, comme je l'ai déjà mentionné, mais je l'ai évalué une fois et je ne me souviens pas d'avoir à intégrer un de ces trucs ICommand dans les classes pour utiliser le système Advice. – Aaronaught