已经有几年没有花时间看一本书了,趁着混合架构迁移的机会,花了几天看了一下 Jess和Toddler合著的Asp.net MVC 4 Web 编程。
记得入软件的行就是从B/S着手的,大概在八年前,曾经很痴迷于Asp.net Web Form,那会儿Asp.net MVC刚刚出现一点雏形,而Asp和Asp.net WebForm则是主流,大概写了有不到两年的B/S系统,后来因工作需要转做C/S。
印象深刻的是,在做Asp.net Web Form开发时,曾经最大的诟病是,封装的服务器端控件,这在要做出很炫酷的界面效果时,简直太难了,尤其在那会儿刚刚大肆其道的CSS样式,与服务器端控件配合进行界面开发时简直就是噩梦。那时是很羡慕Java和PHP社区的开发,甚至是羡慕Asp的开发,因为他们的Html元素的处理,更容易引入CSS和JS。为了做出一些效果,不得不将很多很炫的界面实现的业务控制,用服务器端代码做嵌套,而不使用服务器端控件,但是业务与界面耦合的噩梦再次出现了。因为服务器端控件的引入,在终端页面中出现了大量用于会话存储的隐藏数据,造成客户端代码的急剧膨胀,为了实现一些异步的处理机制,也需要写大量原生的JavaScript交互代码,数据的通信和序列化WebService和XML是唯一。
后来转入C/S端开发,就很少关注B/S相关的界面处理层,技术社区发展的速度很快,各种新的框架模型层出不穷的出现,一直想找时间去看看新的B/S技术框架的实现,在花了有几天的时间读完Asp.net MVC4 Web编程这本书后,突然有很大的感触。
其中最大的感触有几点,第一,最让开发人员和UI设计人员纠结的业务层与界面层,这次真的做到了分离,用纯粹的Html元素去实现布局,用CSS样式控制呈现,用JS控制客户端逻辑,这让我感觉到的是,微软这次真的跳出去了,而不是强制的圈在自己的模式中。新的视图和老的服务器控件某种层次一致,但在开发人员的开放性和分工合作性上真的不同了。
第二,书的作者可能是软件工程和模式的极力用户者,在这本书中我看到了大量的软件工程和设4计模式方面的应用讲解,这也脱离了早期Asp.net Web Form的基于文件的请求工作模式,真正的回归了软件工程的本质了,这点是及其的酣畅淋漓,可能是限于篇幅,很多软件工程的东西讲解的都较浅,但是这说明软件工程也在回归微软的框架,再也不是那种傻瓜式托托拽拽了。很多时候老瓶装新酒,也会起到意向不到的效果,曾经的Java再次辉煌,也是一个Spring框架的功劳。
第三,与新的通信框架和序列化协议的结合。在WebForm早期,曾经为了实现一个界面的异步调用效果,不得不写一个WebService接口,再利用JavaScript去实现异步的WebService调用,仅仅是一个数据的通信,就需要写大量的代码,如果再要把客户端的样式动态呈现出来,结合服务器端控件,其难度更不是一点半点的。新的Mvc 与JQuery\Json基本是无缝集成了,这里的变更也是走出了关键的一步,原来微软的东西都是只用自家的,需要集成,开发人员只能自己去想办法,在IDE层面直接支撑开源的框架,这也是不容易的一大步。
整体上读完,感觉Asp.net MVc确实是与微软的一些传统的技术思路不一样了,能主动去拥抱一些开源的、开放的东西。