Ik ben bezig met het verzenden van e-mails in een MVC structuur. Hierover bestaat veel discussie, met name over het punt waar je besluit een mail te verzenden. De case is: Een nieuw bericht wordt toegevoegd en daardoor moet er een e-mail de deur uit.
Opties:
Controller
Het sturende element binnen de software. Nadeel: Het garandeert niet dat de e-mail altijd verzonden wordt. Bijvoorbeeld als je de via een ander proces zoals een cron of api berichten toevoegt. Voordeel: Je kiest bewust voor verzending. Denk bijvoorbeeld aan wat er kan gebeuren als je ineens een reeks records gaat importeren.
Model
Lijkt logisch want het zekert dat deze actie uitgevoerd wordt. Aan de andere kant is het geen bewuste keuze meer, nieuw records -> mail wordt verzonden. Daarnaast wordt het model wat grotere (niets mis mee) en bevat het extra functies die eigenlijk niet meer concreet met het model te maken hebben.
http://www.robbyonrails.c...controllers-versus-models
Observer
Het probleem van gemixte code in het model wordt opgelost door deze in een observer te stoppen. Deze triggert onder bepaalde voorwaarden en regelt de verzending van de mail. Zo heb je weer scheiding tussen functies en wordt je save() methode in het model niet vervuilt met details over mails.
Een e-mail is een object
Een e-mail kan je zien als een ding, net zoals een bericht. Alternatieve optie: Maak een nieuw model aan: E-mail. Daar heb je dan tevens een optie om deze op te slaan bijvoorbeeld. Het is een totaal aparte actie en zo trek je dat geheel uit de flow.
Je request is dan dus:
Nieuw bericht wordt verzonden (formulier): controller -> model -> controller -> view (OK)
Ergens in die stappen start er een nieuwe request:
Nieuwe mail (inhoud): controller -> model -> controller -> view (e-mail template)
De view wordt dan verzonden per e-mail dus. De situatie is dan dus dat een request een nieuwe request opstart. Voordeel is tevens dat bijvoorbeeld een mailque gemaakt kan worden. Je hoeft alleen in het model de mails in plaats van opslaan deze naar bijvoorbeeld een que server te sturen.
Wat is jullie ervaring, wat is handig en wijsheid?
Opties:
Controller
Het sturende element binnen de software. Nadeel: Het garandeert niet dat de e-mail altijd verzonden wordt. Bijvoorbeeld als je de via een ander proces zoals een cron of api berichten toevoegt. Voordeel: Je kiest bewust voor verzending. Denk bijvoorbeeld aan wat er kan gebeuren als je ineens een reeks records gaat importeren.
Model
Lijkt logisch want het zekert dat deze actie uitgevoerd wordt. Aan de andere kant is het geen bewuste keuze meer, nieuw records -> mail wordt verzonden. Daarnaast wordt het model wat grotere (niets mis mee) en bevat het extra functies die eigenlijk niet meer concreet met het model te maken hebben.
http://www.robbyonrails.c...controllers-versus-models
Observer
Het probleem van gemixte code in het model wordt opgelost door deze in een observer te stoppen. Deze triggert onder bepaalde voorwaarden en regelt de verzending van de mail. Zo heb je weer scheiding tussen functies en wordt je save() methode in het model niet vervuilt met details over mails.
Een e-mail is een object
Een e-mail kan je zien als een ding, net zoals een bericht. Alternatieve optie: Maak een nieuw model aan: E-mail. Daar heb je dan tevens een optie om deze op te slaan bijvoorbeeld. Het is een totaal aparte actie en zo trek je dat geheel uit de flow.
Je request is dan dus:
Nieuw bericht wordt verzonden (formulier): controller -> model -> controller -> view (OK)
Ergens in die stappen start er een nieuwe request:
Nieuwe mail (inhoud): controller -> model -> controller -> view (e-mail template)
De view wordt dan verzonden per e-mail dus. De situatie is dan dus dat een request een nieuwe request opstart. Voordeel is tevens dat bijvoorbeeld een mailque gemaakt kan worden. Je hoeft alleen in het model de mails in plaats van opslaan deze naar bijvoorbeeld een que server te sturen.
Wat is jullie ervaring, wat is handig en wijsheid?