C/S三层架构

2024-10-06

C/S三层架构(共7篇)

C/S三层架构 篇1

随着广播电视台自动化程度的提高,发射机作为广播电视台的主要设备,对其监控要求也越来越高。当前多数发射机只配备了本地监控系统,需要值班人员按时巡机, 掌握发射机的工作状态,这种传统的工作模式导致值班人员工作效率低下、工作强度大[1]。并且发射站地处高山偏远地区,环境艰苦、条件恶劣,工作人员工作环境差,还直接受到天线电磁波的辐射,长期值班容易产生思想麻痹,易造成操作差错[2 - 3]。为保证广播电视节目的正常播出,发展远程监控成为需要。但目前我国发射机配备远程监控系统的不多,现有的远程监控系统在设计和实现时将WEB技术、GSM短消息和CAN总线等引入到系统中,使实现的方式不尽相同[4 - 5],对不同厂商生产的发射机需要独立的远程监控系统进行监控。因此本文提出了利用以太网通信,建立发射机运行状态数据库,应用Lab VIEW开发发射机远程监控系统,使设计的发射机远程监控系统具有通用性,提高工作效率和管理水平,减少运营商的运营成本。

1系统总体方案

发射机远程监控系统主要实现对发射机的远程监测与控制。系统中远程监控计算机通过通信接口与发射机本地监控系统建立网络连接,传输命令帧和数据帧,如图1所示。发射机本地监控系统将发射机运行的状态数据传送给远程监控系统,远程监控系统对数据进行处理,用来监视发射机的工作状态。用户可以通过远程监控系统发送控制命令给发射机本地监控系统,由发射机本地监控系统执行相关操作。通过远程监控系统,可以在远离现场的监控室中对发射机进行实时监控。

2功能描述

在系统软件设计时,可以从需要实现功能的角度分为以下部分,如图2所示。

1) 运行状态显示模块: 通过通信接口读取发射机的运行数据并进行处理,将处理后的数据分类保存至数据库,监测显示各部发射机的工作状态,判断并在界面上显示发射机是否正常工作,当出现故障时发出声光报警。

2) 参数调整模块: 用户通过人机交互界面,设置发射机自动开关机时间和上下限参数。该模块将来自人机交互界面的设置参数操作事件进行转译,通过通信接口下发到对应的发射机本地监控系统中,实现参数修改,并将操作用户、时间和结果保存至数据日志模块,以备查询。

3) 控制模块: 用户通过人机交互界面对发射机执行控制操作,如开关机命令,该模块将来自人机交互界面的控制操作事件转译为控制系统命令,通过通信接口下发给对应的发射机本地监控系统,并将操作用户、时间和操作命令详细信息保存至数据库日志模块,以备查询。

4) 日志管理模块: 添加、删除登陆用户,修改登陆密码,查询用户登录记录和相关操作,查询历史运行数据( 包括正常数据和故障数据) 并按照规定生成历史状态运行表。

5) 数据存储模块: 将系统处理的数据按照正常运行数据、故障数据和日志数据分类存储。

6) 通信模块: 此远程监控系统实现时考虑到与不同厂家设计的发射机本地监控系统通信兼容的问题,可以通过以太网和串口两种通信方式提供远程监控服务功能。

3系统软件设计

系统设计时采用3层C/S( Client /Server) 架构模型, 该架构将显示、处理和数据分布到独立的软件系统中,使得结构更加灵活。本系统软件设计时按照业务功能采用3层模型分别为: 人机交互层、系统业务逻辑层和数据存储及通信层,如图3所示。

1) 人机交互层: 位于最外层( 最上层) ,离用户最近。 用于显示数据和接收用户输入的数据,为用户提供一种交互式的操作界面。

2) 系统业务逻辑层: 针对具体问题进行操作。按照功能分为运行数据模块、系统数据模块、系统命令模块和用户管理模块。

3) 数据存储和通信层: 该层用来实现发射机远程监控系统和发射机本地监控系统之间的通信,并将业务逻辑层处理的发射机运行数据和相关操作分类存储至数据库的相关表中。

三层C/S模型克服了客户端工作量大、软件重用性差的局限性[6]。当用户通过人机交互层查看数据或进行远程控制时,它向系统业务逻辑层发送请求,系统业务逻辑层从数据存储及通信层获取数据,并对所获取的数据进行相应的处理,它直接地分离了人机交互层和数据存储及通信层。该模型各层之间是向下依赖的关系,底层对于上层来说是“无知”的,在不改变接口定义的前提下对上层程序重新设计不会影响调用底层程序。当系统中相应的功能需要改变或更新时,开发人员只需关注整个结构中的其中某一层,只需要在对应层中改变相应的部分而不需要改变整个软件程序,使系统具有良好灵活性和可扩展性。 各层之间的接口相对独立,降低了层与层之间的依赖,同时可为多用户提供访问,有利于各层逻辑的复用和软件标准化。

在系统软件实现时采用Lab VIEW进行开发,它是美国NI公司推出的一种通用虚拟仪器开发软件,包含了丰富的功能函数库和完备的总线设备驱动程序。它的最大特点是其基于图形的编程方式,它采用了框图而非传统的文本方式的编程方法。这种编程方式强调信号处理的实际过程,编程简单、调试方便。

3. 1人机交互层

三层模型中人机交互层与系统业务逻辑层的分离,只需关注人机交互界面上数据的显示和相关参数的输入, 不需要考虑系统业务逻辑的操作,因此在设计的时候考虑用事件驱动编程方式来实现,即某个事件一旦被触发,系统马上就去执行与该事件对应的事件过程。等该事件过程执行完毕后,系统又处于等待某个事件发生的状态。

3. 2业务逻辑层

业务逻辑层是系统架构的核心部分,主要完成业务规则制定、业务流程实现和与业务需求有关的设计。它位于分层系统的中间位置,在数据交换中起到了承上启下的作用,对于数据访问及通信层它是调用者; 而对于表示层它是被调用者。在业务逻辑层设计时采用TM( Table Module) 模型,该模型根据系统功能组织业务模块和数据表,每个模块对应各自的数据表,做到最大限度的业务功能和数据表相对应。该模型比较直观,操作集中,设计的程序简洁、高效。在本远程监控系统中,业务逻辑层中的运行数据模块、系统数据模块和系统命令模块实现如图4所示。

3. 3数据存储及通信层

3. 3. 1通信及数据库设计

在实现发射机远程监控系统与本地监控系统通信时,考虑到不同厂家提供串口和以太网通信接口的兼容性,采用适配器将串口通信转换成以太网通信方式。统一通信接口,通信协议采用TCP/IP协议。

通信过程为: 首先通过IP地址与端口号,在发射机本地监控系统端建立侦听,等待远程监控系统连接。然后远程监控系统根据IP地址和端口号发出连接请求,等到远程监控系统和本地监控系统建立连接后,通过读写函数即可进行TCP通信。

3. 3. 2数据库选择和设计

随着发射机运行状态数据的积累,对运行状态数据的管理和分析要求日益提高,因而有必要将数据库引入监控系统中。

选择使用SQL Server关系数据库管理系统,它是真正的客户机/服务器体系结构,具有图形化用户界面,使系统管理和数据库管理更加直观、简单。SQL Server提供了丰富的应用程序接口来访问数据库,主要的访问方法有: ODBC,API,OLE DB,Trabsact - SQL和DB - Library,客户机可以通过这些API作为动态链接库来使用,并通过客户端的网络库与SQL Server服务器通信。

在Lab VIEW编程环境下访问数据库通常有以下几种途径:

1) 利用NI公司的附加工具包Lab VIEW SQL - Tool- kit进行数据库访问,该方法简单易用,可以节约开发时间,提高工作效率。但是这种工具包比较昂贵,无疑会提高开发成本。

2) 利用Lab VIEW用户开发的免费数据库访问工具包Lab SQL对数据库进行访问,优点是简单易用,但该工具包不具备远程数据库访问功能。

3) 利用Lab VIEW的Aetive X功能,调用Mi. emsoft ADO控件,并利用SQL语言来实现数据访问。它的优点是结构灵活,可用于网络访问,不会增加系统成本。但需要对Microsoft ADO控件以及SQL语言有较深的了解,并且要从底层开始进行复杂的编程。其次,对于分布式、跨平台的Intemet上的数据库访问,功能还不够完善。

在本监控系统设计数据库访问时,利用方式2) 对数据库进行访问。使用之前在Lab VIEW中安装Lab SQL数据库访问工具包,即在Lab VIEW安装目录下的user. lib文件夹中新建一个名为Lab SQL的文件夹,将Lab SQL - 1. 1a. rar解压到Lab SQL文件夹中即可。

数据库访问步骤: 第一步在Microsoft SQL server→企业管理器→控制台根目录→SQL server组→数据库,在此目录下建立自己的数据库( My DB) 。第二步打开控制面板→管理工具→数据源ODBC,在其中添加驱动并创建数据源名( DSN) 。第三步在数据库里面建立表,有两种方式,手动建立和通过Lab VIEW应用程序自动建立。在此采用手动建立的方式,在自命名数据库里设置表格的列名( 即表头) 数据类型、数据长度及该数据是否可以为空数据。

根据要存储的数据,在数据库中设计相应的表,如图5所示。在Lab VIEW环境下通过SQL语言对数据库中的各个表进行操作,利用Lab VIEW的报表与报表工具包,可以生成Word或者Excel文档,便于后续的数据统计和分析。

4运行结果

本发射机远程监控系统的工作和运行过程描述如下: 首先,从数据库中读取相关参数并显示; 其次,通过通信接口从本地监控系统中读取发射机运行数据并在监控主界面上显示发射机工作状态,结果如图6所示。发射机正常工作时,图标圆点为绿色并显示正常运行,当发射机出现故障时图标为红色并显示故障,当发射机停播时图标为黄色。通过监控主界面上的功能按钮,实现所对应的显示、参数调整和控制功能。

5小结

本文提出了一种基于三层C/S架构的发射机远程监控系统体系结构,并详细阐述了通过以太网实现远程监控系统与本地监控系统之间的通信,建立数据库保存并管理运行数据和日志数据,利用Lab VIEW实现远程监控系统软件的开发过程。在这种架构下,远程监控系统软件具有开放性好、可伸缩性强、灵活性高等特点,方便维护和后续业务功能增加和扩展。通过发射机远程监控系统,工作人员可以方便地进行数据查询、统计和分析,为维护提供可靠的依据。可使值班人员从以前繁重的巡机、抄表工作中解脱出来,减少设备对人员的依赖,可以实现发射台“无人值守、有人留守”,能减轻值班人员的工作强度,提高了工作效率。该远程监控系统具有实用性和灵活性强等优点,具有推广应用价值。

摘要:为了实现对发射机运行状态远程监控,提出了一种基于三层C/S架构的发射机远程监控系统体系结构,并给出了系统的总体设计方案。与传统的两层结构相比,将客户端的数据处理功能分离出来,作为中间层即系统业务逻辑层单独实现。系统采用LabVIEW进行软件开发,通过基于TCP/IP协议的以太网组网来实现与本地监控系统的通信,利用SQL Server数据库保存并管理运行数据和日志数据。通过测试表明,该系统具备良好的灵活性和可扩展性,具有较高的应用价值和推广价值。

关键词:发射机,三层C/S架构,远程监控,SQL Server数据库,LabVIEW

C/S三层架构 篇2

关键词:医院信息系统,C/S结构,PowerBuilder,SQL Server

0 引言

医院信息系统(HospitalI nformations ystem,HIS)也被称作为临床信息系统(ClinicalI nformation System,CIS),是一个高度集成化的医院计算机信息管理系统。目前作为医学信息学(MedicalI nformatics)的重要分支,大家普遍接受的HIS定义为:应用先进的计算机和通信设备,为医院的各部门提供患者医疗信息和行政管理信息的收集、整理、处理、提取和分析能力,并满足所有授权用户的功能需求[1]。

随着微电子、计算机和通信等信息技术在医疗领域中的迅速发展,发达国家已通过计算机网络将医院信息系统、医疗信息服务系统及医学图像存储传输系统连接起来,并在医院普及并应用,产生了巨大的社会效益和经济效益,促进了医学、计算机和信息技术的发展,医疗卫生事业进入了崭新的信息时代。我国从20世纪70年代开始就关注着国际上医院信息系统的建立和应用,到20世纪90年代中期,已正式推出国家医疗卫生信息网,即“金卫工程”[2]。随着医院管理功能、管理需求的不断拓宽,医院信息系统已成为医院现代管理和决策不可缺少的技术手段和保证,在医院管理活动中发挥着巨大的潜能和作用。

本文结合深圳某医院信息化项目,针对该医院的实际需求,采用三层C/S结构设计,使用目前流行的开发工具PowerBuilder和SQLS erver2 000数据库平台,设计开发了医院信息系统。

1 医院信息系统业务流程及特点

医院信息系统的功能是围绕着患者来医院就诊的步骤实现的,其业务流程图如图1所示。患者来医院后首先会去挂号台挂号并登记付费。登记的项目包括患者的基本信息、就诊信息、挂号的科室、看病的类型、以及相关费用。挂完号后,患者将直接去相关科室等候医生检查。医生检查诊断的信息通过门急诊管理系统的医生工作站输入到HIS中。这些处理的信息包括门诊病历书写、处方书写、检查申请和住院申请等。对于非第一次来院的患者,医生可以直接在工作站调阅以前的就诊信息。当医生填写检查、诊断、处方、检查申请、住院申请等项目时,相关的信息会直接传递到相关的功能系统。例如,费用的合计会发往门诊收费系统,相关的病历记录传送到病历管理系统等。作为就诊的下一步环节,患者会来到门诊收费处。根据医生工作站传来的信息,相关的费用包括处方药、检查费等会被统计出来。交纳完相关的费用后,患者去相关的部门如药房提药,实验室验血,影像室拍片等等,完成最后的步骤[3,4]。

2 系统结构设计

2.1 总体设计思路

通过先进的计算机技术和信息技术,将医院的各项业务流程、各方面临床工作内容、各层面管理要求、患者诊疗的各个环节以及医院的各种医疗设备等方方面面的资源有效地整合在一起,以临床为主线,以患者为中心,以管理为目的,优化医院工作流程、科学配置、医疗资源,加强医疗质量控制,挖掘信息数据价值,最终实现各种信息网络共享,业务流程科学化和自动化、临床工作无纸化电子化,患者就诊透明化和高效化,医院管理信息化和数字化。

2.2 三层C/S结构设计

2.2.1 三层C/S结构系统描述

医院信息管理系统多采用C/S模式,两层结构的C/S应用程序对网络和服务器的依赖性较大,延展性差,程序的发布也较麻烦。对于上述存在的问题,解决的方法就是在客户端和数据库服务器之间加入企业逻辑(Business Logic)层,该层通常存放在另一台被称为应用服务器(Application Server)的机器上。三层C/S逻辑结构如图2所示[5]。

2.2.2 三层C/S结构的优点

与两层C/S结构相比,三层结构具有以下优点[6]:

(1)安全性加强。

应用服务器把客户与数据库服务器分开了,客户端不能直接访问数据库服务器。应用服务器可控制哪些数据被改变和被访问,以及数据更改和访问方式。另外,对应用和数据的存储权限可以分层进行设定,这样,即使外部的入侵者突破了客户端的安全防线,则在应用服务器和数据库服务器中备有另外的安全机构,系统也可以阻止入侵者进入其他部分。

(2)效率提高。

三层C/S结构中,客户端与应用服务之间的链接实际上只是一些简单的通信协议,而与数据库服务器打交道所需要的设置或驱动程序,均由应用服务来承担,这既减轻了客户端的负担,也降低了数据库服务器的链接代价,使数据库服务器专心于数据服务而不是频繁地与客户端的应用程序交流。各层的逻辑关系清晰明了真正做到了“瘦客户”。

(3)易于维护。

由于应用逻辑被封装到了应用服务器中,因此当应用逻辑发生变化时,仅需修改应用服务器中的程序,客户端的应用程序不必更新,维护的代。

(4)可伸缩性。

三层结构是明确进行分割的逻辑上各自独立,并且能单独实现。由于它们是逻辑划分的,与物理位置不一定相对应,因此它们的硬件系统构成是很灵活的,各部分可以选择与其处理负荷和处理特性相适应的硬件。三层既可以在一台计算机上,也可以在2台,甚至更多的计算机上,只要它们在体系上遵循三层结构就可以。

(5)可共享性。

单个应用服务器可以为处于不同位置的客户应用程序提供服务,即应用系统只写一次可以用于各个环境。

(6)开放性。

由于应用服务器的每个组件都有标准的接口,用户可以重写自己的客户端程序和自己的浏览器程序。

2.3 软件子系统设计

结合该医院的实际情况,设计其医院信息系统包括以下10个子系统,如综合查询子系统、门急诊管理子系统、多媒体导诊子系统、设备管理子系统、住院管理子系统、药品管理子系统、器材管理子系统、人员管理子系统、财务管理子系统、系统维护子系统。医院信息系统子系统划分如图3所示[7,8]。

由于篇幅所限,下面仅对住院管理子系统的设计进行详细介绍。根据医院运行的实际需要,住院管理子系统主要划分为住院收费部分和病区管理部分。其中,病区管理又可进一步细分为入院、出院、病房管理。住院管理子系统与其他子系统一样,要正常工作,必须有基础数据的支撑,如医生信息、药品信息等,而这些信息需要系统维护人员进行系统维护。在这几个模块的基础上,住院管理子系统需要形成相应的查询、统计、财务、打印功能,如图4所示。

为了对住院管理子系统进行数据库开发,需要对住院管理进行需求分析,得出数据流图,如图5所示。从而得到E-R图,以进行数据库部分的开发(E-R图过多,限于篇幅,略)。

3 HIS系统开发

3.1 开发工具的选择

数据库平台选用的是Microsoft公司的SQL Server 2 000。Microsoft SQLS erver 2 000是由一系列相互协作的组件构成的,能满足最大的Web站点和企业数据处理系统存储和分析数据的需要。SQL Server 2000的特性有[9,10]:

(1)Internet集成;

(2)可伸缩性和可用性;(3)企业级数据库功能;

(3)企业级数据库功能;

(4)易于安装、部署和使用。

它是大规模联机事务处理(OLTP)、数据仓库和电子商务应用程序的优秀数据库平台,在Windows环境下界面友好,操作简单,已成为Windows环境下流行的数据库系统。同时,在数据安全管理和完整性管理中有着优秀的特性。

系统软件的开发采用Power Builder 6.5,它是一个面向对象的Client/Server开发工具,它可以在Window 9X,Windows NT,Macintosh,Aix/6000,Sun Solaris等开发的平台上运行。Power Builder 6.5提供了众多的描绘器用于创建和管理不同的对象,从而大大降低了面向对象应用开发难度,提高了开发质量和开发速度。同时,它具有强大的数据库操作功能,这一特点使它特别适合于HIS系统的开发。

3.2 部分开发代码

3.2.1 创建Z_fb住院费类别数据表代码[11]

3.2.2 创建z_cwh床位号的维护表代码

4 结语

与传统两层C/S结构不同,本文采用了三层C/S结构来设计医院信息系统,保证了各病区的独立性,同时有效地减轻了网络的负荷。通过该信息系统的开发设计和应用,为医院提供了信息化支撑平台,全面支持医、护、药、技、科、教等医院信息化管理系统。该系统不仅提高了医疗水平和服务质量,同时,也相应地提高了医院的经济效益和社会效益;实现了医院信息系统的规范化、合理化、有效化,其实用性强,具有较好的推广价值。

参考文献

[1]COLLEN Morris F.A history of medical informatics in theunited states,1950 to 1990[M].USA:American MedicalInformatics Association,1995:25-26.

[2]范慧明.建立医院信息系统的实践与思考[J].中国卫生经济,2006(5):78-80.

[3]王雪峰.数字化医院门诊患者就诊流程的优化[J].中国医院管理,2007,27(4):50-51.

[4]凌翌.医院信息管理系统:天和医院信息管理系统2.0版[D].天津:天津大学,2005.

[5]李澄,张广明.医院管理信息系统的设计与实现[J].微计算机信息,2007,23(3):29-31.

[6]彭守镇,万仲保.XML技术在HIS系统中的应用[J].电脑学习,2007(5):17.

[7]梅斌.医院信息系统(HIS)的开发方法研究[D].上海:华东师范大学,2008.

[8]汪樱灿.医院信息管理系统的设计与实现[J].科技情报开发与经济,2009,19(17):121-122.

[9]赵丽佳,李冬郁.浅谈HIS系统在设计与实施过程中应注意的问题[J].医疗装备,2003,16(6):11-13.

[10]庄军,袁梅,刘侃,等.基于HIS下的决策支持系统的开发设想[J].医学信息,2005,18(3):177-181.

C/S三层架构 篇3

XML是Extensible Markup Language的缩写, 即可扩展标记语言, 是一种人们可以用来创建自己的标记的标记语言。它由万维网协会 (W3C) 创建, 用来克服HTML (即超文本标记语言 (Hypertext Markup Language) , 它是所有网页的基础) 的局限。和HTML一样, XML基于SGML (Standard Generalized Markup Language:标准通用标记语言) 。尽管SGML已在出版业中使用了数十年, 但对其理解方面的复杂性使许多本打算使用它的人望而却步。SGML也代表“听起来很棒, 但或许以后会用 (Sounds great, maybe later) ”。XML是为Web设计的。

XML实际上是Web上表示结构化信息的一种标准文本格式, 它没有复杂的语法和包罗万象的数据定义。XML同HTML一样, 都来自SGML。SGML是一种在Web发明之前就早已存在的用标记来描述文档资料的通用语言。但SGML十分庞大且难以学习和使用。鉴于此, 人们提出了HTML语言。但近年来, 随着Web应用的不断深入, HTML在需求广泛的应用中已显得捉襟见肘, 有人建议直接使用SGML作为Web语言。但SGML太庞大了, 学用两难尚且不说, 就是全面实现SGML的浏览器也非常困难。于是Web标准化组织W3C建议使用一种精简的SGML版本———XML。XML与SGML一样, 是一个用来定义其他语言的元语言。与SGML相比, XML规范不到SGML规范的1/10, 简单易懂, 是一门既无标签集也无语法的新一代标记语言。

XML继承了SGML的许多特性, 一是可扩展性。XML允许使用者创建和使用他们自己的标记而不是HTML的有限词汇表。这一点至关重要, 企业可以用XML为电子商务和供应链集成等应用定义自己的标记语言, 甚至特定行业一起来定义该领域的特殊标记语言, 作为该领域信息共享与数据交换的基础。

二是是灵活性。HTML很难进一步发展, 就是因为它是格式、超文本和图形用户界面语义的混合, 要同时发展这些混合在一起的功能是很困难的。而XML提供了一种结构化的数据表示方式, 使得用户界面分离于结构化数据。所以, Web用户所追求的许多先进功能在XML环境下更容易实现。

三是自描述性。XML文档通常包含一个文档类型声明, 因而XML文档是自描述的。不仅人能读懂XML文档, 计算机也能处理。XML表示数据的方式真正做到了独立于应用系统, 并且数据能够重用。XML文档被看作是文档的数据库化和数据的文档化。

除了上述先进特性以外, XML还具有简明性。它只有SGML约20%的复杂性, 但却具有SGML约80%的功能。XML比完整的SGML简单得多, 易学、易用并且易实现。另外, XML也吸收了人们多年来在Web上使用HTML的经验。XML支持世界上几乎所有的主要语言, 并且不同语言的文本可以在同一文档中混合使用, 应用XML的软件能处理这些语言的任何组合。所有这一切将使XML成为数据表示的一个开放标准, 这种数据表示独立于机器平台、供应商以及编程语言。它将为网络计算注入新的活力, 并为信息技术带来新的机遇。目前, 许多大公司和开发人员已经开始使用XML, 包括B2B在内的许多优秀应用已经证实了XML将会改变今后创建应用程序的方式。

从1998年开始, XML被引入许多网络协议, 以便于为两个软件提供相互通信的标准方法。简单对象访问协议 (SOAP) 和XML-RPC规范为软件交互提供了独立于平台的方式, 从而为分布式计算环境打开了大门。几乎所有主要的软件厂商都支持SOAP。SOAP的快速成功史无前例地提高了软件的互操作潜力。当今, Web服务革命正在兴起, 而SOAP正是其基础协议。

二、XML对各个数据库的支持应用

由于XML具有标记不同字段 (field) 的能力, 使得搜索变得更简单和动态化, 从而把企业准备扔进废纸篓的文件变成了进行数据挖掘的宝藏。XML把内容从演示格式中解放出来, 使材料可以多次重复使用。同样的内容可以分别用于新闻发布、白皮书、宣传册、演示和Web页面。对那些需要把不兼容的系统融合在一起的企业, XML可以充当公共传输工具, 以中性格式进行数据传输。此外, XML还可以处理各种数据, 包括文本、图像和声音, 并且可以由用户进行扩展以处理任何特殊类型的数据。从去年以来, 三大主流数据库厂商分别以不同的形式对外宣布:支持XML。

(一) DB2与XML

IBM加强对Viper数据库XML性能的全面支持。DB2 Viper将从根本上改变数据库的游戏规则。通过将Viper置于信息构架的核心位置, 用户可以快速地从传统数据管理转换到前所未有的信息管理技术上来, 这可以使他们将信息提升为一种服务。

(二) Oracle与XML

2005年年初, Oracle发布支持XML的工具包, 并宣称与许多共享件和试用版XML组件不同, 产品版本的Oracle XDK提供XML支持 (已经过严格的企业生产环境验证, 包括Oracle SOA、Oracle JDeveloper/ADF、Oracle XML DB和Oracle XML Publisher) 。使用Oracle XDK的Oracle用户可享受24x7的正式支持。

(三) SQL Server与XML

XML (扩展标记语言) 已经成为当今最重要的因特网技术之一。XML的基于文本结构的灵活性使得它可以应用在不可置信的广阔范围的网络任务中。

三、基于XML的三层C/S模型

从网络体系结构各层次上看, 基于XML的三层C/S模型具体实现的功能概括如下:

数据层———实现数据的集成, XML数据产生于多种数据源, 但都以统一的XML格式表达传输。

功能层———实现数据的发送与处理, 应用服务器通过http交换数据, 通过dom处理XML数据。

表示层———实现数据的显示, XML数据可以有多种表现形式, 而且可以为外部直接访问、编辑或转换, 也可被其他系统所用。

在基于XML的三层C/S模型中把XML作为一种结构化信息交换的表示方法, 负责所有与数据源的通信, 根据最终用户的要求, 聚集和组织从多个远程数据库服务器上获取数据, 并用XML形式交互式地把数据源返回的消息传递给客户机。

以下是XML的三层C/S模型应用过程:

1.从数据层获取数据生成XML文档

由于XML能够使不同来源的结构化的数据很容易地结合在一起, 所以通过XML, 可以在中间层服务器上对从后端数据库和其他应用处来的数据进行集成。然后, 数据就能被发送到客户或其他服务器作进一步的集合、处理和分发。

虽然每个数据库描述数据都是不同的, 但XML可以自己定义文件标签, 例如:通过XML, 图书管理资料就可以很容易以标准的方式按照书名、作者、图书简介或其他的标准进行分类。

2.XML数据的发送与刷新

利用XML开放的、基于文本的格式, 可以将它通过http像html一样传送。同时, 中间层应用服务器将支持XML更新功能, 将数据服务器上数据的变化及时地传递给客户, 反之亦然。因此, 中间层能够从客户端得到更新的数据, 并把数据传送到数据储存服务器上。

3.XML数据在表示层的显示

XML描述的数据发到表示层后, 能够用多种方式显示。XML定义的数据, 其显示与内容是分开的, 因此允许对同一数据指定不同的显示方式, 使数据更合理地表现出来。css和xsl为数据的显示提供了公布的机制, 本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。

html描述数据的外观, 而XML描述数据本身。由于XML注重的是内容, 其显示要通过xsl (extensible stylesheet language, 可扩展样式语言) 或css来实现。xsl是为XML文件定义的一种标识语言, 它提供类似但却远远超过css的强大功能。

xsl以包含了一套元素集的XML语法规范而定义, 该语法规范将被用来把XML文件转换成html文件或XML文档。一个xsl样式表集合了一系列设计规则以用于将信息从XML文件中汲取出, 并将其转换成html等其他格式。xsl凭借其可扩展性能够控制无穷无尽的标签, 而控制每个标签的方式也是无穷尽的。这就给web提供了高级的布局特性。

4.处理和编辑XML数据

在基于XML的C/S模型中, 不但能够通过XML集合多个数据源的数据, 并把数据源数据及时传输给表示层;而且, 只要能理解XML数据, 就能从客户层处理和编辑中间层的数据, 然后通过中间层与数据层之间的数据刷新机制, 对数据层数据进行刷新。

运用XML解析器能够读入一串XML数据, 经过处理, 产生一棵结构树, 并且使用dom把所有数据元素作为对象。解析器或者用脚本把数据进行进一步的处理, 或者把数据移交给另外的应用软件或对象进行进一步的处理。

dom实际上是一个应用编程接口 (api) , 用来定义一种标准方法。通过这种方法, 能够处理XML结构树的元素。对象模式控制着使用者如何同结构树交流, 并且把所有树的元素作为对象暴露出来。dom用扩展方式支持名域、数据类型、查询和xsl转化。

5.基于XML的三层C/S模型的应用实例

下面具体介绍如何实现基于XML的三层C/S模型, 以笔者做所过的三层C/S模式的图书资料管理为例。它是基于XML表达、传输与处理的, 其详细实现如下:

(1) 获取数据生成XML文档

中间层通过XML获取数据源数据, 生成XML文档, 其中每一书目的信息包括:书名、作者、图书简介、出版日期。下面所列的就是获取数据源的一段典型例程。

(2) XML文档通过http从应用服务器传送到客户机层, 并且支持XML更新功能, 使得中间层或数据服务器上数据的变化可以传递给客户。

(3) XML数据在表示层 (客户机层) 的表达

发送到客户端的数据 (图书资料管理数据) , 可以根据用户对象及其不同的应用要求有不同的显示形式。如下所示的xsl样式表, 就是一个显示示例, 将生成一个html文档, 包括一个表格, 其中的一行就为一个“书目”元素。

(4) 编辑、处理数据的实现

只要理解了中间层XML文档的数据, 就能从任何地方处理和编辑数据 (图书资料管理数据) 。

如下例所示, loaddocument程序打开XML文档, 然后调用另一个程序displaynode, 它用来显示文档的结构。loaddocument传递给正在打开的XML文档的childnodes属性一个引用作为它的参数, 同时传递一个整数用来标示开始显示的层次级别。代码利用参数来格式化在visual basic文档结构显示窗口中的文本。

displaynode属性的函数会遍历文档寻找需要的node_text节点类型串, 一旦代码找到一个node_text的节点, 它会利用nodevalue属性来获得相应的文本串。另外, 当前节点的parentnode属性指向一个元素类型的节点。元素节点实现了一个nodename属性,

四、总结

在基于XML的三层C/S模型中, 中间层一次性从远程数据库中获取满足客户需求的信息, 生成相应的XML文档, 以后中间层就不需要再与远程数据库进行交互了, 即与远程数据库的连接也就终止了。一旦中间件软件把满足客户需要的信息组装起来以后, 就可以以XML形式发送给客户了, 这样客户与中间层也就无需进一步交互。XML的实体机制是一种节省大量时间的工具, 而且也是将多种不同型态的数据并入XML文件中的方法。在XML文件中, 你可以将经常使用的XML文字区段定义成实体, 可以快速地将XML文字加入到你需要的任何地方, 也可以将外部的档案定义成实体, 然后将档案的数据附加到文件;这些数据可以由XML本文或其他的文字或非文字数据所组成。

同时, 丰富的XML数据发送给客户端后, 客户应用和脚本语言就可以直接使用这些数据, 这时客户端与中间层服务器之间连接就可以终止了。

因此, 在C/S模型中发送给中间层的信息是简洁的、个人化的、精确的。应用服务器负责在正确的时候组装并交付正确的信息, 这将网络上的流量减小并提高了交互能力和用户的满意程度。而且, 由于中间层可以提供动态的、易访问的内容, 这些内容可以被客户方操作。而且, 无需刷新整个用户界面就可以更新页面的内容, 这样就减少了从服务器方获取客户方已有信息所需的交互时间。用户可以方便地远程管理数据, 使得网络成为一种具有更大的交互性和互操作性的媒体。

其次, 运用基于XML的三层C/S模型, XML结构化的数据可以从商业规范和表现形式中分离出来, 而且可以更详细地定义某个数据对象的数据结构, 解决了信息标准化的问题。

通过在三层C/S模型使用XML, 使得企业之间可以通过网络, 与合作伙伴间, 进行跨平台、跨操作系统的信息交换。

参考文献

[1]hiroshi maruyama, kent tamura, naohiko uramoto.XML and java developing web applications[M].addison-wesley, august1999.

[2]ed tittel, norbert mikula, ramesh chandak.XML for dum-mies[M].idg booksworldwide, inc, 1999.

C/S三层架构 篇4

传统的2层C/S结构数据库应用中,系统的业务规则几乎都要在客户端进行,随着系统规模的不断扩大,企业逻辑日趋复杂,客户端将不堪重负。为了解决2层C/S结构存在的问题,多层结构应用体系应运而生。多层结构的典型是三层结构,其基本思想是把用户界面和企业逻辑分离,在传统的2层C/S结构中放入应用服务器。整体结构如图1。

2 Delphi开发三层C/S数据库应用程序方法

Delphi是一种可视化开发工具,支持面向对象开发方法,它提供数据库引挚BDE、丰富的数据库访问和操作控件以及数据库报表工具,大大提高开发数据库应用系统的效率。使用Delphi开发一般可以分成3个步骤:1)在数据库服务器上建立需要的数据库;2)建立应用服务器;3)建立客户端应用程序。

数据库服务器主要由专门的数据库管理系统实现,使用数据库引擎BDE来建立应用服务器与数据库服务器的关系。客户端和应用服务器端的连接通过DataSnap技术来实现。DataSnap提供了很多种客户端和应用服务器的连接方法,如Scokect,DCOM,Corba等,分别通过SocketConnection、DCOMConnection、WebConnection三个组件来实现TCP/IP、DCOM、HTTP三种传输协议。

3 基于DCOM协议的三层C/S数据库应用程序开发

建立三层结构应用程序,必须先建立应用程序服务器,并运行注册之,再建立客户端。下面通过在客户端建立一个浏览“学生.MDB”数据库中的“学生信息表”的应用程序来说明建立一个基于DCOM协议的三层结构数据库应用程序的开发方法(假设在应用服务器上已经设置好BDE连接,并连接到数据库服务器)。

3.1 建立应用程序服务器

1)新建一个应用程序,在Form1窗体上放置Table1,DataSource1和DataGrid1三个组件,并按照表1设置组件属性,Form1的设计界面如图2。保存窗体和应用程序,窗体单元取名为“ServerUnit”,项目文件取名为“DcomAppServer.dpr”。

2)增加一个远程数据模块,设置它的CoClassName为XSGL,保存取名为“XsglUnit”。并在XsglUnit单元的implementation部分中添加语句:uses ServerUnit;

3)在XSGL模块中加入一个TDataSetProvider组件,设置它的DataSet属性值为Form1.Table1。此时XSGL远程数据模块的设计界面如图3。

4)在Form1的OnCreate事件中编写如下程序:

5)保存并运行,运行界面如图4。系统自动将该应用服务器进行注册,当客户程序运行时,系统自动启用应用服务器。

3.2 建立客户端程序

1)新建一个应用程序,设置Form1的Caption属性为“学生信息表-客户端”。

2)建立数据模块,并添加TDCOMConnection,TClientDataSet,TDataSource和TDBGrid组件,它们的名称分别为DCOMConnection1,ClientDataSet1,DataSource1和DBGrid1。程序设计界面如图5。

3)设置DCOMConnection1,ClientDataSet1,DataSource1和DBGrid1的属性,其属性设置见表2。

4)在Form1的OnCreate事件中添加如下代码:

5)保存并运行,程序运行界面如图6。

4 结束语

在Delphi中可以通过基于DCOM协议、基于TCP/IP协议和基于HTTP协议3中方法来开发三层结构数据库应用程序,分别通过DCOM-Connection、SocketConnection、WebConnection三个组件来实现。其中DCOMConnection组件提供的功能最为完善,配置比较简单,而且执行效率较高,安全性也比较好。

摘要:讨论分析了Delphi中实现三层C/S数据库应用程序的方法,并举例进一步介绍基于DCOM协议来建立三层结构中的应用服务器和客户端应用程序的步骤。

关键词:Delphi,三层C/S数据库,DCOM协议

参考文献

[1]王春红Delphi7程序设计[M].北京:清华大学出版社,2004.

[2]侯太平,童爱红.Delphi数据库编程[M].北京:清华大学出版社,2004.

[3]吴小林,蒋先刚,高艳锦.基于Delphi的多层数据库应用系统连接技术的研究[J].华东交通大学学报,2005,1(22):66-70.

C/S三层架构 篇5

Texas Hold’em poker,全称德克萨斯扑克,中文简称为德州扑克,是一款源自德克萨斯的棋牌游戏。由于它易学难精的特点,备受各地棋牌爱好者瞩目,在过去30年间流传甚广,而在中国则刚刚起步。

德州扑克玩法简单,很适合作为大众人群消遣娱乐。近年来,移动互联网的迅猛发展,智能手机快速普及,移动平台特别适合休闲娱乐类棋牌游戏。

本文设计了一款以Client/Server模式进行的德州扑克游戏。

1 游戏内容及核心功能

1.1 游戏内容

德州扑克是一种每局至少两人最多22人的竞技类扑克牌游戏,不过,通常由2~10人组成一局游戏。每场游戏所用的牌组共有52张牌,其中不包括小丑牌。游戏分为5轮:

(1)发牌圈。小盲位玩家和大盲位玩家下注,在场的玩家由荷官每位派发两张牌,游戏按顺时针方向进行,在大盲位玩家后的首位玩家选择跟注、加注或者放弃,以此类推,最后再由大盲位玩家决定。

(2)翻牌圈。荷官首先一次发出3张公共牌,牌面大家都可看见,然后小盲位玩家开始(若小盲位玩家放弃,则由紧随小盲位玩家的下一位玩家开始)作决定,游戏顺序依然是顺时针。

(3)转牌圈。荷官派发第4张公共牌,依然按照顺时针方向,由小盲位玩家开始。

(4)河牌圈。荷官派发第5张公共牌,依然按照顺时针方向,由小盲位玩家开始。

(5)比牌圈。场上未弃牌的所有玩家亮牌,手上的底牌与台面上5张公共牌组成的牌组,牌型最大者赢得台面上下注的所有筹码。

1.2 核心功能

(1)网络通信。基于Socket建立通信连接,通过完成端口模型处理用户并发请求,以此实现服务端与客户端间的交互通信。

(2)数据库。在服务器上创建MDB格式的数据源,通过OLEDB驱动操作,以此实现账号记录、密码记录、积分记录等需要持久化保存的信息。

(3)游戏大厅。由于德州扑克的游戏特点,需要有游戏大厅功能,大厅包含多个房间,基于移动端屏幕的显示内容有限,因此设定每个房间最多可容纳6个人,游戏以房间为单位进行,能同时进行多组比赛。

(4)游戏逻辑。实现德州扑克的游戏逻辑,包括扑克牌组的洗牌、手牌牌型的判断、手牌牌型大小比较和游戏进程的控制与调度。

(5)效果表现。客户端部分基于Cocos2d-x引擎,使用引擎内部所自带的Animation System,实现发牌、翻牌等游戏中使用的特效,并通过内置的音效系统实现音乐和音效的播放,并配合LUA脚本语言编写业务逻辑,保证游戏进程顺利推进。

2 功能实现

2.1 游戏逻辑

2.1.1 牌组创建

每场游戏所使用的扑克牌组为52张牌,其中不包括小丑牌,也就是俗称的王牌。因此,扑克牌组内的牌由花色为黑桃A至K,花色为红桃A至K,花色为梅花A至K,花色为方块A至K这52张牌所组成。由于公共牌信息需要从服务端下发到客户端,为了节省服务器资源、减少传递的数据量、提高服务器性能,将使用一个字节对应一张牌,一个字节共有8位,可以表示0-255,共256个数,这对于只有52张牌的扑克牌牌组来说绰绰有余。为了让代码清晰易懂,牌面用十六进制数表示,高位决定牌的花色,低位决定牌的值,具体定义如下:

2.1.2 牌组洗牌

每场游戏开始之前都需要对牌组洗牌,因此需要定义一个洗牌函数,将牌组数组和所需牌的张数作为参数传入。所需洗牌的张数根据在场的玩家数目动态变化,因为每位玩家只会有两张底牌,公共牌也固定只有5张,因此每局游戏开始时需要牌的张数就确定下来。既然每局只需要这么多张牌,那么也只需洗这么多张牌,具体如下:

2.1.3 牌型判断

在德州扑克游戏里有以下几种牌型:散牌、单对、两对、三张、顺子、同花、葫芦、四张、同花顺、皇家同花顺,牌型大小依次递增。散牌是牌型中最小的一类牌,由单牌不连续无同花牌组成;单对就是牌中有且只有两张相同;两对就是牌中有两对单对;三张就是牌中有三张相同;顺子就是牌值连续的五张牌;同花就是花值连续的五张牌;葫芦则是由三张加对子组合起来的牌;四张就是牌中有四张相同;同花顺就是牌值连续且花值相同的五张牌;皇家同花顺则是带黑桃A的同花顺。

在牌型判断中,首先判断牌型是否顺子或同花或既是顺子又是同花,因为这样的牌型判断起来比较简单,只要有一张牌不连续就不是顺子,只要有一张花色不同就不是同花。由于在牌组定义时将A定义作1,而在实际游戏中,A是最大的,因此取实际牌值大小时应将A取值为14,大于K的13。待判断的牌组在传入前会由大到小排序。因此,有可能漏判掉以A开头的同花顺类型,所以需要单独处理这种特殊的牌型。另外,带黑桃A的同花顺是最大的牌型,所以也无需比较。

如果既不是同花又不是顺子,则需要继续分析。通过二重循环获取牌中相同牌的个数,以判断出牌型是单对、两对、三张还是四张。

2.1.4 大小比较

定义牌组大小比较函数,将需要比较的两个牌组和牌组的张数传入函数,首先从判断牌型开始,牌型大的牌取胜,若牌型相同,则继续进行比较。当牌组1小于牌组2时,函数返回1,当牌组1大于牌组2时,函数返回2,当牌组1与牌组2相同时,函数返回0,具体规则如下:

(1)牌型为四条时,首先比较哪个玩家的四条大,如果四条一样大,则比较谁的单牌大。

(2)牌型为三条时,如果是葫芦牌型,则比较谁的对子大。如果是三条带单的牌型,则比较谁的单牌数值大。

(3)牌型为对子时,比较谁的对子大。

(4)牌型为单牌时,比较谁的单牌大。

(5)牌型为顺子或同花顺时,则取出牌组1和牌组2的第二张牌比较。之所以不取第一张牌,是因为可能是A至5,也可能是A到10。

(6)牌型为同花时,则对牌组遍历,逐张逐张比较。

2.2 IOCP服务器

IOCP全称I/O Completion Port,中文又叫I/O完成端口,这种模型在高并发的应用场景下尤为适用。本文游戏基于Socket编程,因此与IOCP配合,初始化流程如下:(1)InitCompletionPort();//创建和初始化I/O完成端口;(2)InitListenSocket();//创建和初始化Socket;(3)InitListenEvent();//创建和初始化监听事件;(4)InitAcceptThread();//创建和初始化应答线程。

整个工作流程如图1所示。

2.3 数据库功能

数据库采用MDB格式,Microsoft Office Access数据库管理系统可以创建该种格式的数据库文件。

实际使用中,需要先通过系统上的Open Database Connectivity程序将Data Source设置好,然后再通过OLEDB驱动对数据库进行连接、操作。

CAdoConnection objConn;

CString str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<数据源的名字>";

objConn.Connect(str)

2.4 效果表现

Cocos2d-x引擎中自带动作系统,内置有许多套动作函数,通过这些函数,可以组合出游戏中所用到的各种动作。如发牌动作,表现为从牌桌上荷官的位置将扑克牌派发到玩家所处的位置,通过MoveTo函数,设置好动作的持续时间、动作的目标位置,让扑克牌对象运行这一动作则可实现。

auto actionTo=MoveTo::create(<持续时间>,Vec2(<Position_X>,<Position_Y>));

card->runAction(actionTo)

3 结语

本文介绍了德州扑克游戏的关键逻辑实现过程,如扑克牌组的创建、扑克牌组的洗牌、手牌牌型的判断、手牌牌型的大小比较等,并对数据库功能实现和IOCP完成端口应用进行了阐述。本设计能够多人同时进行游戏,顺利完成整个游戏流程。

摘要:以Client/Server模式实现一款简单的德州扑克游戏。以C++作为开发语言,编写核心逻辑实现游戏流程的控制和调度,通过OLEDB驱动操作MDB格式数据实现数据库功能,使用完成端口模型处理与客户端间的数据交换。基于Cocos2d-x引擎,配合C++和Lua语言,完成程序中特效的表现、客户端的业务逻辑。

关键词:Cocos2d-x,德州扑克,棋牌游戏

参考文献

[1]满硕泉.Cocos2d-x权威指南完整版[M].北京:机械工业出版社,2013.

[2]沈大海.Cocos2d-x手机游戏开发与项目实战详解[M].北京:清华大学出版社,2014.

[3]王艳平.Windows网络与通信程序设计[M].北京:人民邮电出版社,2009.

[4]文必龙,邵庆.开放数据库互联ODBC技术与应用[M].北京:科学出版社,1997.

[5]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

C/S三层架构 篇6

关键词:课室申请系统,业务流程,混合架构,功能模块

1. 引言

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。随着各类学校规模的不断扩大,对课室的申请与使用的管理变得越来越重要,而使用计算机对课室信息进行管理,有着手工管理所无法比拟的优点,例如查找迅速、申请方便、效率高等[1,2,3]。这些优点能够极大地提高课室管理的效率,也是学校的科学化、正规化管理的体现,因此开发这样的一套课室管理系统成为很有必要的事情。

2. 系统需求分析

2.1 系统功能需求

建立一个课室申请管理系统,使用计算机对学校课室申请信息的管理,要求不仅可用于一般的上网申请课室,而且可以对这些课室信息进行全面的管理、申请审核和打印,本系统由C/S子系统和B/S子系统构成,它们分别完成对应功能。

C/S子系统功能:(1)教务员登录;(2)空课室信息初始化;(3)对各类设定(基本参数设定、用户管理、课室类别设定);(4)所有空课室的信息录入(包括内部使用课室设置,空课室删除等);(5)对已申请的课室进行审核;(6)不同条件的空课室信息打印。

B/S子系统功能:(1)教师用户登录(有权限限制);(2)查看所有符合条件的空课室信息;(3)申请空课室;(4)查看已申请空课室的审核情况;(5)电教中心用户打印审核后的信息。

2.2 课室申请流程分析

在本系统中对课室的申请是系统需要解决的重点内容,在申请系统时,教师首先需要输入用户密码,在验证成功后进入系统,首先需要对空课室进行查询,若有空课室则可以对空课室进行申请,在申请完之后还可以对已申请的空课室进行查询。当教师申请好空教室后,如通过教务部门审核,则由教务员打印已经通过审核的课室信息并提交给课室管理员,课室管理员根据该单来安排课室给申请课室的教师使用。课室申请管理业务流程分析如图1所示:

3. 系统功能结构

通过对被管理课室信息的分析,我们得出该系统应由两个子系统组成,C/S子系统主要包括空课室信息录入、课室申请审核、打印和设定等功能模块;B/S子系统主要包括空课室信息查询、已申请课室信息查询、课室申请和打印等等功能模块[4,5,6]。系统功能结构如图2所示。

(1)空课室管理模块

该模块的功能是对不同学期的空课室信息进行录入,由于有些空课室已经是内部内定使用的,所以在空课室录入之后就对内部使用的课室进行选定,也可以对选定为内部使用的课室加以说明,同时也可以查看到不同条件下已录入的空课室信息。

(2)课室申请审核模块

该模块的主要功能是对已申请的空课室信息进行审核,不批准的可以加上拒绝原因,还可以查看不同时间的审核情况。

(3)设定模块

该模块主要包括三个小模块:基本设定、用户管理和课室类别设定。基本设定是对学期开始时间、审核结束时间、申请提前天数和申请最大天数进行设定;用户管理是对电教用户和教务处用户设定;课室类别设定是对课室类别进行新增和删除[7]。

(4)打印模块

此模块主要功能是根据不同的时间段进行空课室信息打印和课室申请状况打印。

(5)课室申请平台(教师版)模块

该模块的功能是根据不同查询条件查询出空课室信息进行申请,还可以根据不同查询条件查看所有的空课室信息,和查看自己已申请的课室信息,并可以进行删除课室操作。

(6)课室申请平台(电教中心版)模块

该模块的主要功能是对已通过审核的课室申请信息进行打印。

3. 系统数据库分析与设计

3.1 系统的数据库E-R图

通过对课室申请系统的系统需求和主要业务流程进行分析,结合系统的功能结构图,可以抽象出本系统数据库的E-R图,如图3所示:

由图3中可以看出,“教务用户”和“课室管理”是M:N的关系。“教师用户”和“课室管理”是M:N的关系。“电教中心用户”和“课室管理”也是M:N的关系。

3.2 主要数据库表

基于C/S与B/S混合架构课室申请系统的数据库表包括教学楼信息表、参数表、课室信息表、课室录入表、课室申请表、教师信息表、课室临时录入表等,其中课室表和课室申请表的详细信息如表1和表2所示。

4. 系统实现

本文系统采用的数据库为SQL Server 2000,分别采用C#.NET和ASP.NET作为系统开发工具。系统的开发模式分别采用C#.NET+Server 2000和ASP.NET+AJAX+Server 2000,分别对应C/S模式和B/S模式的开发。课室申请系统的部分界面如图4和图5所示。

5. 结束语

本文所介绍的系统的前台开发采用B/S和C/S相结合的方式,数据操作模块采用C/S模式,数据查询模块采用B/S模式,这样能充分发挥这两种模式各自的长处。该系统主要包括空课室录入、课室审核、参数设定、打印、课室申请、课室查询等模块,系统开发过程中遵循软件工程的规范,各种技术资料完备,开发流程科学,模块划分符合操作实际,系统具有操作简单,具有易用实用的特点。

参考文献

[1]曾纪刚.基于B/S结构开发高校就业管理信息系统[J].桂林航天工业高等专科学校学报,2004,25(4):24-27.

[2]靳京阳,武立博,张峰.学生信息管理系统在高职院校管理中的应用[J].中国成人教育,2010,34(17):32-35.

[3]霍霄艳.基于B/S和C/S混合结构的学生信息管理系统设计[J].职业,2010,35(26):18-22.

[4]陈守辉.在.NET框架下设计和开发中职学校学生信息管理系统[J].中国科技信息,2010,21(11):57-61.

[5]陈建新.基于Web技术的高校学生信息管理系统的构建[J].电脑知识与技术,2010,33(24):23-26.

[6]许晶华.管理信息系统[M].广州:华南理工大学出版社,2003.

C/S三层架构 篇7

关键词:C/S架构,集成方案,百度地图

0引言

地图能直观地展示有超媒体特性的地理空间数据及属性数据, 使用百度地图API可以在应用中显示百度地图图片、进行地点搜索、路线查询和交通流量显示等操作, 且面向公众服务类网站是免费的[1], 是做地图集成的一个不错选择。

毕业实习是高校教学体系中一个不可缺少的组成部分和不可替代的重要环节, 影响毕业实习与设计质量的关键因素包括实习基地、指导教师、学生及教学组织[2]。 实习基地是高等院校培养学生实践能力、提高学生科研水平、增强学生创新意识的重要场所[3], 也是教师开展科研、 推广先进科技成果、提高实践教学质量的重要依托和有效途径[4]。为加强实习基地建设, 增进学校和实习基地之间的交流与合作, 我们在毕业设计与毕业实习管理系统中实现了实习基地管理模块。

实习基地管理模块采用C# 语言、Winform技术实现, 是典型的C/S结构。为了能直观展示实习基地的地理分布, 帮助指导教师亲临实习基地, 需要在系统中集成地图。

1集成方案

百度地图针对不同的开发平台, 提供了多种API。针对网页地图应用提供了JavaScript API和Flash API, 针对手机地图应用提供了Android SDK和iOS SDK, 针对服务端地图应用提供了静态图API和Web服务API[5]。但目前并没有提供桌面版API, 因此, Winform应用程序只能间接调用百度地图API, 经研究, 有3个可行方案, 下面分别阐述。

1.1使用静态图API结合Web服务API

静态图API根据所设定的参数, 通过标准HTTP协议, 返回PNG格式的地图图片。在Winform程序中, 可以使用PictureBox控件显示地图图片。用户可以指定图片的尺寸、地图的显示范围 (包含中心点和缩放级别) , 还可以放置一些覆盖物在地图上, 以生成符合需求的地图图片[6]。以下示例包含北京市静态地图图片的网址:

它将返回中心点位于北京的地图图片, 图片的尺寸为640×460, 缩放级别为11。

Net平台下, 可以使用System.Net.WebClient类来下载地图图片, 使用该类的DownloadDataAsync方法异步下载可避免下载过程中界面操作被阻塞[7]。以下代码实现了地图图片的异步加载功能:

仅获得地图图片显然功能有限, 可以使用Web服务API, 以获得额外的功能。

百度地图Web服务API为开发者提供http接口, 即开发者通过http形式发起检索请求, 获取返回json或xml格式的结果数据。用户可以基于此开发C#、Java、C+ +、JavaScript等语言的地图应用[8]。Web服务API目前包括如表1所示的功能。

可以结合静态图API和Web服务API, 实现基本的地图功能。但是这个方案非常麻烦, 基本的地图漫游、缩放等功能都必须自行实现。

1.2使用Flash API

使用ShockwaveFlash控件嵌入SWF, 在SWF中使用百度地图Flash API。百度地图Flash API是一套由Ac- tionScript3.0语言编写的应用程序接口, 它能够在Flex/ Flash和Mobile Flex/Flash项目中快速构建地图应用。 百度地图Flash API包含了基本的地图接口, 提供地图浏览、漫游、缩放等基本功能, 支持自定义控件和卫星图等图层操作、坐标转换等功能[9]。相对于静态图API方案, 它封装了更多的功能, 调用起来更为方便。

本方案的难点在于Flash的ActionScript与宿主程序的相互调用。例如在实习基地列表中点击某个实习基地时, 在地图中应同步跳转到该实习基地;在地图上下文菜单中点击“添加实习基地”时, 宿主程序应显示相应的对话框。

ActionScript与宿主程序的相互调用是通过flash.ex- ternal.ExternalInterface类来实现的, 涉及到两个方面的问题, 一是从Flash的ActionScript脚本中调用宿主程序中的函数, 这是通过调用ExternalInterface.call方法来实现的;另一方面是从宿主程序中调用ActionScript脚本, 这是通过ExternalInterface.addCallback方法来注册Ac- tionScript函数的, 指示其能够为宿主程序所调用[10]。

宿主程序中, 通过捕获ShockwaveFlash控件的FlashCall事件, 来处理ActionScript对宿主程序中的函数调用, 该事件会传入一个request参数, 该参数是一个XML格式的字符串, 包含被调用的方法名以及相关参数信息。返回给Flash的值通过ShockwaveFlash控件的SetReturnValue方法来实现。

宿主程序调用Flash中的ActionScript函数, 则是通过ShockwaveFlash控件的CallFunction方法来实现的。

这些函数调用的参数都是XML格式的字符串, 例如:

处理XML格式的参数字符串将是一件比较麻烦的事。Adobe提供了一个示例程序, 该程序封装了一套类库, 主要包含两个类, 一个是ExternalInterfaceSerializer类, 用于调用参数的序列化和反序列化;另一个是Ex- ternalInterfaceProxy类, 用于简化C# 与ActionScript的相互调用[11]。

1.3使用JavaScript API

使用WebBrowser控件嵌入HTML, 在HTML中使用JavaScript API。 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口, 它能够帮助您在应用中构建功能丰富、交互性强的地图应用, 包含了构建地图基本功能诸如展示 (支持2D图、3D图、卫星图) 、平移、 缩放、拖拽等的各种接口, 提供了诸如本地搜索、路线规划等数据服务。本方案可以利用其实现的各种功能, 无须自行编码实现, 调用起来非常方便。相对于Flash API, 目前JavaScript API提供的功能更多, 平台兼容性更强。本方案的难点也在于JavaScript与宿主程序的相互调用。

宿主程序要调用HTML网页的JavaScript脚本, 可以通过WebBrowser控件的Document属性的Invoke- Script方法来实现。 例如, 可以通过以下代码来调用JavaScript来实现地图平移到指定的经纬度:

反过来, HTML网页中的JavaScript要调用宿主程序中的函数, 则相对麻烦一些。首先, 需要通过以下两个属性, 对C#宿主类进行标记, 以通知.NET Framework需要完全信任并且使C# 类暴露给COM, 从而暴露给JavaScript:

然后, 需要对WebBrowser.ObjectForScripting属性设置一个实例, 该实例由宿主应用程序实现并且可由HTML文档的JavaScript脚本访问。就本例而言, 将其设置为BMapControl对象本身即可:

现在, 在JavaScript脚本中, 可以通过window.exter- nal属性获得ObjectForScripting, 进而通过该对象调用适当的方法。例如, 可以在JavaScript脚本中通知宿主程序地图被点击, 并将经纬度参数传递给宿主程序:

经过以上准备工作, 就可以顺利地在C# 和JavaS- cript之间相互调用了[12]。

2系统分析与设计

2.1系统分析

实习基地管理模块要求能对实习基地进行增、删、改、 查等基本维护操作, 能在地图上添加实习基地。在实习基地列表中选中某实习基地时, 自动在地图上漫游至该实习基地, 能利用百度地图的一些先进功能如公交线路查找、 测距等。

2.2系统设计

系统采用.Net Winform技术实现, C/S架构。C/S架构的应用程序相对于B/S架构的应用程序能利用更多的本地资源, 反应更快, 用户体验更好。

通过前述各种可行方案的讨论, 决定采用功能更强的JavaScript API集成百度地图。

使用MySql作为后台数据库。MySql是一款成熟的开源关系数据库, 应用相当广泛, 经过FaceBook等大型应用的考验, 性能满足要求。

数据持久层采用Entity Framework。Entity Frame- work是微软最新的ORM数据持久框架, 它将数据封装成面向对象的业务实体, 使之更具现实含义;封装数据库访问功能, 屏蔽不同数据库方言对软件开发的影响, 便于不同数据库系统迁移[13]。

实习基地 (InternshipUnit) 的数据表设计如表2, 与百度地图对接的字段信息为经度 (Longitude) 和纬度 (Lati- tude) 。数据库设计完毕之后, 使用Visual Studio的Enti- ty Framework设计器生成数据模型, 便可以使用面向对象的方式来访问数据库了。

3实现

实习基地管理模块主要由3个界面组成。

3.1主界面

如图1。左侧区域用于浏览实习基地, 并提供增删改等功能按钮;右侧区域用于展示地图, 地图上会显示实习基地的标记, 单击标记会显示该实习基地的详细信息, 包括地址、电话、简介等, 并且提供路线搜索、附近信息搜索等功能。在左侧实习基地列表中选中某个实习基地, 右侧地图会自动漫游到该实习基地, 非常方便。

3.2实习基地信息编辑界面

如图2。该界面用于添加、修改实习基地信息。其中名称是必填的, 其它字段可以不填。经纬度信息一般不直接录入, 而是在地图中设置。

3.3选择实习基地界面

如图3。可以在地图中找到实习单位所在位置, 右击, 会弹出“添加实习基地标记”菜单, 点击该菜单, 弹出 “选择实习基地”对话框, 选择一个实习基地, 便在地图上添加一个标记。添加实习基地标记, 实际上就是设置实习基地的经纬度信息, 也可以在地图中拖动现有的实习基地标记以修改经纬度信息。

4结语

【C/S三层架构】推荐阅读:

三层架构体系08-29

企业架构05-24

统一架构06-23

发展架构06-28

模块架构07-01

集成架构07-03

架构师07-11

存储架构07-25

分层架构07-28

混合架构07-29

上一篇:高校教材下一篇:防治规律论文