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

推荐订阅源

T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
Hacker News: Ask HN
Hacker News: Ask HN
Schneier on Security
Schneier on Security
H
Heimdal Security Blog
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cyberwarzone
Cyberwarzone
V2EX - 技术
V2EX - 技术
W
WeLiveSecurity
Help Net Security
Help Net Security
S
Secure Thoughts
P
Privacy & Cybersecurity Law Blog
S
Securelist
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
The Last Watchdog
The Last Watchdog
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
H
Hacker News: Front Page
NISL@THU
NISL@THU
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Attack and Defense Labs
Attack and Defense Labs
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Google Online Security Blog
Google Online Security Blog
The Hacker News
The Hacker News
Cloudbric
Cloudbric
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
A
Arctic Wolf
Latest news
Latest news
S
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Project Zero
Project Zero
P
Privacy International News Feed
B
Blog
云风的 BLOG
云风的 BLOG

博客园 - Sunshine

基于FFmpeg的FLV视频转换工具 数据访问基于存储过程而不是SQL语句的优势 2008年1月工作总结 镜像服务器文件实时监控同步程序 优游中国网站服务器架构解决方案 软件项目管理系统(RPMS)界面设计列表 谱《丢手绢》的人去了 偶的《职业心理体检报告》 雅虎公司C#笔试题 李开复: Google中国编程挑战赛 敢说你识字? 推荐《大道至简——软件工程实践者的思想》电子版 如何做一个好的互联网老板(二) 如何做一个好的互联网老板(一) 韩国的排骨有多贵?(关于韩剧的暴笑讨论) 不要因为工作不好而辞职 美丽的漯河,我的家 微软副总裁李开复闪电加盟Google 任中国区总裁 ASP.NET 中 Cookie 的基本知识
一个仿PetShop的基于NHibernate的N层框架示例
Sunshine · 2007-05-25 · via 博客园 - Sunshine


       这是一个项目中的文档材料管理模块,我把它拆出来单独做成了一个解决方案,主要为了寻找一个比较好的框架体系和数据访问方法。这样我以后再做项目,就不用重头建解决方案了,直接在这个框架上增改类就可以了。。。

这框架基本上是照着PetShop 4来的,连项目命名都没有改。。。

在线编辑器用到了FCKeditor,因为需要从Word文档直接粘贴。以前都是用FreeTextBox的。可惜FreeTextBox免费版不支持此功能。。。

封装的NHibernate操作层照抄了terrylee的《基于NHibernate的三层结构应用程序开发初步》,并学习了园子里其他兄弟的文章。十分感谢,正因为有你们,我才会不断进步。。。

在认真考虑了微软企业库,强类型数据集,NBear和NHibernate之后,还是选择了NHibernate。其实我对NBear也很感兴趣的,差一点就用了。可惜在即使是照着官方文档来做例子,还是有很多地方不明白,就会出错。关键是一出错就没法子了,异常信息Google不到啊。。。所以,强烈肯请NBear增加中文帮助文档。。。

整个解决方案框架分为六层,BLL逻辑处理层,WebUI页面表现层,IDAL数据接口定义层,SQLServerDAL数据访问层,Model实体层,Utility封装的NHibernate操作层。

BLL层进行一些业务逻辑的处理,比如计算一些复杂的表达式,对从DAL传过来的数据进行判断是否有效后再传给页面。同样,从页面传过来的值也要在此进行判断,防止无效和错误的值直接传入数据层运行时引发异常。目前这里面只是对数据访问层简单的调用。逻辑还没有加。

IDAL是一些接口,定义了数据访问层必须实现的方法。建此层的目的是对数据访问层的方法有一个硬性的规定,不要随心所欲地写数据访问层。即使以后开发人员换了,接手的人只需要看IDAL就能大概知道对数据库都有什么操作。

Model是实体类和NHibernate的hbm映射文件。基本上是一个数据表对应一个实体类和一个映射文件。目前使用的是NHibernate 1.2版本,这个版本要求实体类都必须声明为public virtual。hbm文件中的根结点也要声明为xmlns="urn:nhibernate-mapping-2.2"。这是两个要注意的地方,刚开始为它们吃了苦头。

SQLServerDAL是实现了IDAL的数据库访问方法,增删改查等等。它调用NHibernate中创建的Session。

Utility是封装的NHibernate操作层,创建Session工厂,和调用session的Save、Update等方法。

WebUI是网站项目。

业务流程如下:
增加文档材料,填写文档材料信息,提交时判断是否有模板,没有转向空白内容页面,有模板则转向模板填写页面。填写完成后判断是否需要审批,需要则转向审批信息填写页面。不需要审批的话直接保存。

晕,传了三次代码都传不上来,郁闷ing....晚上12点再试。。。