随着网络应用的丰富和发展,很多网站往往不能与大量信息衍生及业务模式的变革保持同步,常需要花费许多时间、人力和物力来处理信息的更新和维护工作;在遇到网站扩充的时候,整合内外网及分支网站的工作就变得更加复杂,甚至还需重新建设网站;如此下去,用户始终在一个高成本、低效率的循环中升级、整合。随着计算机网络和各类信息技术的发展,近年来对内容管理系统的需求逐渐增加。内容管理系统是一个包含硬件和软件的网络化系统,它能有效解决用户网站建设与信息发布中常见的问题和需求。对网站内容管理是该系统的最大优势,它流程完善,功能丰富,可把稿件分门别类并授权给合法用户编辑管理,而不需要用户去理会那些难懂的SQL语法。
某高校宣传部自2004年起运行办公自动化系统以来,网络资源迅速丰富,对网络资源的需求也急剧增长。各种新闻会议资料、宣传教育资料、机关报告记录以及院系上报材料等都需要通过内容管理系统实现统一管理。
这里针对某高校宣传部的需求,在Visual Studio2005环境下基于.NET2.0框架构建了B/S模式的内容管理系统。系统不仅实现了内容管理功能,而且支持文件类别的动态管理,文件的分布式存储,信息的复合查询与实时统计和功能丰富的在线编辑等功能。
1 系统设计
1.1 开发应用环境
采用Browser/Server模式,使用Visual Studio.NET 2005开发工具及SQL Server 2000数据库。服务器端使用Windows 2003 Advanced Server操作系统,Internet信息服务器(IIS)作为Web服务器,客户端使用Microsoft Internet Explorer 6.0或更高级版本的浏览器。
1.2体系结构
采用三层体系结构,即表示层、逻辑层、数据层,如图1所示。
三层体系结构缩短了系统的开发周期,可伸缩性更强,处理大量联机事务的性能更高。因此,系统的安全性、扩展性都有很大提高,同时也有利于维护和管理。
1.3功能设计
系统的使用者包括高校各院系负责人,宣传部成员和系统管理员3种。
(1)各院系负责人登陆后所有功能设计如下:
①在线编辑文章并可选择上载图片附件,提交成功后返回本院系提交文章列表可查看详细信息和浏览文章,而无法浏览其他院系的文章;
②上传本地各类文件到服务器上,上传结束后会显示文件详细信息以及下载地址;
③查看系统自动生成地对各院系提交文档统计排序信息,并可选择用饼图显示;
④查看系统自动生成对各院系提交文档录用情况的统计排序信息,并可选择用饼图显示;
⑤浏览本院系提交文章和上传文档,并可修改未录用得信息,而已录用信息则无法修改。
(2)宣传部成员登陆后所有功能设计如下:
①在线编辑文章并可选择上载图片附件,提交成功后返回宣传部成员提交文章列表,可查看详细信息和浏览文章;
②上传本地各类文件到服务器上,上传结束后会显示文件详细信息以及下载地址;
③审核各院系提交各类信息,审核过程中可以添加、修改、查询和删除相关内容;
④查看系统自动生成对各院系提交文档统计排序信息,并可选择用饼图显示;
⑤查看系统自动生成对各院系提交文档录用情况的统计排序信息,并可选择用饼图显示;
⑥浏览宣传部内提交文章和上传文档,可修改该用户提交各类资料。
(3)管理员登陆后所有功能设计。管理员除了具有宣传部用户所有的功能权限外,还增加了如下权限:
①审核宣传部用户提交各类信息,审核过程中可以添加,修改,查询和删除相关内容;
②添加、修改、删除存储卷,动态设置上传路径,设置未审核文件的临时上传路径;
③添加、查询和修改各类用户信息。
1.4数据库设计
通过对系统的体系结构和主要功能的分析后,对其逐步细化,设计如下数据库结构见表1。
服务器段采用存储过程实现对数据的统一操作,执行与数据有关的一切任务,再将结果传给客户端。这样就避免了频繁的数据库表操作,提高了运作效率,提升了访问速度,屏蔽了数据库表间的逻辑关系,使得数据库访问变成数据库提供的服务访问。使用存储过程与将数据传输到客户端过程进行计算相比,速度有了很大提高。
2相关技术细节
2.1 文件的管理和分布式存储
宣传部用户只可以管理各院系提交的所有文件,而系统管理员则可管理包括宣传部用户提交的文件在内的所有文件。各院系负责人上传的文件经过宣传部用户或系统管理员审核后发布。
由于该系统要服务于110多个院系单位,并且支持并发地上传文件和发布文章,因此如果在短时间内并发产生的request过多,就会出现挤占服务器存储空间的情况。此外,长时间的文件积累会使服务器的磁盘空间不足。
为了解决这些问题,系统实现了文件在同一服务器的不同磁盘或不同服务器间的分布式存储功能,并设置了主上传路径和临时上传路径。宣传部用户和管理员上传的文件通过主上传路径保存到主存储区。普通用户上传的文件通过临时上传路径保存到拥有足够空间的临时存储区,通过审核后再合并到主存储区。两个路径都可以动态设置,文件会按不同类别归档存储。
2.2状态的持久化
用户登录后在使用内容管理系统的过程中,会有经历许多的页面跳转,则在用户登录时,只有验证系统随机产生的验证码和数据库中用户信息是不够的,需要将用户信息持久化,不然在用户使用过程中每跳转一个页面都要重新验证用户权限,就会影响到用户的使用体验。 在页面之间跳转而保持用户信息,可以采用多种方法,比如使用cookies,session,application,查询字符,变量等。这里的解决方法是使用cookie的方法来处理页面跳转问题。在页面初始化的过程中,判断客户端是否有用户访问记录存在,有就直接读取该信息并跳转至正常登陆页面,没有则在本地新增一个cookie文件用来存放用户信息,cookie的有效期用户可以自行设置,即可以在登出后删掉,也可以保存自定义时间长度。主要代码如下:
以上方法是用来在页面间保持用户信息,那么在修改,查看文章时,则需要通过变量的方法来保持所选的文章信息。获取之前页面传递变量的主要代码如下:
在设计系统初期系统采用session的方法实现转移,因为session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象,那么任何企图修改session信息伪装登陆的方法都不可能实现,所以其安全性要高于存储于本地客户端的cookie。但是由于该系统要服务于110多个院系单位,并且支持并发地上传文件和发布文章,因此如果在短时间内并发产生的request过多,有限的服务器内存资源将不堪重负,经测试,在使用session方法时,一部分用户不得不通过不断的重新登陆才能使用系统,改为cookie方法时,系统使用正常。换而言之,在不升级服务器硬件的条件下,cookie是更加适合该高校内容管理系统的安全认证方法。
2.3查询与统计
内容管理系统提供了强大的查询功能,具有查询权限的用户可以对全部信息,各类报送材料和用户信息进行多类不同查询方式的查询访问。并实现了对数据中包含的单个或多个字符的任意字符串和与指定模式匹配的字符串,日期或时间值进行查询搜索。
统计模块可以看作是查询模块的固定匹配查询模式。需要统计的信息有各独立部门提交信息按数量汇总排序;各独立部门提交材料按数量汇总排序;各独立部门提交信息采用情况按数量汇总排序。
虽然查询与统计功能不同,但都是建立在对数据库数据进行处理的基础上,所以这里实现的方法主要是应用ADO.NET 2.0中的DataSet类和DataAdapter类来处理数据。查询功能关键代码如下:
统计各院系提交信息量排序,关键代码为:
select npart,count(nid) As Total From news Group By npart
统计各院系上报材料量排序,关键代码为:
Select npart,count(nid) As Total From upfile Group By npart
统计各院系信息采用量排序,关键代码为:
select npart,count(nwhere) As Total From news Group By npart
实际运行截图如下(各院系提交新闻稿件实时统计如图2所示,系统信息查询功能如图3所示)。
2.4在线编辑功能
内容管理系统首要功能就是让用户在该平台下发布,分享各类信息。如果仅提供一个textbox类型的输入框,显然不能满足信息表达多样性的特点。未来使用该系统的用户需要在自己提交的内容中体现信息的重点,美化信息的版式,加入图片或其他上载文V件等新的元素等。该系统提供的解决方案是采用业内公认比较强大的,使用Javascript编写的开源在线编辑器FCKeditor2. 5.1。调用其中的FredCK.FCKeditorV2.dll文件,将这个DLL引用到站点根目录bin下,再添加引用。最后把FCKeditor文件夹拷贝到站点根目录下,修改web.config和fckconfig.js,就能像常用的用户自定义控件一样使用。用户输入界面截图如图4所示。
3结 语
这里介绍了在Visual Studio.NET 2005环境下构建的Brower/Server模式的内容管理系统;详细讨论了系统开发过程中遇到的文件管理、状态持久化、复合查询以及实时统计等问题的解决方案。目前,系统已经运行一年多时间,系统运行正常,用户反映较好,说明该系统具有良好的稳定性和实用性.
参考链接:http://www.picavr.com/news/2009-10/1492.htm
|