2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧。

1 当前微软Web平台技术全貌
  从2002年发布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013发布时,微软.NET平台己有11年的历史,其Web技术几经变迁,当前演化为以下的主要技术子领域:

一张图了解微软Web平台技术全貌

  时至,ASP.NET底层的基础架构基本没太大变化,诸如使用HTTP处理管线处理HTTP请求,使用HTTP Module对原始HTTP请求进行“加工“,使用HTTP Handler生成发给浏览器的HTML代码等核心运作机理也没有变化,所有变化的都是上层技术。

下面简要地聊聊当前ASP.NET技术家族的各项成员:

  从1.0有的Web Forms是当之无愧的“创业元老“,有关它的话题后面要重点说,此处先不提。

  ASP.NETMVC是后来的但迅速成长为当前核心的微软Web开发技术,所有学习或使用微软Web技术开发的人,现在还不学习MVC,那实在是件很让人奇怪的事。有趣的是,现在Web Forms开始越来越多地引入MVC的特性,这在ASP.NET 4.5中看得非常明显:比如强类型的数据库绑定,用户友好的URL等等。打个可能不太恰当的比方:MVC可看成是“米国”,Web Forms可比成“天朝”,“两国”往来密切。

  Web Api是针对移动互联时代的需求而设计,相比那复杂无比的“WCF怪兽”,WebApi设计得相当轻巧,它主要负责与手机等智能移动设备交换信息,底层直接使用HTTP,API具有REST风格,数据交换格式使用Json和Xml,这种格式的数据具有良好的跨平台能力,能方便地被Android和iOS设备所解析。Web Api能方便地与Web Forms和MVC相互集成,使之成为微软平台开发移动互联应用服务端Service层的理想选择。

  基于MVC/Web API,开发现在比较流行的“单页面应用(SPA:Single Page Apps)”很方便。基于微软平台开发这种类型的应用,可使用MVC提供页面模板,Web Api提供各种数据服务,前端页面使用各种Web框架(比如Angular、knockout等以AJAX方式访问服务端的Web Api服务,动态地更新页面的相应区域,响应用户操作)。

  另一项技术Web Pages采用类似于PHP的开发方式,直接在页面使用Razor集成C#代码,与MVC相比,它属于“轻量级”技术,比较简单易用,当然,付出的代价是没有MVC所提供的诸多内置功能,对于功能简单的小网站,Web Pages很合适。

  这里谈到PHP,说些题外话:诸如PHP、JSP之类微软之外的其他Web开发技术,与ASP.NET其实有诸多重合之处,每种编程技术都有多种框架可选。你可以先学PHP/JSP,再学ASP.NET,或者反之。不过我个人感觉,如果先学ASP.NET再学其他技术,开始会略感不适,因为原来很多你己经习惯的“自动化”的东西,在许多其他技术中必须由程序员手动实现,是谓“由奢入简难”。但毕竟都是Web应用,还是有很多都是一样或类似的东西,转型并不困难。

  SignalR是ASP.NET家族中一个全新的成员,它其实是一个Web开发框架,能开发“实时”的Web应用。所谓“实时”,其实是在服务端与客户端之间建立“双向”信息通道,允许服务端主动向客户端发送信息,回调客户端代码。SignalR底层依据各种情况会自动选择诸如HTML5 WebSocket这样的技术实现客户端与服务端的双向数据通讯。这项技术挺有意思的,以后有机会再详细聊聊它。
在现有的ASP.NET技术家族成员中,Web Forms是“元老”,MVC是“新贵”,两者都是微软Web技术中引人注目的焦点,下面专门地聊聊它们。

2 MVC vs Web Forms
  Web Forms是老家伙了,在MVC出现之前,它是微软Web技术领域内当之无愧的“一把手”(其实是因为没得选,它是候选人),有大量的Web项目使用它开发,其中许多项目一直跑到,而且看起来还会继续跑下去,到底要跑多久,谁也不知道。因为在实践中,大家都有意无意地遵循这样一个原则:

If it’s not broken, don’t fix it.

  这是说,对于老的使用Web Forms开发的项目,如果它还运转正常,不要去动它。但是,如果要开发新项目,需要仔细考虑是否仍然采用这种拥有十多年历史的“老”技术了。

  John Ciliberti在其《ASP.NETMVC 4 Recipes》一书中对Web Forms的优缺点作了比较全面的总结,原文内容不少,我粗略地转述如下(同时加上了一些个人观点):

Web Form的好处:开发起来确实方便!
招人容易。当前玩得转ASP.NET MVC的人并不算多。
使用上手非常容易的类似于VB的开发方式。
仅需要开发者懂一点HTML和JavaScript,可以开发出“像模像样”的网站,相关的技术细节被Web Forms框架“细心”并且“紧密”地封装了起来,而且很明显设计者并不希望使用者去“解开它”。
拥有“一堆”功能强大易用的服务端控件,并且能在大多数浏览器中正确运行,浏览器兼容性(特别是对老的浏览器)不错。
其用户控件很好用,易于开发,同时又能大幅度地减少重复代码。
数据验证功能由相应控件进行封装,相当方便,开发者几乎不需要手写JavaScript验证代码。
拥有一套自己的JavaScript框架,实现了AJAX功能,并且能与其他Web服务端控件无缝地整合。
Web Forms缺点——让人只知其然,不知其所以然