应用程序框架实战十:开发环境准备与学习资料清单

  前面几篇已经把废话基本说完了,现在准备进入实战阶段。

  第一步是把开发环境准备好,下面是本系列所使用的开发工具及其版本。为了避免你无法顺利打开本系列提供的下载示例,建议你最好跟我使用的版本相同。

  •   Visual Studio 2013
  •   ReSharpe 最新版本,目前版本是8.2.2

  ReSharpe是一个VS上面的插件,它不是必须的,但它能够大幅提升你的编码速度和代码质量,特别是采用了像DDD这样的架构,整个系统包含大量的Interface,你需要在接口和多个实现之间来回跳转,VS在这方面缺乏支持,可以使用ReSharpe来弥补这个空缺。

  一个例外是你的电脑运行速度非常慢,这种情况下建议不要安装,不然你会完全动不了。

  •   NestIn 1.1.1。

  NestIn也是VS上的一个插件,主要用来把两个文件嵌套在一起,在某些情况下需要使用。

  •   CodeSmith 6.5

  CodeSmith是一个模板生成器,用来进行自定义代码生成。

  •   Sql Server 2012( 2008也行 )
  •   PowerDesigner 16.5

  PowerDesigner是建模首选工具,不仅可以进行数据建模,还能进行流程图、类图、序列图等UML设计。

  •   XMind 6

  XMind是一个思维导图工具,可以用它进行一些分析工作。

  以上包含了所需要的开发工具,请你自行下载安装,大部分工具都要收费,不过作为中国人,一个优势是可以采用绿色版本,不用我说大家也知道怎么做了。在安装过程中遇到问题,可以提问,我尽量抽时间给你解决。

  除了开发工具以外,开发应用程序框架需要一定的抽象和封装能力,下面我把一些应该具备的基础知识列举如下,并推荐一些经典图书,为避免书有同名,我将作者也一并列出。

  •   面向对象基础

  毕竟大家在使用面向对象语言,不管你是否使用DDD这样的面向对象架构,都需要掌握一些基本知识,比如封装、继承、多态、接口、抽象类、抽象方法、虚方法等等。

  推荐图书:

  1. UML和模式应用(作者:Craig Larman,这本书是我最喜欢的面向对象著作,从这本书我了解了对象的特征和使用要点)
  2. 面向对象分析与设计 (作者:Grady Booch,作者是UML开山祖师之一,这是他的代表作)
  •   架构模式基础

  本系列采用DDD架构进行演示,大家需要对一些常用的架构模式有所了解。

  推荐图书:

  1. 企业应用架构模式(作者:Martin Fowler,这本是架构模式的奠基之作,现在出来的架构模式名词,大半是从这本书出来的。Martin Fowler可能是敏捷导师里面名气最大的一位)
  2. 领域驱动设计(作者:Eric Evans,这本书出来以后,就一直是面向对象开发的标杆,是领域模型的标准用法)
  3. 敏捷软件开发-原则、模式与实战(作者:Robert C.Martin,这本也是架构模式方面的顶尖之作,特别是描述了五大架构原则SOLID)
  4. C#企业应用开发艺术-CSLA.NET框架开发实战(作者:Rockford Lhotka,这本是.Net应用程序框架方面能找到的几乎唯一一本从理论到实战系统讲述的著作)
  5. 实现领域驱动设计(作者:Vaughn Vernon,这本书新出来不久,内容非常丰富,是对原始DDD的一次升华)
  6. 领域驱动设计与模式实战(作者:Jimmy Nilsson,作者算是自己人,也是搞.Net开发的,这非常难得,.Net方面DDD的著作很少,在书中描述了他从以数据库为中心的设计,向以对象为中心的设计转变)
  7. Microsoft.Net企业级应用架构设计(作者:Dino Esposito,这本也是.Netl架构设计的一本好书,特别是他们在附录提供了一个Demo-NSK,可以参考)
  8. 领域驱动设计 C# 2008实现(作者:Tim McCarthy,这本是完全以实战为主,为如何创建DDD层超类型提供了一些代码参考,另外还对一些设计和开发中棘手的问题提供了一些解决方案)

  推荐博客:

  1. http://www.cnblogs.com/daxnet/archive/2010/11/02/1867392.html,陈晴阳老兄的DDD系列是我见过写得最好的,在此强烈推荐。
  2. http://www.cnblogs.com/happyframework/category/448744.html,这位老兄不知道叫什么名字,他这个DDD系列也很有学习价值,特别是解决了我之前遇到的删除聚合中子对象数据库记录的问题。另外他还开源了一个应用程序框架,叫幸福框架,很值得参考。
  •   设计模式基础

  对代码进行抽象,一般需要建立一些灵活性,了解一些常用设计模式是必须的。

  推荐图书:

  1. Head First设计模式(作者:Eric Freeman,这本浅显易懂,设计模式入门必看)
  2. 设计模式(作者:Erich Gamma,这本就是设计模式奠基之作,不过示例都是C++写的,相当枯燥难懂,可以作为提高之用)
  •   TDD基础(包括TDD、单元测试、重构)

  使用TDD进行开发不是必须的,但如果想获得更高的代码质量和健壮性,这个就非常必要,我会在后面的框架实战中采用TDD方式进行演示。

  推荐图书:

  1. 测试驱动开发的艺术(作者:Lasse Koskela,这本用来入门)
  2. 测试驱动开发(作者:Kent Beck,Kent Beck是极限编程创始人,这是他在TDD方面的开山之作)
  3. .Net单元测试艺术(作者:Roy Osherove,这本是单元测试方面最实用的一本)
  4. XUnit测试模式-测试码重构(作者:Gerard Meszaros,这本提供了大量在实际工作中进行单元测试碰到问题时的解决方案)
  5. 重构-改善既有代码的设计(作者:Martin Fowler,重构方面的权威著作,帮助你清除代码坏习惯)
  6. 实现模式(作者:Kent Beck,在本书中,极限编程大师演示了大量可以改善代码质量的小技巧)
  7. 代码整洁之道-Clean Code(作者:Robert C.Martin,这是Bob大叔在重构方面的著作)
  8. 重构与模式(作者:Joshua Kerievsky,这本书介绍了使用设计模式更正确的方式-通过重构演化出模式,而不是预先进行大量扩展点设计,这样可以获得更简单的系统)

  上面列举了一些经典的设计图书,供希望在.Net开发中有所提升的朋友参考。当然,并不是说你需要把这些书全部看完才可以开始创建你的应用程序框架,而是给你指出一个努力的方向,很多设计问题在看了大师的著作之后会茅塞顿开。

  另外,这些书不是小说,你不能指望看一遍就全部搞懂,很多书需要一遍遍的看。哪怕你感觉好像理解了,但却用不起来,如果只在看书的时候懂,搞开发的时候连个影子也想不起来,那还有个屁用。经常看,把一些名词先混个眼熟,然后慢慢在项目上实践,一些常用的模式还是容易搞懂,有些比较生僻的没有用上也没关系,这可能是项目不够复杂。

  .Net应用程序框架交流QQ群: 386092459,欢迎有兴趣的朋友加入讨论。

  谢谢大家的持续关注,我的博客地址:http://www.cnblogs.com/xiadao521/

时间: 2024-10-12 00:37:00

应用程序框架实战十:开发环境准备与学习资料清单的相关文章

应用程序框架实战十五:DDD分层架构之领域实体(验证篇)

在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易绕开界面向服务端提交数据,所以服务端

应用程序框架实战十二:公共操作类开发技巧(初学者必读)

本文专门为初学者而写,因为很多初学者可能还不了解公共操作类的作用和封装技巧,大部分有经验的程序员都会把自己所碰到的技术问题整理封装成类,这就是公共操作类.公共操作类往往具有一些通用性,也可能专门解决某些棘手问题.公共操作类是应用程序框架的核心,主要目标是解决大部分技术问题.我将在本文介绍封装公共操作类的要点,供初学者参考. 开发公共操作类的原因 很多初学者会奇怪,.Net Framework提供的API相当易用,为何还要多此一举,进行一层封装呢.下面列举封装公共操作类的一些动机. .Net Fr

应用程序框架实战十九:工作单元层超类型

上一篇介绍了DDD聚合以及与并发相关的各种锁机制,本文将介绍另一个核心元素——工作单元,它是实现仓储的基础. 什么是工作单元 维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决. 这是<企业应用架构模式>中给出的定义,不过看上去有点抽象.它大概的意思是说,对多个操作进行打包,记录对象上的所有变化,并在最后提交时一次性将所有变化通过系统事务写入数据库. 当然,工作单元不一定是针对数据库的,不过大部分程序员还是工作在关系数据库中,所以我默认你也在使用关系数据库,由此产生的不准确性你就不

应用程序框架实战十八:DDD分层架构之聚合

前面已经介绍了DDD分层架构的实体和值对象,本文将介绍聚合以及与其高度相关的并发主题. 我在之前已经说过,初学者第一步需要将业务逻辑尽量放到实体或值对象中,给实体“充血”,这样可以让业务逻辑高度内聚,并为你提供业务逻辑的唯一访问点.而聚合则是第二步,它将多个相关业务概念包装到单一的概念中,从而大幅简化系统设计,由于受传统数据建模思维影响,我在聚合方面吃过大亏,花了将近一年才真正用起来,为了你少走弯路,我会把一些要点总结出来供你参考. 什么是聚合? 聚合包装一组高度相关的对象,作为一个数据修改的单

应用程序框架实战十六:DDD分层架构之值对象(介绍篇)

前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使用过值对象,这毫不奇怪,因为多年来养成的数据建模思维已经牢牢把你禁锢,以致于你在使用面向对象方式进行开发时,还是以数据为中心. 当我们完成了基本的需求分析以后,如果说需要进行设计,那么你能想到的就是数据库表及表关系的设计,这就是数据建模.数据建模的主要依据是数据库范式设计,根据要求严格程度的递增分为

应用程序框架实战十四:DDD分层架构之领域实体(基础篇)

上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示例代码. 什么是实体 由标识来区分的对象称为实体. 实体的定义隐藏了几个信息: 两个实体对象,只要它们的标识属性值相等,哪怕标识属性以外的所有属性值都不相等,这两个对象也认为是同一个实体,这意味着两个对象是同一实体在其生命周期内的不同阶段. 为了能正确区分实体,标识必须唯一. 实体的标识属性值是不可变的,标识属性以外的属性值是可变的.如果标识值

应用程序框架实战四:你需要应用程序框架吗

如果没有什么好处,不会有人愿意去做,那么,你真的需要应用程序框架吗,它能为你带来什么好处? 应用程序框架为你提供现成的开发环境 现在来了一个项目,你可以直接打开VS,然后就开工敲代码吗?不行,你得先创建项目,当使用了分层架构,还需要创建更多的项目,这些项目根据依赖关系进行配置.然后依次引用各种依赖组件,很多组件还需要配置,比如Log4.Net. 配置好项目以后,你还得测试各依赖组件是否能正常工作,可能你的运气比较好,一下就全部测试通过.但也有比较背的时候,半天调不通,这时候你会发现环境问题有时比

【WePY小程序框架实战四】-使用async&amp;await异步请求数据

[WePY小程序框架实战一]-创建项目 [WePY小程序框架实战二]-页面结构 [WePY小程序框架实战三]-组件传值 async await 是对promise的近一步优化,既解决了promise链式then的这种写法壁垒,又让异步请求更像同步,若对async await不太了解的同学可以直接参考阮一峰老师的文章async 函数的含义和用法,这里我们只关注怎么在小程序wepy架构中如何使用. 依赖库 import 'wepy-async-function' app.wpy中启用 export

微信小程序开发系列一:微信小程序的申请和开发环境的搭建

我最近也刚刚开始微信小程序的开发,想把我自学的一些心得写出来分享给大家. 这是第一篇,从零开始学习微信小程序开发.主要是小程序的注册和开发环境的搭建. 首先我们要在下列网址申请一个属于自己的微信小程序: https://mp.weixin.qq.com/cgi-bin/wx 点击按钮"前往注册".注意我们需要使用一个没有注册过微信小程序或者微信公众号的邮箱.我用的是网易邮箱.注册之后,邮箱会收到一封激活邮件. 激活之后,就可以进入小程序主体信息登记页面了.这里需要使用×××号码和手机验