CSDN博客

img sunnylei

.NET Framework设计模式与实践

发表于2004/7/2 20:19:00  828人阅读

分类: DesignPatterns


设计模式一直是流行的话题,在.NET Framework的学习过程中,我们可以发现其中使用了大量的设计模式,本专题重点讨论两个方面的内容:
1、揭示设计模式在.NET Framework中的应用;
2、设计模式在.NET应用程序中的实践。

欢迎大家积极参与,将你学习过程的新发现和心得呈现出来与同道们共享。
下面介绍ASP.NET中的Model-View-Controller(MVC)模式:

大家都知道Web网页最初显示静态内容,随着需求的快速变化,后来出现了大量的动态内容的网页设计。在ASP.NET中,你可以向以往的ASP一样把要显示的内容以及逻辑控制代码写在一个aspx文件中,我们称这种设计为单页式设计,这种设计通常对于小的应用程序来说是好的,但是如果页面内容显示逻辑比较复杂,或者说要经常更新页面的显示方式,那么这种混合着代码和内容的设计,很难维护和扩展。
Code-Behind与MVC:
MVC设计模式的目的是提供一个分离视图(View,内容的显示)、模型(Model,数据内容)、控制器(Controller)的解决方案,通过这种分离,使得内容的表现和内容本身分开,这样做得好处是明显的,首先:不同的开发人员可以专注于各自的任务,例如:界面设计人员可以负责页面的外观设计部分;程序设计人员可以只负责数据的处理。ASP.NET中的Code-behind采用的就是这种设计模式:*.aspx是View的部分,*.aspx.(cs/vb..)是Model部分,那么你可能要问Controller在哪里?那么我可以告诉你,那个你继承的Page对象就是一个Controller,在ASP.NET的缺省实现中,Page对象扮演着一个Controller的角色,它负责接收用户的行为,并且以事件的方式通知View和Model进行相应的操作,同时正如你我所看到的Controller在ASP.NET中并不是十分明显。下面是MVC设计模式的关系:
            +----------------------<View
        Controller                   |
            |                        +
            +----------------------<Model
Controller接收客户端的输入,把输入传递给Model, Model根据输入的指令,对数据进行操作(取数据、更新数据等),Controller通知View,View更新自己。
在ASP.NET中还有其他的设计模式的实现,上面仅仅是一个方面的简要介绍,我的砖算是抛出去了,希望大家把玉扔过来,:-)
第二块砖:.NET 中的Observer设计模式
Observer(观察者模式)属于GOF 23个设计模式中的行为型模式,它被用来处理当一个对象更新的时候,其他的一系列对象自动得到更新。可以结合上面提到的MVC模式一起使用。它的基本结构是:
           主题<--------观察者
下面链接的MSDN的一篇文章,详细论述了Observer设计模式:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/observerpattern.asp

通过阅读该文,我发现.NET中的Event和Delegate实际上就是Observer设计模式的应用,event相当于主题对象,而delegate则充当观者者。如果你熟悉Observer模式,你会发现它们的Solution是何其相似。反过来说,如果你了解了event和delegate的工作机制,那么你同时也就了解了Observer设计模式。那么使用Observer设计模式有什么好处呢?实际上当我说明了event和delegate就是Observer设计模式的时候,这个问题已经显得多余了。

 


MVC是在JSP上产生的。jsp有一套机制来支持它。
在asp.net上有一些新的特点,它可以有新的方法。

借用MVC,偶是这样来理解asp.net
.aspx 是view,它继承自.aspx.cs 在运行时产生客户端页面代码。
.aspx.cs 是controller,它根据.aspx 返回的_viewstate,获得用户的输入,包括事件,调用相关的代码,并将结果返回。
.asmx,.cs 是model 偶更喜欢把处理的业务逻辑层和数据层,以类库,Web Services和Remoting 形式发布。

0 0

相关博文

我的热门文章

img
取 消
img