【发布时间】:2011-11-03 14:00:49
【问题描述】:
关于域基础设施是否可以将它们视为:
- 常规:如何发送电子邮件/读取配置文件等。
- 具体说明:如何向新用户(域实体)发送激活码
如果我想到依赖项:
域 通用基础架构(用于日志记录、通用异常等)
Specific Infrastructure
General Infrastructure & Domain(获取IActivationCodeSender等基础设施相关的操作接口并能够实现一个 EmailActivationCodeSender 和一个 SmsActivationCodeSender)
在这种情况下,我的应用程序层将负责将所需的激活方法传递(DI 解析)到我的域实体,让我们说:
User.Register(IActivationCodeSender activationCodeSender)
{
// Register user and generate activation code 1234
...
activationCodeSender.Send(this, "1234");
}
这很糟糕吗?我应该改为在我的(通用)基础设施上工作以确保它支持以统一的方式发送短信/电子邮件(我担心这种情况可能会给我的通用基础设施带来复杂性)并删除这个特定的基础设施从某种意义上说,这样的层会将业务逻辑与基础设施相关的操作混合在一起?所以我会使用以下内容:
INotificationSender 的两个(通用)实现; EmailNotificationSender 和 SmsNotificationSender
User.Register(INotificationSender activationCodeSender)
{
// Register user and generate activation code 1234
...
// this.NotificationAddressInfo includes email address and mobile phone #
activationCodeSender.Send(new Notification(this.NotificationAddressInfo, "Your activation code is 1234"));
}
【问题讨论】:
标签: architecture dependency-injection domain-driven-design