您的位置:首页 > 运维架构 > 网站架构

浅谈MVC架构在DotNET WinForm中的应用(C#)

2009-03-16 08:16 190 查看
浅谈MVC架构在Dot NET WinForm应用程序开发中的应用(C#)

本文目的

在各种应用程序开发过程中,随时都可能遇到数据,数据分析,数据结果展示的问题。在互联网成为人们生活不可分割的一部分的时候,人们自然会对同一个内容提出更丰富的需求,那么这个时候如何满足用户的需求,提高工作效率,就成了一个至关重要的话题了。
而MVC正是解决此类问题的一种非常有效的方法。
本文为我对MVC架构在Dot NET WinForm应用程序开发过程中的理解。由于水平有限,在某些方面可能认识的不够到位,还望看到此文,发现问题的各路达人不吝赐教。
下面就MVC中的一些概念进行详细介绍。

什么是MVC

最早MVC出现在Smalltalk(第一种完全OO的计算机语言)中,后来由Sun在JAVA上发扬光大。
MVC简单的翻译到中文意思为模型视图控制,本为解决桌面应用程序开发过程中模型与视图代码分离的问题,后来在Web应用程序中大量使用.但解决的问题没有变,依然为数据与展示的问题,其最终目的为降低模型与视图之间的耦合。
更具体的说,MVC是为解决数据(Model)与各种不同数据展示(View)需求的问题。此类问题可分为两类:一,多用户跨平台的数据展示问题;二,丰富多样的数据展示方式与同一份数据的问题。但它们的本质是一样的。
1. 多用户跨平台的数据展示:在互联网发展的到下面,数据服务提供商的用户千差万别,用户所使用的工具(客户端,浏览器,OS等等)也千差万别。面对这么多种类的还在不断增加的需求,各厂家需要提供一种行之有效的方法;
2. 丰富多样的数据展示方式:同样的一份数据,通过不同的展示方式可以快速高效的达到不同的效果。例如人口分布数据的展示,可以通过简单的表格,柱状图,曲线图,地图等不同的方式实现,而每种方式对于解决问题又各有优劣,他们既可以同时存在,也可以单独存在。
正如MVC架构的名字所包含的信息一样,MVC由三部分组成,分别是M(Model),V(View),C(Controller).

MVC如何工作

在具体实现MVC的时候,应用程序被划分为三个核心部分,他们各自处理自己的任务,无不干扰。
模型:模型表示数据对象和业务规则。它专注于用户根本业务问题的解决与实现,而不关心用户结果的展示,就是说模型与数据格式无关,这样一个模型就可以为多个视图提供数据。
视图:是用户看到并与之交户的界面,用户通过视图实现他要达到的目的,但视图本身并不会实现用户的需求。视图所关心的是如何通过不同方式将数据展示给用户,并有条件允许用户操作,而不关心展示的是什么.
控制器:在MVC中,控制器处于核心的地位。它用于感知用户的操作,并在适当的时候通知模型去实现具体的业务,然后通知视图更新业务处理结果的展示。他们有传统意义上的输入输出。
有人认为可以采用理解MFC中文档-视图结构的方式理解MVC.这里文档就是Model,是真正意义上的数据,视图即View,用于数据展示,而Windows的消息触发事件机制则是Controller。所以也可以认为控制器的输入输出对象是“消息”。在用户与界面交互或模型变动时通知控制器,继而由控制器通知模型或视图更新数据(用户的数据或业务处理结果)。

MVC与观察者模式

MVC架构如下图:

View

Model

Controller

Golf的Design Pattern中有一观察者模式,其架构图如下:

Golf认为观察者模式定义对象间一对多的依赖关系,一个对象发生变化时,所有依赖它的对象都得到通知并被自动更新。由此可以看出二者之间存在某些类似之处。视图通过要展示的数据通过控制器间接依赖于模型,而当模型更新的时候,控制器则通知更新视图。从架构图上可以看出,二者之间的区别在MVC多处的控制器,但在具体应用观察者模式的时候不难想象观察者中一样需要角色去通知有依赖关系的两个对象。
所以我认为MVC架构与Golf中的观察者模式最为相似。不过架构与模式本身并无意义,他们都是一种经验的总结;在实际中,即便是同一种架构或模式,其实现方式也是多种多样的,所以应该说他们并无区别。

Dot NET 中的有关概念

Microsoft Dot NET平台提供的C#是一种纯粹的OOP 语言。虽平台提供了很多种技术可供我们开发出高效的代码,以简洁的方式显示比较复杂的操作逻辑。下面就对在Dot NET实现MVC用到的一些概念做个简单的介绍:
接口:接口出现的很早,并非Dot NET平台专有,但在Dot NET平台上采用基于接口的编程方式无意是最方便的;
委托:相比C++中的函数指针,委托更容易理解。很多的时候可以简单的认为委托提供了把方法作为参数传递的实现;
事件:相比MFC中复杂的事件实现方式,基于委托机制的事件更用于理解和应用;

Dot NET WinForm应用程序开发

本文重点讲述WinForm中MVC的实现,所以要介绍一下在WinForm应用程序开发过程中与数据传递交互的内容。
Dot NET中所有元素都是严格意义上的对象,所以在数据交互时可以通过给对象添加字段或属性的方法供其它对象调用实现传递;
又因为WinForm是基于消息(事件)机制实现的,所以数据交互还可以通过事件(或委托)实现。
根据上文所述,WinForm中实现MVC时需采用第二种方法。

Dot NET WinForm的MVC实现方法及示例

本示例通过2种方式展示一个模型,仅为说明WinForm中的MVC实现方法,并无实际意义。
本示例特点:Model与View之间耦合最小,如下图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐