Infrastructure.Module
这个项目在你的智能客户端程序中作为一个跨多个工程的,复合UI应用程序块模块的元素实现的容器。当你创建这个模块时,模块就被加入到配置文件目录中。那么意思就是说,当程序启动的时候,复合UI程序块会去加载 Infrastructure.Module 这个模块。
当项目首次创建的时候,项目是空白的,你需要包含并修改在多个模块中使用元素的实现,比如说,一些服务。
public override void AddServices() { base.AddServices(); _rootWorkItem.Services.AddNew<GenericPrincipalImpersonationService, IImpersonationService>(); //... }
Infrastructure.Library
这个项目包含了一套智能客户端应用程序的常见元素的实现。SmartClientApplication Base Class
这个类是从FormShellApplication继承的。它完成程序启动时所有被要求的初始化任务。这些任务包括初步化默认的根WorkItem,增加一套标准的服务,并加载在配置目录中的所有服务和模块。
SmartClientApplication 还会添加额外的服务到根WorkItem中,此服务将在智能客户端的不同模块中被调用。举例来说他会加载 action catalog service (IActionCatalogService) 和 entity translator service (IEntityTranslatorService).
Builder Strategies(生成器策略)
Infrastructure.Library包含一个对象生成器策略,名为ActionStrategy,这一策略用来检查对象方法是否有Action属性,并把这些方法注册到活动目录中。
Services and User Interface Elements(服务和用户接口元素)
Action catalog service. (活动目录服务) 你可以使用一个活动目录来决定一个业务动作是否执行。
Module loading and enumeration services (系统的加载和枚举服务)这些服务扩展复合UI界面程序块内置服务来提供额外的功能,如加载模块,根据用户的角色和从Web服务检索配置文件目录
Entity translator service. 这个服务允许你把一个实体类型转换成另一个类型,反之亦然.
Workspace locator service. 这个服务特定WorkItem中的SmartParts,并返回它所属的Workspace的引用。
WindowsWorkspace. 这是复合UI界面程序块内置WindowsWorkspace的包装器,它允许你设置的模态窗口控件的属性值。
Shell
该项目是应用程序的外壳。它提供了全面的用户界面结构和包含根WorkItem。智能客户端应用程序的基础是ShellApplication类,其中包含加载和运行应用程序的入口代码。这个类继承自SmartClientApplication类,这使得它可以更容易的创建一个有启动窗体的应用程序。Startup Form
ShellForm是程序的启动窗体。它包含两个Workspace,LeftWorkspace和RightWorkspace。如果你为Shell 定义 的布局在一个单独的模块,该ShellForm就会仅包含一个DeckWorkspace
Shell定义的布局在一个单独的模块时,如下图,只有一个DeckWorkspace
