惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - leonbao

Unity3D - 关于Dynamic和Static HTML5 - HTML5 postMessage API 注意事项 Cocos2d-x——支持多触点 Cocos2d-x——Cocos2d-x 屏幕适配总结 Cocos2d-x——Cocos2d-x 屏幕适配新解 – 兼容与扩展【转载】 Cocos2d-x——Cocos2d-x 屏幕适配新解【转载】 Unity3D-Baked Lightmapping 示例学习 Cocos2d-x——CocosBuilder官方帮助文档翻译3 动画 Cocos2d-x——CocosBuilder官方帮助文档翻译2 多分辨率支持 Cocos2d-x——pthread的使用注意事项 人工智能-有限状态机(FSM)的学习 Cocos2d-x——CocosBuilder官方帮助文档翻译1 使用自定义类 高性能服务器-关于游戏服务器中多线程的使用 Unity3D-UnityVS的安装和使用 高性能服务器-多线程的再次学习 Programming Windows Workflow Foundation第六章-工作流宿主翻译完成 关于SQL Server数据库设计的感悟,请指教 关于分层结构的感悟,请指教 NHibernate 连接 Access数据库的配置文件 - leonbao
[原创]关于多层设计想到的问题-涉及Nhibernate和Log4Net
leonbao · 2005-11-06 · via 博客园 - leonbao

请先看一下我的分层结构

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马?最突出的问题是组合条件查询,组合条件更新删除。不知道大家在这方面有没有好的方法?

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