信息管理系统中日志管理的问题
我平时接触框架比较少,最近由于工作的需要,需要修改信息系统的框架
原本的信息管理系统是.Net + SqlServer 2005的系统纵向从上到下分为 用户表现层,业务外观层,业务逻辑层,数据接入层,数据库(存储过程)。另外还有一个公共层。
用户表现层用ASP.Net实现,业务外观层主要作用是作为业务逻辑层和用户表现层的隔离层,业务层是信息管理系统的业务逻辑所在,数据接入层负责与数据库进行沟通,各层之间传递的数据被单独抽象为业务实体类。另外系统还有一个公共层,公共层位系统提供一些工具,如自制的FTP客服端,异常处理等。
现在想在框架下加入日志管理的部分,思考了一下,日志管理分成两部分,日志写入器和日志操作功能块,设计是把日志写入器放到公共层下面以便供其他各层使用,日志操作功能放到业务逻辑层作为业务功能提供上层用户使用,设计中日志都要写入数据库,这样一来日志写入器和日志操作功能均要使用数据接入层对数据进行操作。
现在的问题是:由于每个层都需要用到公共层中的日志写入器,也就是说数据接入层也会使用日志写入器,那么日志写入器也要用数据接入层写入数据库,这样一来在程序上出现了循环依赖的问题,彼此相互引用,.Net不允许。
请教各位高手是否有办法帮小弟解决这个问题,或者给点意见,各种意见都可以,比如修改框架,或者其他什么的
------解决方案--------------------
解耦方式:
1. IOC框架,spring.net,castle.
2. 重新分层, interface,dal, bll, common, ui.
interface定义ilog,bll实现log, common提供ilog对象反射生成的机制, 这样dal调用common即可,就无需循环引用了。