組合型智能客戶端應(yīng)用caoyanming_第1頁(yè)
組合型智能客戶端應(yīng)用caoyanming_第2頁(yè)
組合型智能客戶端應(yīng)用caoyanming_第3頁(yè)
組合型智能客戶端應(yīng)用caoyanming_第4頁(yè)
組合型智能客戶端應(yīng)用caoyanming_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論