2010-06-07 101 views
1

的循环依赖我有一个记录器类如何处理记录器服务

服务层的引用DAL的Logger类服务层,以获取其电子邮件证书,同时对关键日志条目发送邮件时使用。

我想在DAL中使用这个记录器,因为还有需要在那里记录的东西 - 但是用我目前的架构,我不能。

我看到这可以通过IOC来处理,但我的担心是如果这样我会解决问题的根源,或者使用另一层抽象来隐藏它。

什么是很好的方法来处理这个问题?

+0

不知道我是否理解100%你写的内容,但不能将电子邮件凭证移到web.config中? – 2010-06-07 18:46:57

回答

1

通常情况下,循环依赖是不受欢迎的 - 它们会使调试,维护复杂化,并限制代码的结构和扩展。尽可能消除循环依赖关系。

如果记录器只需要非常少的信息来运行 - 那么我会建议重新从记录器中重新设置DAL的依赖关系。将电子邮件放入配置文件中,或使用嵌入记录器中的单独机制访问它们。在大多数系统中,日志记录是一个相当低级别的实用程序功能 - 您应该避免使日志记录器依赖于您的数据访问模型。特别是因为即使数据库不可用,您也希望能够记录信息。有一个记录器在数据层不可用时无法运行是没有用的。

注意:是否有理由不能使用现有的日志库如log4netNLog

如果出于某种原因,这是不可能的 - 那么控制反转(依赖注入)解决方案可能是适当的。只要意识到你需要将记录器公开的界面分解到第三个程序集中 - 以便可以从DAL安全地调用它。