程序执行流程
*.aspx <CS:ContentContainer.../>
->ContentContainer.cs Page.LoadControl(*MasterPage.ascx); and fill regions with contents
->*MasterPage.ascx < ... />
->LayoutControls Page.LoadControl(....ascx);
->View-*.ascx < ... />
->Controls Page.LoadControl(...ascx); 直接调用Components中的类
->Skin-*.ascx
->Components 调用
->DataProvider
Components 包括
部分业务逻辑类
数据实体类
功能性的类
站点用户的配置
DataProvider 包括
抽象基类 *DataProvider.cs
SqlServer的实现 *SqlDataProvider.cs
配置类 Provider 包含一些配置信息 比如provider的name ,type. 可以根据这些信息加载正确的DataProvider.
数据基本按照原路返回 简单数据跳过Components
Controls 从Components 中读数据的时候基本遵从以下模式
读缓存
没有
则继续以上路径到 DataProvider
将读出的数据添加到缓存
返回数据
有
返回数据
CommunityServer架构的好处
把表示层完全剥离出来 产生Themes的概念
使用Provider模式 使数据层变得极度灵活
丰富的配置数据管理 方便对站点的定制
统一的缓存管理 提高系统性能
...CommunityServer的主创人员都是微软asp.net开发组的高手 对提高asp.net的性能深有研究
统一的URL管理 与用户的交互更加人性化
非常功能强大且复杂的权限管理系统