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://www.castleproject.org/castle/show/HomePage

http://nhibernate.sourceforge.net/

http://sourceforge.net/projects/ibatisnet/

另外这里有一篇精彩文章应用系统架构设计

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

提高Mac下itunes的下载速度

给老婆买了iPhone4s之后,开始在Mac上用iTunes下载软件,发现速度龟速,好歹家里也是10M光纤啊,这个小水管的下载速度绝对不能忍受,于是百度了一下,...

13820
来自专栏IT派

Python库大全,建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

29520
来自专栏鹅厂优文

鹅厂优文 | 企点PC端性能测试-UI卡顿分析

本文以一个企点融合工作台测试中发现的案例说明如何获得UI卡顿数据,以及如何分析数据,定位问题。

1.1K120
来自专栏北京马哥教育

Python库大全,建议收藏留用!

39730
来自专栏小文博客

黑糖主题BlackCandy V1.53

34040
来自专栏张善友的专栏

微软为“离线”做好准备:推出同步框架

微软推出他们称为微软同步框架(Microsoft Sync Framework)的同步平台,这一框架允许开发者创建离线式的应用、设备和服务,可以与任何应用的任意...

21550
来自专栏恰童鞋骚年

.NET Core微服务之基于Ocelot+Butterfly实现分布式追踪

  微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和...

16230
来自专栏星流全栈

Elixir: 编程语言的未来

51340
来自专栏微信公众号:Java团长

Java程序员必备的6款最佳开发工具

工欲善其事,必先利其器。每一个Java程序员都有其惯用的工具组件。对于Java程序员,各种有用的软件和工具泛滥成灾。初级开发人员要么找不到合适的工具,要么在寻找...

28730
来自专栏CSDN技术头条

现代开发人员必备的十款工具,来看看你漏了啥?

几年前,作为一名开发人员,你需要的就是编辑器、编译器,以及某种版本控制系统。(可悲的是,许多开发人员目前仍然不能正确地使用版本控制系统) 现在,即使是要做基本的...

22280

扫码关注云+社区

领取腾讯云代金券