【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于.NET+Windows+ServiceCMS静态页面生成系统(NWSCMS)的研究 - 硕士论文相关资料,希望对各位网友有所帮助!
第29卷第3期 沈阳师范大学学报(自然科学版) Vm.29NO.3 2011年7月 J伽r眦f盯甄印粥,zg^坼虺“U矗i硼哑移(N眦“mZ&切托) JuI.201l 文章编号:1673—5862(2011)03—0402一04 基于.NET Windows Service的 CMS静态页面生成系统(NWSCMS)的研究 谷洪彬 (盘锦职业技术学院网络中心,辽宁盘锦 124010) 摘 要:目前基于内容发布的网站CMS(CCmtent M鲫agernellt S),stem)技术日趋成熟,在实际 应用上,或者自己开发,或者采用
开源的系统。
但是不管是自己开发的还是采用
开源的CMS系 统,在网站安全性和web服务器负载方面都存在或多或少的
问题。
探讨了基于.M汀wi抵 Se而ce的CMS静态网页生成系统(NwSCMS)如何克服这2方面的缺陷,并用C#语言实现了一 个相对安全和高效的CMS前端系统。
此系统的运行方式是不同于桌面应用程序的wi慨 service,采用Windows Service形式的好处是不需要用户界面,适合服务器端应用程序的运行方式, 另一方面也因为不需要用户界面而节省了系统资源;同时因为是以Win(10ws Senrice的形式而运 行,可以设置为启动方式,在服务器因意外而重启时会自动运行,在服务器管理方面会很方便。
在 网站安全性方面,避免了以SQL注人为主的黑客攻击。
在服务器负载方面,由于静态页面调用的 是web SeⅣer的线程,大量节省了服务器内存和cPU时间。
关键词:.N】玎winda帅&n,ice;CMS静态页面生成系统;安全性;web服务器负载 中图分类号:曰311 文献标志码:A doi:10.3969/i.ism.1673—5862.2011.03.018 1 NwSCMS在网站安全性和Web服务器负载方面的优势 以内容为主的网站的内容管理(内容的获取、提交到服务器、修改、删除、查询)经历了手工制作页面 (用网页制作工具如FRONTPAGE、DI砸Al\侧EAⅥ£R)、脚本程序(主要是Perl脚本语言)通过批处理 保存内容的文本文件【卜2J,读取其内容并套用到模板文件中生成页面L3-4J、基于数据库的CMS系统3 个阶段【5I。
CMS系统分为内容管理和内容显示2个部分,内容管理供网站编辑发布、修改和删除内容; 内容显示部分通过服务器端脚本程序(AsP,P船,JSP,雕、P.M订等)读取数据库中的内容并动态生成 网站页面显示给浏览内容的网站访问者№_7J。
对于CMS系统的内容管理部分,由于必须心用动态程 序,所以对起安全性的研究比较多【8J。
而对于CMS系统的内容显示部分,由于成型的
开源fI…己开发 的系统基本上采用了与内容管理部分相同的开发环境和语言,在安全性上的研究并未收到足够重视,容 易在
代码上遗留漏洞而被攻击【9J。
而如果采用静态HTML网页的形式,HTML所调用的是Web Server。
由于不同厂商的web Sen,er都经历多年的市场考验,安全性比服务器端的脚本程序要高,安全 漏洞少得多【lo-ll】。
同时,在服务器负载上,由于用户访问每个页面都会调用一个服务器脚本程序的进 城,会给占用大量服务器的CPU和内存。
而如果用户访问的是静态HTML页面,那么用户每次访问一 个页面,将调用web SeⅣer的一个线程,占用很小的服务器CPU资源和内存。
由于以上2方面的原 因,对CMS的显示程序进行了改进,通过C#编码直接调用sQLSERⅥ£R中的网页数据,通过文件I/o 生成静态盯ML文件。
从而使系统在安全性和服务器负载上得到优化。
通过已有的资料和数据,从程序的执行效率(服务器负载)和
系统安全性对已有的WEB解决方案 进行了比较: 牧稿日期:2011m3.13。
基金项目:中国高等教育学会。
十一五“教育科研规划立项课题(08(’xlOll8)。
作者简介:谷洪彬t197l一),男,辽宁盘锦人,盘锦职业技术学院副教授,硕士。
万方数据 第3期 谷洪彬:基于.M汀winda、^,s sen,ice的CMS静态页面生成系统(NwscMS)的研究 403 1.1程序的执行效率(服务器负载) 从表1可以看出,静态页面的执行效率最高,对服务器产生的负载也最小。
衷1卜几M与服务器端脚本语育程序的执行效率比较 程 序 相对效率 HTML 100 ISAPI 50 ASP,ASP.舰,P唧,JSP 10 00M组件 6 CGI l 1.2 HTML页面和服务器端脚本语言安全性比较 从表2可以看出,HTML页面的安全性高于服务器端脚本语言。
表2卜丌M页面与服务器端脚本语言安全性比较 2 NWSCMS在从SQL SERVER数据库中读取数据并生成HTML页面的
程序逻辑 服务器操作系统,web SeⅣer和数据库系统多有很多种,针对不同的组合会有不同的CMS
方案,本 文研究的系统采用的服务器操作系统为应用较广的Windaws Sen,er 2003,Web Server为IIS,数据库系 统为SQL SERⅥ三R 2000。
系统开发环境为Visual Studio 2005,采用的开发语言为C#。
以内容为住的 网站的页面结构一般为根目录上有一个index.html文件,再下层为栏目页,栏目页以下为子栏目页,最 底层为内容页。
生成这些页面文件的次序是:内容页、子栏目页、栏目页。
这样做的原因是上层页面上 会有下层页面的链接,如果先生成上层页,再生成下层页,用户浏览上层页时点击上面的下层页链接,会 找不到那个链接。
不同层级目录中的页面文件虽然不同,但是基本上都是先读取存于页面模板文件(文本文件)中的 页面模板,然后读取SQL SERVER数据库中的表的内容(newS表一内容表、colu舢表一栏目表等),然 后创建新的页面文件,把表的内容和模板文件按页面布局依次写入新创建的页面文件中。
本文仅以最 底层的内容页为例说明这个过程,
代码如下: pathname=args〔0〕;‖提供网站的根目录信息 String cnStr=”Server2(10caI);databaSe。
eduadmin;Integrated Security=true,,; sqlC0nnection cn=new SqICOnnection(cnstr); cn.0pen();‖提取内容表中单条记录的SQL语句 string Sqlstr=”Select*from ne、vs where publisher—id<>’new韶“n’order by id des,; ‖讲SQL语句与数据库链接对接起来 Sql(bmmand cmd=new sql(梳mand(sqlstr,cn); ‖执行SQL语句并把
查询结果读入Sq旧at水eader中 S日lDataReader dr=cmd.ExecuteReader(); whiIe(dr.Read()) { ‖HTML页面文件生成
代码,略。
} dr.Close();‖关闭SqlDataReader
代码中引用了几个写页面布局不同部分的函数(writeHeader、writeLeft、writeRight、writeFboter一 各函数的作用在
代码中已用注释的形式说明,在此不再赘述),由于篇幅关系,不在本文中引用。
万方数据 沈阳师范大学学报(自然科学版) 第29卷 3 基于.NET的windows Service的创建、标记为服务、事务处理和安装过程 3.1 Wjndaws ser、,ice简介 Windows seⅣice是一种应用程序,那种需要在服务器环境中长期运行的应用程序最适合windo、Ⅳs Se州ce。
它不需要用户界面来产生视觉输出。
所有的用户信息一般被写入Windows事件日志(Event L09)里。
service可以在计算机启动后自动运行,也不需要用户登录来执行它。
可以通过Se州ce控制 管理器来控制windows Service一当需要时,可以停止、暂停和启动它〔1 2|。
3.2创建一个windoWs Sen,ice 使用Visual Studio.NET创建windowS Service〔1 3|。
3.3标记为服务 windows SeⅣice
代码中的类扩展了System.SenriceP嗍.Service类。
在.NET中构建的 windo、^,S Service都必须扩展这个类。
它要求要构建的Se而ce覆盖Visual studio缺省包含的下列方法: Disp0Se一清理任何管理的和非管理的资源 onStan一控制Senrice的启动 onStop一控制SeⅣice的停止 3.4事物处理 Visual Studio会自动产生部分windaws Service的
代码和要引用的类。
在此基础上把第2部分中的 页面生成拷贝过来并删除其中屏幕显示的部分即可。
自动生成的windows service
代码如下(由于篇幅 关系,只给出引用的类库,自己创建的类的属性和方法省略,本文第2部分CMS页面生成程序要加入 MyService中,不过要做些改动一只引用Main方法中的
代码,并把屏幕输出的writeLine语句删除): using System; uSing system.Sen,icePmceSs; namespace HTMLMal【er.MyWindowsService { public claSS Mys仑Ⅳice:syst锄.ServiceProceSS.Se而c出ase { ‖静态HTML页面生成
代码,具体
代码略 } } 3.5安装Windo、『vs sen,ioe windows Se州ce与常见的基于windows的桌面应用程序不同。
不能通过简单地运行一个.EⅫ 文件来运行windows Se而ce。
windows Se而ce应该通过使用.NET框架提供的InStallUtil.exe来安 装,或者通过例如MSI文件(Micmsoft InStaller)这样的部署项目来安装〔14〕。
只用InStallUtil程序来安装创建好的windowS SeⅣice还不行。
必须添加一个安装器给创建的 Windaws Se州ce才能让InStallUtil或其他安装程序知道需要哪些配置设置。
添加安装器的步骤如下: 1)在Visual Studio开发环境中切换到设计视图; 2)点击右键,选择“添加安装器”: 3)切换到添加的PmjectInstaller设计视图; 4)设置se州ceInStallerl组件的属性: Se州ceName=CMS静态HrML页面生成系统 StartType=Automatic 5)设置ServicePmceSSInStallerl组件的属性: Ac。
01mt=LocalSyst锄 6)构建方案。
Vi涮Studio会自动产生ProjectInStaJl.岱源文件中的
代码。
windaws Se而∞被构建后,通过以下 步骤来安装这个贽r啊ce:万方数据 第3期 谷洪彬:基于.M汀windo邺seⅣice的CMs静态页面生成系统(NwSCMS)的研究 405 1)打开一个Visual Studio.NET命令提示窗口; 2)改变当前目录到前文创建的项目的bin\Debug目录; 3)运行InstalIutil.exe MywindowsService.exe来注册这个Service并创建在合适的
注册表入口; 4)右键单击计算机桌面上的“我的电脑”,然后弹出菜单中的“管理”; 5)双击“服务和应用”下面的“服务”,会看到我们创建的windows service已经列在服务
列表中; 6)右键单击这个Sen,ice并选择“启动”。
每次需要改变创建的Windows Service都需要来卸载它然后再重新安装它。
在卸载Senrice之前最 好先关闭服务管理器。
如果不关闭,卸载和重新安装Windows service会出现困难。
要卸载senrice,只 需重新运行和安装相同的InStaIIUtiI命令,在后面加一个/u命令开关【15J。
4 总 结 本文探讨并实现了在Windows Sen,er服务器上的基于SQL SERVRER数据库的CMS系统中页面 显示部分通过构建WindowS Service来实现从数据库中提取数据并生成静态HTML页面的实时系统。
应用的技术包括数据库读取、文本文件读取和写入、windows sen,ice的构建等。
虽然都是比较成熟的 技术,但是由于不是通常见到的windows桌面应用程序,在实践中并不会被广泛应用。
这个系统的思 路和实现方法可以推广到其他wEB平台上(LINUx服务器上的剐?ACHE web server等)。
参考文献: 〔1〕毛德祥,罗荣阁.基于ASP.N】盯技术的web应用程序三层设计模型〔J〕.微型电脑应用,2002。
18(3):26—28. 〔2〕李继芳,张树芬,李晋,等.}rrML的语句格式与超文本文件设计〔J〕.信阳师范学院学报:自然科学版,1999,12 (4):467—471. 〔3〕廖述梅,徐升华,陶 皖.带模板的结构化HTML
文档深度标注框架〔J〕.2006.46(S1):936—941. 〔4〕李文立,王乐超,宋春雷.基于HTML树和模板的文件信息提取方法研究〔J〕.计算机应用研究.2010,27(12):4615 —4617. 〔5〕祁晖。
王佳.集群环境下CMS的核心架构设计〔J〕.信息化纵横,2009,28(16):10—12. 〔6〕白金牛。
李惠萍。
王培吉.ASP.NET下利用动态网页技术生成静态HT池页面的方法〔J〕.计算机应用与软件, 2008,25(1):79—81. 〔7〕熊建英,姚磊岳,胡剑锋.纯C#技术下HTML页面动态生成的实现〔J〕.计算机与现代化,2007(10):61—63. 〔8〕郭广军.谢东.李魏豪.基于CMS的网站系统开发技术研究与应用〔J〕.计算机工程与
设计,2011。
31(11):2500一 2502. 〔9〕刘瑜,陈铁英.Mic瑚ft SQL Serv日数据库的安全策略及实现方法〔J〕.
计算机工程与设计。
2003,24(1):68—71. 〔10〕黄明辉.基于sQL蜘的sQL注入攻击防范方法〔J〕.计算机安全,2008(8):122一124. 〔11〕吴长虹.在IIS+9QL&ver中利用IsAPI Rew^te防SQL注入攻击〔J〕.文山师范高等专科学校学报,2009,22(1): 103—105. 〔12〕THEwS D.Build Y6ur First.NET wind0、^,s Ser“ce〔J〕.VisLIaI Studio Maga商ne,2005,15(2):20—22. 〔13〕DAvIS A.w^te a better win凼邺Senrice〔J〕.vi蛐al studio Mag啦ine。
2005,15(12):67—72. 〔14〕s(:HI n胞S s.cr朗te a winda婀seⅣice Ap“J〕.visual Studio M唱捌ne,2003.13(3):56—58. 〔15〕胡俊敏,王进..N盱中web SeⅣic怪事务管理研究〔J〕.沈阳师范大学学报:自然科学版,2009,27(4):451—453. CMS HTML making system b嬲ed on.NET windows ser、rice GU H)以乎6i竹 (Network C∞ter.P蚰jin CoII昭e of
vc吼tiollal鲫d 1khnolo科。
Panji『I 124010.(=hi聃) Abst憎ct:The technology 0f CMS(Cmtent Manag甘n朗t S娜ern)h勰b哪d印loyed for yearS.In practice,p鲋ple develop their own systern or use open source ones.There a爬prDblcms of secu^ty明d web server load n0 matter the C^,lS syst咖is deveIaped or叫tsourced.The.Nt’T Windo岍SeⅣice b雕划CMS can overcome these two pmbIerns.A CMS HTML generating sy3t咖is impIefnented by u商ng C#la啦弘age. This syst咖mns鹊a Wind【m璃Se州ce,which is differ印t f∞m d嘴ktcIp 8ppIication.since it is a Windows service,it doesn’t need a u鸵r interface.it adapts for a server and wiII save syst邸res(Ⅲr馋. ⅣIord)ver,it c&n be Set as sta九up and wiIl be restaned automaticalIy after the o。
mpLlter is r鹤tarted.For the蚰fety,it a蚵cls the SnL响ec“on.Fbr the l∞ding。
it阻v侨lots of seM’s m眦)ry and C11U time because it cans the Web蹬M’s th瑚d. Key words: .NET Winda媚Servh;CMS HTML gen啪t吨systern;web secu^ty;web hd沁万方数据基于.NET Windows ServiceCMS静态页面生成系统NWSCMS的研究作者: 谷洪彬, GU Hong-bin作者单位: 盘锦职业技术学院
网络中心辽宁盘锦124010刊名: 沈阳师范大学学报(自然科学版)英文刊名: Journal of Shenyang Normal UniversityNatural Science Edition年,卷期: 2011293参考文献15条1.毛德祥罗荣阁 基于ASP.NET技术的Web应用程序三层设计模型期刊论文-微型电脑应用 2002032.刘瑜陈铁英 Microsoft SQL Server数据库的安全策略及实现方法期刊论文-计算机工程与设计 2003013.郭广军谢东李魏豪 基于CMS的网站系统开发技术研究与应用 2011114.熊建英姚磊岳胡剑锋 纯C技术下HTML页面动态生成的实现期刊论文-计算机与现代化 2007105.白金牛李惠萍王培吉 ASP.
NET下利用动态网页技术生成静态HTML页面的方法期刊论文-计算机应用与
软件 2008016.祁晖王佳 集群环境下CMS的核心架构设计期刊论文-信息化纵横 2009167.李文立王乐超宋春雷 基于
HTML树和模板的文件信息提取方法研究期刊论文-计算机应用研究 2010128.廖述梅徐升华陶皖 带模板的结构化HTML
文档深度标注框架期刊论文-清华大学学报(自然科学版) 2006z19.李继芳张树芬李晋 HTML的语句格式与超文本文件设计期刊论文-信阳师范学院学报自然科学版 19990410.胡俊敏王进 NET中Web Services事务管理研究期刊论文-沈阳师范大学学报自然科学版 20090411.SCHULTES S Create a Windows Service App 20030312.DAVIS A Write a better Windows Service 20051213.THEWS DBuild Your First NET Windows Service 20050214.吴长虹 在IIS SQL Sever中利用ISAPI ReWrite防SQL注入攻击期刊论文-文山师范高等专科学校学报 20090115.黄明辉 基于SQL Server的SQL注入攻击防范方法期刊论文-计算机安全 200808本文链接:http://d.g.wanfangdata.com.cn/Periodical_sysfxyxb-zr201103018.aspx.