最近在GIX4項目上做了一些性能方面的優化,為了方便和同事們分享經驗,今天准備把一些相關的小技巧都寫一下。這幾個技巧並不難 ,也不是說設計得多好,而是我覺得它們很重要。記得我在做上一個Web系統時,也支持OO的業務富模型,其中大部分不太要求性能的場景 中,我使用了LINQTOSQL來實現數據訪問。而性能要求比較高的場景中,又使用了人工SQL來進行數據訪問。但是在兩種方式中,在對數據 訪問進行優化時,都使用了同樣的方法。今天,在GIX4 中又再次使用同樣的方法。
可見,在面向領域模型進行編程的應用程序中,這樣的優化方案可能會被經常使用到。今天要寫的是以下兩個主要的方案:
1. SQL加載聚合對象。
2. 數據預加載。
隨手在記事本中寫了下提綱,大概分兩次寫完,如下:
Aggregate Model SQL
Why? Senarios.
Shortcoming of lazy load
SQL Design
How to integrate it into our system.
SQL Columns Generate
Load TableInfo
Static SQL format definition
Data Read Design
Algorithm
IGTable
Factory Method
naming convention
How to write codes in these methods
Develop progress
This design is used to refactor.
ForeAsyncLoader
Parallel Server for CSLA
ThreadSafe field
ThreadHelper.AsyncPrincipalWrapper()
Class design
Two ways for creating loading delegate for loader.(Data Load Region)
Summary
Questions remain
Paging?
Refactoring...