Ho un'applicazione REST in cui è possibile eseguire "azioni" per eseguire qualsiasi operazione nel sistema. Ad esempio: user.save, user.get, ecc ...
Ho anche "gestori" di pre e post esecuzione. Ad esempio, un gestore di post-esecuzione viene utilizzato per aggiungere tag agli utenti; è un modulo AddOn che gestisce i tag degli utenti (e di altre entità). Ho anche un altro modulo (chiamato Rules) che può, ad esempio, convalidare le informazioni dell'utente e fare qualcosa in base a quello (ad esempio, inviare un messaggio di posta elettronica).
Il problema che sto affrontando ora è che in generale l'ordine di esecuzione di quei moduli non è importante, ma a volte lo è. Prendi i seguenti casi:
Esempio 1:
- Azione: Salva utente
- Gestore: tagga l'utente come "VIP"
- Gestore: invia un'email se l'utente è contrassegnato come "VIP"
= > L'email viene inviata.
Esempio 2:
- Azione: Salva utente
- Gestore: invia un'email se l'utente è contrassegnato come "VIP"
- Gestore: tagga l'utente come "VIP"
= > L'email non verrà inviata.
Tutte le operazioni (azioni e gestori) vengono eseguite all'interno di una singola transazione.
Quale sarebbe una buona soluzione per assicurarti che il gestore "Invia email" venga eseguito dopo l'utente "Tag user"?
Alcune idee: - Avere gestori di post-azione e gestori post- (post-azione). Ma quanti post-post-post dovrei aggiungere? - Aggiungi un peso o indice di priorità a ciascun gestore. Ma quando finisci con diversi gestori, le priorità tendono ad essere confuse poiché ogni modulo non conosce gli altri moduli e gestori.
Che cosa consiglieresti? Grazie.
Nel caso qualcuno lo trovi importante: è C # 4.5, ASP.NET, IIS.