首先,来看整个工程结构,在此间单列出来,其中很多是初次阅读写下的,可能有些理解不正确,需要注意:
一、
解决方案的组成项目
a)
Dottext.Web
引用了:
ActiproSoftware.CodeHighlighter
ActiproSoftware.Shared
Dottext.Common
Dottext.Framework
DotText.Search
Dottext.Web.ServiceAPI
FreeTextBox
MetaBuilders.WebControls.DefaultB
MetaBuilders.WebControls.ExpandingPanel
其他就是常规的
System
下的命名空间
:
注意是用了较多的第三方控件
b)
Dottext.Web.ServiceAPI
引用了:
Dottext.Framework
Microsoft.Web.Services
System
System.Data
System.Web
System.Web.Services
System.Xml
重点看使用了
Dottext.FrameWork
的那些?
c)
DotText.Search
引用了:
Dottext.Framework
Highlighter
Lucene.Net
Lucene.Net.Analysis.Cn
System
System.Data
System.Web
System.Web.Services
System.Xml
System.Drawing
System.Windows.Forms
d)
Dottext.Framework
CookComputing.XmlRpc
Lucene.Net
Microsoft.Web.Services
SgmlReaderDll
System
System.Data
System.Web
System.Web.Services
System.Xml
System.Drawing
System.Windows.Forms
也引用到了第三方控件
e)
Dottext.Common
Dottext.Framework
System
System.Data
System.Web
System.Web.Services
System.Xml
System.Drawing
System.Design
f)
Dottext.Web.Admin
ActiproSoftware.CodeHighlighter
Dottext.Framework
DotText.Search
FreeTextBox
SkmRss
System
System.Data
System.Web
System.Web.Services
System.Xml
System.Drawing
System.Windows.Forms
引用了
SKMRSS
值得注意
二、
Dottext.Framework
分析
采用了以下的目录:
Components
ArchiveCount.cs
ArchiveCountCollection.cs
统计文章访问数量的类及收集,注意仅仅是一个实体类,而不是数据库相关类
BlogFile.cs
BlogFileCollection.cs
同样是实体类
BlogUser.cs
用户对象
/
实体类
BuildTree.cs
定义一个构造组件树的抽象接口
CategoryEntry.cs
类别实体对象
CategoryEntryCollection.cs
类别实体收集
CategoryType.cs
类别的枚举
CategoryTree.cs
实现了组件树的接口
Entry.cs
实现
IblogIdentifier
接口,每一个博客账户的实体类
EntryCollection.cs
EntryQuery.cs
反映博客的现状的实体对象
?
EntryRate.cs
统计信息实体类
EntryStatsView.cs
博客统计类别
EntryView.cs
博客的浏览信息实体
EntryViewCollection.cs
博客的浏览信息实体收集
IBlogDataProvider.cs
博客实体类同数据库之间的接口定义
IBlogIdentifier.cs
博客的唯一标示接口
Image.cs
博客相关的图像实体类
ImageCollection.cs
IMail.cs
邮件接口
IPagedResults.cs
分页接口?
KeyWord.cs
博客相关的关键字实体类
KeyWordCollection.cs
Link.cs
连接实体类
LinkCategory.cs
链接的分类实体类
LinkCategoryCollection.cs
LinkCollection.cs
PagedEntryCollection.cs
PagedKeyWordCollection.cs
PagedLinkCollection.cs
PagedReferrerCollection.cs
PagedViewStatCollection.cs
PageType.cs
页类别
PostConfig.cs
发贴选项配置
PostType.cs
信息提交类别,分别有
blog
Article Comment
…
Referrer.cs
引用实体类
ReferrerCollection.cs
Role.cs
配置实体类
SkinControl.cs
博客相关的
skin
类
SkinControlCollection.cs
Tree.cs
数据结构树的实现
ViewStat.cs
访问统计实体类
ViewStatCollection.cs
这些实体类,用于博客操纵以及系统交互操纵时候采用
OOP
进行
Configuration
BlogConfig.cs
博客配置类
BlogConfigurationSettings.cs
Config.cs
配置操作相关的静态函数类
ConfigurationFlag.cs
枚举类型
ExtendedProperties.cs
扩展属性处理类
IConfig.cs
配置处理接口
SiteBlogConfig.cs
站点配置类
SiteBlogConfigCollection.cs
SkinConfig.cs
皮肤配置类
Tracking.cs pingback/trackback
机制配置类
Data
SQLHelper.cs
微软提供的数据库操作类
ADOHelper.cs MS ADO
抽象类
DAABSectionHandler.cs
DataDTOProvider.cs DTO
实现类
DataHelper.cs
数据库访问处理类
IDbProvider.cs
数据库操纵接口
IDTOProvider.cs DTO
接口
IProccessEntry.cs
定义一个操作接口
(
数据库操作的?
)
SqlDataProvider.cs Sql server
操作接口实践类
SqlServer.cs Sql server
的数据库操作类
***
以上各类实现数据层的操纵
Email
IMailProvider.cs
定义
Email
服务商的接口
SystemMail.cs
利用系统接口进行
email
发送的类
基本上实现了
email
的对外接口
EntryHandling
改目录下为
blog
的操作
handle
,因改属于比较重要的目录
有两个目录
:
DefaultHanlders
却省操作类
CommentDeliveryHandler.cs
当到达一个评论时候的处理
CommentFormatHandler.cs
对评论进行防攻击处理句柄
EntryValidationHandler.cs
验证一个条目时候的处理句柄
KeyWordHandler.cs
格式化关键字的处理
TrackBackHandler.cs
处理
TrackBack
WeblogsPingHandler.cs
处理
Ping
WebServicePostHandler.cs ws
接口
EntryFilter
IEntryFactory.cs
操纵处理句柄类的类工厂接口
ProcessAction.cs
处理行为枚举类
ProcessState.cs
处理状态
/
情形定义类
HandlerManager.cs
句柄管理类
EntryHanlderQueue.cs
处理队列类
EntryHandler.cs
处理句柄
还有如下的
Handle
EntryHandler.cs
EntryHanlderQueue.cs
HandlerManager.cs
IEntryFactory.cs
Format
UrlFormats.cs
组装格式化的
URL
Logger
Log.cs
LogManager.cs
日志???
Providers
BaseProvider.cs
提供者基类
BlogProviders.cs Blog
的提供类
ScheduledEvents
Event.cs
事件实体类,用于调度
EventHttpModule.cs
事件处理模块
EventManager.cs
事件管理模块
Syndication
BaseAtomWriter.cs ATOM
文档
XML
输出
BaseOpmlWriter.cs Opml
文档管理输出类的基类
BaseRssWriter.cs RSS
输出类
BaseSyndicationHandler.cs
这类处理的句柄
BaseSyndicationWriter.cs
基类
CachedFeed.cs
缓存
Feed
类
OpmlWriter.cs OPML
输出类
Tracking
AggBugHandler.cs bug
管理类
,
Lazy way to include 1x1.gif :)
EntryTracker.cs Tracker
类
PingBackNotificatinProxy.cs
发出
pingback
的类
PingBackService.cs
服务类,
XMLRpc
的
StatsQueueSchedule.cs
调度队列类,继承自
Dottext.Framework.ScheduledEvents.Ievent
TrackBackHandler.cs
处理
trackback
TrackBackNotificationProxy.cs
代理类
TrackingUrls.cs
处理像素为
1
的图像
html
生成
Verifier.cs trackback/pingback
活动中获取标题的工具类
WeblogsNotificatinProxy.cs
网志通知代理
Util
BinarySerializer.cs
二进制序列化工具类
BlogCache.cs
实现
cache
策略的工具类
BlogRequest.cs
读取一个
Blog
的工具类
BlogTime.cs
处理时间分区、转换的工具类
Globals.cs
全局用到的工具函数
Keywords.cs
根据配置的关键字进行链接生成
ManagedThreadPool.cs
多线程之间的配置管理类
SerializationHelper.cs
序列化操作工具类
StopWatch.cs
调用
win32API
的函数工具类
Transform.cs
转换工具类
WebPathStripper.cs
处理
web
路径的类
XmlSerializerSectionHandler.cs
处理
XML
序列化的工具类
XmlRpc
MetaWeblog.cs
MetaWeblogAPI.cs XML RPC
功能
引用了
CookComputing.XmlRpc
的
XmlRpc
功能
三、
Dottext.Common
阅读
采用了以下目录来分类
Config
BaseBlogConfig.cs
MultipleBlogConfig.cs
SingleBlogConfig.cs
Data
Cacher.cs
关于
blog
的各部分缓存
Transformer.cs
路径等转换处理类
Syndication
存放对于外部交互的
WebAPI
接口
AtomHandler.cs
AtomWriter.cs
CategoryWriter.cs
CommentHandler.cs
CommentRssWriter.cs
CommonRssWriter.cs
EntryCollectionHandler.cs
LinksWriter.cs
RecentCommentsRSS.cs
RssCategoryHandler.cs
RssCommentHandler.cs
RssHandler.cs
RSSLinksHandler.cs
RssWriter.cs
SiteCatalogOpmlWriter.cs
UrlManager
处理对
blog
虚拟目录下的请求处理
BlogStaticFileHandler.cs
HandlerConfiguration.cs
HttpForbiddenHandler.cs
HttpHandler.cs
PageHandlerFactory.cs
UrlHelper.cs
确定
URL
是否重写
,
并写入
HttpContent
中
UrlReWriteHandlerFactory.cs
UrlReWriteModule.cs
四、
DotText.Search.
分析
ConfigAnalyzer.cs
EntryData.cs
Indexer.cs
IndexManager.cs
IndexQueue.cs
QueryIndex.cs
Result.cs
ResultSet.cs
SearchConfiguration.cs
SearchEngineSchedule.cs
SearchLock.cs
Weighter.cs
五、
Dottext.Web.ServiceAPI.
Security
BlogUser.cs
UsernameTokenManager.cs
Utility.cs
六、
Admin
Resources
UserControls
WebUI
七、
DottextWeb
AggSite
Controls
Images
Modules
CaptchaImage
Script
Services
Skins
UI
再来看看通过运行SQL脚本获得的数据库。不过基于本人项目是结合系统已有的数据库来做,所以我修改了脚本(主要是数据库创建sql行,在运行这些豫剧之前,请千万做好数据库的备份工作,我可不想你除了问题来投诉我),将需要加入的数据表和存储过程、视图等加入到自己的数据库中。通过多次揣摩,我整理了一份dottext blog数据库的数据关系说明,特此列在下面,以方便后面的阅读,说实话,不理解数据库中结构,阅读相关的数据库操作会有云遮雾照的感觉,也不知道如何扩充数据结构满足自己项目需求。大家注意的是我阅读的版本应该有博客园自己添加进去的表格和存储过程,但是我只知道blog_profile是新增的,其他的没有仔细阅读,希望大家补充相关说明。
blog_Config
博客配置表
BlogID
唯一标示
UserName
Password
Email
Title
SubTitle
Skin
博客自己选择的皮肤
Application
应用程序,也就是唯一区分自己的目录区域,以后详细分析
Host
服务器,也就是主机名,可以进行多域名配置
Author
作者,一般可以是中文名
TimeZone
IsActive
是否有权限发表
[Language]
该博客的主要语言环境
ItemCount
后台列表的项目数
LastUpdated
最后一次发表时间,这个可能是为了某项任务方便的冗余字段
News
公告正文
SecondaryCss
补充的样式单,作者可以在系统之外提供适合自己的样式单
PostCount
发表文章的数量,包括评论等
?
StoryCount
文章数量
?
PingTrackCount
被
pingback
的次数
CommentCount
被评论的次数
IsAggregated
是否支持聚合到首页
Flag
个人配置值,这个值是
PostConfig
枚举的组合值,决定发表一篇文章后的系统自动配置“动作”,如是否激活,是否允许评论等
SkinCssFile
样式单文件(有些模版允许在模版之外提供
CSS
)
BlogGroup
属于哪个博客群组,这个可以作为圈子的起始
RegisterTime
注册时间
IsMailNotify
是否允许邮件“骚扰”该博客
NotifyMail
邮件通知
Email,
注意,这个邮件同主要注册时候的
Email
不同用途
IsOnlyListTitle
???是否仅仅显示标题
BlogType
(新增字段,用于区分博客的类型)
IsRecommend
(新增字段,用于告诉是否推荐博客)
blog_Content
博客发表的文章、随笔、评论等
ID
Title
标题
DateAdded
添加的日期
SourceUrl
源地址,如果是发表,就为
NULL
,如果是评论之类的,就是评论者提自己提供的地址
PostType
发表的类型,具体以后补充
Author
作者
Email
联系
Email
SourceName
姓名或者
IP
地址
BlogID
该内容属于哪一个博客
Description
简要描述
DateUpdated
更新时间
TitleUrl
标题的连接地址
Text
正文
ParentID
该内容是针对哪一个
content
实体来提出的
FeedBackCount
反馈计数器
PostConfig
发表的配置
ID 1
表示评论,
93
是原创发表,参见
blog_config
中的
flag
字段
EntryName
???
IsOriginal
???
blog_Comment_Audit
!!!是作为备份使用的,删除的文章进入此表格,但是前提是通过系统的删除功能。
blog_Content_Audit
???
blog_EntryRate
博客文章的条目访问记录表,不过估计对系统消耗太大,没有提供
blog_EntryViewCount
博客文章访问统计信息表
EntryID ID
BlogID
博客
ID,
,这两个字段创建了索引,所以一般情况下采用这两个字段做关联的查询效率应该不会很低
WebCount
通过
web
访问的次数
AggCount
聚合访问,通过
RSS
之类的访问。这两个是累计字段
WebLastUpdated
最后访问
AggLastUpdated
最后聚合访问
blog_Images
博客系统管理的图片
ImageID
图片
ID
Title
标题
CategoryID
类别,归类,往往是相册的
ID
Width
宽
Height
高
[File]
文件名
Active
是否激活有效
BlogID
属于哪个博客
UploadTime
更新时间
blog_KeyWords
自定义的给博客使用的关键字配置
KeyWordID
关键字
ID
Word
单词
Text
文字
ReplaceFirstTimeOnly
是否第一次(在文章中的第一个单词)的时候被替换
OpenInNewWindow
新开窗口吗
Url
目标连接地址
Text
提示信息
BlogID
博客
ID
CaseSensitive
大小写是否敏感
blog_LinkCategories
类别表
CategoryID
类别
ID
Title
标题
Active
是否激活
BlogID
属于哪个博客,
-1
表示这是属于系统分类
CategoryType
???这个字段告诉我们当前类别的类型,是连接分类、相册、还是系统的文章分类等。
Description
解释这个类别,或者相册
ParentID
属于哪一个的子对象
UpdateTime
更新时间
blog_Links
可访问的连接表,通过这个表来获取本站的可访问的博客文章
LinkID ID
Title
标题
Url
连结地址
Rss
???
Active
是否有效
CategoryID
属于哪一个类别,外键
BlogID
属于哪一个博客
PostID
文章的发表时候在
blog_content
中的
ID
NewWindow
是否新开窗口
UpdateTime
最后更新时间
Blog_Log
博客访问日志???
LogID
日志编号
Title
标题
Message
消息
UserName
用户名
Url
连结地址
ServerName
服务器名?
BlogID
博客
ID
StartDate
开始时间
EndDate
结束时间
blog_MailNotify
邮件通知
ID
EntryID
哪一个文章
BlogID
哪一个博客
SendToBlogID
发送到拿一个博客
Email
正文内容
blog_Profile
这个是中国汉化者自己增加的表
blog_Referrals
记录引用博客的地址的表
EntryID
那一篇文章
BlogID
博客
UrlID
唯一的连结地址
以上
3
字段创建了索引
[Count]
累计访问次数
LastUpdated
最后访问
blog_Roles
权限表
Roleid
权限
ID
Name
名称
Description
描述
blog_ScheduledEvents
这个好像是一个任务调度表?
blog_SkinControl
博客模版控制字段
介绍了各个后台的对应用户控件的名称
id
控件编号
ControlName
控件名称
Control
控件
ID
DefaultVisible
是否可见
blog_SkinControl_Config
控件配置表,决定每一个博客的界面元素是否可见
ControlID
哪一个控件
BlogID
博客
Visible
是否可见
Blog_urls
存储连结地址
UrlID
url
blog_UsersInRoles
博客所属的权利组别
ID
RoleID
规则,权限类别
UserID
博客
相关视图
:
VIEW_ScheduleEvents
按照
ID
次序进行的调度事件
SiteCatalog
类型为
6
的站点的分类视图
Log_View
排序后的站点日志
blog_Content_View
排序后的系统中的
blog
存储过程:
忽略,太多了,100多个.
以上包括了工程结构说明和数据库表格说明,大致了解以上可以帮助我们后面的阅读理解。