Dav*_*ale 3 .net c# asp.net domain-driven-design
我为我的MVC应用程序创建了一个自定义过滤器[LogAttribute].操作方法用这个装饰,它有责任创建一个LogEntry对象以传递给某种类型的提供者 - ILoggerProvider.
我的问题是,它应该在哪里ILoggerProvider实现(我会想要在它上面使用DI技术)?他们应该进入域模型,UI项目还是单独的类?
除非您的软件的主要功能是Logging或Auditing,否则它应该是Infrastructure LoggingService.
除非您的日志记录实现与您的域对象紧密耦合(我希望它不是!),我建议一个完全独立的程序集.
我通常认为 ILoggingProvider 应该位于域模型中,原因有几个。从后勤和健全的角度来看,您的域类可能需要引用记录器。从 DDD 的角度来看,考虑到 SOX 和我们生活的世界,人们可以认为日志记录是监管合规性的核心域功能。
现在,这些实现绝对可以放在您的基础设施项目中,无需用所有这些来混淆模型。
由于日志记录与 UI 无关,因此这绝对是错误的地方。在我看来,领域模型是用于数据表示的。所以我会在一个单独的班级甚至一个单独的项目中完成它。
我有一个 MVC 应用程序,其中有一个用于日志记录服务的单独项目。在我的结构中,它位于最底层(数据访问),因为它直接记录到文件并且所有其他服务都在使用它。我还通过 MEF 框架在其上使用 DI。
这对我来说已经运行良好一段时间了,从那以后我就不想改变它了。我有其他解决方案,但过了一会儿我就跳过了,因为它们不像我当前的解决方案那么优雅。
希望这对您的决定有所帮助。
| 归档时间: |
|
| 查看次数: |
1719 次 |
| 最近记录: |