Domanda

Ho un inserimento dei dati e la modifica di forma e in ogni immissione di dati o evento di aggiornamento, devo inviare un'email a un elenco dinamico di destinatari. Mi hanno inviato l'e-mail non appena l'utente fa clic sui pulsanti salvare o modificare, ma sto pensando di primo salvataggio dei dati nel database, e quindi inviare l'e-mail più tardi. Io voglio fare questo in parte per migliorare il tempo di risposta della domanda, l'e-mail di invio tende a prendere un lungo periodo di tempo di quanto desiderato.

Ha una qualunque fatto qualche cosa in qualche modo legata a questo, c'è un modo migliore di implementare qualcosa di simile o si fa a sapere un buon tutorial su come.

Il corpo del messaggio è formattato html.

È stato utile?

Soluzione

Sono d'accordo con ck sull'utilizzo di un servizio e una coda di messaggi, ma ci sono alcune alternative.

Una è quella di utilizzare un servizio che i sondaggi la banca dati a intervalli regolari. Questo consente di evitare la coda di messaggi a costo di un carico della CPU più elevata (il servizio sarà fare molte chiamate al database non necessari).

Si potrebbe anche farlo direttamente nel database utilizzando un trigger del database o un processo pianificato nel database. Le ultime versioni di supporti SQL Server in esecuzione stored procedure scritte in C # o Vb.Net in modo probabilmente si potrebbe riutilizzare gran parte del vostro codice esistente qui.

Infine si potrebbe andare per una soluzione semplice in cui si fa l'e-mail di invio su un thread separato nell'applicazione asp.net. In questo modo si evita la necessità di un'applicazione di servizio e si può riutilizzare il codice più o meno come lo è oggi.

Altri suggerimenti

Si potrebbe scrivere un servizio di Windows che le maniglie di inviare le e-mail, quindi utilizzare una coda di messaggi come il metodo di passare i dati dalla vostra applicazione per il servizio. Cioè la tua applicaiton salva i dati, poi aggiunge un messaggio alla coda. Il servizio continuamente sondaggi la coda per i messaggi, l'invio di ciascuno come una e-mail.

Un modo per farlo è quello di scrittura nel database, e poi mettere un messaggio su una coda che racconta di un servizio di posta elettronica (scritto come servizio di Windows) che non ci sono messaggi di posta elettronica da inviare. Il servizio di posta elettronica parla poi al database per trovare ciò che in realtà deve fare. Questo disaccoppia il servizio di posta elettronica dall'applicazione web ed evita anche di polling.

Questo è leggermente diverso per la soluzione di ck in quanto il messaggio della coda viene utilizzato come un trigger anziché contenente le informazioni di posta elettronica. Questo disaccoppia la web app e il servizio di posta elettronica in una certa misura, e significa che il servizio di posta elettronica può essere riutilizzato da più client, senza dover ogni cliente di osservare (e tenere il passo con) lo stesso formato del messaggio di posta elettronica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top