孟昕(安徽电子信息职业技术学院信息与智能工程系,安徽蚌埠233030)
ASP.NETCMS的设计与开发
孟昕
(安徽电子信息职业技术学院信息与智能工程系,安徽蚌埠233030)
ASP.NETCMS是使用ASP.NET技术设计开发的一款安全实用、精简高效、编码规范、功能易于扩展、注重用户体验的网站内容管理系统(CMS),内容包括匿名角色业务设计、内容编辑管理业务设计、内容审核管理业务设计、栏目编辑管理业务设计、账户权限管理业务设计,着重分析了其中的数据编辑类业务和栏目管理业务的具体开发实现.
内容管理系统;ASP.NET;设计模式;站点地图提供程序
Meng X.Design and DevelopmentofCMSBased on ASP.NET[J].Journalof Yibin University,2015,15(6):61-65.
内容管理系统(Content Management System,CMS)是企业信息化建设和电子政务的必要工具,多用于网站开发或运行维护,以加快网站开发的速度和减少开发的成本[1].目前常用的商用CMS有动易内容管理系统、Zoom la!逐浪CMS、帝国网站管理系统、织梦CMS、方正翔宇CMS、uzcms、Wordpress等.在系统功能和架构上,这些网站内容管理系统都有很大的相似性,一般都具备权限管理、模块管理、界面模板管理、统计分析等功能[2].典型开发语言和技术主要包括:PHP+MySQL、ASP.NET+MSSQL、ASP+ Access/MSSQL、JAVAEE/J2EE.因为自身技术路线局限,Web开发人员只会选择其中自己熟悉的一类中的某个CMS进行网站建设,并用于网站后期运行维护的管理.适用于ASP.NET网站建设的CMS稍少,且多为商用,由于微软的商业运行模式,技术多闭源,基于ASP.NET的开源CMS更少.使用自主开发的CMS无需授权费用,且便于二次开发[3].对于使用CMS较多的企事业单位或软件公司来说,自主开发一款CMS具有必要性和经济意义.
当前,高校对信息化教学越来越重视[4],为解决使用基于ASP.NET的商用CMS系统选择范围小,授权费用开销高,以及对高校教学资源库、精品资源共享课等教学领域网站建设需求考虑不周,二次开发不便或成本高、网站管理效率低等问题,结合学校及其二级部门网站、精品资源共享课等教学网站和其他一般企事业门户网站的建设管理需求,设计开发了一个安全实用、精简高效、编码规范、功能易于扩展、注重操作体验的网站内容管理系统.
结合对学校部门网站、精品资源共享课等教学网站和一般企业门户网站建设与维护的需求分析,按角色划分权限的设计思想,可将CMS用户分为一般用户(匿名角色)、内容编辑管理、内容审核管理、栏目编辑管理、账户权限管理等五种角色,分别具有不同业务操作权限.按角色业务权限划分的主要功能如图1所示.
图1 CMS的主要功能
2.1匿名角色业务设计
网站用户均可以注册新账户,等待具有管理权限的账户将其划分到相应角色,具有不同业务权限,若没有被划分角色,则为匿名角色账户.匿名角色账户具有的业务权限主要有投递稿件和在线留言.
(1)投递稿件
匿名角色账户可为网站指定栏目添加内容,查看所有自己添加的内容,修改或删除自己添加的未被内容审核管理角色发布到网站前端的内容.
此功能比较实用,如cnBeta、雷锋网等很多IT资讯网站内容很大一部分来自网站用户投稿,这大大减轻了网站运维人员的工作量.对于高校内的精品课程或精品资源共享课网站,允许学生为网站一些栏目添加课程学习资源,无疑可提高学生对本课程的参与度和学习兴趣.
(2)在线留言
用户登录后,可以在线留言或提问,增加网站运维方与用户的互动.
除去上述两个业务外,匿名角色用户(包括其他管理账户)均可以修改密码、重置忘记的密码、查看账户信息.
2.2内容编辑管理业务设计
内容编辑管理角色账户主要业务权限有添加编辑删除内容、检索查看内容、发布预览、上传图片或附件.
(1)添加编辑删除内容
具有内容编辑管理权限的用户登录后,可以为网站所有栏目(即文章类别)添加文章,即确定文章的标题、来源、所属栏目、内容摘要、内容详情、标题图片等信息.添加者、添加时间等信息,系统将自动记录,也可以编辑或删除未被发布的文章,系统自动记录编辑时间.已发布的文章,已经在网站前端显示,若要编辑或删除,需要经具有内容审核管理权限的账户取消发布后才可以进行.
(2)检索查看内容
内容编辑管理用户可以查看所有文章列表或按文章所属栏目、标题、来源、内容详情检索文章,并可对文章列表按标题、添加者、添加时间、来源等进行排序,分页查看.
(3)发布预览
预览文章在网站前端页面中的显示效果,便于在发布前发现问题.
(4)上传图片或附件
网站内容中,除文本外,还有图片、视频、音频或其他供链接下载的被允许格式和大小的文件等.若有需要,内容编辑管理角色账户可根据需要上传.
2.3内容审核管理业务设计
内容审核管理账户主要业务权限有发布预览、内容发布或删除、管理图片附件等.
(1)内容发布或删除
匿名账户投递的稿件或者内容编辑管理账户添加的文章,经内容审核管理账户预览检查,或根据需要编辑后,若合格则设置其在网站前端显示,否则删除或留待添加者继续编辑.另外,内容审核管理账户也可以根据实际需要设置某些文章在前端列表页中靠前显示.
(2)管理图片附件
内容审核管理账户可查看上传的图片和其他格式文件,删除未在使用的图片或者文件,以节省部署网站服务器的存储开销.系统应提供自动检索无用图片或文件的功能,以供删除.
2.4栏目编辑管理业务设计
栏目编辑管理主要业务权限有栏目管理、友链管理和数据备份.
(1)栏目管理
网站导航菜单是进入网站各栏目页的入口,同一类别的文章在同一栏目页中以各种列表形式(如标题列表、图片列表、标题和图片列表等)展示出来供用户点击查看.栏目编辑管理账户若可以自由扩展、修改、删除栏目,控制栏目级别,允许投稿与否,允许在前端显示与否,甚至更换栏目内容列表页模板,并在前端页面导航菜单中自动同步,将使网站高度动态化.
(2)友链管理
一般网站前端多会有友情链接列表,在系统中可以对其进行添加、编辑、删除、控制其是否显示等操作.
(3)数据备份
网站的账户信息、栏目信息以及文章信息都存储在数据库中,为防止误操作或者服务器故障导致数据丢失,可以进行数据备份和还原.
2.5账户权限管理业务设计
账户权限管理主要业务权限有权限管理、查看账户、删除账户.
(1)权限管理
一般多个管理员甚至一般用户都会参与到网站的管理,不同的类别(角色)的账户应具有不同的操作业务和访问权限,需要基于角色的权限控制.CMS系统可赋予各角色不同权限,具有账户权限管理权限的账户可把用户划分到某一个或多个角色,以让其获取相应授权.此外,权限管理还包括创建角色、删除角色等.
(2)查看账户
可以查看所有账户的当前联机状态、登录时间、上次活动时间等基本信息.
(3)删除账户
根据需要,删除无用账户.
3.1ASP.NET 2.0数据访问组件结构与设计模式选择
网站内容管理系统实际上是一个数据访问Web应用程序,主要负责把信息写入数据库,而网站前端页面则读取这些信息并展示出来,如图2所示.
图2 网站信息处理过程
对于ASP.NET 1.X技术而言,开发人员需要创建代码访问和更新数据库,将检索到的数据转换为浏览器识别的HTML格式.可考虑采用三层架构设计,创建多个项目来分别实现表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL).
ASP.NET 2.0之后新增了数据访问功能,若将三层架构设计应用在ASP.NET 2.0+开发上,无疑增加代码开销和人力成本,并降低系统性能.对于ASP.NET 2.0+Web应用程序,数据访问依赖于两个独立的体系结构层.第一层完全由Framework提供,直接跟数据源打交道,实现数据访问的基本框架.第二层由为程序员提供数据访问功能的API和控件组成,在实际应用中,常常使用这些API和控件即可实现特定数据存储的功能,提高开发人员的开发效率和Web应用程序的性能.具体来看,数据访问涉及四个主要的组件:Web应用层(ASP.NET)、数据层(ADO.NET)、数据提供程序以及真正的数据源.这些组件构成了所有数据访问Web应用程序的基础结构,如图3所示[5].开发过程主要关注Web应用层一层即可.
图3 ASP.NET 2.0组件体系结构
3.2关键技术实现
本系统实现了前面总体设计中的所用功能需求,现仅就数据编辑类业务和栏目管理业务进行简要介绍.
(1)数据编辑类业务的实现
对于数据访问和表示,ASP.NET提供一系列数据源控件和数据绑定控件,这些控件的设计意图是为了减少数据访问的代码量.例如,开发人员能使用数据源向导自动创建和配置一个数据源控件,使用这个数据源控件发布查询和检索结果.数据绑定控件能够绑定到一个数据源,并能够依据从数据源检索到的信息,自动设置控件的外观和内容[6].这些数据绑定控件具有多种表现形式,包括网格(如GridView)、树(如TreeView)、菜单(如Menu)、列表(如DrowDownList)等.数据源控件通过提供程序(例如ADO.NET中的那些提供程序)绑定到下层的数据存储.使用数据源控件的好处是能够在页面中声明性地表示出来.此外,能够在数据绑定控件中直接使用诸如分页、排序、更新操作等功能,无需编写代码或只需编写少量代码,使开发人员只关注业务逻辑即可.
在本系统中,管理员使用最多的是内容编辑查看、栏目编辑等数据访问功能,主要使用数据绑定控件绑定数据源控件实现.例如,实现内容编辑查看业务功能的页面,见图4所示(部分).页面上部用一个GridView控件和一个SqlDataSource控件绑定,用于查看文章列表,并可排序和分页.页面下部用一个DetailsView控件和SqlDataSource控件绑定,用于对文章内容的编辑.GridView和DetailsView都被重新定义了用户界面.如页面下部的DetailsView控件中,使用了子控件RadioButtonList展示和编辑“所属栏目”,使用了第三方控件CKEditor作为子控件,展示和编辑“详细内容”和“内容摘要”.
图4 内容编辑
(2)栏目管理业务的实现
在ASP.NETWeb程序中,前端页面一般使用导航控件Menu或者TreeView控件绑定SiteMapData⁃Source数据源控件,不需编码即可自动显示网站的导航信息,方便快捷地实现站点导航.
默认情况下,站点的栏目信息存储于站点地图文件中,即数据源是一个后缀为.sitemap的XML文件,站点地图提供程序为Xm lSiteMapProvier,由.NETFramework提供.若要栏目可通过CMS远程动态编辑,实现网站高度动态化,需将导航信息若存储在关系型数据库中,然后通过数据控件编辑.数据源由XML文件转换成关系型数据库后,需开发自定义站点提供程序,并对应用程序进行配置以调用自定义提供程序即可.本系统就是基于以上思路实现的栏目管理.
实现自定义站点地图提供程序过程较复杂,本系统内使用的方法是,创建一个继承自System.Web.StaticSiteMapProvider抽象类的类,重写BuildSiteMap()、GetRootNodeCore()等成员.其中实现BuildSiteMap()成员的部分代码(C#)如下:
∥从数据库创建一个内存中的站点地图并返回根节点
public override SiteMapNode BuildSiteMap(){
lock(this){∥确保站点地图创建时没有被修改
if(!IsInitialized)
{thrownewException("BuildSiteMapcalled incorrectly.");}
if(null==rootNode){∥如果没有根节点,就没有站点地图
Clear();∥清理初始状态
int rootNodeId=-1;∥选择站点地图根节点
if(sqlConnection.State==ConnectionState.Closed)
sqlConnection.Open();
SqlCommand rootNodeCommand=new SqlCommand("SELECTnodeid,url,nameFROMSiteMapWHERE (parentnodeid IS NULL)",sqlConnection);
SqlDataReader rootNodeReader=rootNode-Command.ExecuteReader();
if(rootNodeReader.HasRows){
rootNodeReader.Read();
rootNodeId=rootNodeReader.Get Int32(0);
∥参照当前静态站点地图提供程序创建一个站点地图节点
rootNode=new SiteMapNode(this,root-NodeId.ToString(),rootNodeReader.GetString(1),rootNodeReader.GetString(2));
}else return null;
rootNodeReader.Close();
rootNode=AddChildNodes(rootNode);∥AddChildNodes()定义用于查找子节点并加入
sqlConnection.Close();
}
return rootNode;
}
}
通过自定义站点地图提供程序,栏目可动态编辑、扩展,栏目页模板可动态选择,使网站高度动态化,且不影响前端开发中使用导航控件方便快捷地实现网站导航.
除了实现前述业务功能外,在开发过程中,通过基于角色的权限控制、验证用户输入、页面局部刷新、缓存技术、处理异常、优化URL路径、响应式设计等使程序安全可靠,用户操作体验良好.在使用本CMS系统基于ASP.NET技术进行网站开发时,只需关注少数几个前端页面的设计即可,极大简化网站开发的复杂度.
[1]王德灵,张巧超.CMS在高校院系网站建设中的应用[J].辽宁经济职业技术学院学报,2011(1):63-64.
[2]伍伯华.网站内容管理系统关键技术研究[D].长沙:中南大学, 2010.
[3]李伟利,高宝,许兴.内容管理系统与高校信息化建设[J].实验技术与管理,2011(5):244-246.
[4]刘茗,曾海春.构建高职院校门户网站内容管理系统关键问题初探[J].价值工程,2013(20):242-243.
[5]Patel J,Acker B,McGovern R.ASP.NET 2.0中的数据访问[EB/OL].(2006-01-13)[2014-08-30].http://www.microsoft.com/china/msdn/library/webservices/asp.net/dataaccess.mspx?m fr=true.
[6] 微软公司.Web应用开发:ASP.NET 2.0[M].北京:高等教育出版社,2007.
(编校:李青)
Design and Development of CMSBased on ASP.NET
MENGXin
(Departmentof Information and IntelligentEngineering,AnhuiVocationalCollegeofElectronics&Information Technology,Bengbu,An⁃hui233030,China)
An ASP.NETwebsite contentmanagement system(CMS)that is safe,practical,efficient,coding standardized, expanding easily,focusing on user experience is developed,which includes designs of anonymous role business,content editing business,contentauditing business,column editing businessand accountpermissionsmanagementbusiness.Par⁃ticularattention ispaid to theanalysesof the developmentof the dataeditingbusinessand columnmanagementbusiness.
contentmanagementsystem;ASP.NET;designmodel;site-map provider
TP3
A
1671-5365(2015)06-0061-05
2014-12-15修回:2015-01-02
安徽省高等教育振兴计划重大教学改革研究项目“高等职业院校整体教改研究与实践”(2014zdjy170);安徽电子信息职业技术学院自然科学项目“基于ASP.NET+C#+MSSQL的CMS的设计与实现”(ADZX1410)
孟昕(1981-),男,讲师,工学硕士,研究方向为人工智能和智能计算、计算机应用技术
网络出版时间:2015-02-02 14:05网络出版地址:http://www.cnki.net/kcms/detail/51.1630.Z.20150202.1405.001.html
引用格式:孟昕.ASP.NETCMS的设计与开发[J].宜宾学院学报,2015,15(6):61-65.