版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
組合型智能客戶端應(yīng)用
WithCompositeApplicationBlock曹嚴(yán)明.NET架構(gòu)顧問
微軟(中國(guó))第1頁(yè)日程組合型應(yīng)用應(yīng)用場(chǎng)景CompositeAppBlock體系架構(gòu)概述CompositeAppBlock主要概念Demo第2頁(yè)JPMC–網(wǎng)上銀行
集成投資信息集成分析工具集成新聞及提醒集成股票數(shù)據(jù)
第3頁(yè)Citibank–信息公布門戶第4頁(yè)Thomson–金融數(shù)據(jù)門戶第5頁(yè)Dell–客服集成桌面第6頁(yè)CommonwealthBankofAustralia–柜員系統(tǒng)第7頁(yè)CommonwealthBankofAustralia–柜員系統(tǒng)第8頁(yè)ClienttierCommonwealth柜員系統(tǒng)體系結(jié)構(gòu)DatastoragePrivateServicesSmartPartActiveDirectoryLocalCacheAgentSecurityInstrumentationOracleConfigurationAuthnOrchestrationPrivateservicenPrivateserviceAuthzConfigLegacysystemsMainframenWSProxyIFWServicenSOFAServiceHelpersDataIntegrationSOFAMainframeIFWService第9頁(yè)DatacentreBranchsiteSmartClientSmartCardLocalADSOFAFarmHISFarmADFarmBizTalkFarmMainframeOtherApplicationServers,OracleEveryServiceauthorizedagainstADCommonwealth柜員系統(tǒng)布署方案第10頁(yè)日程組合型應(yīng)用應(yīng)用場(chǎng)景CompositeAppBlock體系架構(gòu)概述CompositeAppBlock主要概念Demo第11頁(yè)BillingInventoryCRMSmartClientModule組合型
處理方案將不一樣功效模塊組合成處理方案運(yùn)行環(huán)境提供基礎(chǔ)服務(wù)降低開發(fā)成本靈活方便什么是組合型智能客戶端應(yīng)用?SmartClientModuleSmartClientModule第12頁(yè)CompositeUIAppBlock來(lái)由UIP1PAGUIP2PAGCABPAGCCFThomsonDellCAB微軟其它部門客戶處理方案PAG[Otherfieldframeworks]…第13頁(yè)CompositeUIApplicationBlock
創(chuàng)建企業(yè)級(jí)智能客戶端對(duì)系統(tǒng)設(shè)計(jì)團(tuán)體價(jià)值:質(zhì)量與一致性提供一個(gè)針對(duì)企業(yè)級(jí)智能客戶端應(yīng)用公共開發(fā)體系結(jié)構(gòu)提供一個(gè)一致和可預(yù)測(cè)方法來(lái)開發(fā)、包裝、公布基礎(chǔ)組件,方便強(qiáng)制企業(yè)應(yīng)用體系結(jié)構(gòu)標(biāo)準(zhǔn)對(duì)開發(fā)團(tuán)體價(jià)值:生產(chǎn)力提供一個(gè)開發(fā)環(huán)境能很好隱藏復(fù)雜度和提升生產(chǎn)力經(jīng)過高度抽象和關(guān)注點(diǎn)分離,開發(fā)人員能夠關(guān)注于業(yè)務(wù)邏輯提升基礎(chǔ)框架代碼復(fù)用商務(wù)目標(biāo):提升最終用戶生產(chǎn)力和業(yè)務(wù)工作靈敏性企業(yè)能夠以更靈敏方式推出新和升級(jí)功效界面使最終用戶更加快、更準(zhǔn)確完成工作任務(wù),防止經(jīng)過Alt-Tab,Copy-Paste方式作應(yīng)用間數(shù)據(jù)交換一致界面降低了培訓(xùn)費(fèi)用第14頁(yè)主要困難將完全不一樣組件組合成一個(gè)完整應(yīng)用將Shell部分與應(yīng)用邏輯部分分離開來(lái)可擴(kuò)展性使您能使用自己設(shè)計(jì)模式和開發(fā)方法第15頁(yè)ShellCompositeAppBlock概述<ModuleCatalog>ModuleUIElementMgrViewUIElementMgrViewElementElementApplicationHostWorkItemSharedStateSharedEvents第16頁(yè)CAB體系結(jié)構(gòu)ShellHostUserInterfaceElementsSmartPartManagers&BaseClassesHostedControlLayoutMDIStatusStripUIElementMenuStripUIElementToolStripUIElementServicesCatalogReaderLoaderAuthentication[Logging?]Module1SmartPart1Controller1SharedStateModule2SharedStateSmartPartXControllerXSmartPartYControllerYMainFormInitializer[Authorization?]BizLogic開發(fā)Infrastructure開發(fā)Shell開發(fā)第17頁(yè)AWorkItem設(shè)計(jì)組合型應(yīng)用–應(yīng)用邏輯將views(SmartPart)設(shè)計(jì)為獨(dú)立于controllers單元共享模塊狀態(tài)共享基礎(chǔ)服務(wù)封裝用例-重用降低模塊間依賴性盡可能使用events,services,andinterfacesSmartPartAControllerASmartPartBControllerBBusinessEntitiesBusinessEntitiesService1第18頁(yè)AWorkItem設(shè)計(jì)組合型應(yīng)用–界面邏輯SmartParts是控件–Workspaces在一個(gè)可視框架中顯示它們Shell開發(fā)人員開發(fā)Workspaces.控件跟Workspaces無(wú)關(guān)界面元素能夠用共同方法添加以免業(yè)務(wù)邏輯開發(fā)人員把業(yè)務(wù)邏輯跟特定界面格調(diào)緊耦合能夠集中控制用例改變界面方式和時(shí)間Commands連接了可操作界面元素集和一個(gè)業(yè)務(wù)邏輯callbackViewAControllerAViewBControllerBBusinessEntitiesBusinessEntitiesShellUIElemMgr1UIElemMgr2Element1Element2UIInitCommandCommandWindowsWorkspaceTabWorkspace第19頁(yè)應(yīng)用開啟次序:1of2
初始化Shell,Host,和初始服務(wù)Shell開啟Shell給HostFactory提供基本開啟設(shè)置HostFactory依據(jù)這些設(shè)置創(chuàng)建Authentication,CatalogReader,Initializer和Loader服務(wù)實(shí)例HostFactory創(chuàng)建Host并把這些服務(wù)添加給HostHostShellHostFactoryBootstrapConfigDataLoader123AuthenticationInitializer45CatalogReader第20頁(yè)應(yīng)用開啟次序:2of2
初始化Host并加載ModulesShell調(diào)用Host.Initialize(),這個(gè)由Initializer服務(wù)實(shí)現(xiàn)Host調(diào)用Authentication服務(wù),該服務(wù)負(fù)責(zé)在當(dāng)前應(yīng)用程序域中建立principalCatalogReader服務(wù)以SolutionProfile返回基本模塊設(shè)置。CatalogReader服務(wù)封裝了怎樣選擇正確SolutionProfile以加載正確SmartPartsLoader被調(diào)用并賦予SolutionProfile,開始以正確次序加載modules(帶有依賴性屬性)Loader調(diào)用module入口類AddServices()方法,讓module注冊(cè)自己服務(wù)然后調(diào)用Start()方法HostShellLoader1AuthenticationCatalogReaderMyModuleIPrincipal2HostInitializationSolution
Profile34IModuleLoadAssemblyLoadIModuleServiceXYZ5-AddServices
-StartInitializer第21頁(yè)Components,Services&ContainersCAB全部部分都是圍繞著
containers,componentsandservices這三個(gè)概念構(gòu)建采取這個(gè)體系結(jié)構(gòu),你能夠?qū)AB功效進(jìn)行任意擴(kuò)展Components是包含一些邏輯對(duì)象。比如,WindowsControls,controllers帶有業(yè)務(wù)邏輯和服務(wù)代理Services是被應(yīng)用中許多components調(diào)用對(duì)象。比如securityservices,tracingservices,eventingservicesContainers是components和services集合。Container管理其中components生命周期。.Component能夠向container請(qǐng)求一個(gè)service。Containers能夠包含其它c(diǎn)ontainers。ApplicationHostDefaultWorkItemChildWorkItem1ChildWorkItem2Service1Service2Component1Component2Component3Component4Component5Service3第22頁(yè)添加和定位服務(wù)
使用ServiceLocator和Injection模式AddingServicesCABFoundationServicesModule-addedservicesProgrammaticallyDeclarativelyAcquiringServicesFindinupstreamcontainersProgrammaticallyDeclarativelyApplicationHostAWorkItemModuleLoaderModule[Service(typeof(IMyService))]publicclassMyService:IMyService
{
}IMyServiceMyServiceViewControllerpublicclassMyComponent{[ServiceDependency]IMyServicemyService;
}第23頁(yè)日程組合型應(yīng)用應(yīng)用場(chǎng)景CompositeAppBlock體系架構(gòu)概述CompositeAppBlock主要概念Demo第24頁(yè)ShellUIElements:你能夠改變shell中共享元素菜單條,狀態(tài)條,splashscreens,etcWorkspaces:能夠顯示和隱藏控件對(duì)象Tabbed,Zoned/“Portal”,MDI,Windows,Decked…Commands:能夠映射到多個(gè)界面元素“行動(dòng)”比如“顯示客戶明細(xì)”命令有工具條項(xiàng)和菜單項(xiàng)UIElementsShell開發(fā)人員創(chuàng)建Shell
應(yīng)用程序添加UIElementManagers注冊(cè)
WorkspacesPart開發(fā)人員創(chuàng)建控件(SmartParts)定義
Commands映射UIElements
到Commands顯示
Controls
在Workspaces
里第25頁(yè)WorkspacesWorkspaces能夠一致顯示多個(gè)控件Shell開發(fā)人員創(chuàng)建定制workspaces以提供:控件周圍相同框架和修飾共享布局和定位眩目標(biāo)切換ActivationUIs(tabs,Alt-Tabkeystrokes,etc)提供:TabbedWorkspaceWindowsWorkspaceDeckedWorkspaceSmartPart開發(fā)人員能夠創(chuàng)建獨(dú)立于Workspace
PartsTabbedWorkspaceASmartPartYourWorkItemWindowsWorkspaceSplatWorkspaceaWorkspace.Show(mySmartPart);第26頁(yè)ViewAWorkItemStateWorkItemsWorkItem代表一個(gè)用例包含在Workspace之中服務(wù)ServiceAgents并加載狀態(tài)(同時(shí)或異步)創(chuàng)建其它組件(比如Views)。CAB創(chuàng)建Controllers。組件共享WorkItemState并能夠經(jīng)過它控制用例生命周期YourWorkItemRun(IWorkspacews)ServiceAgentServiceAgentBusinessEntitiesBusinessEntitiesControllerA第27頁(yè)EventTopictopic://Customer/ChangedEventBroker–Publisher-SubscriberPublishersSubscribers1*.NETEventwithAttributeEventCatalogService.NETmethodwithattribute[EventSubscription(“topic://Customer/Changed”,ThreadOption.Background)]PublicvoidCustomerChanged(objectsender,CustArgsargs){//gocallsomewebservicesorsomethinglong-running}[EventPublication(“topic://Customer/Changed”)]eventEventHandler<CustArgs>CustomerIdChanged;//firelikeanormal.NETeventCustomerIdChanged(this,newCustArgs(…)
);[EventSubscription(“topic://Customer/Changed”)]PublicvoidCustomerChanged(objectsender,CustArgsargs){MessageBox.Show(args.CustomerId,“newcustomer!”);}Publishers和Subscribers對(duì)以下達(dá)成一致:主題(由URI決定)消息(假如需要一個(gè)特定EventArgs)范圍(全局事件還是局部事件)Subscribers被調(diào)用時(shí)有對(duì)該線程控制Background(Forlong-runningwork)UIThread(toupdateUIcontrolsonappropriatethread)Publisher(onsamethreadaspublisher)第28頁(yè)AWorkItem共享WorkItemState弱類型(useasadictionary)或是強(qiáng)類型(wrapanitemwithget/set)取決于您希望耦合度要多少調(diào)用State:動(dòng)態(tài)編程訪問,或者經(jīng)過IoCattributespublicvoidSomeMethod(){CustomercurrentCust=(Customer)Context.State[”Customer”];}publicclassControllerX:Component(privateCustomercust;[State(“Customer”)]publicCustomer{set{cust=value;}})ViewXControllerXWorkItemStateBusinessEntitiesBusinessEntities第29頁(yè)
狀態(tài)保持(StatePersistence)提供一個(gè)簡(jiǎn)單服務(wù)方式來(lái)存放和加載WorkItemstate本質(zhì)上是對(duì)WorkItem(是一個(gè)applicationcontroller)使用了memento
模式,采取一個(gè)State對(duì)象,并提供一個(gè)
service,這個(gè)service作為這個(gè)State對(duì)象repository。提供實(shí)現(xiàn)包含:SQLIsolatedFileFileOptionalDPAPI加密publicinterfaceIStatePersistenceService{voidSave(Statestate);StateLoad(Guidid);voidRemove(Guidid);}//yourWorkItem[ServiceDependency]publicIStatePersistenceServicepersistence;publicvoidSomeMethod(){persistence.Save(this.State);}第30頁(yè)Demo第31頁(yè)CAB設(shè)計(jì)中所采取幾個(gè)模式Implementpattern…By…ModelViewController
UsingthecontrollerattributeontheviewtogetinjectionUsingthecontrollerbaseclassonyourcontrollersSavingmodelobjectsinWorkItemstateApplicationControll
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 欽北區(qū)2023-2024年部編版九年級(jí)上學(xué)期語(yǔ)文期中試卷
- 九年級(jí)上學(xué)期語(yǔ)文期中考試卷
- 第三中學(xué)八年級(jí)上學(xué)期語(yǔ)文第二次質(zhì)量檢測(cè)試卷
- 結(jié)構(gòu)加固合同范本(2篇)
- 《數(shù)學(xué)物理方法》第5章測(cè)試題
- 南京航空航天大學(xué)《單片微控制器原理及應(yīng)用》2022-2023學(xué)年期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《商業(yè)銀行經(jīng)營(yíng)與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 分式的約分說課稿
- 噸的認(rèn)識(shí)說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《管理學(xué)原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州省火力發(fā)電企業(yè)名錄2017年125家
- 二年級(jí)上冊(cè)科學(xué)二單元《材料》教材解讀
- 新教材湘教湘科版四年級(jí)上冊(cè)科學(xué) 1.1 各種各樣的聲音 教案(教學(xué)設(shè)計(jì))
- 思想道德與法治課件:第四章 第一節(jié) 全體人民共同的價(jià)值追求則
- 戰(zhàn)略管理教學(xué)ppt課件(完整版)
- DB32-T 3129-2016適合機(jī)械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 高危新生兒急診服務(wù)流程圖
- 人教版八年級(jí)上冊(cè)Unit 2 How often do you exercise聽說課的集體備課教學(xué)設(shè)計(jì)
- 五四制青島版2022-2023五年級(jí)科學(xué)上冊(cè)第八單元第26課《我們的住宅》課件(定稿)
- 健康教育學(xué)【完整版】
- 近代笛簫制作師承
評(píng)論
0/150
提交評(píng)論