2009开始接触.Net平台的相关技术,近年来也一直在用Asp.net MVC搭建一些业务系统。今天,我将介绍系统搭建的过程中用到的技术,工具和思想,抛砖引玉!

1. 解决方案的层级结构

其实,分层的思想在很多领域都有使用。我更多的把它理解为“分而治之”,这是我们在解决复杂问题时,首先就会想到的做法。无论是政府还是企业,只要是一个组织架构,它必然会按职能划分为不同的部门,部门之间共同协作,形成合力完成组织的意志。对应到系统设计,系统也需要分层,将复杂业务逻辑,分解为简单业务逻辑的组合,以达到软件设计中推崇的“低耦合,高内聚”的特性。

我在实际工作中,一般采用领域模型驱动(DDD)的开发方式,将解决方案分成4层,每层是一个单独的项目。4层结构间采用“洋葱模型”,每层只依赖上一层,层之间不能穿透,Core这层除外。

Level 1: BusinessSystem.Core: 包括领域模型、系统的数据访问层接口和服务接口和全局的常量等

Level 2: BusinessSystem.Dal: 数据访问层,这里我采用NHibernate ORM框架. 该层主要包括,NHibernate的配置,领域模型的CRUD。

Level 3: BusinessSystem.Service: 服务层,系统的业务逻辑都包含在此,事物机制,并发处理等。

Level 4: BusinessSystem.Web:UI层,这是一个Asp.Net Mvc项目。包括Routing策略,用户交互逻辑,前台实现等。前台技术,一般采用JQuery或Dojo

除此之外,解决方案中对后面三层会有UT. 在实践中,我采用NUnit做单元测试。

2. 依赖管理工具

我们经常说:“不要重复的造轮子”,它的好处,我们就不在此赘述。所以,在开发的过程中,引用第三方的类库,借鉴前人的成果,会让我们事半功倍。如果您有一定的技术嗅觉,每当需要解决一些复杂而又普遍存在的问题时,首先想到是有没有现成的,稳定的类库可供使用。那么,在.Net世界里,你不防去nuget网站搜索。Nuget也是一个很好的依赖管理工具,你搜索到的类库可以通过Nuget直接安装到你的解决方案中,当然也可以搭建一个本地的Nuget Server, 将常用的类库放到本地Server,然后再下载。通过Nuget你可以很好的控制类库的版本升级,而不会被混乱的类库依赖所羁绊。有兴趣,可取此处下载

3. 代码管理工具

代码管理工具有很多,在微软的平台下开发,不得不提TFS. TFS是一个集中式的代码管理工具,使用时必须联网,否则无法实现代码的签出和签入,它可以很好的和VSTS集成。同时,TFS也内置一些微软敏捷开发的模板供使用,包括开发任务的创建,分配和跟踪。可以说,VSTS+TFS几乎涵盖了软件开发整个生命周期中所需要的工具。显然,它的缺点是,太重太庞大,导致运行的时候效率低下。

Git是目前非常流行的一款代码控制工具,和TFS相比,它是分布式结构。即,你用的时候可以不联网,在本地即可进行版本控制,等联网后再同步到服务器。Git的比较轻,效率比较高。例如,他的Branch操作就是一个非常轻量级的操作,远没有TFS那么重。我们可以搭建自己的Git Server供团队使用。

4. 自动化测试

很多人,尤其是测试人员,深受系统上线的折磨,因为每次上线都需要进行繁琐的回归测试工作。如何减轻系统上线的压力呢,做自动化测试非常有用。将80%的系统常用功能编写成一个个的Test Scenario,以后上线,自动完成80%的回归测试工作。当然,自动化测试的代码和UT一样需要不断的维护,但是,磨刀不误砍柴工,不要吝啬这个代价。实践中,我使用SpecFlow Automation Test Framework做自动化测试。

5. 持续集成(Continuous integration)

大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。个人在实践过程中也尝到了甜头,要实现CI,并发挥CI的作用,做好UT,AT是必要的,同时还需要搭建一套自动化环境,实践中我采用TeamCity,通过MS Build调用相应的编译,UT和AT模块

6. 常用的工具/类库

  • 工具:JIRA, Confluence, TFS, Notepad++, Sublime, HttpWatch, WinDiff, Fiddler等
  • 类库:MvcSitemapProvider, iTextSharp,NHibernate, NVelocity, NUnit, SpecFlow, Json.Net, FluentNHibernate, Dox, NPOI, Log4Net, Castle Windsor等

上面都是实践过程中的一些总结和个人体会,供大家参考,抛砖引玉~~~

转载于:https://www.cnblogs.com/zhouwei0213/archive/2013/03/02/2939978.html

基于Asp.net MVC的系统架构相关推荐

  1. OXite 微软一款基于asp.net mvc架构的blog内容管理系统

    OXite 微软一款基于asp.net mvc架构的blog内容管理系统 对学习MVC有较好的帮助 URL http://oxite.codeplex.com/ 转载于:https://www.cnb ...

  2. 看一下基于ASP.NET MVC的开源社区项目Orchard

    昨天介绍了基于ASP.NET MVC的框架Catharsis,今天给大家介绍的是基于ASP.NET MVC的一个开源社区项目Orchard,本篇主要介绍一下Orchard是什么,如何下载安装以及安装过 ...

  3. 基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统【100010294】

    摘要 随着互联网的快速发展,各种线下手工业务都开始转向了互联网线上操作,在21世纪的信息革命时代,信息管理系统成为日常信息记录的主流工具. 本文介绍了以VS 2019(Microsoft Visual ...

  4. 『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考

    『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考 看了一些ASP.NET MVC开源项目后的一些想法,关于ASP.NET MVC+Repository+Servi ...

  5. asp.net mvc租房系统【源码分享】

    asp.net mvc租房系统[源码分享] 一.源码描述 这是一款非常典型的租房网后台管理系统源码,采用的典型的三层架构和MVC相结合的技术,非常实用, 界面也比较美观,非常适合新手初学MVC的朋友们 ...

  6. 介绍一个基于ASP.NET MVC的框架Catharsis

    Catharsis是一个基于ASP.Net MVC的一个开源框架,之前在codeproject上看到的.在我的2011生活看板中也说到今年准备给OpenExpressApp增加B/S支持,所以最近花了 ...

  7. 基于PAM调制的OFDM系统架构之讯号特点分析(matlab)

    基于PAM调制的OFDM系统架构之讯号特点分析(matlab) 不同于基于QAM调制的OFDM系统,通过脉冲振幅调制(PAM)并经过埃尔米特对称处理的讯号本身的特性.讯号调制方面,采用PAM调制的讯号 ...

  8. ASP.Net Mvc房屋租赁系统

    ASP.Net Mvc房屋租赁系统 asp.net mvc: 运行截图:

  9. 视频教程-基于毫米波雷达的ADAS系统架构-嵌入式

    基于毫米波雷达的ADAS系统架构 ADAS研发部门高级工程师 德国汽车电子专业工科硕士,理论电气工程博士,近10年嵌入式软件开发经验,曾参与最前沿ADAS项目的软件开发与集成,之后参与奔驰第一款纯电动 ...

最新文章

  1. mysql 绑定参数_MySQL 使用 Perl 绑定参数和列
  2. sql 拼接int类型的字段_SQL 基础教程—第一章:4. 表的创建
  3. 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
  4. 海量数据的分库分表技术演进,最佳实践
  5. Unity3d与android通信
  6. Tomcat服务器启动错误之Offending class: javax/servlet/Servlet.class
  7. pytorch学习笔记(十):MLP
  8. 迫不及待,英特尔推特“官宣”GPU发布时间
  9. 实习踩坑之路:使用@Value注解导致Parse attempt failed for value [08:00],时间转换出错?
  10. HTML与JSP页面的区别
  11. matlab 点云曲率,点云数据的主曲率和主方向估计方法
  12. 呼叫中心服务器怎么设置,呼叫中心服务器类型有哪几种?
  13. 适用于Android的最佳本地音乐播放器
  14. ubuntu 安装idea,创建快捷方式
  15. 51单片机实训(一)————Keil 基本操作
  16. showVideo C#版 摄像头驱动程序
  17. 游百望山(记于17.09.05)
  18. 亲手制作:超级DOS工具+Vista+加强版WindowsXP Lite5.8集成
  19. app抓包服务器证书错误,Fiddler抓包iOS出现证书错误的解决办法
  20. Could not autowire. No beans of ‘UserMapper‘ type found.

热门文章

  1. CodeFirst的EF6迁移和时间戳错误
  2. .Net Core DI,如何在程序集中注册所有现有的可分配类型
  3. 关于 2020 年的前端趋势预测
  4. 实现机器学习的循序渐进指南V——支持向量机
  5. C#坏习惯:通过不好的例子学习如何制作好的代码——第2部分
  6. 安装配置mac版_全面战争三国 Mac版Mod安装指南
  7. 矩阵论与计算机英语论文,矩阵论翻译论文[8页].pdf
  8. xhell 镜像_2020官网下载Xshell 6.0.189.0中文版
  9. mysql 外键 失败_存在外键时,MySQL 5.5外键约束失败
  10. pythonfor循环语句例子_简单的python循环知识