商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

在MVC模式下的UI AOP用例

—— .NET和VS.NET的程序结构

一个面向组件的构架

   构件是在.NET环境中直接或者间接执行ystem.ComponentModel.IComponent的接口类。
  下面这个简洁的列表是关于.NET框架中一些类型,.NET框架是这个意义下的构件。
• System.ComponentModel.Component:IComponent的基本实现,此IComponent通常作为基类型,为非可视构件服务。
• System.Web.UI.Control:所有ASP.NET控件的基类型,它直接操作IComponent
• System.Windows.窗体s.Control:是从System.ComponentModel.Component继承而来的,是所有Windows Forms控件的基类型。
• System.Data.DataSet:这个类型是从System.ComponentModel.MarshalByValueComponent继承而来的,它依次地实现IComponent。
• System.Diagnostics.EventLog: 是从System.ComponentModel.Component继承来的.

   可以看到,在.NET平台中,几乎所有的事物都是构件。这个类型作为构件带来的主要结果就是:集成开发环境拥有它自己的功能。集成开发环境为构件提供服务的的关键属性就是IComponent.Site.一个所谓的站点构件就是被放置在容器中的构件。这个内含包容是一般的内含包容,与可视化的内含包容没有任何关系。

   例如:一个ASP.NET服务器控件,当访问Web 窗体时,可以说它就是站点构件。它的Site属性(是IComponent接口实现的一部分)被设置到了宿主,而构件正好处在宿主这个地方,VS.NET里面是一个Microsoft.VisualStudio.Designer.Host.DesignSite类型实例。确切地说,当在窗体设计器中时,同一个对象类型被访问时,同一个对象类型就会被设置为一个Windows Forms用户控件的Site属性,而在设计时期,则被设置成一个非可视构件。在最后一个和前一个之间存在一些差别,当我们观察严格的意义上的(非可视IComponent实现)构件时,我们再讨论这些差别。
   类型ISite的Site属性包含一些成员,这些成员允许构件与其它构件、它的容器 (一个逻辑容器)以及由它自己提供的服务相交流。我们将学习这些功能,讨论怎样利用这些功能。因此整个程序结构就是: 




   容器是一个执行System.ComponentModel.I容器 (从现在开始只有I容器)的对象。在设计时期,容器总是一个Microsoft.VisualStudio.Designer.Host.DesignerHost实例。这个对象是构件VS.NET 集成开发环境功能的核心,因此更进一步研究。
1 2 3 4
©版权所有。未经许可,不得转载。
[责任编辑:胡铭娅]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]