[原创]关于多层设计想到的问题-涉及Nhibernate和Log4Net

请先看一下我的分层结构
Structure.jpg

DataAccess:数据访问层
BusinessEntity:业务实体层
BusinessRule:业务逻辑层
WebUI:表示层
WebUIController:表示层组件控制
SystemFramework:本系统框架

所遇到的问题以及解决方法我会相应地写出来
1。不能把CRUD作为单独的事务处理封装在DataAccess层,因为只有BusinessRule层才有权力决定那些操作构成一个事务。但是NHibernate又建议每次操作必须要使用事务,这很矛盾。我想到的解决办法是在dataAccess层预留两个接口供BusinessRule去调用——BeginTransaction和CommitTransaction,而Rollback的操作是在DataAccess层自动处理的,BusinessRule层不用理会。这样BusinessRule层就对事务有完全的控制权了。

2。错误处理的问题。不管是弹出Error窗口还是跳转到一个Error页面,我觉得都是WebUI设计的大忌,这会给浏览用户带来很大的困扰。我的处理方法是:在BusinessRule里面每个类里面会有一个Public的ErrorMessage供表示层读取,如果BusinessRule遇到错误,一方面要把Exception.ErrorMessage这样专业的技术错误术语通过Log4Net记录在数据库中,以后技术人员可以查看。而给浏览用户要返回一个友好的提示信息,这些信息就记录在BusinessRule的ErrorMessage中,供表示层读取,然后以Response.Write的方式在表示层显示出来。就算一部分错了,其他部分也不会阻碍用户去浏览。

3。关于DataAccess和BusinessRule的职责,理论上说,BusinessRule应该和NHibernate完全不打交道的,这应该全都是DataAccess的事情。但是有时候你会发现这很难办到,我困惑。BusinessRule层真的完全用不到NHibernate马?最突出的问题是组合条件查询,组合条件更新删除。不知道大家在这方面有没有好的方法?

 大家可以通过我的图提出更多的问题,希望大家踊跃讨论!

 

转载于:https://www.cnblogs.com/leonbao/archive/2005/11/06/269994.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值