Microsoft 2013 新技术学习笔记 一


有几年没有关注技术了,最近有点时间想把技术从新捡起来,借着重构手上的一个后台管理框架的机会将微软新的几种技术所有应用一下,从目的上来说并无但愿能对涉及的技术有很深刻的了解,因此这个系列的文章(篇幅不会太长)更多的是思考这些新技术在什么场景中使用的问题。

涉及的工具及技术:Visual Studio 2013 、 asp.net mvc 5 、 entity framework 6.0.一、 JQuery 2.0.三、 LigerUI 1.2.2

想重构手上的后台管理框架,是由于随着业务经验的积累,不少业务逻辑有了改进,随之对应的后台数据库结构有了不少改善,但那套框架是.net 2.0时代建立的,且不是由我一人建立的,先后通过好几个团队、好几个项目的修改,要想在数据库结构上应用这些改善要解决的问题太多了,并且技术自己更新、淘汰就比较快不是,既然有点时间,何不用新技术来重建,一是能够跟上时代步伐,二也可使得积累的业务逻辑经验沉淀下来。

正由于本次重构的出发点是想进行数据结构的改善,手上现有这套框架经历的几个团队水平都不算低,在软件重用上花费的精力也不算少,但出于不少客观因素的关系,"最大程度的代码重用、以最小的代码变化来适应各类需求变动"这样的目的彷佛难以达到(在一个甚至几个团队环境中,考虑团队成员更换频繁的状况下来达到这个目的,而不是以单我的在至关长的一段时间内达到这个目的),本次重构的目的之一是改善前端展现层如何快速适应数据层发生的变化,因此首先考虑MVC设计模式。早在十年前就已经接触过MVC概念了,但不是在微软体系内,做为微软技术路线的旅行者,一直没有将此概念应用到实际项目中,而今终于有机会了。html

 

MVC做为一种设计模式,比其余设计模式更"难以捉摸",好比你去比较Java平台的众多MVC框架的实现作法与.net平台MVC框架的实现作法,不一样框架对MVC的诠释不同,做为一个初学者你搞不清楚到底哪一种作法是正确的(或者说更正宗的),即使是在.net平台上,在微软官方能找到的资料中也是存在相似这样的"难以捉摸"的地方,举个例子:前端

上图应当是微软中国(也多是其某个合做伙伴)对MVC设计模式的一些诠释,图中讲到"Model被Controller更新后,会直接通知View并更新显示",asp.net mvc 5的实际状况倒是Model和View是没有通讯的,都是Controller经过调用IView接口来通知View更新,且Controller并无将Model直接传递给View,而是复制一份后将复制品传递给View。从这个角度来说:asp.net mvc 5实际上是MVP设计模式而不是MVC设计模式。你也许据说过另一个概念"MVC2",根据相关概念解释:MVC2与MVC的区别就是Model和View是否通讯,由此又能够判断所谓"MVC2"模式其实就是"MVP"模式。而后还有MOVE模式,该模式添加了一个Event来单独处理Model、Controller、View之间的通讯。固然针对MVP和MVC也有另一个应用说法:上图中的MVC模式适合于CS结构软件,而MVP模式适合于BS结构软件,这样倒也能解释通asp.net mvc 5中Model和View是没有通讯的。数据库

我还看到过一个分析cocoa框架中对MVC的诠释,核心概念以下图所示:Model和View是彻底隔离。设计模式

另外,关于View的更新是经过Model发出仍是经过Controller发出除了CS/BS结构的考虑外,减小代码冗余也是考虑因素之一(老实说这个因素我没理解到其含义,不过这篇文字最后一句话:因此,我以为,不去完全的MVC,不去完全的脱耦,改成由controller先改变model,再由controller直接去改变view,要省很多代码和时间,固然换来的弊处就是controller必需要依附于view的存在了。。。 看看asp.net mvc的Controller如何定位到View的默认规则,可不就是依附于View了嘛)。数据结构

到底什么是MVC设计模式以及该如何应用此设计模式呢?我在WIKI百科上找到了MVC的定义,自我小结:在设计软件架构时,只要存在将软件系统分红模型(Model)、视图(View)和控制器(Controller)三个部分,即为应用了MVC设计模式(这经过选择一个MVC实现框架便可轻松达到),但这还不够,在设计、开发软件的整个过程当中时刻注意MVC的两个应用目标:MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,而且使程序某一部分的重复利用成为可能。除此以外,此模式经过对复杂度的简化,使程序结构更加直观。(这第二个步骤能够说是我整理这份学习笔记的重点所在,就是我后面说起的"代码结构组织")架构

.net 平台上的MVC实现框架已经有不少可选择的了,对框架选择的因素有不少,好比对MVC实现的完全程度、处理性能等等,我没有也不打算对目前主流的MVC框架进行这样的挑选,经验告诉我当你选择一个框架应用到实际项目时,你老是有机面对这个框架的一些不足或者说缺陷之处的,花点时间,不足和缺陷都能解决,因此我采用了官方的MVC框架。

mvc

做为asp.net mvc 5的初学者,官方教程是精练的。 网上大部分教程都是引用的这套教程,so 不用浪费时间去搜索。框架

在2011年下半年的时间,我投入了3个月的时间策划开一个小吃店,虽然最后因为发生一些变故没有作成,但总算对开一家餐饮店的整个策划过程有了比较深刻的了解,回头想一想一家餐厅的运做采用MVC模式是比较好管理的(是否利于产生盈利这个不说),一家餐厅要想有持续的客源,厨师是最重要的,作的菜品能符合客户的胃口才能让客户持续来店,这个厨师就是MVC的Model,顾客来店经过菜单点菜,这个菜单就是MVC的View,顾客点菜后由服务员下单,这个服务员就是MVC的Controller,服务员下单通知厨师作菜,厨师只负责作好菜,菜是给哪一个顾客作的无论,由服务员(也就是Controller)来负责上菜。 这就是MVC模式的核心:Model负责数据的处理,Controller负责调度和控制,View负责展现数据给用户。asp.net

相关文章
相关标签/搜索