很多网友表示对 秋色园 的实现原理感兴趣,有很多人,问了很多问题,包括:
1:URL地址怎么没有后缀?
2:多语言是怎么实现的?文章内容是不是在线翻译的?
3:怎么实现多皮肤样式的?
4:怎么只看到ashx文件,看不到aspx页面呢,页面是如何如出来的?
5:是不是MVC写的?答:不是。
6:支不支持MSSQL?
7:生成的html怎么没有空格和换行符?
8:看不懂......
9:......等等。
本系列,将为大伙解析 秋色园 的技术原理,解开以上的迷惑。
一:总体认识
看一下 秋色园 发布后都有哪些目录与文件:
ps:下载地址:http://www.cyqdata.com/download/article-detail-427
1:文件夹内容:
Admin:
这里面是系统管理后台,是单独的一个管理后台系统,采用的开发方式是传统的WebForm+CodeSmith批量生成页面。
由于采用Access发布,因此后台系统需要发布到前台的目录里,所以你在这里看到这个目录。
App_Data:
Bin:
就是放程序的主DLL,大伙都懂的,这里的内容将是本系列最大的解说点。
包括:
CYQ.Data.dll:核心数据操作组件,支持多数据库及界面加载和缓存,就靠它了。
CYQ.Editor.dll:自定义的编辑器组件。
Entity.dll:包含一些固定不变的数据,包括枚举、常量和自定义SQL语句等。
Logic.dll:业务逻辑处理类,基本大大小小的业务都是这里发生的。
Module.dll:自定义的页面生存周期[基类]及共同的简单的全局数据处理。
Tool.dll:几个常用的方法,包括分隔URL获取参数等。
UrlRewrite.dll:自定义的URL重写,秋色园的URL怎么弄的,就它了,也是程序的第一入口。
Web.Core.dll:一些比较固定的类,包括用户验证注册、文件上传、信息加密等。
Web.dll:就是一些ashx文件,即页面生成的。
Web.Extend.dll:包括处理页面标题、访问统计信息等扩展业务。
Editor:
Setting:
存放的是DTD文档解析文件,打开一个html看源代码的首行,都会发现一句:
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
这里把它们下到本地来了,为什么下到本地,这个后面解说。
Skin:
所有界面样式[包括语言翻译文件]存放的地方,里每个文件夹都对应一套样式。
包括:
admin 用户后台样式
default 前台样式,和其它三套一样[skin_bbs/skin_black/skin_blue]
global 全局样式-包括注册/登陆/错误页面等
system_tech 技术频道样式,就是秋色园现在的首页界面样式
system_health 健康频道样式,就是秋色园的健康频道的界面样式
Upload:
文件上传的文件夹,目前包括:
Editor:从编辑器上传的文件与图片。
Lang:个人设置在线多语言编辑时,把语言文件临时复制一份放到这让大伙修改的。
Log:当数据库写异常日志失败时,将写IO文件到此文件夹。
UserHead:用户上传的个人头像。
UserPhoto:用户上传的图片。
2:文件内容:
API.asmx:
这是一个webservice文件,主要是用于采集入库时调用的。
简单的说,秋色园的内容是哪来的?采集的,而且是在本机采集的。
而远程是Access数据库,无法直接调用,因此写了这个API用于入库。
用户后台:
用户前台:
Index.ashx:用户前台的首页处理程序。
Article.ashx:用户前台的文章处理程序。
Photo.ashx:用户前台的图片处理程序。
系统及共用部分:
Rss.ashx: 秋色园 主站和用户的RSS内容处理程序。
Language.ashx:多语言切换的处理程序。
RegLogin.ashx:用户登陆与注册的处理程序。
Error.ashx:站点发生异常时的处理程序。
Home.ashx[可删除]、Home_Tech.ashx:两个是一样的,秋色园技术频道,即主站的处理程序。
Home_Health.ashx:健康频道的处理程序。
本节开篇就整体介绍到这里,大家有一个感性认识。
下节起,将详细的为大伙解析秋色园具体的实现原理,欢迎感兴趣者表示下关注。