惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Palo Alto Networks Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
Schneier on Security
Engineering at Meta
Engineering at Meta
I
InfoQ
L
LangChain Blog
Cyberwarzone
Cyberwarzone
T
Tenable Blog
WordPress大学
WordPress大学
P
Privacy & Cybersecurity Law Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Last Watchdog
The Last Watchdog
Last Week in AI
Last Week in AI
Cloudbric
Cloudbric
S
SegmentFault 最新的问题
爱范儿
爱范儿
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
AI
AI
T
Tor Project blog
I
Intezer
T
Threatpost
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
N
News and Events Feed by Topic
Latest news
Latest news
S
Security Affairs
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog RSS Feed
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
S
Securelist

博客园 - Alex

Friends 104 COMPUWARE 如何用正确的方法来写出质量好的软件的75条体会[收藏]- - Cache的使用原则 C#:一种SQL Server XML和ASP.NET运行时应用程序 ASPX页Web服务调用性能优化 面向异步消息的Web应用(AMOWA) 关于网站减肥(网站板块异步加载技术) 选择自 changzheng 的 Blog Fxcop Windows Mobile开发环境搭建指南 获取滚动 Win2000命令全集 思归的“动态控件的状态问题”的分析 Form(思归):动态控件的状态问题 (From Msdn:)利用 ASP.NET Web 控件和数据绑定提升开发速度 (From CSDN) B/S开发常用JavaScript技术 (转)showModalDialog和showModelessDialog使用心得 ASP.NET 页面对象模型(转) Why does App restart? (FAQ)
From 博客堂 Community Server技术分析——CS是如何将三个项目整合到一起的
Alex · 2005-03-01 · via 博客园 - Alex

Community Server技术分析——CS是如何将三个项目整合到一起的

Community Server1.0 Release了,不负众望,成功的将三个优秀的Asp.Net开源项目(AspNetForums、DotText和nGallery)无缝的整合到了一起,而且有非常好的扩展性,有很多地方值得我们借鉴和学习。在以后的随笔中,我将会向大家逐步介绍一些从中学习到的优秀技术和思想(限于水平和对系统的了解并不是太深入,所叙述的可能比较片面,敬请谅解,望不吝赐教)。先就其是如何将三个项目整合到一起简单介绍一下:

AspNetForums、DotText和nGallery这三个项目架构各有特色,且每个项目有一套独立的用户管理系统。CS要整合这三个项目,要解决这样几个问题:将三个项目共同的地方提取出来;在某一个项目的架构基础上或者完全采用一个新的架构来重构;一套共用的用户管理系统。

整体上来说,CS主要还是基于AspNetForums的架构,提取了三个项目中的共用的部分做为公共项目(CommuntyServer.Components和CommuntyServer.Controls),每个项目都从这两个公共项目继承和派生(CommuntyServer.Discussions、CommuntyServer.Blogs、CommuntyServer.Galleries和CommuntyServer.GuestBooks)。对于数据库的访问,主要在CommuntyServer.SqlDataProvider项目中。

CS采用了Asp.Net2.0中的Membership来作为整个系统的用户管理系统,同时它增加了一些自己的用户属性,对用户角色增加了权限分配。

再看看CS的数据库设计,它提取了共同部分,保留了三个项目所需要的所有表,数据库中"aspnet_"开头的表和存储过程都为MemberShip所需。

CS设计非常精妙的一个地方在于cs_Groups、cs_Sections、cs_Threads和cs_Posts表(分别对应于CommuntyServer.Components命名空间下的Group、Section、Thread和Post类),熟悉AspNetForums朋友的应该都知道forums_Groups、forums_Forums、forums_Threads和forums_Posts这几个表,分别表示“版块组”、“版块”、“主题”和“帖子”。有必要先简单解释一下主题和帖子的区别,当我们在论坛发表一个帖子,自然会有人对这个帖子进行回复,那么由这个帖子和其派生的一系列回复帖子组成一个主题,一个主题由多个帖子组成。分析一下论坛、blog和相册的共同点:他们都会有分组、分类;对于每个帖子一般都有回复(对于blog来说每个随笔都有评论,对于相册来说,每个照片也都有评论),发散一下想一想,我们的很多系统,如文章新闻系统、留言板、软件下载等,也都有这些公共的因素:分组、分类、主题、帖子。当然还有一个问题,那就是这些系统虽然有共同的地方属性,但是也有不同的属性,例如照片就还要有照片的尺寸、软件就需要软件的大小类型等信息,所以在cs_Posts表里面,就增加了"PropertyNames"和"PropertyValues"这两个字段,把这些系统各自不同的属性通过序列化存储在这两个字段中。(如果您对序列化还不了解,可以参考我以前写过的两篇blog:《Asp.Net Forums中对.Net中序列化和反序列化的应用》、《MemberShip中对用户资料的序列化》)。

限于篇幅,不多赘述,以后再逐步就一些具体技术问题向大家介绍。