Modifica:
OK, quindi, la gente ha detto che non è chiaro cosa sto chiedendo. Sto chiedendo un feedback su questo design. Ecco un esempio di storia utente:
In qualità di amministratore di gruppo sul sito Web, desidero ricevere una notifica quando un utente del mio gruppo carica un file nel gruppo.
La soluzione più semplice è che nel codice che gestisce il caricamento, creiamo direttamente un messaggio e-mail e lo spediamo. Tuttavia, questo sembra che non sia proprio il livello appropriato di separazione delle preoccupazioni, quindi invece stiamo pensando di avere un processo di lavoro separato che non fa altro che inviare notifiche. Pertanto, il sito Web nel codice di caricamento gestisce la ricezione del file, estraendo alcuni metadati da esso (come il nome file) e scrivendolo nel database. Non appena viene gestito il caricamento del file, vengono eseguiti due passaggi: Scrive i dettagli della notifica da inviare (come oggetto, nome file, ecc.) A una tabella di "notifica" dedicata e crea anche un messaggio in una coda che la notifica invia ai monitor dei processi di lavoro. L'intera sequenza è mostrata nello schema seguente.
Le mie domande sono: vedi qualche inconveniente in questo design? C'è un design migliore? Il team desidera utilizzare ruoli di Azure Worker, code e tabelle. È la chiamata giusta per usare questi componenti o questo disegno è inutilmente complesso? I requisiti degli attributi di qualità sono che è facile da codificare, facile da mantenere, facile da eseguire il debug in fase di esecuzione, controllabile (la cronologia è disponibile quando sono state inviate le notifiche, ecc.), Monitorabile. Qualunque altro attributo di qualità che pensi che dovremmo progettare?
originale:
Stiamo creando un'applicazione cloud (in Azure) in cui sono presenti almeno 2 componenti. Il primo è il componente "source" (ad esempio un'interfaccia utente / sito Web) in cui si verifica un'azione o viene soddisfatta una condizione che attiva un secondo componente o "worker" per eseguire un determinato lavoro. Questi lavori hanno dettagli o metadati ad essi associati che intendiamo archiviare in Archiviazione tabelle di Azure. Ecco lo schema che stiamo considerando:
Passi:
- Condizioneperillavororaggiunto.
- L'originescriveidettaglidellavoronellatabella.
- L'originemetteillavoroincoda.
inmodoasincrono:
Si prega di commentare e fammi sapere se ho questo diritto, o se c'è qualche schema migliore. Ad esempio, considera il lavoro come "invio di una notifica", ad esempio un'e-mail i cui campi modello sono riempiti dai "dettagli" menzionati nel modello.