组合型智能客户端应用-caoyanming

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

组合型智能客户端应用WithCompositeApplicationBlock曹严明.NET架构顾问微软(中国)日程组合型应用的应用场景CompositeAppBlock体系架构概述CompositeAppBlock主要概念DemoJPMC–网上银行集成投资信息集成分析工具集成新闻及提醒集成股票数据Citibank–信息发布门户Thomson–金融数据门户Dell–客服集成桌面CommonwealthBankofAustralia–柜员系统CommonwealthBankofAustralia–柜员系统ClienttierCommonwealth柜员系统体系结构DatastoragePrivateServicesSmartPartActiveDirectoryLocalCacheAgentSecurityInstrumentationOracleConfigurationAuthnOrchestrationPrivateservicenPrivateserviceAuthzConfigLegacysystemsMainframenWSProxyIFWServicenSOFAServiceHelpersDataIntegrationSOFAMainframeIFWServiceDatacentreBranchsiteSmartClientSmartCardLocalADSOFAFarmHISFarmADFarmBizTalkFarmMainframeOtherApplicationServers,OracleEveryServiceauthorizedagainstADCommonwealth柜员系统部署方案日程组合型应用的应用场景CompositeAppBlock体系架构概述CompositeAppBlock主要概念DemoBillingInventoryCRMSmartClientModule组合型解决方案•将不同的功能模块组合成解决方案•运行环境提供基础服务•降低开发成本•灵活方便什么是组合型智能客户端应用?SmartClientModuleSmartClientModuleCompositeUIAppBlock的来由UIP1PAGUIP2PAGCABPAGCCFThomsonDellCAB微软其他部门客户解决方案PAG[Otherfieldframeworks]…CompositeUIApplicationBlock创建企业级智能客户端对系统设计团队的价值:质量与一致性提供一个针对企业级智能客户端应用的公共开发体系结构提供一个一致的和可预测的方法来开发、包装、发布基础组件,以便强制企业应用的体系结构标准对开发团队的价值:生产力提供一个开发环境能很好的隐藏复杂度和提高生产力通过高度抽象和关注点的分离,开发人员能够关注于业务逻辑提高基础框架代码的复用商务目标:提高最终用户的生产力和业务工作的敏捷性公司可以以更敏捷的方式推出新的和升级的功能界面使最终用户更快的、更准确的完成工作任务,避免通过Alt-Tab,Copy-Paste的方式作应用间的数据交换一致的界面降低了培训费用主要困难将完全不同的组件组合成一个完整的应用将Shell部分与应用逻辑部分分离开来可扩展性使您能使用自己的设计模式和开发方法ShellCompositeAppBlock概述ModuleCatalogModuleUIElementMgrViewUIElementMgrViewElementElementApplicationHostWorkItemSharedStateSharedEventsCAB体系结构ShellHostUserInterfaceElementsSmartPartManagers&BaseClassesHostedControlLayoutMDIStatusStripUIElementMenuStripUIElementToolStripUIElementServicesCatalogReaderLoaderAuthentication[Logging?]Module1SmartPart1Controller1SharedStateModule2SharedStateSmartPartXControllerXSmartPartYControllerYMainFormInitializer[Authorization?]BizLogic开发Infrastructure开发Shell开发AWorkItem设计组合型应用–应用逻辑将views(SmartPart)设计为独立于controllers的单元共享模块状态共享基础服务封装用例-重用降低模块间的依赖性尽量使用events,services,andinterfacesSmartPartAControllerASmartPartBControllerBBusinessEntitiesBusinessEntitiesService1AWorkItem设计组合型应用–界面逻辑SmartParts是控件–Workspaces在一个可视框架中显示它们Shell开发人员开发Workspaces.控件跟Workspaces无关界面元素可以用共同的方法添加以免业务逻辑开发人员把业务逻辑跟特定的界面风格紧耦合可以集中控制用例改变界面的方式和时间Commands连接了可操作界面元素集和一个业务逻辑callbackViewAControllerAViewBControllerBBusinessEntitiesBusinessEntitiesShellUIElemMgr1UIElemMgr2Element1Element2UIInitCommandCommandWindowsWorkspaceTabWorkspace应用启动次序:1of2初始化Shell,Host,和初始服务1.Shell启动2.Shell给HostFactory提供基本的启动设置3.HostFactory根据这些设置创建Authentication,CatalogReader,Initializer和Loader服务的实例4.HostFactory创建Host并把这些服务添加给HostHostShellHostFactoryBootstrapConfigDataLoader123AuthenticationInitializer45CatalogReader应用启动次序:2of2初始化Host并加载Modules1.Shell调用Host.Initialize(),这个由Initializer服务实现2.Host调用Authentication服务,该服务负责在当前应用程序域中建立principal3.CatalogReader服务以SolutionProfile返回基本模块设置。CatalogReader服务封装了如何选择正确的SolutionProfile以加载正确的SmartParts4.Loader被调用并赋予SolutionProfile,开始以正确的次序加载modules(带有依赖性的属性)5.Loader调用module的入口类的AddServices()方法,让module注册自己的服务然后调用Start()方法HostShellLoader1AuthenticationCatalogReaderMyModuleIPrincipal2HostInitializationSolutionProfile34IModuleLoadAssemblyLoadIModuleServiceXYZ5-AddServices-StartInitializerComponents,Services&ContainersCAB所有的部分都是围绕着containers,componentsandservices这三个概念构建的采用这个体系结构,你可以对CAB的功能进行任意的扩展Components是包含一些逻辑的对象。比如,WindowsControls,controllers带有业务逻辑和服务代理Services是被应用中许多components调用的对象。比如securityservices,tracingservices,eventingservicesContainers是components和services的集合。Container管理其中的components的生命周期。.Component可以向container请求一个service。Containers可以包含其他的containers。ApplicationHostDefaultWorkItemChildWorkItem1ChildWorkItem2Service1Service2Component1Component2Component3Component4Component5Service3添加和定位服务使用ServiceLocator和Injection模式AddingServicesCABFoundationServicesModule-addedservicesProgrammaticallyDeclarativelyAcquiringServicesFindinupstreamcontainersProgrammaticallyDeclarativelyApplicationHostAWorkItemModuleLoaderModule[Service(typeof(IMyService))]publicclassMyService:IMyService{}IMyServiceMyServiceViewControllerpublicclassMyComponent{[ServiceDependency]IMyServicemyService;}日程组合型应用的应用场景CompositeAppBlock体系架构概述CompositeAppBlock主要概念DemoShellUIElements:你可以改变的shell中的共享元素菜单条,状态条,splashscreens,etcWorkspaces:能够显示和隐藏控件的对象Tabbed,Zoned/“Portal”,MDI,Windows,Decked…Commands:可以映射到多个界面元素的“行动”比如“显示客户明细”命令有工具条项和菜单项UIElementsShell开发人员创建Shell应用程序添加UIElementManagers注册WorkspacesPart开发人员创建控件(SmartParts)定义Commands映射UIElements到Commands显示Controls在Workspaces里WorkspacesWorkspaces可以一致的显示多个控件Shell开发人员创建定制的workspaces以提供:控件周围相似的框架和修饰共享的布局和定位眩目的切换ActivationUIs(tabs,Alt-Tabkeystrokes,etc)提供:TabbedWorkspaceWindowsWorkspaceDeckedWorkspaceSmartPart开发人员可以创建独立于Workspace的PartsTabbedWorkspaceASmartPartYourWorkItemWindowsWorkspaceSplatWorkspaceaWorkspace.Show(mySmartPart);ViewAWorkItemStateWorkItemsWorkItem代表一个用例包含在Workspace之中服务ServiceAgents并加载状态(同步或异步)创建其他组件(比如Views)。CAB创建Controllers。组件共享WorkItemState并可以通过它控制用例的生命周期YourWorkItemRun(IWorkspacews)ServiceAgentServiceAgentBusinessEntitiesBusinessEntitiesControllerAEventT

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功