huangyiiiiii

此blog不再更新,大家都去我的新家吧http://codeplayer.blogbus.com

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  32 Posts :: 3 Stories :: 45 Comments :: 0 Trackbacks

程序执行流程
*.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管理 与用户的交互更加人性化
   非常功能强大且复杂的权限管理系统
  

posted on 2005-08-01 01:04 huangyi 阅读(1285) 评论(8)  编辑 收藏 网摘 所属分类: futureCommunityServer

Feedback

#1楼 2005-08-08 08:02 michael
不错 把cs讲的浅显易懂,关注你的系列文章,学习ing……

  回复  引用    

#2楼 2006-04-28 17:35 思无邪      
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

能详细说一下这不分吗?

  回复  引用  查看    

就比如default.aspx吧,里面使用到控件ContentContainer, 而ContentContainer则动态加载*MasterPage.ascx(*的意思是某个),
当然这个时候你得搞清楚一个问题就是:ascx文件加载进来以后就是个普通的对象了,和.cs一样,aspx也是这样。
而*MasterPage.ascx里面包含了一些PlaceHolder控件,这种控件的作用就是占位,他们不包含具体内容,只是用来建立页面的基本布局。
ContentContainer将*MasterPage.ascx加载进来以后,就找里面包含的所有ContentHolder,并根据上下文的一些信息(比如当前用户是哪个啊之类的)向PlaceHolder里填充一些合适的内容。
现在你得先搞清楚的又一个问题就是:CommunityServer是怎么实现换肤的,他是先加载直接用cs编写的控件,再由控件在运行时根据上下文环境加载合适的.ascx皮肤。
往PlaceHolder里填的东西是LayoutControls(可以换皮肤),这个东西其实还是用来布局的,他们对应的皮肤都是 view-*.ascs 。view-*.ascs里面又包含一些控件,这些控件就是用来产生实际内容的, 他们的皮肤就是Skin-*.ascx,这些控件再向数据库中查询数据并显示出来。

我想这里的关键点就是:
1、asp.net里面所有东西都是对象,包括.aspx页面、.ascs用户控件。1.1里面.aspx页面这个类实际上是继承CodeBehind里编写的那个类,2.0里面有了Partial的概念以后,两个东西实际就是一个类了。
1、理解MasterPage的工作方式, 其实就是个PlaceHolder控件的用法
2、理解CommunityServer皮肤的工作方式。运行时动态加载.ascs文件

  回复  引用    

Components层基本没使用什么技巧
DataProvider层使用工厂模式根据配置文件动态选择DataProvidor的执行实际数据库操作的子类。产生了一个隔离数据库操作和components逻辑的抽象层。

说实在的,过了这么一段时间回来再看asp.net的东西。我感觉这么多人花这么多时间研究CS、研究DNN 本身就是对asp.net开发效率低的最好例证!!
选择适合自己的框架非常重要,如果一个框架试图无所不包,结果只会使其丧失了框架最基本的赖以存在的属性:快速开发。

  回复  引用    

#5楼 2006-04-30 11:27 思无邪      
谢谢你的回复.
看CS有两周了,以前看过DotTextWeb的源代码.虽然有些基础还是很吃力.
看代码的目的是开发一个Blog,以前看DotTestWeb,Cuyahogo,Blogx,想结合三个开发.发现DotTestWeb的架构有些乱,后来转到了CS.
看的越多,越不敢下手写了.没有底气,感觉写出来也没有CS好.
看到你的回复,又搜索了一下View-明白了,前几天没有见到过用View-的地方.
不明白为什么不都用skin-??这样不简单吗?
"asp.net开发效率低"我不敢苟同,CS架构弄这么复杂,很大部分是为了扩展和逻辑.
还有什么好的构架吗?我知识不多,请教?
我以前想开发的是:把数据层用Nhibernate,把Rbac简化后开发一个功能更强的Blog.
现在又犹豫了,打算完全用Cs的库,当然还是先实现Blog.






  回复  引用  查看    

#6楼[楼主] 2006-04-30 17:57 suppercabbage      
>>"asp.net开发效率低"我不敢苟同

你用了rails框架就知道我为什么说asp.net开发效率低了,关键的是asp.net还必须依赖这么庞大一个virtual studio.net。 你知道我最近一个网站的程序都是用vim编写的么?除了页面设计使用dw。
CS架构得到的扩展性无非就是两个:皮肤更换、数据库更换。还有就是blog、相册、论坛三者的整合。 真的没必要搞这么复杂。

>>为什么不都用skin-??

貌似,view处理页面布局吧,很久没弄了,机器上CS的程序都没有了。

ps:都到我的新blog去玩吧,太冷清了,呵呵。http://codeplayer.blogbus.com/">http://codeplayer.blogbus.com/

  回复  引用  查看    

#7楼 2006-12-25 10:53 fw[未注册用户]
是否有人愿意就communityServer前一版本communityStarterKit请教一下运行原理?
  回复  引用    

#8楼 2008-09-23 09:50 慧[未注册用户]
能告诉我你的即时联系方式吗?我有一些关于CommunityServer运行的问题要请教你。谢谢:)
  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 204337




相关文章:

相关链接: