freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

petshop的系統(tǒng)架構設計(存儲版)

2025-07-29 18:28上一頁面

下一頁面
  

【正文】 net_regsql S localhost E d MSPetShop4 t Item etaspnet_regsql S localhost E d MSPetShop4 t Product etaspnet_regsql S localhost E d MSPetShop4 t Category et當執(zhí)行上述的四條命令后,aspnet_regsql工具會在MSPetShop4數(shù)據(jù)庫中建立一個名為AspNet_SqlCacheTablesForChangeNotification的新數(shù)據(jù)庫表。當對Product數(shù)據(jù)表執(zhí)行Insert、Update或Delete等操作時,就會激活觸發(fā)器,然后執(zhí)行AspNet_SqlCacheUpdateChangeIdStoredProcedure存儲過程。 利用SqlCacheDependencyAdmin類我們也可以利用編程的方式來來管理數(shù)據(jù)庫對SqlCacheDependency特性的使用。 {因而在對其進行體系架構設計時,整個系統(tǒng)的性能就顯得殊為重要。然而為了保證整個架構的可擴展性,我們也允許設計者建立自定義的CacheDependency類,用以擴展緩存依賴。 } }},其設置如下:根據(jù)各個數(shù)據(jù)表間的依賴關系,因而不同的數(shù)據(jù)表需要建立的依賴項也是不相同的,從配置文件中的value值可以看出。 return LoadInstance(”Category”)。 public static IPetShopCacheDependency CreateItemDependency()圖43 CacheDependency工廠雖然DependencyAccess類創(chuàng)建了實現(xiàn)了IPetShopCacheDependency接口的類Category、Product、Item,然而我們之所以引入IPetShopCacheDependency接口,其目的就在于獲得創(chuàng)建了依賴項的AggregateCacheDependency類型的對象。一個典型的Facade模式示意圖如下所示:圖44 Facade模式Facade模式的目的并非要引入一個新的功能,而是在現(xiàn)有功能的基礎上提供一個更高層次的抽象,使得調用者可以直接調用,而不用關心內部的實現(xiàn)方式。 public static AggregateCacheDependency GetCategoryDependency() return null。,靜態(tài)類WebUtility的GetCategoryName()和GetProductName()方法調用了DependencyFacade類。 data = (categoryId).Name。}GetCategoryName()方法首先會檢查緩存中是否已經存在CategoryName數(shù)據(jù)項,如果已經存在,就通過緩存直接獲取數(shù)據(jù);否則將通過業(yè)務邏輯層調用數(shù)據(jù)訪問層訪問數(shù)據(jù)庫獲得CategoryName,在獲得了CategoryName后,會將新獲取的數(shù)據(jù)連同DependencyFacade類創(chuàng)建的AggregateCacheDependency對象添加到緩存中。也即是說,我們需要引入一個新的對象去控制原來的BLL業(yè)務對象,這個新的對象就是Proxy模式中的代理對象。 private static readonly bool enableCaching = ([”EnableCaching”])。 return (category)。 string key = “product_by_category_” + category。 IList data = (IList )[key]。 // Check if the data exists in the data cache AggregateCacheDependency cd = ()。從職責分離與分層設計的角度分析,我更希望這些Proxy對象是被定義在業(yè)務邏輯層中,而不像在PetShop的設計那樣,被劃分到表示層UI中。 return data。 { {為了改善系統(tǒng)性能,我們就需要為這些實現(xiàn)方法增加緩存機制的邏輯。 = ([”categoryId”])。 AggregateCacheDependency cd = ()。 }}DependencyFacade類封裝了獲取AggregateCacheDependency類型對象的邏輯,如此一來,調用者可以調用相關方法獲得創(chuàng)建相關依賴項的AggregateCacheDependency類型對象:AggregateCacheDependency dependency = ()。 引入Facade模式利用Facade模式可以將一些復雜的邏輯進行包裝,以方便調用者對這些復雜邏輯的調用。 } public static IPetShopCacheDependency CreateCategoryDependency() public Product() : base(”ProductTableDependency”) { }}如果需要自定義CacheDependency,那么創(chuàng)建依賴項的方式又有不同。AggregateCacheDependency類起到了組合CacheDependency對象的作用,它可以將多個CacheDependency對象甚至于不同類型的CacheDependency對象與緩存項建立關聯(lián)。當對應的數(shù)據(jù)表數(shù)據(jù)發(fā)生更改后,該技術能夠將相關項從緩存中移除。 在PetShop PetShop作為一個B2C的寵物網上商店,需要充分考慮訪客的用戶體驗,如果因為數(shù)據(jù)量大而導致Web服務器的響應不及時,頁面和查詢數(shù)據(jù)遲遲得不到結果,會因此而破壞客戶訪問網站的心情,在耗盡耐心的等待后,可能會失去這一部分客戶。 (connectionStr)。 if (!IsPostBack)例如Product數(shù)據(jù)表的觸發(fā)器:CREATE TRIGGER dbo.[Product_AspNet_SqlCacheNotification_Trigger] ON [Product] 列出當前數(shù)據(jù)庫中有哪些表已經采用sqlcachedependency功能。 后接的參數(shù)為數(shù)據(jù)庫的登陸密碼;E有兩種方法配置SQL Server:使用aspnet_regsql命令行工具,或者使用SqlCacheDependencyAdmin類。事實上,在PetShop ,就充分地利用了SqlCacheDependency特性。通過ACT(Application Center Test)的測試,可以發(fā)現(xiàn)設置緩存后執(zhí)行的性能比未設置緩存時的性能足足提高三倍多。我們可以通過OutputCache指令完成對Web頁面的輸出緩存。與之對應的是緩存中數(shù)據(jù)項的移除。此外,調用者還可以通過CacheItemRemovedCallback委托,定義回調方法使得數(shù)據(jù)項被移除時能夠通知用戶。通過某種方法,將系統(tǒng)需要的數(shù)據(jù)對象、Web頁面存儲在內存中,使得Web站點在需要獲取這些數(shù)據(jù)時,不需要經過繁瑣的數(shù)據(jù)庫連接、查詢和復雜的邏輯運算,就可以“觸手可及”,如“探囊取物”般容易而快速,從而提高整個Web系統(tǒng)的性能。 Pattern — bruce zhang 6:20 pm 《解剖PetShop》系列之四四 如果對微型計算機硬件系統(tǒng)有足夠的了解,那么我們對于Cache這個名詞一定是耳熟能詳?shù)摹?首先Dealer的數(shù)據(jù)通過MSMQ傳遞到MSMQ Server,此時可以將數(shù)據(jù)插入到SQL Server數(shù)據(jù)庫中,同時利用FTP將數(shù)據(jù)傳送到專門的文件服務器上。這里就涉及到兩個系統(tǒng)之間數(shù)據(jù)的傳遞。 Microsoft Messaging Queue(MSMQ)技術除用于異步處理以外,它主要還是一種分布式處理技術。 由于OrderProcessor是一個單獨的應用程序,因此它使用的配置文件與PetShop不同,在該文件中,對IOrderStategy的配置為: // Call credit card procesor } catch (TimeoutException) } ((queueTimeout))。 { using (TransactionScope ts = new TransactionScope(, tsTimeout)) int processedItems = 0。 TimeSpan datetimeStarting = new TimeSpan()。 private static readonly asynchOrder = ()。 而配置文件中,OrderMessaging的值設置如下: public static CreateOrder() // This method does not involve in distributed transaction and optimizes performance using Single type { } ,使用了Microsoft Messaging Queue(MSMQ)技術來完成異步處理,利用消息隊列臨時存放要插入的數(shù)據(jù),使得數(shù)據(jù)訪問因為不需要訪問數(shù)據(jù)庫從而提供了訪問性能,至于隊列中的數(shù)據(jù),則等待系統(tǒng)空閑的時候再進行處理,將其最終插入到數(shù)據(jù)庫中。 }}通過ServiceLocator,將所有與配置文件相關的namespace值統(tǒng)一管理起來,這有利于各種動態(tài)創(chuàng)建對象的管理和未來的維護。}}public static object LocateOrderStrategyObject(string className)}public static object LocateDALOrderObject(string className)public static object LocateDALObject(string className) return ()(orderPath).CreateInstance(className)。 private static readonly string path = [”WebDAL”]。也就是說,配置好具體的Factory對象的完整的類名。IOrder = ()。還是回到對PetShop的討論上來。 {當然,如果應用ORM,那么一切就變得不同了。如要使用相關的SQL語句,就利用關鍵字搜索獲得對應語句。這種方法使得程序更加整潔,此外,由于存儲過程可以以數(shù)據(jù)庫腳本的形式存在,也便于移植和修改。PetShop將這些Helper類統(tǒng)一放到DBUtility模塊中,不同數(shù)據(jù)庫的Helper類暴露的方法基本相同,只除了一些特殊的要求,例如Oracle中處理bool類型的方式就和SQL Server不同,從而專門提供了OraBit和OraBool方法。這種與實現(xiàn)無關的設計,保證了系統(tǒng)的可擴展性,同時也保證了數(shù)據(jù)庫的可移植性。第二類數(shù)據(jù)庫對象則是數(shù)據(jù)的業(yè)務邏輯對象。在PetShop , ,所以數(shù)據(jù)層的內容也更加的廣泛和復雜,包括:數(shù)據(jù)庫訪問、Messaging、MemberShip、Profile四部分。不過在PetShop中,由于業(yè)務邏輯相對簡單,這種思想體現(xiàn)得不夠明顯。注意圖中對數(shù)據(jù)訪問業(yè)務的調用,是通過接口模塊IDAL來完成的。而Model模塊則包含了數(shù)據(jù)實體對象。前面提到,也就是說,它應是一個BS系統(tǒng)。只有在一定程度的標準化基礎上,這個系統(tǒng)才是可擴展的,可替換的。例如UI人員只需考慮用戶界面的體驗與操作,領域的設計人員可以僅關注業(yè)務邏輯的設計,而數(shù)據(jù)庫設計人員也不必為繁瑣的用戶交互而頭疼了。表示層:是系統(tǒng)的UI部分,負責使用者與整個系統(tǒng)的交互。PetShop的系統(tǒng)架構設計一、PetShop的系統(tǒng)架構設計在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。如果涉及到數(shù)據(jù)庫的訪問,則調用數(shù)據(jù)訪問層。一旦定義好各層次之間的接口,負責不同邏輯設計的開發(fā)人員就可以分散關注,齊頭并進。進行好的分層式結構設計,標準也是必不可少的。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業(yè)務邏輯層和數(shù)據(jù)訪問層中都增加相應的代碼。對于DAL Interface而言,分別有支持MSSQL的SQL Server DAL和支持Oracle的Oracle DAL具體實現(xiàn)。在業(yè)務邏輯層中,不能直接訪問數(shù)據(jù)庫,而必須通過數(shù)據(jù)訪問層?;蛘呤褂媒涌?,或者使用抽象類,從而脫離對具體業(yè)務的依賴。從本部分開始,我將依次對各層進行代碼級的分析,以求獲得更加細致而深入的理解。由于數(shù)據(jù)訪問層和業(yè)務邏輯層都將對這些數(shù)據(jù)實體進行操作,因此程序集Model會被這兩層的模塊所引用。抽象的接口模塊IDAL,與具體的數(shù)據(jù)庫訪問實現(xiàn)完全隔離。在沒有ORM的情況下,使用Helper類是一個比較好的策略,利用它來完成數(shù)據(jù)庫基本操作的封裝,可以減少很多和數(shù)據(jù)庫操作有關的代碼,這體現(xiàn)了對象復用的原則。最好的方法是采用存儲
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1