由于工作的原因,总是会在WPF和WebForm之间切换,但是实际项目中一直也没有使用过asp.net MVC,毕竟现在的外企维护和兼容老系统,是一件必修课。
然而最近找工作发现外面的世界已经漫天的MVC,说没用过都不好意思跟人打招呼,只能自己先了解了解,至少上手来用没问题再去面试吧。
下了一遍什么7天系列,分块系列的文章之后,发现其实asp.net MVC和WPF的MVVM思想如出一辙:
1.与传统技术的对比
MVVM改变传统的WinForm以事件为中心的方式,取而代之的是以数据为中心,将数据推送给View,通过双向绑定实现数据的显示和更新。
asp.net MVC改变了asp.net以内容为中心,每个页面必须与物理的文件一对一逻辑相关的存在。MVC以应用逻辑为中心,地址栏的内容与控制器和方法相对应。
2.绑定方式
MVVM通过声明的方式将ViewModel和View绑定起来,完全依靠寻找datacontext中的内容来显示数据,灵活性高。asp.net MVC控制器与view的对应关系固定,view必须存放在controler命名的文件夹下,这样虽然不需要手动绑定,但是灵活性差很多。因为BS结构的缘故,MVC提供了modelbinder自动帮助开发人员对应传递的参数,通过modelstate将各个参数的验证信息存储,同样的,让别人帮你干活,你就得听别人的,参数名字什么的一致性,你就得保证好了。
3.路由方式
WPF毕竟还是窗体程序,很简单的从控件树依次往下传递事件。asp.net MVC通过地址请求的方式获取响应,则必须要配置路由,这种配置路由的方式将路由的显示与实际对应的controller分离,使地址展现更加灵活,当然也有局限性,如果路由中有指定地址的话,参数名称必须与地址相同,毕竟是自动匹配,还是得按别人指定的规则来办。(Controller/action/id)
4.其他
MVC中很多功能可以很方便的通过面向切面编程的方式实现,即ActionFilter。常用或者说肯定会使用到的包括日志,异常,字段验证,权限认证等。极大的减少了代码的重复量,简化了逻辑也使得代码结构清晰。