SCSF——基本术语

专业术语

CAB:是由微软patterns & practices group提供的一个灵活的程序集,用于创建复杂的、模块化的智能客户端应用程序。这个程序集主要提供如下功能:

动态的装载具有协作关系的独立模块到一个共同的平台中;

通过事件代理实现模块之间及模块内部之间的松散耦合通信;

实现灵活的命令模式;

实现服务于MVC模式的基础类;

建立一个框架,用来提供诸如验证服务、授权服务、模块定位、模块加载服务等。

CAB应用程序是基于用例驱动的,每个用例通过MVP或MVC来实现。中心的客户端服务通过CAB提供的基础服务进行加载。

WorkItem:从技术上看,WorkItem是用来管理实现一项具体功能的多个对象的容器。这些对象包括状态对象,视图及控制层,命令等。在WorkItem的上一层视图,它是对一个特定用例在逻辑上的封装类。它可以被看成一个用例管理员,对用例的各个方面都很清楚。就像这样,一个WorkItem可以掌握用例相关的每个部分的状态,比如Views,或者下一级用例。更进一步说,它是它所负责的用例(或者是下一级用例)的入口点。

Service:Service对整个应用程序的共有功能进行了封装,这些共有功能也可能是某个模块共有的,或者是某一级WorkItem中的多个WorkItem(例如该级WorkItem的下一级WorkItem)。典型的是如验证和授权的安全性服务,以及拥有交互和离线能力的Web service代理。

Module:多个逻辑上相关的WorkItem可以被放到一个单独的部署单元,即模块。基于CAB的智能客户端程序基本上是在模块的级别上进行配置。因此,使用适合的颗粒度对WorkItem进行封装是最关键的。

ProfileCatalog:这个基本目录只是一个配置文件,指定哪个模块或服务需要被装载到程序中。这个配置文件默认只是驻留在应用程序目录中的一个XML文件,它规定了哪些模块需要装载。通过编写和注册一个自定义IModuleEnumerator类,你可以重新指定一个新的位置来加载配置文件,比如通过Web service。

ModuleLoader:由CAB提供的通用服务,负责装载ProfileCatalog定义的所有模块。它仅仅是遍历ProfileCatalog,装载每一项对应的程序集,然后找到程序集中的ModuleInit类。

ModuleInit:每个模块都包含ModuleInit类,它负责加载模块中所有的Service和WorkItem。(除了Services和WorkItems,它还负责其它方面,比如针对shell的扩展用户接口;更多的信息可以参见表中后面关于UIExtensionSite的描述。)

Shell application:Shell应用程序负责平台的初始化,在平台中最为重要。它负责根据配置进行模块的加载和为智能客户端启动基本的服务,此外还负责启动主窗体。

Shell:它是应用程序的主窗体,为所有加载的模块提供公用的用户接口。RootWorkItem一直驻留在Shell中,它是进入应用程序其他部分的入口,比如服务,模块,以及被这些模块生成并注册的WorkItems。

Workspace:它主要负责放置和显示由WorkItem生成的用户界面元素。通常Workspace被添加到Shell中(或者是该级WorkItem所在的扩展窗体)作为部分UI的容器,这些UI容器将要装载由不同级别的WorkItem生成的UI元素。

UIExtensionSite:它是Shell为放置菜单、工具条、状态条预留的扩展部分。和Workspace不同的是,它们作为UI的部分,并没有完全被WorkItem包含;它们是可扩展的(比如增加一个新的菜单项)。

Command:它是CAD用来实现命令模式的基本类。CAB支持自定义命令或者通过[CommandHandler]属性声明方法生成命令,这些声明后的属性作为命令的句柄。你可以为一个命令注册多个调用者(比如多个控件可以使用一个单击事件)。

EventPublication:基于松散耦合事件的事件发布方法。事件发布者通过.Net中的[EventPublication]属性实现事件发布,通过URIs(唯一字符串)唯一标识。CAB将这个URIs告知事件订阅者订阅事件。事件订阅者必须有对应的方法通过[EventSubscription]属性进行标记,方法名称和使用了对应[EventPublication]的事件名称相同。

EventSubscription:它和EventPublication互相对应。订阅事件的类需要实现一个事件句柄,而且需要匹配EventPublication标记的方法名称,事件句柄需要通过[EventSubscription]属性和发布者的URIs(构造函数的参数)说明,这样CAB才能确保每次发布者触发事件的时候,它所有的订阅者都能被通知。

Model:它是WorkItem中的业务对象(客户端的);例如顾客,银行账户或贷款。

View:它是.Net的常用用户控件,负责显示部分或整个Model,并且允许用户通过界面修改它的所展现的内容。代表性的,View只负责界面上的逻辑,业务逻辑由presenter或者controller负责。

SmallPart:它是带有[SmartPart]属性的.Net用户控件,可以选择性的实现ISmartPartInfoProvider接口。本质上,SmartPart就是关于控件本身的附加信息,比如标题或描述。

Controller:它负责业务对象的逻辑实现。一个Controller只负责一个Model,这个Model可能对应有多个View。可参见MVC模式。

ObjectBuilder:是CAB的基本组件,像一个工厂,根据不同的策略生成不同的对象,或者自动化实例对象,在生成对象的同时完成依赖对象的初始化。本质上,ObjectBuilder是对象工厂,依赖注入容器和策略模式实现的混合体。

DependencyInjection:它是一种设计模式,通过工厂自动化创建对象或者同时初始化依赖对象的属性及成员。ObjectBuilder实现了这种模式。

WorkItemController:它是由SCSF定义的一个类,用来完成WorkItem中的初始化过程。当使用SCSF创建WorkItem时,我们并不是直接从WorkItem的基类继承,而是从WorkItemController继承来完成WorkItem的初始化。

ControllerWorkItem:这也是由SCSF定义的,基于WorkItemController初始化后的WorkItem类就是ControllerWorkItem。它调用WorkItemController进行初始化。

ModuleController:基于ModuleController的WorkItem是整个Module中所有WorkItem的根。SCSF默认创建了ModuleInit派生的Module类,它自动为模块创建了这个根。

Presenter:它只负责一个SmartPart和业务模型之间的逻辑,是基于MVP模式进行设计的,MVP是MVC模式简化后的一个变体。MVC和MVP的最大区别在于,MVP中View完全由Presenter来控制,而MVC中Controller和Model都可以控制View。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值