组合界面程序块介绍(Composite UI Application Block)

 

组合界面程序块介绍(Composite UI Application Block)

 看来微软要全力推SmartClient了,Application Block推出了一个又一个。我们这个项目既然要用SmartClient,自然会关注这些好东

东。目前我们确定要使用的Application Block 包括, Offline 和 CompositeUI 。有的同学就会说,这些个Block实在是太复杂,不好用。确

实他们的代码都很复杂,满是什么模式XXX一大堆。但是用起来却不是很难。这里就介绍一下CAB(Composite UI Application Block)的基本使

用方法。注意是使用方法和一些使用原则的东西,因为还没有深入去分析具体的代码。
  
首先介绍一下CAB是个什么东西,CAB最大的特征是她就是一个IOC界面容器,它可以根据容器内组件的依赖关系自行组装,以解除耦合,CAB中

的View,Controler,以及Service组件都是通过该容器自行组装,以完成业务操作。CAB中的 Event attribute 和 command attribute 又为解

耦提供了许多方便。 
  下面中就几个主要和我们打交道的类做一下介绍。
(1)  SmartParts
     就是我们最小的界面组件,并且和WorkItem中的View一一对应。声明SmartPart的方式也非常简单。比如

 
 
[SmartPart] public partial class DropRegistration : UserControl { }


在类DropRegistration上面加上[SmartPart]这个属性就好。容器就会认为这个是一个SmartPart,在需要的时候会将其注入到需要的类中。一般

在View上设计展示给用户的最小元素,比如一个登陆框。你可以用SmartPartHolder或是WorkSpace来装载显示它。
(2)  WorkSpace
    是显示组件的容器,WorkSpace中的WorkItem都是通过传入的WorkSpace来显示自己。CAB中提供了几种WorkSpace,不同的展示方式。
  1)MdiWorkspace:把WorkItem 作为一个子窗体进行显示,与平常的MDI窗体相似。
  2)TabWorkspace: 以tag的形式显示WorkItem。
  3)DeckWorkspace: 以平铺的形势,一次只显示一个WorkItem。
  4)ZoneWorkspace:这个还没试过,找个时间补齐 ^_^。

(3)WorkItems
    这个家伙是一个用例中不同组件的运行时容器。所以在项目中决定以用例来划分WorkItem,来作为我们的一个原则之一。
 在一个WorkItem中包含了重要的方法、属性还有成员.
 1) 首先当然是初始化的方法,每个WorkItem都必须实现Run(IWorkspace workspace)方法.
        2) 每个WorkItem都有State,你可以把它想象成Asp.net中的Session一样,可以把一些在本WorkItem中传递的信息存到State中。
 这样在这个WorkItem中的都可以访问他。要实现这并不难。在你类属性上面加上[State]的属性比如:

 
 
[SmartPart] public partial class DropRegistration : UserControl { [State] private Customer customer = null ; public CustomerDetailView() { InitializeComponent(); } private void CustomerSummaryView_Load( object sender, EventArgs e) { if ( ! DesignMode) { customerBindingSource.Add(customer); } }



 就表示用的是State中的该类型的信息,在窗体加载的时候就可以直接绑定customer信息到窗体中,而没有在此之间发现实例  

化的代码。
    3) WorkItem 中运用到了MVC模式。所以包括了View和Controller,一般情况下一个View和一个Controller.


(4)ApplicationHost
 Application host 是应用程序中的各种组件的组织体。程序的WorkItem均运行于Application Host之上。他是CAB容器的入口。
   
(5) Services
     CAB 中提供了一系列的基础服务类以供在程序中使用。当然你也可以实现自己特殊功能的服务。这里介绍CAB中的几种重要的服务:
   1) Catalog Reader Service: 用于读取配置目录的服务。
   2) Event Broker Service : 事件代理服务,符合CAB中事件声明规则的事件可以通过它来传递,很多时候解耦就靠它哦。
   3) Module Loader Service : 模块加载服务,目前用的比较少,或是用了没感觉.
   4) Authentication Service : 估计我们会借鉴一下然后,自己实现一套.
  5) State Persistence Service : WorkItem中的状态持久化服务,用以保存WorkItem的State中的信息到持久层。


(6) Modules
    模块由以上说到的 Services, WorkItems, SmartParts, Controllers, Business Entities 组成. 从最直观的形象上说就是一个Dll,一 

 个子系统。他有自己的初始化方法Start(),用于初始化本模块和运行它的WorkItems.

基础的东西就先介绍到这里,希望对组员有所帮助。以后会随着研究的深入,继续在Blog上探讨CAB的各个特性以及使用的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值