最近一直忙着学2010、WPF、看架构师教程、学英语,搞得都没时间写博客了。
最近在GIX4项目上做了一些性能方面的优化,为了方便和同事们分享经验,今天准备把一些相关的小技巧都写一下。这几个技巧并不难,也不是说设计得多好,而是我觉得它们很重要。记得我在做上一个Web系统时,也支持OO的业务富模型,其中大部分不太要求性能的场景中,我使用了LINQTOSQL来实现数据访问。而性能要求比较高的场景中,又使用了人工SQL来进行数据访问。但是在两种方式中,在对数据访问进行优化时,都使用了同样的方法。今天,在GIX4中又再次使用同样的方法。
可见,在面向领域模型进行编程的应用程序中,这样的优化方案可能会被经常使用到。今天要写的是以下两个主要的方案:
1. SQL加载聚合对象。
2. 数据预加载。
随手在记事本中写了下提纲,大概分两次写完,如下:
Outline:
PreviewAggregate 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
Why?
Requirements
Corresponding APIs
Class design
Two ways for creating loading delegate for loader.(Data Load Region)
Parallel Server for CSLA
ThreadSafe field
ThreadHelper.AsyncPrincipalWrapper()Summary
Questions remain
Paging?
Refactoring...