一、概念和定义
1、Shell Application
Shell Application是一个.NET程序,提供CAB程序的最外部容器,它包含Main()方法用于启动程序。
2、Shell Form
Shell Form是CAB应用程序的主窗口。
3、Shell
通常意义上的Shell,有时是Shell Form,有时是Shell Application,有时包含这两者。
4、CAB程序包含WorkItem对象的树型结构。该树的根WorkItem就在Shell应用程序中。这时叫根WorkItem,较少见的说法是Shell WorkItem。
5、Service
在CAB中Service由特别的意义。也就是说它是任何类的一个Singleton对象,可以应用在CAB的整个松散耦合连接机制中。
二、用SCSF创建CAB
1、SCSF包含一个向导用于创建包容CAB的工程。
2、在创建CAB时,SCSF需要知道CAB DLL的具体位置,以及其他一些企业级开发库DLL的位置。
3、在用SCSF创建一个完整CAB程序时,该工程中一般包含4~5个工程。
(1)、Shell工程
它是CAB程序的主外部容器。它包含用于Shell Application和Shell Form的类。也包含大多数.NET程序都使用的app.config文件。当然还有用于模块遍历服务的ProfileCatalog.xml文件。
(2)、Infrastructure.Module工程
该工程创建一个DLL,该DLL会在工程启动时由模块装载器服务所装载。它创建一个子WorkItem,并把它添加到WorkItem链中大部分的CAB程序都会包含很多个创建WorkItem的模块。向导创建本工程的原因是演示它是如何工作的。
通常在一个产品级程序中通常使用一个Infrastructure模块来包含其自己的服务和其他资源,而不是把他们都放进Shell工程镇南关。
(3)、Infrastructure.Library工程
包含SCSF添加到CAB工程中的一些Service的实现。例如:Action Catelog服务。DLL通常与Shell工程一起部署并由infrastructur所管理。
(4)、Infrastructure.Interface工程
包含Service接口的定义,注意与其实现所区分。例如:它包含IActionCatalogService接口的定义,但是实现是在Infrastructure.Library工程中。注意:该工程也包含一些我们经常需要用到的特定核心类,比如ControlledWorkItem。
你可以把它作为CAB1.1的一部分。它也包含用于索引WorkItem集合的常数字符串的定义。这种集中化管理字符名称可以有效避免BUG和冲突。
通常需要把该DLL发布到CAB工程的所有开发团队中。也就是说,这些都是需要共享的代码,因此这里的代码要求尽可能的通用化(尽可能的是接口定义而不是类的实现)。
(5)、Infrastructure.Layout工程
如果在使用SCSF向导时选择了创建一个单独工程来定义布局时会创建该工程。
【读书笔记】:Shell和Service(CAB和SCSF编程)
最新推荐文章于 2021-10-02 19:33:03 发布