7
votes

L'envoi d'un courrier électronique appartient-il au calque de présentation ou à la couche d'entreprise d'une application?

J'essaie de comprendre la meilleure zone pour placer un code pour envoyer un email dans mon application ASP.NET MVC. À l'heure actuelle, mon application est configurée dans 2 projets VS séparant la couche d'entreprise à partir du calque de présentation. J'essaie de configurer une situation que lorsqu'un utilisateur réinitialisez votre mot de passe, après que la logique commerciale modifie le mot de passe, le serveur enverra un courrier électronique à l'utilisateur avec son mot de passe nouvellement généré.

Devrais-je appeler le code pour envoyer l'e-mail (y compris les données sur la manière dont l'apparence de messagerie) de la couche d'entreprise (après la réinitialisation de la couche d'entreprise) ou dans le calque de présentation (après le retour du résultat opérationnel) ?


0 commentaires

5 Réponses :


3
votes

L'envoi d'un courrier électronique n'appartient pas à la couche de présentation, mais une "couche de présentation dédiée" peut être utilisée pour déterminer ce que l'e-mail ressemble à (conception, thème et etc.).

Chaque "couche" peut en réalité consister en plusieurs assemblages indépendants.
Par exemple. Vous pouvez avoir plus d'une vue.


0 commentaires

3
votes

Je préfère penser à des choses comme des composants, qui peuvent être éteints à l'aide d'une injection de dépendance.

Créer une interface Iemailervice avec une implémentation concrète dans votre couche d'entreprise.

l'avez-vous injecté dans votre contrôleur.

Demandez au contrôleur Créer et générer la vue (l'e-mail d'un modèle) avec le modèle et appelez la mise en œuvre de Iemailervice pour l'envoyer réellement.

Iemailervice devient alors facilement moqueur lorsque vous testez votre contrôleur.


0 commentaires

0
votes

L'envoi d'un email est la fonctionnalité de la couche d'entreprise. Vous auriez une classe Mailhandler avec une méthode qui envoie le message et gérera des exceptions.


0 commentaires

7
votes

L'envoi d'e-mails doit faire partie de la couche d'entreprise.

Je suis tombé sur le même problème il y a quelques semaines , Je construisons une application Web utilisant ASP.NET MVC 3 composée de trois projets: référentiel (DAL), Services (BLL), Présentation (Web)

Ma logique d'application est implémentée sur la couche de service afin que je recherchais le meilleur moyen de mettre en œuvre un module complètement indépendant de la couche de service pour envoyer des emails HTML aux utilisateurs afin que ma couche de service afin que ma couche de service soit possible. Les fonctions peuvent l'utiliser directement sans avoir à l'amener à la couche de présentation.

Après une recherche, j'ai trouvé une solution élégante qui a été faite par Kazi Manzur où il crée un sous-système de messagerie qui utilise des vues de rasoir pour envoyer des courriels HTML / Texte en dehors du Web proejCt.

Utilisez RAZOR pour un modèle de courrier électronique à l'extérieur ASP.NET MVC

J'ai utilisé son sous-système depuis lors et cela fait un excellent travail.


3 commentaires

Oh j'aime ce type d'idée. Merci pour le lien!


Le lien du domaine semble être expiré.


@ Mejiamanuel57 Vous pouvez essayer cet article similaire: Scottsauber.com/2018/07/07/...



4
votes

Je suis partiellement d'accord avec Bobtodd parce qu'il vous suggère de résumer le résumé. La seule partie où je suis (partiellement) en désaccord est à propos de cela dans la couche d'entreprise.

L'envoi de courrier électronique dépend d'une sorte de mise en œuvre physique - et vous ne souhaitez pas attacher vos dépendances extérieures liées à un fournisseur de messagerie.

Dans un petit projet, vous pourriez l'inclure dans le BL, je suppose que les choses simples, mais je serais en faveur de l'abstraction complètement, auquel cas je le traiterais comme je traiterais des données Accès.

Dans mon point de vue du monde, il y a deux endroits que vous pourriez le mettre:

  • En tant que service partagé que vous voudrez peut-être appeler de n'importe où - et parce que cela serait résumé, vous seriez capable de.
  • AS / via un "adaptateur de service externe", qui est également abstraite, mais seulement accessible depuis le BL - qui pourrait à son tour exposer des méthodes (comme l'interface utilisateur) pouvant appeler (si vous le souhaitez vraiment).

    Architecture 5 de la couche

    Remarque: Alerte d'auto-promotion! - extrait de l'un des articles de mes propres articles: http: // morphologique. wordpress.com/2011/08/29/5-Layer-architecture/


1 commentaires

Je vais choisir cela comme la réponse, seulement en raison de la complétude. J'ai commencé à penser qu'avoir une fonctionnalité de courrier électronique dans sa propre couche, donc cela a du sens.