一:ASP.NET MVC背景
本人学东西一直有始无终。不知不觉就把学过的东西忘掉了。今天开始记录学习MVC过程。
依据的资料是【精通ASP.NET MVC 5】这本书,感觉还不错。决定从头到尾记录下学习的知识点、难点和疑问等。
ASP.NET历史
Web Form的问题
- View State重负太大
- 页面生命周期维护困难
- 关注分离的理念错误,仅仅是关注开发和显示分录,而没有关注显示代码和程序逻辑的分离
- HTML受限控制,服务器控件生成的HTML代码不可知不可控
- 抽象缺陷,视图取隐藏HTML和HTTP,但是为了实现自定义行为又要放弃这种抽象
- 低可测试性
Web Form的优点
- 改善了兼容性
- 简化了开发
Web标准和REST
REST(Representational State Transfer)表现式状态传输已经称为应用程序在HTTP上互操作的主要体系架构。
REST就是根据资源(URL)和表示在这些资源上的可用操作(HTTP方法)来描述应用程序。如PUT和http://xxx/xxx/Product更新产品或DELETE方法删除产品等。HTTP方法和资源地址组合就可以对资源进行相应的操作就是REST。
不记得在哪个网站上看过一句话,SOAP的方式相当于把Web服务抽象成方法,REST是抽象成数据。
敏捷开发和测试驱动开发
敏捷开发是一种比较先进和开发流程方法学。主要的思路就是协同设计开发和测试并行推进。
测试驱动开发就是先定义结果也称为行为规范或者测试规范,然后依附该测试规范来设计软件
质量高的单元测试有NUnit,xUnit
模仿框架Moq,Rhino Mocks
控制反转容器Ninject,Auto Fac
持续集成服务器Cruise Control,TeamCity
对象关系映射器NHibemate,Subsonic
Node.js
- 使用JavaScript就可以应对客户端代码到服务器逻辑
- 完全异步
Node.js的最大贡献是提供了一个能够编写开发工具相容的JavaScript引擎
ASP.NET MVC优点
- 优秀的架构,关注分离
- 可扩展性,如路由系统,视图引擎,控制器工厂等。每个组件有三种选择,使用默认实现,使用子类,使用接口或基类的新实现替代组件
- HTML和HTTP严格控制
- 可测试性
- 路由系统
- ASP.NET平台的精华,如认证,成员,角色,配置文件以及国际化
- 现代API,MVC5建立在.NET 4.5.1上,API可以充分利用该架构上的新技术,如linq,await,拓展方法,lambda表达,匿名和动态类型等语言特性
- 开源