【读书笔记】:简介(CAB和SCSF编程)
来源:互联网 发布:淘宝被同行恶意拍下 编辑:程序博客网 时间:2024/05/21 17:42
一、CAB的特点
1、松散耦合
把软件分割成很多小块,然后采用CAB的Service机制把这些小块缝合起来。类似于我们通常所说的模块化设计或插件化设计。通过松散耦合,各个小块之间的交互会尽可能的少,从而使程序易于开发,易于扩展和维护,同时对于项目管理也非常重要。
2、CAB提供一些预制的框架用于支持松散耦合
主要有如下几大块:
(1)、运行期模块装载的中央控制,主要有模块遍历和装载服务
(2)、一些服务架构
(3)、WorkItem机制和依赖注入
(4)、Workspace(容器Frame)和SmartParts(控制容器)
(5)、UI扩展点
(6)、时间发布和订阅服务
3、CAB的一些术语
(1)、Shell Application
主WinForm应用程序,CAB程序的各个部分的外部容器。它管理CAB的启动过程。
(2)、Shell Form
Shell Application的主窗口。一般来说就是通常所说的Shell。它通常包含Workspaces和用户界面元素,如菜单和工具条。
(3)、Workspace
SmartPart的容器窗口,而SmartPart一般是由WorkItem拥有的。Workspace可以控制SmartPart是显示还是隐藏。CAB提供了一些标准的Workspace类,当然你也可以自己写一个。
(4)、WorkItem
对象和服务的运行期容器,一般作为CAB应用程序的组成部分存在。可以把它作为逻辑上的子程序或子进程。它是CAB程序的基本单元。用户所写的业务逻辑一般都在一个或多个WorkItem中。
(5)、SmartPart
WorkItem所拥有的数据的可是展示或视图。它为WorkItem所拥有并显示在Workspace中。SmartPart一般就是WinForm控件的实现,一般包含其他的WinForm控件。除显示数据之外,也允许用户修改数据。
(6)、Service
为松散耦合所服务的一些支撑类,通常包含一些与其他WorkItem独立的工具方法。
(7)、Module
一个.NET程序集合,为WorkItems, Service, 和其他支持类提供的一个物理容器。
4、CAB的组成
CAB主要有三个工程组成:CompositeUI、CompositeUI.WinForms和ObjectBuilder。这三个工程创建三个动态链接库:CompositeUI.dll,CompositeUI.WinForms.dll,ObjectBuilder.dll。
二、SCSF的概念
1、SCSF的一些背景
(1)、没有好的辅助开发工具提高开发CAB程序的效率。如创建工程模版等等。
(2)、CAB还不完善
2、基本概念
SCSF实际上是一个代码、文档和工具的集合。介绍一些CAB应用程序的开发实例,以及一些设计模式的遵守。相对于CAB,SCSF提供了三个主要的增强:
(1)、SCSF提供了大量类,这些类提供了很多基本CAB所没有的而又是开发人员所必须的功能。
(2)、SCSF包含一些为开发人员提供架构指导的类。
(3)、SCSF提供了一些叫Guidance Package的工具集。
三、简单的CAB程序:Walkthrough
1、简单的CAB程序结构
(1)、ShellApplication.CS文件,Main方法。类ShellApplication衍生自FormShellApplication。在其参数化类型列表中,传递的是Shell的根WorkItem和ShellForm。
(2)、对于根WorkItem,可以创建一个类继承自WorkItem。在这个简单程序中中该类是空的,什么也不做,仅仅是作为根WorkItem而存在。
(3)、ShellForm是Shell程序创建的主窗口。可以在其上放置Workspace和UI元素。
(4)、程序执行顺序:
CAB框架创建根WorkItem——>创建ShellForm的一个实例——>装载ProgramCatalog.xml中定义的Module。
2、ProfileCatalog.xml文件结构
每个<ModuleInfo>元素指定一个module。
(1)、Module的装载流程
当一个Module被装载进程序的地址空间时,装载器会查找衍生自基类ModuleInit的类。在这个类中可以放一些初始化代码。
1、基本架构图
2、架构/模式说明
MVP是在客户程序中实现三层架构的基本思想。与CAB相对应,WorkItem代表图中的Model,它包含程序的数据和状态等。业务逻辑主要由Presenter所表示。View是控件显示。
3、View与Presenter的交互
定义一个接口负责Presenter和View之间的通信。一般Presenter不需要知道也不想知道该接口在View中是如何实现的。
一般都需要该接口作为Presenter的分离层,如果没有,则只能让Model直接与View交互,从而导致紧耦合。
4、View实现
使用.NET本身的UserControl等等。常规的实现。
五、跟踪和调试
1、经典的Debugger跟踪
app.config文件结构如下:
2、CAB Visualizer
一个第三方工具。
1、松散耦合
把软件分割成很多小块,然后采用CAB的Service机制把这些小块缝合起来。类似于我们通常所说的模块化设计或插件化设计。通过松散耦合,各个小块之间的交互会尽可能的少,从而使程序易于开发,易于扩展和维护,同时对于项目管理也非常重要。
2、CAB提供一些预制的框架用于支持松散耦合
主要有如下几大块:
(1)、运行期模块装载的中央控制,主要有模块遍历和装载服务
(2)、一些服务架构
(3)、WorkItem机制和依赖注入
(4)、Workspace(容器Frame)和SmartParts(控制容器)
(5)、UI扩展点
(6)、时间发布和订阅服务
3、CAB的一些术语
(1)、Shell Application
主WinForm应用程序,CAB程序的各个部分的外部容器。它管理CAB的启动过程。
(2)、Shell Form
Shell Application的主窗口。一般来说就是通常所说的Shell。它通常包含Workspaces和用户界面元素,如菜单和工具条。
(3)、Workspace
SmartPart的容器窗口,而SmartPart一般是由WorkItem拥有的。Workspace可以控制SmartPart是显示还是隐藏。CAB提供了一些标准的Workspace类,当然你也可以自己写一个。
(4)、WorkItem
对象和服务的运行期容器,一般作为CAB应用程序的组成部分存在。可以把它作为逻辑上的子程序或子进程。它是CAB程序的基本单元。用户所写的业务逻辑一般都在一个或多个WorkItem中。
(5)、SmartPart
WorkItem所拥有的数据的可是展示或视图。它为WorkItem所拥有并显示在Workspace中。SmartPart一般就是WinForm控件的实现,一般包含其他的WinForm控件。除显示数据之外,也允许用户修改数据。
(6)、Service
为松散耦合所服务的一些支撑类,通常包含一些与其他WorkItem独立的工具方法。
(7)、Module
一个.NET程序集合,为WorkItems, Service, 和其他支持类提供的一个物理容器。
4、CAB的组成
CAB主要有三个工程组成:CompositeUI、CompositeUI.WinForms和ObjectBuilder。这三个工程创建三个动态链接库:CompositeUI.dll,CompositeUI.WinForms.dll,ObjectBuilder.dll。
二、SCSF的概念
1、SCSF的一些背景
(1)、没有好的辅助开发工具提高开发CAB程序的效率。如创建工程模版等等。
(2)、CAB还不完善
2、基本概念
SCSF实际上是一个代码、文档和工具的集合。介绍一些CAB应用程序的开发实例,以及一些设计模式的遵守。相对于CAB,SCSF提供了三个主要的增强:
(1)、SCSF提供了大量类,这些类提供了很多基本CAB所没有的而又是开发人员所必须的功能。
(2)、SCSF包含一些为开发人员提供架构指导的类。
(3)、SCSF提供了一些叫Guidance Package的工具集。
三、简单的CAB程序:Walkthrough
1、简单的CAB程序结构
(1)、ShellApplication.CS文件,Main方法。类ShellApplication衍生自FormShellApplication。在其参数化类型列表中,传递的是Shell的根WorkItem和ShellForm。
(2)、对于根WorkItem,可以创建一个类继承自WorkItem。在这个简单程序中中该类是空的,什么也不做,仅仅是作为根WorkItem而存在。
(3)、ShellForm是Shell程序创建的主窗口。可以在其上放置Workspace和UI元素。
(4)、程序执行顺序:
CAB框架创建根WorkItem——>创建ShellForm的一个实例——>装载ProgramCatalog.xml中定义的Module。
2、ProfileCatalog.xml文件结构
- <?xml version="1.0" encoding="utf-8" ?>
- <SolutionProfile xmlns="http://schemas.microsoft.com/pag/cab-profile" >
- <Modules>
- <ModuleInfo AssemblyFile="MyModule.dll" />
- </Modules>
- </SolutionProfile>
(1)、Module的装载流程
当一个Module被装载进程序的地址空间时,装载器会查找衍生自基类ModuleInit的类。在这个类中可以放一些初始化代码。
- 在该类中一般又ParentWorkItem的属性,类型为WorkItem。该属性只有写方法,可以从外部写入,但不能读取。它被标为[ServiceDependency]属性,从而导致依赖注入(这是CAB的一个用于松散耦合的一个重要特性)。CAB的模块装载器可以根据该属性知道该模块需要一个特定的类型,也就是说是WorkItem。这里的Service是指通过松散耦合机制访问的任何类。
- 一旦模块被装载进程序的地址空间,框架会调用其Load方法。我们在实现Module时一般需要重载该方法。在实现该方法时,一般流程如下:(a)、调用基类的Load方法;(b)、创建一个子WorkItem,并把它放进父WorkItem(该父WorkItem是通过注入得来的)的WorkItem集合中。
1、基本架构图
2、架构/模式说明
MVP是在客户程序中实现三层架构的基本思想。与CAB相对应,WorkItem代表图中的Model,它包含程序的数据和状态等。业务逻辑主要由Presenter所表示。View是控件显示。
3、View与Presenter的交互
定义一个接口负责Presenter和View之间的通信。一般Presenter不需要知道也不想知道该接口在View中是如何实现的。
一般都需要该接口作为Presenter的分离层,如果没有,则只能让Model直接与View交互,从而导致紧耦合。
4、View实现
使用.NET本身的UserControl等等。常规的实现。
五、跟踪和调试
1、经典的Debugger跟踪
app.config文件结构如下:
- <system.diagnostics>
- <switches>
- <add name="MySwitch1" value="all" />
- </switches>
- <sources>
- <source name="Microsoft.Practices.CompositeUI.Services.ModuleLoaderService"witchName ="MySwitch1"/>
- </sources>
- </system.diagnostics>
一个第三方工具。
- 【读书笔记】:简介(CAB和SCSF编程)
- 【读书笔记】:Shell和Service(CAB和SCSF编程)
- 一些思考:CAB 和SCSF
- 基于CAB和SCSF设计智能客户端(一)翻译
- 基于CAB和SCSF设计智能客户端(二)翻译
- 基于CAB和SCSF设计智能客户端(三)翻译
- CAB学习(-):使用SCSF创建shell的过程
- CAB学习(-):使用SCSF创建shell的过程
- 搭建CAB/SCSF的开发环境步骤
- SCSF - Part 10 Commands in the CAB
- Commands In The CAB (Introduction To CAB/SCSF Part 10)
- Events In The CAB (Introduction To CAB/SCSF Part 12)
- Business Modules And Interfaces In The SCSF Smart Client Solution (Introduction To CAB/SCSF Part 19)
- SCSF Business Modules: Start Up And The ControlledWorkItem (Introduction To CAB/SCSF Part 20)
- SCSF - Part 6 Constructor Injection in the CAB
- SCSF - Part 7 Introduction to Services in the CAB
- SCSF - Part 8 Creating and Using Services in the CAB
- 从WinForm的CAB/SCSF转向WPF的Prism?
- 数据绑定C#
- const 与 static
- 内存池技术:经典的内存池技术
- 如何使用 类进行文件的 I/O 处理
- 如何走出软件作坊成为开发正规军【转】
- 【读书笔记】:简介(CAB和SCSF编程)
- 单元测试与敏捷开发
- VSS 2005 配置简明手册
- 提高网站的性能之一:关注前端的性能
- 调试U-BOOT----让GDB更好地调试
- Android学习笔记(7)—关于Service和Notification的体验
- Create Splash Screen in WPF
- 解决VSS中Access to file "//.../rights.dat" denied的错误 以及 为VSS设置环境变量
- Android学习笔记(8) — GridView与ImageView