asp.net MVC与WPF MVVM

由于工作的原因,总是会在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。常用或者说肯定会使用到的包括日志,异常,字段验证,权限认证等。极大的减少了代码的重复量,简化了逻辑也使得代码结构清晰。

时间: 2024-10-13 09:58:41

asp.net MVC与WPF MVVM的相关文章

使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)

近段时间利用业余时间开发了一套在线客服系统,期间遇到过大大小小不少问题,好在都一一解决,最终效果也还可以,打算写一个系列的文章把开发过程详细的记录下来. 希望能够和更多的开发人员互相交流学习,也希望有有兴趣的小伙伴一起加入开发当中来,毕竟一个人的力量是有限的 :) 有兴趣的小伙伴请加Q:279060597 系列文章将分为几个部分 零.概述(本篇) 一.需求分析及技术方案初步选型 二.技术方案选型,验证 三.底层框架设计,开发 四.服务器设计开发 五.客户端设计开发 六.Web端设计开发 在这个系

【工作笔记二】ASP.NET MVC框架下使用MVVM模式

ASP.NET MVC框架下使用MVVM模式 原文:http://www.cnblogs.com/n-pei/archive/2011/07/21/2113022.html 对于asp.net mvc开发人员或爱好者来说,MVVM模式可能你不是很了解.本来这个模式就是针对WPF和Silverlight开发提出的开发模式. 大概一年前,我当时迷恋Silverlight时,学习了MVVM一段时间,没想到现在可以在MVC用到. 我看了下之前有两篇文章介绍MVVM的.希望可以对MVVM不了解的人有点帮助

【转】ASP.NET MVC框架下使用MVVM模式-KnockOutJS+JQ模板例子

KnockOutJS学习系列----(一) 好几个月没去写博客了,最近也是因为项目紧张,不过这个不是借口,J. 很多时候可能是因为事情一多,然后没法静下来心来去写点东西,学点东西. 也很抱歉,突然看到好多的短消息,真不知道该如何给大家回复... 最近试着晚上抽时间写一些knockoutjs和mvc的文章.这里先写一点knockoutjs的东西. 关于knockoutjs到底是什么,如果你不知道,可以看看几个月前我写的一篇文章介绍它. ASP.NET MVC框架下使用MVVM模式 我也是之前安装了

C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC

发送邮件使用SMTP服务器,有两种方案,一种是使用IIS的SMTP功能:另一种是直接使用邮件供应商的SMTP,比如Gmail.Sina.QQ等,使用这些SMTP服务器必须得注册帐号,一般可以直接用邮箱及密码,但是有些邮箱必须开启POP3/SMTP服务才可以,比如QQ邮箱默认是关闭的,可以在“设置”->“账户”里面找到.我今天整理的都是用的第二种. 早期的.NET版本用的是 System.Web.Mail 类提供的功能来发邮件:2.0版本推出了 System.Net.Mail 类来代替 Syste

使用ASP.NET MVC和AngularJS的Web模块化管理

快速浏览标题便了解到本文要谈到公开资源平台,该平台允许快速,轻松地创建一个管理网络,并不需要在风格,导航,解决方案架构和其它跟主要任务无关的琐事上花费过多的时间. 平台视觉图和其中一块模板:(见附图一) 很长一段时间里,我们使用WPF技术模块化管理应用.我们做出的决定是将此管理迁移到网站中.最后我们得出了2个不同的产品:第一个:平台,就是这篇文章致力于介绍的,第二个是用于电子商务应用程序开发使用的集合模块. 技术运用于:(见附图二) 我们决定使用这些技术都是我们广泛应用微软产品的经验结果. 我们

Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用

摘要: 在Windows客户端程序(WPF和Windows Forms)中使用Ninject和在控制台应用程序中使用Ninject没什么不同.在这些应用程序里我们不需要某些配置用来安装Ninject,因为在Windows客户端应用程序里,开发者可以控制UI组件的实例化(Forms或Windows),可以很容易地委托这种控制到Ninject.然而在Web应用程序里,就不同了,因为框架负责了实例化UI元素.因此,我们需要知道怎样告诉框架委托这种控制责任给Ninject.幸运的是,让ASP.NET M

深入理解ASP.NET MVC Day1

深入理解ASP.NET MVC ASP.NET vs MVC vs WebForms 许多ASP.NET开发人员开始接触MVC认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系,所以可以称之为ASP.NET MVC. 我们可将原来的ASP.NET称为 ASP.NET Webforms,新的MVC 称为ASP.NET MVC. ASP.NET Web Form ASP.NET 在过

ASP.NET MVC中Model元数据解析学习

闲来继续学习蒋金楠大师的ASP.NET MVC框架揭秘一书,当前主要阅读的内容是Model元数据的解析,即使是阅读完的现在,仍然有不少细节不是特别明白.好在这部分内容主要是关于Razor引擎的呈现的,通过注解的方式对Model进行自定的修饰,最终使得页面在渲染时(即从cshtml文件转化为html时),相关的数据能够按照指定的形式转化并显示.由于接下来的项目中不再打算使用Razor引擎,该引擎虽然很不错,但也有一些问题,例如存在HTML5代码与HtmlHelper的混写,使得UI层很难与业务代码

ASP.NET MVC 4 中 Controller 与 ApiController 做读取、新增、更新、删除 ( CRUD )

在 ASP.NET MVC 4 架构上,WebApi ( ApiController ) 较适合做数据处理与提供的动作,而 MVC 4 Web ( Controller ) 内比较要配合 View 层数据显示而做异动,这时候如果要把 ApiController 和 Controller 切开来,那这两个部分的沟通就会很常使用了.如果你是用 MVVM 的架构,在 Model-View View-Model 这两段,若是一页搜集各数据表的某些资料,那在 View 那一段就必须要与 WebApi 沟通