企業(yè)庫系列講座:緩存應用程序塊.ppt
《企業(yè)庫系列講座:緩存應用程序塊.ppt》由會員分享,可在線閱讀,更多相關《企業(yè)庫系列講座:緩存應用程序塊.ppt(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。
November2004 EnterpriseLibraryCachingApplicationBlock 莫淘ArchitectEvangelistDevelop PlatformEvangelismMicrosoft China November2004 溫故 知新 什么是Patterns practicesApplicationBlock的發(fā)展 November2004 Patterns practicesArchitectureGuidancefortheEnterprise ReferenceArchitectures ApplicationBlocks GuidesGuidanceforbroadhorizontaltopicssuchassecurity performance deploymentandoperations Patterns D A D I A D I Atomicsolutionstorecurringproblems Sub system levelguidanceforcommonservices System levelguidanceforcommoncustomerscenarios D A D I A D I Availableonline ProvenBasedonfieldexperienceAuthoritativeOfferthebestadviceavailableAccurateTechnicallyvalidatedandtestedActionableProvidethestepstosuccessRelevantAddressreal worldproblemsbasedoncustomerscenarios Factory Plugin Enterpriselibrary Indigo November2004 AppBlockHistory Feedback 發(fā)展歷史 History 應用程序塊 Applicationblocks 已經(jīng)誕生多年在Microsoft內(nèi)部 程序塊產(chǎn)生在不同的設計組中 并演化了多年程序塊涉及的范圍verysimplehelperspowerfulframeworkslikeUIP幾點共識降低項目成本增加解決方案的可用性業(yè)界反饋 Feedback 提供了程序塊的一致性提供了模塊之間更少的依賴性OnotherblocksOninfrastructure更容易的配置易用性 November2004 Security Crypto Configuration DataAccess Logging Caching Exceptions EnterpriseLibraryv1總體架構 Legend Dependency Plug in ConfigTool November2004 EnterpriseLibraryVision Partnerblocks Customerblocks Communityblocks p pblocks BlockSpecification November2004 EnterpriseLibrary的定義 EnterpriseLibrary是 是面對一些企業(yè)級應用開發(fā)中常見的問題的解決方案庫 libraryofapplicationblockswhichsolvecommonchallenges 是一系列可以工作在任何架構下的幫助類 Asetofhelperclasseswhichworkinanyarchitecturalstyle 是體系架構上的指導性文件 Architecturalguidanceembodiedincodewhichshipswithfullsourceallowingyoutomodifyandextend 是免費的 Availableasafreedownload EnterpriseLibrary不是 不是 Net架構中的一部分 Apartofthe NETFramework 不對任何體系架構后依賴或影響關系 Anapplicationframeworkthatimposesanarchitecturalstyle 不是一種官方支持的產(chǎn)品 AMicrosoftproductwithsupport compatibilityandlocalization 不用于銷售 Forsale November2004 Enterprise的未來之路 微軟將一如既往的在改領域進行投入 Wewillcontinuetoinvestinblocksandblocklibraries 將不斷的擴展 升級該方案庫 Additionalcapabilitiesandscenarios Newblocks suchasValidationUpdatingexistingapplicationblocks suchasUIPScenariossuchasSmartClient融入其他的產(chǎn)品 Enablement VisualStudiotoolingandwizardsDeepercommunitypenetration會出現(xiàn)在新的 NET2 0 Whidbey上的方案BlocksrevvedtoadheretobestpracticesofnewplatformIntegrationwithnewVS2005experiences November2004 今天的交流題目 Patterns practices中關于緩沖的指導意見關于CachingApplicationBlock應用場景和設計指南的描述應用示例問題解答 November2004 有同感 用戶抱怨系統(tǒng)的性能您已經(jīng)將明年的預算花在如何擴展現(xiàn)有的數(shù)據(jù)庫服務器的吞吐能力上了您的應用程序在沒有和后端的數(shù)據(jù)源連接時 程序不能夠執(zhí)行或執(zhí)行的很不好 November2004 為什么需要Cache 性能采用一種更為密切的方式 為數(shù)據(jù)的消費者存儲相關的數(shù)據(jù) 以避免重復性的數(shù)據(jù)創(chuàng)建 處理和傳輸 可擴展性避免在相同的數(shù)據(jù)處理和業(yè)務邏輯上浪費資源 減小數(shù)據(jù)庫的請求 以便允許更多的客戶訪問 可用性在另外的地方存儲數(shù)據(jù) 您的應用能夠在網(wǎng)絡的的延時 WEB服務和硬件的問題中減小損失 November2004 典型的應用場景 提問 以前不是有緩沖嗎 System Web Cache回答 全面性 易用性 一致性 您正在使用本地的緩沖創(chuàng)建智能客戶端應用使用緩沖功能 支持離線應用您正在創(chuàng)建WINDOWS服務或者控制臺應用 并且需要使用緩沖改善性能 November2004 什么是緩沖應用程序塊 提供了一些方便易用的 可擴展的緩沖機制 這些緩沖機制可以使用在整體應用中的各個層面 支持后期存儲 支持的存儲方式包括數(shù)據(jù)庫方式和獨立存儲方式 Isolatedstorage 便于應用方便的重新啟動便于使用便于配置支持使用配置工具線程安全可以確保在內(nèi)存中的緩沖和后端存儲保持同步 November2004 深入了解緩沖模塊 如何創(chuàng)建緩沖配置文件選擇后端存儲創(chuàng)建緩沖向緩沖中添加一項設置過期策略從緩沖中獲得一項內(nèi)容緩沖裝載策略從緩沖中移除一項刷新緩沖關鍵特性 November2004 Security Crypto Configuration DataAccess Logging Caching Exceptions CacheAB所處的地位 Legend Dependency Plug in ConfigTool November2004 在您的應用配置文件中增加一個緩沖應用為要創(chuàng)建的數(shù)據(jù)項創(chuàng)建Cachemanager每一個子項需要有獨立的名字確定哪一個是默認的Cachemanager 創(chuàng)建配置文件 November2004 關于緩沖存儲的幾點建議 內(nèi)存駐留型緩沖的典型應用 應用程序經(jīng)常使用同樣的數(shù)據(jù)一個應用程序經(jīng)常需要重新獲得數(shù)據(jù)磁盤駐留型緩沖的典型應用 數(shù)據(jù)量比較大同時 從應用服務提供商 例如數(shù)據(jù)庫 重新獲取數(shù)據(jù) 開銷比較大在緩沖的生命周期中 必須經(jīng)歷系統(tǒng)的重新啟動 CachingArchitectureGuidefor NETFrameworkApplications November2004 緩沖通常在內(nèi)存中還經(jīng)常需要有后端存儲沒有后端存儲 是不容易實現(xiàn)持久化的因此持久化存儲是非常必要的持久化的后端存儲當需要被緩沖的數(shù)據(jù)的生命周期中不可避免的需要經(jīng)歷進程或系統(tǒng)的重啟時支持使用隔離式存儲和數(shù)據(jù)庫方式 DataAccessApplicationBlock 內(nèi)容需要和緩沖一致 Rollback 內(nèi)容是從緩沖的初始化時裝載到后端的 關于緩沖存儲的幾點建議 2 November2004 關于緩沖存儲的幾點建議 3 隔離式存儲支持基于用戶和程序集的隔離機制不需要UniquePath了避免HardCodeCachingApplicationBlock提供了分區(qū)機制 在一個應用程序中 并存多個cachemanagers不支持 也不應該支持多個由多個Cachemanager共享存儲或分區(qū) November2004 關于緩沖存儲配置 緩沖還要加密 內(nèi)存溢出 木馬程序 DataAccessApplicationBlock利用數(shù)據(jù)庫實例進行分區(qū)的命名和數(shù)據(jù)的分離需要數(shù)據(jù)庫訪問模塊 DAAB 的支持 November2004 如何加密 需要CryptographyApplicationBlock模塊的支持應該使用對稱算法 關于緩沖存儲配置 2 November2004 創(chuàng)建默認cachemanager 典型用法 CacheManagermyCache CacheManager GetCacheManager 創(chuàng)建命名的cachemanager CacheManagerproductsCache CacheManager GetCacheManager Products November2004 增加條目 默認的增加一個條目 productsCache Add ProductID123 productObject 默認值清除優(yōu)先級 Normal過期設置 Noexpiration注意增加第二個同樣KEY值的條目 會替換掉第一個當希望使用后端存儲時 對象應該支持序列化 November2004 定義過期策略 基于時間的過期設置過期時間支持兩種 相對時間絕對時間對于使用那些變化比較大的數(shù)據(jù) 例如經(jīng)常被更新的數(shù)據(jù)或只在一段時間內(nèi)存在的數(shù)據(jù)時 建議存在在緩沖中基于提醒的過期 且支持策略對該資源屬性的更改 對應的提醒 Suchasafile afolder oranyothertypeofdatasource 只是Remove November2004 基于時間的過期 絕對時間 Absolute 允許您定義緩沖項的生命周期簡單的方法 指定一個特定的時間作為過期擴展方法 您可以通過表達式定義EveryminuteEverySunday15thofEverymonth 變化的時間允許您定義針對條目的被調(diào)用的兩次之間的間隔 定義條目的生命周期 November2004 基于時間的實例 DateTimerefreshTime newDateTime 2005 3 21 2 0 0 AbsoluteTimeexpireTime newAbsoluteTime refreshTime primitivesCache Add Key1 CacheItem1 CacheItemPriority Normal null expireTime 需要使用ADD方法CachingApplicationBlock支持基于時間的表達式AbsoluteTimeSlidingTimeExtendedFormatTime例如 expireat2 00AMon3 21 05 November2004 變化時間的過期 TimeSpanrefreshTime newTimeSpan 0 5 0 SlidingTimeexpireTime newSlidingTime refreshTime primitivesCache Add Key1 CacheItem1 CacheItemPriority Normal null expireTime 例如 被訪問5分鐘后 November2004 支持的時間表達方法和示例 Extendedtimeformat meansruneveryperiodExamples expireseveryminute 5 expire5thminuteofeveryhour 21 expireeveryminuteofthe21sthourofeveryday 3115 expire3 31PMeveryday 74 6 expireSaturday4 07AM 152147 expire9 15PMon4July November2004 擴展時間應用范例 ExtendedFormatTimeexpireTime newExtendedFormatTime 00 6 primitivesCache Add Key1 CacheItem1 CacheItemPriority Normal null expireTime 擴展時間應用范例 expireatmidnighteverySaturday November2004 基于提醒機制的過期 FileDependencyexpireNotice newFileDependency Trigger txt productsCache Add Key1 CacheItem1 CacheItemPriority Normal null expireNotice 文件依賴的例子 expireifthefileTrigger txtischanged 您可以創(chuàng)建自己的過期類 只需要實現(xiàn)ICacheItemExpiration接口 November2004 配置過期表決的頻率 通過后臺線程 BackgroundScheduler 移除過期事項您可以對次線程進行配置過高 CPU浪費 且CACHE沒有起到作用過低 內(nèi)存消耗太大建議使用性能計數(shù)器監(jiān)視一下 November2004 條目移除提示 productsCache Add Key1 CacheItem1 CacheItemPriority Normal newProductCacheRefreshAction expireNotice CachingApplicationBlock提供了項目移除的提醒 并在一下情況下被激活條目過期了條目被顯式的移除了條目被策略的清楚了需要實現(xiàn)ICacheItemRefreshAction接口 November2004 條目移除提示 2 Serializable publicclassProductCacheRefreshAction ICacheItemRefreshAction publicvoidRefresh stringkey objectexpiredValue CacheItemRemovedReasonremovalReason Itemhasbeenremovedfromcache Performdesiredactionshere basedupontheremovalreason e g refreshthecachewiththe item 一個類實現(xiàn)了ICacheItemRefreshAction接口 同時如果需要后端存儲時 還必須被標識為Serializable Especiallyforpersistentbackingstore November2004 類型要正確一定要檢查空值 itemnotfoundincache 從Cachemanager中獲取 publicProductReadProductByID stringproductID Productproduct Product cache GetData productID if product null Itemnotincache 類型轉(zhuǎn)換 檢查空值 November2004 裝載緩沖 緩沖的前期裝載 Proactiveloading 應用啟動時裝載優(yōu)點全部裝載后 應用運行性能提升明顯缺點啟動時間長可能帶來不必要的資源浪費為了提升啟動性能而進行的 基于不同線程的裝載 有造成了應用結構的復雜性緩沖的被動裝載 Reactiveloading 按需裝載優(yōu)點只有在需要的時候才裝載 對資源的需求小缺點但是在首次裝載的時候 速度慢 November2004 1 Createcachemanager 主動裝載的實例 CacheManagerproductsCache CacheManager GetCacheManager RetrievethedatafromthesourceArrayListlist dataProvider GetProductList Addalltheitemstothecachefor inti 0 i list Count i Productproduct Product list i productsCache Add product ProductID product 2 Additemsduringcomponentinitialization November2004 后期裝載的實例 Productproduct Product productsCache GetData productID if product null Retrieveitfromthedataprovider andcacheitformorerequests product dataProvider GetProductByID productID if product null productsCache Add productID product 1 Createcachemanager CacheManagerproductsCache CacheManager GetCacheManager 2 Additemswhenretrievedfromdatasource November2004 何時使用主動裝載 Proactivecaching 在一些情況下中 他們自己有更新周期 當裝載到緩沖將導致狀態(tài)過期的出現(xiàn) Youareusingstaticorsemistaticstatethathasknownupdateperiods Ifyouuseitinotherscenarios thestatemightexpirebeforeitisused 此時 您需要清楚的知道被緩沖的對象的生命周期 Youareusingstatewithaknownlifetime您還需要提前知道占用資源的程度 Youareusingstateofaknownsize Ifyouuseproactivecachedataloadingwhenyoudonotknowthesizeofthedata youmightexhaustsystemresources Youmusttrytonotuseresourcesthatyoudonothave 使用不穩(wěn)定的資源時 盡量多使用主動裝載緩沖 Youhaveproblematicresources suchasaslowdatabase aslownetwork orunreliableWebservices Youcanusethistechniquetoretrieveallthestateproactively cacheit andworkagainstthecacheasmuchasitcan 最佳實踐 Cache主動裝載 November2004 何時使用被動裝載 需要緩沖的對象狀態(tài)過多或系統(tǒng)資源不足的情況 Youareusinglotsofstateandyoudonothavesufficientresourcestocacheallstatefortheentireapplication 資源的可靠性和性能良好 此時被動裝載的又是更明顯 Youareusingreliableandresponsiveresources suchasadatabase network orWebservicethatwillnotimpedeapplicationstabilityandperformance 希望利用緩沖機制 但是在應用程序的初始化時 希望不使用緩沖 而是根據(jù)用戶輸入等條件 進行緩沖 Youareinterestedincachingdatathatisnotavailableduringtheinitializationofanapplication Forexample thisdatamightbeaffectedbyuserinputsuchascommonsearchqueriesoruser specificdatasuchasauser sprofile 最佳實踐 Cache被動裝載 November2004 1 Removeitemwithspecifiedkey 從緩沖中移除 productsCache Remove Product101Key 2 Noerroroccursifkeyisnotfound因此通過這種方法 不能知道ITEM是否移除了如果對象實現(xiàn)了ICacheRefreshItemAction 可以有信息 November2004 刷新緩沖 為了更有效的利用資源 您需要刷新緩沖 Usetomanagestorage memoryandotherresourcesefficiently精確刷新 Explicitflushing使用代碼 Initiatedbyapplicationcode全部移除 Removesallitemsfromthecache自我清除 Scavenging使用應用程序塊的功能 Initiatedbyapplicationblock基于優(yōu)先級和最后訪問的時間 Baseduponpriorityandlastaccesstime控制移除的精確度 Configurationsettingscontrolsizeofcacheandnumberremoved productsCache Flush November2004 自我清除 1 自我清除的配置緩沖中的最大元素數(shù)量 Maximumelementsincache一次移除的數(shù)量 Numberofitemsremovedwhenscavengingoccurs November2004 自我清除 2 為緩沖建立優(yōu)先級 productsCache Add Key1 CacheItem1 CacheItemPriority High newProductCacheRefreshAction expireNotice 優(yōu)先級的值LowNormalHighNotRemovable自我清除的算法 不需要擴展 View ApplicationShare Demonstration LiveMeetingView ApplicationShare UseLiveMeeting EditSlideProperties toedit November2004 再次重復幾個關鍵點 1 支持客戶化后端存儲 Backingstoreprovider ImplementIBackingStore derivefromBaseBackingStore UseConfigurationConsoletoselectcustomprovider支持客戶化過期策略ExpirationpolicyImplementICacheItemExpirationSpecifyobjectoncalltoAddmethodofCacheManagerobject另外 Anythingandeverything youhavethesourcecode Pleasepostextensionsandsuggestionstothecommunity November2004 Security Crypto Configuration DataAccess Logging Caching Exceptions 再次重復幾個關鍵點 2 Legend Dependency Plug in ConfigTool Announcing EnterpriseLibrary1 0 DownloaditToday November2004 patterns practicesLive 2005 6 7EnterpriseLibraryLogging InstrumentationApplicationBlock2005 6 7EnterpriseLibraryExceptionHandlingApplicationBlock2005 6 7EnterpriseLibraryCryptographyApplicationBlock2005 6 7BuildyourownEnterpriseLibraryApplicationBlock EnterpriseLibraryCommunity- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 企業(yè)庫 系列 講座 緩存 應用程序
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.kudomayuko.com/p-5176045.html