首先在VS.NET上新建一个Smart Client Software Factory的解决方案.最初自动生成的是一个Source文件夹,然后是一个子文件夹名为Infrastructure
几个Infrastructure(基础设施)项目
Infrastructure.Interface
Infrastructure.Layout
Infrastructure.Library
Infrastructure.Module
还有一个启动项目Shell,Shell下的ShellForm为整个程序的入口点,这个shellForm并不是程序的最终界面,只是一个"壳",运行时上面的内容是动态加载上去的
研究一下它的代码
WorkspaceNames.LayoutWorkspace 这个workspace的概念是什么,以后再研究
那么要往这个"壳"上加上你自己的View,就要用SCSF的模板先新建一个Module项目,有两种module可以选择,bussiness和functional
- Functional Module -- 只是给其它模块提供一些服务,并不实现一个Use-case,不包含一个WorkItem
- Business Module -- 实现一系列相关的用例,包含WorkItems。
我这里选的是bussiness类型,菜单上面有些选择项,可以选择生成对应的单元测试项目和接口项目。
生成Module项目以后,会生成几个文件夹Constants,Services,Views。另外还有两个类ModuleController,ModuleInitializer
这里先只关注ModuleController这个类,它继承自WorkItemController,WorkItemController是一个什么类呢?它来自Infrastructure.Interface下,看看它的源代码
它基本就是在操纵WorkItem和IView这两个对象,这里要搞清几个概念
Workspace是什么?SmartParts是什么?
先看微软官方对SmartParts的解释
Microsoft’s CAB documentation defines a SmartPart as ‘a view of data (in the MVC pattern) such as a control, a Windows Form, or a wizard page
微软的CAB文档中把SmartPart 定义为数据的视图(在MVC模式下) 比如控件,Windows 窗体,向导页
姑且就把它看成是控件吧,或者应该说它是除了容器以外的控件
再看微软官方对Workspace的解释
The components that encapsulate a particular visual layout of controls and SmartParts, such as within tabbed pages
一个特定的组件,封装控制视觉布局与SmartParts,比如"标签页"
从字面上已经能解释,Workspace实际跟我们平时项目中用到的容器控件类似,都是一个承载其它控件的容器
Workspaces are themselves controls that allow other controls to be laid out within them,In particular they are designed to allow SmartParts to be laid out within them.
Workspaces它们自身允许其它的控件放进它们之中,特别是它们被设计为让SmartParts放进它们中.
看,这句话已经说得够明白的了。
Workspaces与普通容器控件的不同就是,它们利用了CAB依赖注入容器(Workitmes)
我们可以在Workspaces集合中用AddNew关键字创建一个Workspace,然而我们并不需要这么做。可以拖放一个Workspace到屏幕,ObjectBuilder 会自动的识别这个Workspace,并把它加入到适当的集合中
Workspace分为好几种,具体可以看以下页面
http://richnewman.wordpress.com/2007/11/24/workspace-types-introduction-to-the-cabscsf-part-17/
具体概念回顾,参考我以前的文章
http://blog.csdn.net/lee576/archive/2011/05/03/6386857.aspx
以OfficeExcel来举例就清楚了,它们在Excel中各自扮演的角色一目了然.
回到主线上来,WorkItem就是业务逻辑,WorkItemController就是业务逻辑控制器啦.它所做的工作很简单,避免View与WorkItem之间的耦合,View不知道WorkItem的存在,WorkItem也不认识View,他们都只与WorkItemController发生耦合.从代码来看,WorkItemController的工作无非就是告诉View,工作在哪个Workspace之下,这就是经典的MVC模式,不是吗?
WorkItem: |
A runtime container of the objects and services used by a discrete part of a CAB application. Think of it as a logical sub-process or sub-application. It is the basic unit of software scoping in a CAB application. Your business logic lives in one or moreWorkItems. |
英文的头一句解释似乎很抽象,"CAB程序的一个独立部分,用于对象和服务的运行时容器."
说回我们刚刚生成的这个ModuleController类,如果我们想在主窗体中显示我们自己的view怎么做呢?
首先我们在Views文件夹下右键选择SCSF的模板菜单,选择Add View(with presenter)
这里我们给View起名叫Demo,会自动生成三个文件,DemoView.vb,DemoViewPresenter.vb,IDemoView.vb
哈,典型的MVP模式啊!
DemoViewPresenter类继承自Presenter基类,Presenter又干了些什么呢
设置当前的Workitem,当前的View,把它们关联起来,然后在View的三个生命周期中放上了三个虚函数,目的是便于在子类中重写达到扩展的目的,这就是事件的支持。最后它还负责析构自身,及移除workitem中的view.为什么要移除view呢?无非是为了释放掉资源,本来View就是动态加上去的。在Close的时候就移除view与workitem的关系。
最后,如果我们要把刚刚新建的Demo加到主窗体中怎么做呢?
回到ModuleController类,写上
这是把View设置到一个Workspace上面,WorkspaceNames.LayoutWorkspace
WorkspaceNames是个自定义的常量类
Public Const LayoutWorkspace As String = "LayoutWorkspace"
这个相当于是Microsoft.Practices.CompositeUI.WinForms.DeckWorkspace
证据在这里,ShellForm.Designer.vb里面
还有其它几个常量,具体都是在ShowViewInWorkspace里使用,以后再弄清楚细节
分享到:
相关推荐
微软官方的Smart Client Software Factory 2010 CHM 文档,不过是英文的,配合VS 2010,SCSF 3.0使用,以下是简介: The Smart Client Software Factory is a collection of assets that enables architects and ...
SCSF,全称Smart Client Software Factory,是由微软提供的一个工具和框架,用于简化智能客户端应用的开发。它基于微软的Enterprise Library,尤其是CAB(Composite UI Application Block),提供了构建可扩展、模块...
The Smart Client Software Factory is a Visual Studio extension that helps software teams create composite smart client applications.
SCSF2010帮助文档,帮助你快速开发SCSF程序
5. **企业库(Enterprise Library)**:这个库是Microsoft提供的一个应用程序块集合,包括数据访问、缓存管理、日志记录等多个方面,常常被Web Client Software Factory用于实现应用的基础设施服务。 6. **增删改查...
课程中提到的“组合界面应用程序块”是Smart Client Software Factory的一部分,这是一个设计和构建企业级Smart Client应用的工具集。应用程序块是一种可重用的软件组件,它们封装了特定的功能或设计模式,帮助...
智能客户端软件工厂(Smart Client Software Factory,简称SCSF)则是微软提供的一个工具集,用于简化基于CAB的智能客户端应用的开发过程。它包含了各种模板和指导,帮助开发者快速创建符合企业级标准的、具有丰富...
SCSF(Smart Client Software Factory,智能客户端软件工厂)是微软提出的一个框架,它基于Microsoft Patterns & Practices团队的指导原则,旨在简化开发企业级Windows客户端应用的过程。SCSF提供了一种结构化的方法...
Programming Microsoft® Composite UI Application Block and Smart Client Software Factory WinForm的CAB/SCSF框架
Programming.Microsoft.Composite.UI.Application.Block.and.Smart.Client.Software.Factory
"smartclient software factory"则可能是一个用于构建智能客户端应用程序的开发平台或框架。 SmartClient Software Factory可能是微软的智能客户端解决方案框架(Smart Client Software Factory,简称SCSF),它...
总的来说,"智能客户端例子"是一个展示如何使用Smart Client Software Factory来构建一个利用Web服务访问数据库的桌面应用程序的示例。通过SCSF,开发者可以高效地组织代码,实现模块化设计,同时利用Web服务实现...
smart client software factory _may2007
SCSF(Smart Client Software Factory,智能客户端软件工厂)是一种基于微软.NET Framework的开发框架,旨在提升企业级桌面应用的开发效率和质量。该框架利用设计模式、最佳实践和可重用组件来帮助开发者构建可扩展...
标题 "The first direct port of SCSF 2010 to 2012" 提供了一个关键的信息,即这是一个将Smart Client Software Factory (SCSF) 2010版本直接移植到2012年的项目。SCSF,全称为智能客户端软件工厂,是由微软开发的...
Visual Studio 2010 SCSF(Smart Client Software Factory,智能客户端软件工厂)是微软推出的一种用于构建企业级Windows桌面应用的开发框架。它提供了一种结构化的方法来创建可重用的、可扩展的业务组件和用户界面...
13. **SCSF(Smart Client Software Factory)**:智能客户端软件工厂,是一套工具和模板,用于构建智能客户端应用,提高开发效率。 14. **WCSF(Web Client Software Factory)**:Web客户端软件工厂,类似SCSF,...
SCSF(Smart Client Software Factory)实例是基于微软的Composite UI Application Block(复合UI应用程序块)技术,这是一种设计和构建智能客户端应用的框架。这个实例旨在帮助开发者更好地理解和应用Cab技术,提升...
**CAB SCSF - 架构**是一本专为希望深入了解基于Microsoft的Composite Application Block (CAB) 和 Smart Client Software Factory (SCSF) 设计复合智能客户端应用程序的读者准备的书籍。该书由微软奥地利分公司的...
在给定的文件"20080110--模式与实践系列课程(2):Smart Client Software Factory.pdf"中,可能会涵盖如何使用智能客户端软件工厂创建和管理WCF客户端。这是一个设计模式,用于简化客户端应用程序的开发,使其能够...