基于B/S体系结构开发应用系统(2)
作者:佚名; 更新时间:2014-12-05


4        实例

下面以某学校学生管理系统为例说明B/S结构软件的设计方法,该系统采用B/S体系结构与COM+技术相结合。通过该系统管理人员可以对学生的学籍、学生的日常表现、学生的学习成绩、学校教师、学校的资产进行管理与维护。任课教师可以通过浏览器查询所教班级学生各种相关信息。学校管理人员通过浏览器对学校的学生、教师等信息进行管理与维护以及有关查询统计功能。学校资产管理人员通过C/S体系结构实现对学校资产的管理维护。

本系统结合了ASP技术和COM+技术,是一个三层结构。表示层由ASP页面组成,用以实现WEB页面显示和调用COM+组件,业务逻辑和数据访问由一组用VC实现的COM+组件构成。为了便于维护、升级和实现分布式应用,在实现过程中,又将业务逻辑层和数据访问层分离开,ASP页面不直接调用数据访问层,而是通过业务逻辑层来调用数据库。

  4.1   COM组件技术应用

该系统的实现主要分为三个部分:数据库、COM+组件和ASP页面。其中数据库与ASP页面的实现与一般B/S结构的WEB应用相似。COM+实现可分为三个步骤:COM+组件的设计、COM+应用程序的生成和组件注册、基于属性编程。该管理系统利用VC中的ATL开发COM+组件。下面是该系统中一个定制组件部分主要代码

在showscore.asp页面中接受、辨别用户的查询请求,做出不同的查询处理。当客户的身分为教师或教务员时,可以查询所有学生的成绩;当客户的身分为学生时,只能查询本人的成绩。

定制COM组件Score.dll进行查询处理。首先设计该组件的接口,为组件设计四个属性:SubjNo(课程号),Term(课程所属学期),ClassNo(班级号)和StuNo(学号)。定义两个方法RequeryScores和RequeryAllScores,分别对教师、教务部门和学生的请求做出相应的处理,并将查询结果集返回给用户。

以下是实现该组件Score.dll接口描述以及实现方法的部分代码,从中可以看到组件的接口是如何实现的:

import "ocidl.idl";

     [

               object,

               uuid(46C01798-BE39-4FC0-A25D-718BA31DFADC),

               dual,

               helpstring("IStudentScore Interface"),

               pointer_default(unique)

     ]

     interface IStudentScore : IDispatch{

               [propget, id(1), helpstring("课程号")] HRESULT SubjNo([out, retval] BSTR *pVal);

               [propput, id(1), helpstring("课程号")] HRESULT SubjNo([in] BSTR newVal);

         //其它接口部分从略

         [id(5), helpstring("method RequeryScores")] HRESULT RequeryScores(([out,retval]LPDISPATCH* ppRecordset));

     };

STDMETHODIMP CStudentScore::RequeryScores()

{

     HRESULT hr=S_OK;

     IobjectContext* m_spObjectContext=NULL;



     //利用ADO访问数据库

     ::CoInitialize(NULL);

     _RecordsetPtr      pRecordSet=NULL,pRecordSetClone=NULL;

    BSTR bstrDSN=::SysAllocString(L"Provider=SQLOLEDB.1;Persist Security Info=True;\

                  Password=;Initial Catalog=pubs;Data Source=zhudamiing;User ID=sa");

    BSTR bstrSQL;

     try{

          GetObjectContext(&m_spObjectContext); 

           pRecordSet.CreateInstance(__uuidof(Recordset));

       //根据查询要求(查询所有课程、查询特定学期所有课程、查询指定课程、查询

   //特定学期某一课程)进行不同操作生成相应SQL语句,程序具体处理从略

               pRecordSet->CursorLocation = adUseClient;

           pRecordSet->Open(bstrSQL,bstrDSN,adOpenKeyset,adLockOptimistic,adCmdText);

               pRecordSet->PutRefActiveConnection(NULL);

               pRecordSetClone = pRecordSet->Clone(adLockOptimistic);

               pRecordSetClone->QueryInterface(IID_IDispatch, (void**)ppRecordset);

              pRecordSet->Close();

               pRecordSet = NULL;

    ::SysFreeString(bstrDSN);

          ::SysFreeString(bstrSQL);

          //事物成功完成,则提交该事物

          I f(m_spObjectContext-)

            m_spObjectContext->SetComplete();

}

      catch(_com_error &e){

       if(m_spObjectContext) //事物失败,回滚事物处理

         m_spObjectContext->SetAbort()

       // 其他错误处理,从略

      }

       return hr;

}

    RequeryAllScores()实现部分从略。另外ASP调用实现部分比较简单从略。

组件编译结束后可以用COM+组件服务管理工具来管理COM+组件及其所在的应用程序。COM+组件服务是个图形界面的管理工具,利用它可以安装和发布组件、配置组件及其所在应用程序的属性,以实现组件安全性、MTS支持、排对组件、设置组件构造参数等。

4。2  ActiveX技术应用

在本系统中许多报表的打印如学生成绩打印、学籍报表、学籍卡打印等需要特殊的格式。而浏览器所提供的打印功能无法实现。为此可采用ActiveX技术,实现在WEB环境下的本地端打印和报表生成。具体实现过程为:(1)WWW服务器在接到用户请求后调用WEB应用程序中的相应组件,通过组件访问数据库,对数据处理生成报表数据,以文件形式存储于WEB服务器中相应目录下。(2)WWW服务器向用户浏览器发送内嵌ActiveX控件的HTML页面,并在HTML页面里的(OBJECT)标志中的param属性里指明数据文件的URL地址。(3)HTML页面根据所提供的ActiveX标志从WWW服务器上下载ActiveX控件到本地端,并在浏览器里执行。ActiveX控件在客户浏览器里完成初始化工作以后,则需直接与服务器端联系,以获取报表数据。ActiveX控件与服务器端的连接采用HTTP协议所提供的GET方法,根据数据文件在WWW服务器上的URL地址,直接将数据文件从WWW服务器下载到本地端。(4)对数据文件进行解析,输入到控件的存储显示模块里,用以存储显示。(5)当用户按下打印按钮时,ActiveX调用打印模块进行打印输出。



5   结束语

随着INTERNET普及,基于B/S体系结构开发应用程序变为流行的方式。将组件技术应用到B/S体系结构中,实现业务逻辑封装,提高软件的可重性和可维护性。



参考文献:

[1]余英 ,梁刚 VC实践与提高COM和COM+篇.   中国铁道出版社

[2]林子禹等 基于WEB与组件技术的企业应用系统设计模型 计算机工程与应用 2000.6.

[3]夏骄雄等  基于Intranet的管理信息系统  小型微型计算机系统  2001、4

[4]楼伟进,应飚.COM/DCOM/COM+组件技术   :计算机应用2000、4.

[5]张震、张曾科  一种新的WEB数据库系统结构     小型微型计算机系统 2001、5

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com