计算机应用
Computer Applications
1999年 第19卷 第7期  Vol.19 No.7 1999



高效灵活的站点维护的实现
杨建武　方曲祥

　　摘　要　随着Internet应用的深入，站点的更新更加频繁和重要，使站点维护工作的难度迅速增大。本文作者采用了“逐步求精”、“分层细化”的思想，并引入“宏”的概念，采用了“模版”、“向导”、“组件”等技术，开发出一高效、灵活的Internet站点维护系统。
　　关键词　Internet，逐步求精，“宏”，COM，IIS
　　
THE IMPLEMENTATION 
OF MAINTENANCE SYSTEM OF INTERNET SITE

Yang Jianwu　Fang Quxiang
National Engineering Research Center for New Technology in Electronic Publishing，
Institute of Computer Science & Technology, Peking University, Beijing 100871

　　Abstract　With applying Internet more deeply, Internet sites update more frequently, as a result the maintenance of web sites′ content becomes more difficult. Adopting the idea of "Step by step to fine", importing the concept of "micro", and using the methods of "template", the authors developed an efficient and convenient Web sites′ maintenance system. 
　　Keywords　Internet, Step by step to fine, Micro, COM, IIS

1　引言
　　随着计算机网络技术的发展和Internet的日益普及，许多企事业单位已经建成或者正在建立自己的Internet站点。越来越多的站点建设的目的也不再是简单的发布信息、形象宣传，而是向加强信息交流和电子商务的方向发展。出版社Internet站点在这方面的应用需求也是如此，希望通过Internet站点不仅仅是进行形象宣传，而更侧重于实现同读者、书店的迅速便捷的信息交流与直接交易，继而达到迅速了解市场，占领市场，多出书、出好书的目的。随着这些应用需求的加强与深入，站点的及时更新（形式上的和内容上的）变得必不可少，以致站点维护量迅速增加，维护难度迅速提高。
　　如何高效灵活地进行站点的维护与管理，可以说是站点建设和持续发展中最重要的问题。对于一个Internet站点，一方面需要灵活的网页制作和更新，另一方面需要组织和管理大量数据，更重要的是需要将这两者有机的结合起来并体现相应的商业规则，使整个站点既从形式上吸引用户，又从内容上吸引用户，并与用户进行有效方便的交流（信息交换与网上电子交易），同时整个站点管理维护工作量少且难度小。
　　本文作者在开发“北大方正出版社Internet站点系统”中，在这方面进行了一些深入细致的工作。通过该维护系统提供的工具与方法，出版社站点维护人员可高效灵活方便地进行站点维护。本系统已在某出版社站点中得以成功应用。本文将结合作者的实际经验对整个系统实现中的关键部分进行扼要的叙述。
　　
2　整体系统概述
2．1　硬件平台（网络结构）
　　整个系统的总体目标是出版社Internet站点建设和出版社局域网建设，系统的网络结构拓扑图如图1所示。


图1　系统网络结构拓扑图
2．2　软件平台
　　本系统选用的是微软的BackOffice系列产品作为Internet软件平台。系统中以Windows NT 4.0为操作系统平台，以IIS4.0为 WEB服务器，数据库系统采用的是MS SQL Server 6.5。　2．3　应用系统
　　除普通Internet站点要求的主页及宣传信息、聊天室、论坛等之外，本站点的重点是结合出版社的业务，进行出版物（图书、杂志、电子音像）的宣传、交易及信息反馈。由于国内还未建立完善的信任系统，本系统在电子交易方面采用的会员方式，并为完整的电子商务做了充分的准备。
3　维护工具的设计
　　站点形式和内容的维护是站点建设和持续发展中最重要的问题。站点维护可具体归纳为四个方面的需求：大数据量的组织与管理、方便灵活的网页制作、页面对数据的操作和商业规则的体现。如将各方面单独考虑，对前三个方面，当前市场都有成熟的工具和技术。但如何将这三个方面进行有机的结合，并实现相应的商业规则，最终为站点维护人员提供一高效、灵活、方便的站点维护工具，以减少站点的维护工作量与维护难度？


图2　网页制作流程图


　　为实现这一目标，系统设计时借用了“逐步求精”、“分层细化”的概念和思想，将复杂的页面制作与维护工作分为相对独立的三个层次：“页面层”， 指页面的整体风格与布局；“应用模块层”，指一个独立的应用概念或应用操作所包含的代码（如：新书信息列表、提交订单）；“显示细节层”，各信息项的显示细节（如：是否显示、显示顺序、显示宽度）。这三个层次的逐层深入即是一个“逐步求精”的过程。通过这样的层次划分，将站点维护的复杂性和工作量分解到各步骤中，使站点维护的整体复杂性大大降低。
　　对于各层次中的复杂性和工作量，笔者针对各层的特性，采取了不同的处理方法。对于页面层，使用了“模版（template）”方法和“向导（wizard）”方法；对于应用模块层采用“宏（macro）”封装和“组件COM”封装的方法；而将“显示细节层”完全向维护人员开放。
　　对站点维护人员来说，以上的层次划分分别对应为相对独立逐步细化的三个步骤。
4　维护工具的实现
4．1　ASP（Active Service Page)
　　本系统的实现基础是ASP，本文先对ASP进行简要介绍。
　　站点系统采用的是IIS4.0中的ASP（Active Service Page)技术。其工作原理是，对用户（浏览器）请求的ASP页面，在服务器端先进行解释，生成标准HTML页面（数据流），然后送到浏览器端。这些ASP页面是用VBScript或JScript语言描述的，同时，页面中通过描述语言可创建COM对象，其中包括数据库对象ADO（Active Data Object)，ADO通过ODBC来对数据库进行操作。
<%@ LANGUAGE="VBSCRIPT" %>
<%
′Script to connect database
Set Database = Server.CreateObject("ADODB.Connection")
Set cmdLookBook = Server.CreateObject("ADODB.Command")
Set BookList = Server.CreateObject("ADODB.Recordset")
……
′查询预出新书
cmdLookBook.CommandText
　　　　= "Select BookID,BookName,Author,Price,ISBN 
From Book―Information where IsPublished=0"
BookList.Open cmdLookBook,,0,1
%>
<html><head>……</head>
<body>
……
<% if BookList.bof and BookList.eof then %>
<center><i>对不起,近期没有预出新书.
　　　　　　　　　　　　　　　　　＜/i></center>
<% else %>
<% Do While(Not (BookList.eof or BookList.bof)) %>
′显示预出图书信息
　……
……
　　由于已有较多的资料介绍ASP，本文在此不做详细讨论。
4．2　页面层
　　因为页面层处理的目的是页面的整体风格与布局，可不用考虑具体的商业规则与数据库操作。系统维护人员可以充分利用现有成熟的页面制作工具进行页面的创作，将主要精力集中在网页的创意上。
　　为了进一步减少维护人员的工作量，系统提供了常用页面的模版(如企业介绍页面模板)，站点维护人员只需稍作修改，即可直接发布或进入下一步（下一层次）的工作。。通过这种模版方式，对减少站点建设初期的工作量特别有效。
　　对于某些工作流程与形式相对固定的商业规则，系统提供一些向导（wizard）工具。如：对于网上读者信息调查这一应用，系统提供一向导工具，制作人员只需添入相应的需调查的信息，向导工具将自动生成相应的数据库表和调查页面，并在调查结束后，向导工具自动从数据库中提取信息，形成统计分析页面。站点维护人员将不涉及技术问题，而可将精力集中在其应用上，减少了工作量与维护难度。
4．3　应用模块层
　　应用模块层是系统中体现应用需求的核心内容，通常数据库的操作与商业规则的体现都在该层实现。
　　为了有效的降低该层的维护难度并减少维护工作量，本系统引入了“宏”的概念，对应用模块层采用了“宏”封装和COM组件封装的方法。将复杂的数据库操作和商业规则先进行COM组件封装，后进行宏封装。每个应用模块被封装为一个宏，系统提供给维护人员的是一个个体现具体应用需求的“宏”，系统维护人员只要根据应用需要将“宏”嵌入页面中。
　　例如，系统维护人员要在某网页中显示新书列表，则只需在该页面的相应位置插入宏“新书列表”（这一插入工作可在系统的编辑工具中，通过右键选择的方式进行）：
　　<* 新书列表(每页行数=20;显示列=书名,
　　著译者,定价,标准书号) *>
　　其中标记<*和*>是系统引入的“宏”定界符，以便宏替换工具对宏进行识别；“新书列表”是“宏”的名称，其后紧接的括号中可指定相应的参数。
　　当维护人员将“宏”页面制作完后，利用系统的“宏替换”工具进行宏替换。
　　“宏替换”的实现方法如下：
　　1) 搜索“宏页面”中的“宏”定界符，确定页面的“宏”引用位置，并提取“宏”引用段（提取定界符之间的内容）。
　　2) 分析“宏”引用段，提取宏名称和引用参数。
　　3) 在“宏定义”库中，根据宏名称搜索对应的“宏定义”内容。每个“宏定义”保存在一个.tlp文件（文本文件）中，所有的“宏名称”与“宏定义”文件名的对应关系采用.ini文件形式保存。先根据“宏名称”在.ini文件中找到对应的“宏定义”文件名，然后在“宏定义”文件中提取该“宏定义”内容。通过将“宏定义”库采用独立的.ini文件形式和.tlp文件形式，从而使得“宏”与程序分开，保证了“宏定义”的独立性，并可根据应用需求不断增加与更新“宏定义”。
　　4) 根据引用参数对“宏定义”进行解释替换，形成“宏解释”。在“宏定义”内容中，采用参数形式（以<$ 参数$ >形式）进行“宏”定义。在进行“宏”解释时，将参数取值替换“宏定义”中的参数，形成“宏解释”。
　　5) 将“宏解释”按照一定的规则替换到“宏”页面中，形成ASP文件。
　　本文4.1中的ASP例子，便是宏“新书列表”替换后形成的ASP语句（简化了）。
　　通过这样的宏封装，网页中复杂的数据库调用、COM组件调用、JavaApplet调用、页面控制语句（如循环控制、条件选择）等，都被“宏”封装屏蔽了。系统维护的工作量与复杂性大大降低。
　　对一些规则更复杂的应用，如：订单总价计算（其中涉及到价格合计、图书优惠、会员优惠、大户优惠等复杂的规则），系统则进一步采用了COM组件的封装方法，（“宏”语句中调用这些COM组件，维护人员也可在页面中直接使用这些COM组件）。如：将订单抽象为一个对象，并将该对象封装为一COM组件OrderForm，订单总价则为该订单的一个属性SumPrice（其具体计算规则也就被封装在组件中了）。进行这种COM组件封装后，既提高了系统效率与安全性，又可使这些商业规则从维护人员面前屏蔽，降低其复杂性。
　　如：在某订单的最后列出其合计总价，则只须在需要显示的位置上插入“宏”：
<* 订单总价 *>
进行宏替换后，形成对COM组件调用的ASP:
<%Dim OrderForm
Set OrderForm=Server.CreateObject("OrderForm. OrderForm")
……
OrderForm.no = nnnnn ′指定订单号
%>
……
<% = OrderForm.SumPrice %>
…… 
4．4　显示细节层
　　通过“宏替换”后，网页已是符合应用需求的ASP页面，站点维护人员所需做的仅是一些显示细节问题（如：书名的显示宽度，书名、著译者、定价等的显示顺序），而对这些内容进行修改，只须了解基本的HTML知识即可。系统对ASP页面进行了必要的注释，并向系统维护人员完全公开，为系统维护提供了很大的灵活性。
5　体会
　　对站点维护这个看似烦琐复杂的问题，笔者通过采用“逐步求精”，“分层细化”的思想，将问题先按层进行划分，针对各层的特性，分别总结规律。对于有规律的各层，根据其特性，分别采用不同的方法与技术进行处理。笔者实现的这一高效、灵活的站点管理工具与方法已在人民邮电出版社Internet站点（www.pptph.com.cn）中得以成功应用。虽然这一工具本身仅适用于出版社Internet站点系统的建设与维护，但这些思想与方法在其它行业领域的Internet站点建设与维护工具的开发中值得借鉴。
　　
　　杨建武　硕士研究生。研究方向：计算机网络。
　　方曲祥　博士研究生。研究方向：信息系统与决策支持。
　　作者单位：杨建武　方曲祥（北京大学计算机研究所电子出版新技术国家工程研究中心　北京100871）
参考文献
［1］　Microsoft,著. MSDN Library,1998，7
［2］　Microsoft,著. Windows NT 4.0 Option Pack Documentation. Microsoft, 1998
收稿日期:1999-04-02(修改稿)
