微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在应用层获取控制器 URL 的最佳方式

如何解决在应用层获取控制器 URL 的最佳方式

我有一个具有多层的 .NET 5 应用程序:Web、应用程序、域和基础设施。到目前为止,我一直在尝试将每一层之间的关注点分开,并使依赖项向内指向 Web(基础设施 -> 应用程序 -> Web)。

我现在发现自己需要从应用程序层发送多封电子邮件,其中包含指向特定页面链接,我更喜欢使用来自 Web 层的 Url.Action(action,controller,params) 助手之类的东西而不是硬编码来动态构建这些电子邮件域或路径,但这意味着应用层将了解 Web/表示问题。

导致发送电子邮件的流程如下:

  • Web 层在控制器中接收请求,控制器发送 MediatR CQRS 命令
  • 应用层处理 CQRS 命令并发送 MediatR 通知
  • 应用层处理通知并发送电子邮件(我需要这里的网址)

我可以在命令中添加一个字段(例如 BaseURL),以便控制器可以在将命令发送到应用层之前设置它,但这似乎是错误的,因为它不是传入请求的一部分,我需要传播它通过几个与它无关的处理程序,只是因为最后它可能被最终处理程序使用。

有没有更好的方法解决这个问题?我是否应该在 Web 层中使用 MediatR 处理程序来处理这些情况?

解决方法

如果 web == http(s),这不是 web 的问题。它绝对不是应用程序逻辑的一部分。

电子邮件生成代码,如 http 响应生成代码是在用例中使用您的公共 API 的客户端代码。

您只需要一个新模块,也许该模块可以通过例如实现Apache Camel 或类似电子邮件发送的问题已经解决。

Web 和电子邮件模块可能共享一个企业(工作流)实体,该实体描述系统中的 url。我已经成功地使用 interface==folder 和 class==page 定义了该实体,并做了一个内部类的嵌套结构。放置在任何节点上的注释都可以控制例如安全。

可以在运行时解析结构以方便使用。我会去这样一个共享的实体,并且为模块进行更改的一个原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?