这是我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/
另外这里有一篇精彩文章应用系统架构设计

转载于:https://www.cnblogs.com/shanyou/archive/2005/09/23/242680.html

DotNet软件开发框架相关推荐

  1. [导入]DotNet软件开发框架

    版权所有 如有转载请注明出处. 以我个人的能力,没有足够的时间和资源自行开发一套完整的平台.在已有的众多开源项目中选择若干优秀的项目进行整合."站在巨人肩膀上"是牛顿有一句名言., ...

  2. 【分享】具有“魔性”的通用软件开发框架

    具有"魔性"的通用软件开发框架,仅有5个普通的控制器类,却响应着任何复杂的业务场景.其超前的思路.原生态的实现方式为有个性化思路的研发者提供了高度灵活的扩展空间. [框架地址]: ...

  3. 速看|快速软件开发框架突破信息孤岛,高效实现数字化发展!

    在企业办公自动化发展的过程中,各部门之间的信息链接存在着链接不及时.信息孤岛的现象.伴随着日益激烈的市场竞争,这样单枪匹马的作战方式已经让不少企业吃尽了苦头,借助快速软件开发框架,可以有效打破信息孤岛 ...

  4. MFormats SDK智能视频 API,视频软件开发框架

    MFormats SDK智能视频 API,视频软件开发框架 MFormats SDK 是一个基于帧的视频软件开发框架,可在处理实时源.播放到专业设备.编码视频数据或播放媒体文件时简化和改进开发体验.M ...

  5. Discuz新秀网络验证管理系统- 火山PC - ver 1.0 - 软件开发框架

    框 架 简 介 本软件开发框架是由"火山PC"纯C++纯底层代码软件开发工具,结合Discuz新秀网络验证框架ver5.8版本系统开发. 1.本软件开发框架系统,根据新秀网络验证系 ...

  6. 一幅图对比软件开发框架

    一幅图对比软件开发框架 最近看到很有意思的一幅图: 简单说一下我的理解. 1. 瀑布 特点: 开发周期确定 客户(团队)与开发团队隔离 缺点: 客户的软件期望成本与实际成本不对称 软件交付日期容易失控 ...

  7. .net敏捷软件开发框架核心功能特点

    软件开发,程序员就是不断地跟变量.方法.类.接口这些东西打交道,随着开发经验的积累,很多程序员会发现,虽然最终开发出来的软件每个都不一样,但是在开发过程中用到的很多东西却又是相通的.例如,每个软件的底 ...

  8. angularjs框架_为什么AngularJS是我首选的软件开发框架

    angularjs框架 by Rachael Ray 瑞秋·雷(Rachael Ray) 为什么AngularJS是我首选的软件开发框架 (Why AngularJS is my preferred ...

  9. Qt 软件开发框架(详细版)

    该文章用图例+代码方式演示了,一个线上软件基本框架(精简).开发工具Qt+VS2015 一. 基本要素 这里会用简单的图例和完整代码(这里以Qt代码为例),说明一个线上软件基本的框架. 一个线上win ...

最新文章

  1. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法
  2. android开发 获取父控件的高宽
  3. 计算机组成原理——指令流水线
  4. php实现微信公众号半匹配,半全局块匹配(Semi-Global Block Matching)算法
  5. C++Primer Plus第6版C Primer Plus第6版 中文版免费分享啦
  6. Python中selenium的玩法,小朋友看了都说学会了
  7. java 虚拟机内存修改_Java虚拟机内存参数设置
  8. 刚毕业的大学夫妻,我含泪看完(转帖)
  9. [原创]编程实现UCDOS字库的显示和打印
  10. 180720_有道词典离线增强版添加词库(小众知识)
  11. 微信小程序,点击右上角返回箭头,返回指定页面
  12. It seems like the kubelet isn‘t running or healthy
  13. linux下ssd4k对齐,linux查看硬盘4K对齐方法
  14. [办公应用]让WORD自动显示到四级目录
  15. 基于MindSpore的MASS网络实现
  16. php查询百度google收录情况,百度权重、pagerank、alexa及百度和谷歌收录情况查询接口...
  17. Cassandra分析
  18. python人脸识别系统源码
  19. anaconda配置python3.6_Anaconda python3.6安装记录
  20. 用PYQT5写一个登陆界面

热门文章

  1. python怎么创建txt文件啊_python根据txt文本批量创建文件夹
  2. java socket 传送进度_java-★-Socket文件上传/进度条
  3. vsm java_java – 我尝试使用JAXB将对象编组到xml文件中时,错误为“缺少@XmlRootElement注释”...
  4. 属性面板 脚本_3.1 创建和使用脚本
  5. colspan会影响内部单元格宽度失效_电感失效分析
  6. python package和目录_PyCharm中Directory与Python package的区别
  7. 视频光端机使用、保养与维护方法详解
  8. 【渝粤教育】国家开放大学2018年秋季 2202T公共行政学 参考试题
  9. 【渝粤教育】 国家开放大学2020年春季 2245社会福利与保障 参考试题
  10. [渝粤教育] 西南科技大学 西方经济学 在线考试复习资料