DotNet软件开发框架

这是我4月份发在donews博客上的文章,现在都转到博客园来,风满袖希望进一步阐述你的架构,我就将这篇文章转移到博客园。原文:http://blog.donews.com/shanyou/archive/2005/04/23/347792.aspx
     以我个人的能力,没有足够的时间和资源自行开发一套完整的平台。在已有的众多开源项目中选择若干优秀的项目进行整合。“站在巨人肩膀上”是牛顿有一句名言.,同样适合我们的IT行业。

我对平台的技术架构的构想,是采用开源的ORM框架做数据持久层, Asp.net没有合适的Web层框架,就采用Asp.net的Code-behind方式编写代码,数据持久层同Web表现层之间的连接采用IOC的容器。
1、 开源框架选择:
数据持久层Nhibernate和IbatisNet这两个都是非常优秀的数据持久层,Nhibernate是优秀的Hibernate的dotNet移植版本,在开源社区具有非常高的人气,IbatisNet是Data Mapper框架,也是JAVA版的Ibatis的移植版本,在dotnet的开源社区一样是非常受欢迎的一个工具。Nhibernate用于支持非常好的面向对象的设计的模型,IbatisNet用于支持应用程序的移植(已经存在数据库,处于生产状态),这两个框架对开发人员的要求。这样就具有更大的弹性。IOC容器Spring.Net和Castle,这是两个dotnet非常优秀的IOC容器。Spring.Net同样是Java的Spring 的移植版本,目前的版本是0.6,Castle则是dotnet下出现新的IOC容器,它的功能,成熟度方面比Spring.Net好得多,框架中准备采用Castle.最后的平台的技术架构就是Nhibernate/IbatisNet + Castle + ASP.NET
2、 架构整合:
Web层的Asp.net负责数据输入输出, 响应用户事件,及输入校验的工作,Web层上如何得到Nhibernate的Session和IbatisNet的SqlMapper?本架构中的DAO,Service以及 Nhibernate的Session和IbatisNet的SqlMapper都是通过Castle进行管理,Web层如何得到Castle IOC容器的实例呢,参照文章在asp.net页面上得到Castle容器的实例 。Asp.net页面通过Service处理业务逻辑,Service负责use case逻辑, domain相关的逻辑委托给domain model去实现. Service通过DAO完成对domain model的持久化工作. Service负责数据库事务和NHibernate Session/IbatisNet SqlMapper的管理。Domain model负责表示问题域的数据,DAO使用Nhibernate/IbatisNet持久化数据以及查询. 在实现DAO时, 我们使用了Castle的Nhibernate/IbatisNet DAO Support,极大地简化了代码, 很多方法都只用简单的一行完成。这样的架构优点很明显, 层次清晰, 各层的职责也明确, 便于分层设计与开发, 结合mock和Castle的IOC, unit test也是非常容易的. 而且后台(Service, domain model and DAO)的代码不依赖于Asp.net框架,同样的代码可以在Web App也可以在WinForm上面使用,只需更换UI层。
 
使用的框架工具的链接
另外这里有一篇精彩文章应用系统架构设计
作者: 自由、创新、研究、探索……
出处:http://shanyou.cnblogs.com/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://www.openbeta.cn
posted @ 2005-09-23 14:02 geff zhang 阅读(12101) 评论(10)  编辑 收藏 所属分类: ORMCastle&IBatisNet

  回复  引用  查看    
#1楼2005-09-23 14:26 | 风满袖      
很不错的文章。

希望能提供一个实例说明之。

  回复  引用  查看    
#2楼[楼主]2005-09-24 11:34 | 自由、创新、研究、探索……      
我的个人网站 http://www.keyusoft.cn/就是用这样的框架做的" target="_new" class="gray">http://www.keyusoft.cn/就是用这样的框架做的">http://www.keyusoft.cn/就是用这样的框架做的,还有好几个项目都是采用这样的框架,至于具体的实力,可以参看Castle的每个项目的测试用例和官方日子

  回复  引用  查看    
#4楼2006-02-11 11:00 | Zeus      
呵呵,Castle + Nhibernate+ ASP.NET也是我的选择。
唯一的缺憾是性能好像并没有想象中理想。但整体架构比较协调。

  回复  引用  查看    
#5楼2006-03-08 17:00 | 黄毛(temp)      
收藏
______________________

http://www.eysoft.cn">http://www.eysoft.cn

  回复  引用  查看    
#6楼2006-03-09 09:24 | 黄毛(temp)      
有没有一个关于asp.net的整个应用程序的完整的例子呀
我的邮箱:huangying100@tom.com

  回复  引用  查看    
#7楼2006-06-09 09:33 | 周勇      
学习中

  回复  引用  查看    
#8楼2006-11-22 11:46 | yunhuasheng      
能给一些相关框架的例子不?
yunhuasheng@tom.com
谢谢!

  回复  引用  查看    
#9楼2006-12-29 14:28 | Daniel Phang      
我现在也用IBatisNet+CastleIOC+ASP.NET来做项目,想请问一下,在Service层中如何用IBatisNet的事务?
我的ISqlMapper的实例是在Persistence这一层中创建的,持久层公用一个ISqlMapper的实例

  回复  引用  查看    
#10楼[楼主]2006-12-30 08:34 | 自由、创新、研究、探索……      
@Daniel Phang
建议采用Castle.Facilities.IBatisNetIntegration和AutomaticTransactionManagement进行整合

http://www.ibm.com/developerworks/cn/opensource/top10/2006.html




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 242680


相关文章:

相关链接: