加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 IC卡一卡通小额充值消费系统的构建

IC卡一卡通小额充值消费系统的构建.pdf

IC卡一卡通小额充值消费系统的构建

自然现象
2012-02-09 0人阅读 举报 0 0 暂无简介

简介:本文档为《IC卡一卡通小额充值消费系统的构建pdf》,可适用于工程科技领域

同济大学软件学院硕士学位论文IC卡一卡通小额充值消费系统的构建姓名:蔺霖申请学位级别:硕士专业:软件工程指导教师:张晨曦刘依摘要摘要随着一卡通应用越来越广泛原有的IC卡系统和简单的消费功能扩充已经难以满足市场需求。如何一卡通用户需要进行方便、快捷地进行消费与充值同时运营商关注如何加强数据的安全性与准确性并方便日常管理。通过对原有IC卡系统的分析一卡通系统结构得以重新设计。在保留原有系统精髓的同时增加新的模块并整合各模块成为该系统设计的初衷。本系统采用三层架构设计分为中心前置服务器数据库中间件和数据服务器以及终端设备层与层之间采用网络相互连接。本文将实现以下五项功能:()通过采用类似金融系统数据包的格式制订网络通信协议和流程增强通信的安全性()开发位于前置服务器上的前置网关程序阻隔外部对后台的直接访问增强系统安全性()整合现有的模块重写现有模块的通信部分以实现和新系统的连接。同时增强部分模块的功能并增加对脱机终端的支持()开发基于WEB的B/S结构的管理程序为运营商提供一个清晰简洁的管理界面方便运营商对整个系统进行管理和监控。()制订终端的操作流程开发终端软件直接实现客户需求。关键词:一卡通终端通信AbstractAbstractAssmartcardbecomesmorepopular,theformerICcardsystemanditssimpleexpansionfunctionofconsumingcannotmeettheneeds.Consumersneedamoreconvenientandfasterwayofconsumingandrecharging.Meanwhiletheservicepro讥dersshouldconcentrateondatasafety,accuracy,andeasytomanage.ByanalyzingtheformerICsystemanewsmartcardsysteminfrastructureisre.designed.BasedOiltheessenceofformersystemthenewsystemiswellmanagedbyaddingnewmodulesandintegrationaswell.Thissystemcomprisesofthreelayers:frontendserver,databasemiddlewaredataserverandterminalequipment,eachlayerisbridgedwithnetwork.Fivemainfunctionsthispaperisgoingtoachieve:.Establishnetworktelecomprotocolandprocessutilizingthesimilarformatoffinancesystempackagestrengtheningthesafetyoftelecom..Developfrontgatewayapplicationonthefromgatewayserver,blockthedirectvisittobackendserverfromexternaltostrengthenthesafetyofsystem..Integrateexistingmodulesandrewritethetelecomparttoachieveinterfacewiththenewsystemmeanwhileenhancingthefunctionofpartialmodulesandprovidingsupporttomoreofflineclient..DevelopamanageprogrambasedonWEBandB/Sandsupplyclientswithaclearandsimplemanageinterfacewhichisconvenientforclientstomanageandsupervisethewholesystem..Establishtheterminaloperationprocessdevelopterminalsoftwaretomeetcustomerneedsdirectly.’Keywords:SmartCardTerminalTelecomII同济大学学位论文原创性声明本人郑重声明:所呈交的学位论文是本人在导师指导下进行研究工作所取得的成果。除文中已经注明引用的内容外本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。签名:箭。哆年/月肜日学位论文版权使用授权书本人完全了解同济大学关于收集、保存、使用学位论文的规定同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本学校有权保存学位论文的印刷本和电子版并采用影印、缩印、扫描、数字化或其它手段保存论文学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版在不以赢利为目的的前提下学校可以适当复制论文的部分或全部内容用于学术活动。学位论文作者签名:筒痢:年/月心日经指导教师同意本学位论文属于保密在年解密后适用本授权书。指导教师签名:学位论文作者签名:确帚年月日卅年月l日第章绪论第章绪论.课题背景..一卡通在国内的使用现状国内“城市一卡通"的建设可以说是如火如荼很多城市都对其抱有极大的热情已经或者正打算投入其中。说到“一卡通”大家并不陌生现在的“公交一卡通"可以说是“城市一卡通”的前身很多的“城市一卡通”都是由“公交一卡通"演化而来的。我国首次使用公交卡是在年的杭州进行试用到今天为止已经过去了年。年间当初所使用的接触式IC卡演变成了更加方便的非接触式IC卡。北京的“公交一卡通"发展情况良好目前其卡片的发行量已突破万张并且以每天.万张的数量平稳增长。随着地铁号线的开通年底发卡量有望达到万张刷卡交易量也在逐步增加。现在公交平日的刷卡量已达日均万笔地铁也近百万笔就刷卡交易量而言已是全国第一。深圳通卡于年月日在巴士集团所属的路公交车上安装了首批深圳通设备到今天为止深圳通发卡量已经突破了百万张市民手持一张卡乘坐地铁、公交车辆的目标已经实现。此外上海、天津、广州、长沙等许多城市都已经广泛应用了“公交一卡通”可以说在一些地方“公交一卡通’’已经成为了市民生活中必不可少的组成部分。借助着“公交一卡通’’良好的发展势头“城市一卡通’’的建设全面开始。从今年月日起北京市民持“市政交通一卡通"就可以去部分便利店、超市、西饼屋、餐厅、药店、电影院刷卡消费。现已可以刷卡的商家包括新影联院线(新东安影院、大华电影院、东环电影城等共家)、联华快客便利店、金风成祥蛋糕房、好利来蛋糕房、华润连锁超市、华强连锁超市、和合谷餮厅、鸿毛饺子餐饮、嘉事堂药房、京卫药房、美信药房等。据了解在快客连锁便利店交易中每天刷“一卡通"已达笔日交易额也最高达到元。目前在北京已经有多家商铺可以使用“一卡通’’进行消费预计到明年将会增加到家左右。今后市民只要拥有一张“市政交通一卡通’’卡就可以实现日常生活中的交通出行以及日常生活的一卡付费为市民提供了一种真第章绪论正方便快捷的付费方式。国内首批集社保卡、公交卡、银行卡功能为一体的IC卡在苏州吴江市发行吴江市民通过这张市民卡可以办理社保、领取养老金、乘公交、游公园并可缴水、电、煤气、电话费同时也可用于银行储蓄等业务适用于政府服务、公用事业、金融支付等三大领域个重点行业。可以说市民真正的免去了以往“多卡少用、四处奔波p的烦恼。重庆市“公众城市一卡通’’具有个人消费功能可用于实现各类社会公用事业缴费、公共交通、停车、彩票、餐饮、旅游、文化、医疗等多种小额消费为市民的工作、学习、生活提供极大的方便。..小额消费POS机的现状IC卡消费机这个产品在国外没有是地道的中国货。有人称IC卡消费机为POS机POS(PointOfSale)直译收款机。一般的POS机指商场收款这种产品很标准不是IC卡的机具。IC卡用于消费扣款的产品和应用场合很多。如学校售饭、小卖部、网吧消费、图书馆、会所、商场打折会员卡、三表收费、淋浴水控制等。不同应用场合不同的公司有不同的解决方案。最早普及的收费技术当然是光电卡上世纪九十年代曾经在相当一部分大学中使用。但是光电卡的缺点很多。光电卡很容易复制接触式机具易坏、每张卡对应计算机里的一个账户充值、扣钱都在账户进行实时操作依赖后台系统的稳定性。后来IC卡的消费系统逐步淘汰掉了光电卡系统。当前市面上的系统分两类一类是用IC卡在前端扣款但实际系统在后台账户扣款交易在后台进行。这类ID卡消费系统还是依赖后台和网络的稳定。另一类是使用前端扣款后台采集数据事后处理。另一类的IC卡消费系统是在前台操作刷卡扣钱。消费金额、卡余额都是写在卡上。这一类现在应用比较广泛公交IC卡就是一个例子。由机具本地存储数据方便对账且一定程度上能保证数据的安全不丢失。另外因为本地存储一定程度上可以减少对网络的依赖。第章绪论.研究内容..主要研究内容.总体结构的研究本系统由以下几个部分组成:各充值/消费点:POS机或配有机具的PC。连接网络:有POS机.电话线POS机.有线网络PC.有线网络。中心前置服务器:前置服务程序(C/S模式)负责POS机的连接参数下载数据采集前置管理程序(B/S模式)负责参数管理信息发布状态显示等功能。数据库中间件:在数据服务器和前置服务器之间负责数据中转和处理。数据服务器:数据库。.终端程序的开发终端设备的主要功能是对非接触IC卡的读写操作和数据的存储。该程序主要实现读卡内信息查询电子钱包余额、月票信息及其他卡内信息(不同的城市对信息规划不同)完成充值、消费功能等。.前置服务器上程序的开发前置服务器上的程序由两个程序构成:A、前置网关程序负责接收处理转发各个终端设备的上传数据并对参数下载功能提供支持。对数据的处理方式主要有文件转发和报文转发。B、系统数据管理程序是一个基于asp.net的WEB程序通过这个程序管理者可以管理黑名单卡类型和各个POS的参数并对各个点的状态进行监控。WEBADMIN是唯一有权限对数据库进行人工操作的接口。..研究方法在公司原有IC卡平台的基础上利用其数据库和卡片管理规则根据现有需求进行软件开发。技术路线和实施方案:.总结过去的客户需求和项目实施中遇到的问题分析设计出一个相对比较完善的结构。为增强通用性对本系统的兼容性进行重新设计将部分软、第l苹绪论硬件模块化提高可选择性和通用性。同时也提高了可维护性。.采用TCP/IP协议为基础自定一套通用的传输命令。TCP超时时间定位秒采用bit数组传输减少传输字节。必要的部分采用DES进行加密来验证数据是否合法。.编程语言上终端机采用C语言作为开发语言配合厂商接口函数。服务端采用微软VB.NET利用.net的多线程和socket套接字实现数据采集传输和分类存储。可行性分析:本课题从实际项目出发通过总结以往的经验结合新的客户需求。其中大部分功能已经分批独立实现本项目对这些独立功能进行整合并增加新的功能技术上是可行的。功能模块化后可以比较灵活的搭配也方便运营公司根据实际需要进行选择。作为一卡通的消费/充值平台本系统基本满足了现阶段的市场需求且投入相对较低从市场角度来说可行性很高。本文功能实现:编写IC卡管理中心的中心管理软件部分模块程序。编写通信子系统的监听转发传输模块程序符合设计流程。编写一体机软件实现了卡操作、终端机管理、数据存储和通信功能。..关键技术◆windowssocket接口◆TCP/IP协议◆微软.net技术◆多线程方法◆采用VPDN(虚拟专用拨号网业务)技术保证数据传输的安全◆跨表数据查询◆DES加密算法根据需要制定通信协议在保证数据安全的前提下提高传输效率。利用已有的TCP/IP模块实现POS机的网络连接和数据传输。采用windowssocket和多线程技术提高服务器端程序的性能。编程语言上POS机采用C语言作为开发语言配合厂商API。服务端采第章绪论用微软VB.NET利用.net的多线程和socket套接字实现数据采集传输和分类存储。.本文结构本文在第二章首先介绍了开发环境。本系统采用多种语言上层软件使用先进的微软VisualStudio进行开发。底层采用C语言开发充分利用C语言的小巧和对底层的强大控制力。同时介绍了数据库环境分析选择数据库的依据。在第章中论述本系统设计目的和原则并介绍本系统结构。在、、章中分别介绍本系统中主要实现的三个子部分:通信子系统、前置网关子系统和一体机设备软件的功能。在最后一章中总结了本文实现的内容并对未来开发方向做出展望。第章系统设计概述第章系统设计概述.概述本系统实现以下功能:.建立一套功能完善、满足一卡通需要的IC卡售卡充值与小额消费系统.收集运营数据建立供财务和运营管理分析用的数据信息.配合已有的清算系统实现运营系统的规范化和数字化管理提高“一卡通公司”经济效益、社会效益和管理效益.对现有系统进行升级统一与合并降低未来可预见的开发难度和工程量增加公司效益。..系统总体结构设计经过对多个城市的需求分析和对现有系统的分析了解本系统采用多级架构模式可以根据不同城市的具体需求搭配使用满足不同的需求。多级架构可以将“一卡通公司”和公交公司等运营公司的权利责任分开使得各自任务明确职责清楚。数据业务在数据处理中心(DPC)进行处理IC卡业务在IC卡管理中心处理。本系统主要包括IC卡管理中心、数据处理中心、消费数据平台、售卡充值平台、数据采集平台、终端设备。其中本项目主要涉及其中的IC卡管理中心、消费数据平台、售卡充值数据平台和终端设备。第章系统设计概述系统结构图如下图所示:E卡留孽融I刮雕针拐础鼎充消费数据处l匿碱(售卡、充直、退长挂失、换卡、年哟ⅡZ■弋公安数消费数据据采懒关碱集碱r、·f、.r消川Il售卡究值消费数瞎数据trttV联机充f直点充Il量鼢『【.小额消费垂咎嵩设备公交消费薹肄嵩设备图.系统总体结构图第章系统设计概述系统网络图如下图图系统网络图第章系统设计概述.子系统功能描述..IC卡管理子系统IC卡管理中心的主要功能包括:.生成黑名单。.清算。.卡片初始化:卡片在正式投入使用前须经过初始化对卡片内的空间按照一卡通的规定进行划分然后将密钥写入卡内从而使这张卡片能够在一卡通领域中使用。同时也对系统中的管理卡进行初始化。.IC卡业务数据处理:完成IC卡的售卡、充值、年检、退卡、换卡、挂失、解禁、IC卡业务结算。.售卡定义:卡片初始化后在用户购买时首先进行售卡操作在卡片上记录售卡信息并且在本地数据库中记录卡片的信息及购买人的信息。.充值定义:当卡片中的电子钱包金额不足或月票次数不足时需要进行充值卡片充值后将充值信息记录到数据库中用于清算。.年检定义:年检是针对那些具有特殊要求的卡片而设置的卡片每年年检一次年检的方式的分为固定年检和活动年检。只有年检后的卡片才可以继续使用否则卡片内的行业数据部分(如:月票)将不能使用。电子钱包可以继续使用。.退卡定义:当用户提出退卡请求根据用户所退卡判断卡片的有效性如果可以退卡则将卡内电子钱包的金额退还给用户并产生一条退卡记录存于退卡表中用于清算。退卡分为:好卡退卡、自然损坏卡退卡、人为损坏卡退卡。.换卡定义:当用户卡片丢失或损坏时可以进行换卡操作将数据库中的卡片信息转移到一张新卡中。换卡包括:自然损坏卡换卡、人为损坏卡换卡、挂失卡换卡。.挂失定义:当用户提出挂失请求根据用户的身份证编码可以查询出用户的卡号在核实用户身份无误的条件下对该卡进行挂失由挂失记录产生黑名单记录存于黑名单表中用于清算。.解禁定义:挂失后的卡片找到后在联机退卡挂失点对其解禁从而使已经挂失的卡片能够继续使用(已经进行了挂失卡退卡或挂失卡换卡操作的卡第章系统设计概述不能解禁)解禁后通知用户天以后才能使用。(解禁后的卡需要在消费设备中再次更新黑名单方可使用否则该卡会被车载机置为黑卡)。..消费数据处理子系统数据处理中心是IC卡管理中心的一部分主要包括两个方面的工作:消费数解析和数据处理。解析是指将终端设备生成的数据文件解析成可以处理的数据格式数据处理是指将这些数据进行入库分析并完成备份。..售卡充值子系统售卡充值数据平台同样是数据处理中心的一部分主要负责售卡充值数据接收数据安全认证和数据处理。..公交消费数据处理子系统公交消费数据处理子系统是专门为公交车载设备建立的一个数据采集平台。它的功能类似于消费数据处理子系统实现公交车载设备消费数据的采集、解析和处理。但因为车载设备的消费数据采集量大采集方式特殊且数据相对杂乱所以单独为其开发一个子系统实现独立工作。..前置网关子系统前置网关子系统主要负责接收和转发各终端设备的通信数据阻隔和内部服务器的直接交互增强安全性。同时利用中转作用可以降低辅助脱机终端的通信难度减少开发难度。另外前置服务器上还搭建了系统管理平台。..终端设备子系统终端设备子系统是实现具体的售卡/充值和消费功能的基础。除公交车上必备的车载刷卡设备外其他终端根据各个城市的具体不同需求配备不同的设备。可选的有:联机读卡设备、脱机一体机、自动圈存模块等。..通信子系统通信子系统为其他子系统模块实现数据交换功能。第章系统设计概述.系统实现的关键技术..开发语言.上位机程序主要以vb.net进行开发。这种语言是微软.net的一种语言实现。与vb相比vb.net继承了前者UI开发简单语法明确简练的特点。在此之上规范了语法使代码更易读。作为一种面向对象的语言vb.net具备良好的继承和接口使得开发重复或类似代码的工作量大大降低。.net类库提供了丰富的开发基类使得一些前较难开发的环节如硬件操作等大大简化。通过对.net类库的引用vb.net可以实现vb很多难以实现的功能。同时.net提供了良好的多线程管理和异步操作支持这在使用socket开发和其他大量占用CPU时间的技术进行开发时程序能有良好的响应也降低了开发难度。特有的事件机制更使得开发工作变得流畅开发中可以将更多的精力放在如何实现需求上。.终端软件开发主要使用C语言进行开发。C语言是一种计算机程序设计语言。它既有高级语言的特点又具有汇编语言的特点。它可以作为系统设计语言编写工作系统应用程序也可以作为应用程序设计语言编写不依赖计算机硬件的应用程序。因此它的应用范围广泛。相对于上位机软件对UI的要求终端软件更强调用较小的代码空间实现功能这使得C语言称为不二的选择。..数据库的选择针对不同的应用环境可以选择不同的数据库。Oracle数据库的跨平台能力使得其在Linux/Unix平台下成为更好的选择。而且在数据系统的安全性、稳定性和并发处理能力上Oracle都表现得很好。而在Windows平台下MSSQLServer得益于微软系统的优秀支持则更胜一筹。过去的MSSQLServer在性能和安全性上相较Oracle毫无优势所以很多比较早使用公交IC卡的城市都使用了Oracle作为数据库。但最近几年微软的SQLServer的性能和安全性大大提高通过网络上查阅的一些资料甚至发现超过Oracle的趋势。并且因为价格的因素也使得很多城市使用SQLServer作为后台数据库。第章系统设计概述基于上述原因优先尊重客户的选择再根据客户的实际数据量和操作系统来选择数据库。第章通信子系统的实现第章通信子系统的实现.概述通信系统负责处理中心系统和各个接入系统、客户端之间的通信。通信子系统并不独立于其他系统而是和其他各个系统模块有机的结合在一起辅助其他系统完成系统自身的功能。同时通信系统也为中心管理提供了必要的信息和交互手段。中心同各分系统之间采用基于TCP/口协议的、面向连接的(流式)Socket方式进行通信分系统是每次通信的发起方。中心系统的传输子系统作为服务器响应各个分系统的通信请求各个分系统以客户端的方式工作从中心请求数据服务。通信系统与各个分系统之间的数据交换有两种主要的形式:数据文件和数据报文。数据文件是指清算中心和各分系统之间的文件交换包括分系统向传输子系统上传文件(消费交易文件、充资交易文件等)和清算中心下发给各个分系统的下传文件(包括清算文件、黑名单文件等)文件接收方将接收到的文件保存在本地并负责将接收的文件送到应用指定的目录下文件发送方负责备份已经成功发送的文件数据报文是指服务器端和客户端之间通信的内容为报文接收方接收到报文后作出相应的处理但不需要将报文的内容保存为文件。数据报文多应用于与终端设备的通信中。.子系统结构设计服务端只有~个通信进程该进程创建一个采用TCP/IP协议的、基于异步多线程的、面向连接的(流式stream)监听服务监听一个特定的端口以相应分系统的通信连接请求。各个终端可以有多个连接请求服务端进程决定是否允许接入通信。如果允许则通信进程建立一个新的链接通道负责与终端连接。当通信结束后通信进程会关闭这条链接来释放资源。通信进程设计成监听端口可配置通信进程控制可接入的终端和同时建立的连接数量保证通信的系统资源。由于是异步多线程的通信模式这样各个通信之间互不干扰相对独立。第章通信子系统的实现.通信报文的定义通信报文是通信协议的重要组成部分也是通信信息的载体。报文是否合理直接关系到通信协议的安全性和通信效率。我制订的通信报文借鉴了金融业报文IS数据包。采用标准包格式重新制订了各域的功能抛弃一些无用域使其符合本系统的要求同时简化报文提高效率。..报文组成报文由位图、域主体两部分组成。其中位图为位字节二进制数字组成。每一位代表一个域是否启用。规定:为该域启用O为该域未启用。图.报文组成域主体由多个定长或者变长的域组成。每个域又由以下部分组成:()域类型表示域内数据类型(字符串或二进制数)字节()域长度表示域的数据有效长度字节()域数据实际有效数据变长..规定的几个特殊域()域位图域()l域终端信息域变长域包括终端编号终端名称(可选)终第章通信子系统的实现端程序版本(可选)本次通信操作员ID(可选)以及其他可能用到的终端信息。()域报文类型域定长域字节定长字符串如控制报文(CMD)数据报文(DAT)等参数报文(CoN)等。本域用来限定报文的功能类型方便处理。()域原始报文信息域变长域包含原始请求报文的部分信息()域变长域如果为连续发送报文则启用本域用来标示数据是否继续传送。()域数据域变长域存放数据。二进制。()域校验域定长域采用CBCDES算法对报文进行加密。报文接收方根据本域和数据加密结果判断报文是否合法。.子系统的实现..Socket类成员.TcpListener类命名空间:System.Net.Sockets从TCP网络客户端侦听连接。提供一些简单方法用于在阻止同步模式下侦听和接受传入连接请求。可使用IPEndPoint类、本地口地址(IPAddress类)及端口号或者仅使用端口号来创建TcpListener。可以将本地口地址指定为Any表示为监听所有本机口。Start方法使用start方法来开始侦听传入的连接请求。Start将对传入连接进行排队。Stop方法关闭TcpListener监听。AcceptTcpClient方法从传入连接请求队列提取连接接受挂起的连接请求。BeginAcceptTcpClient方法开始一个异步操作来接受一个传入的连接尝试。声明:PublicFunctionBeginAcceptTcpClient(callbackAsAsyncCallbackstateAsObject)AsIAsyncResult参数:第章通信子系统的实现CallbackAsyncCallback委托它引用操作完成时要调用的方法。Statr用户定义对象其中包含接收操作的相关信息。当操作完成时此对象会被传递给callback委托。返回值:一个IAsyncResult它引用TcpClient的异步创建。EndAcceptTcpClient方法异步接受传入的连接尝试并创建新的TcpClient来处理远程主机通信。声明:PublicFunctionEndAcceptTcpClient(asyncResultAsIAsyncResult)AsTcpClient参数:asyncResultBeginAcceptTcpClient方法调用返回IAsyncResult。返回值:TcpClient.TcpClient类命名空间:System.Net.Sockets为TCP网络服务提供客户端连接。TcpClient类提供了一些简单的方法用于在同步阻止模式下通过网络来连接、发送和接收流数据。使用远程主机的主机名和端口号创建TcpClient。此构造函数将自动尝试一个连接。Close方法释放此TcpClient实例而不关闭基础连接。GetStream方法返回用于发送和接收数据的NetworkStream。声明:PublicFunctionGetStreamAsNetworkStream返回值:基础NetworkStream.NetworkStream类命名空间:System.Net.Sockets提供用于网络访问的基础数据流。NetworkStream类提供在阻止模式下通过Stream套接字发送和接收数据的方法。可以在同步和异步数据传输时使用NetworkStream类。若要创建NetworkStream必须提供连接的Socket。NetworkStream不支持对网络数据流的随机访问。CanSeek属性用于指示流第章通信子系统的实现是否支持查找它的值始终为false读取Position属性、读取Length属性或者调用Seek方法都会引发NotSupportedException(不支持)异常。BeginRead方法从NetworkStream开始异步读取。声明:PublicOverridesFunctionBeginRead(bufferAsByte()offsetAsInteger,sizeAsInteger,callbackAsAsyncCallbackstateAsObject)AsIAsyncResult参数:bu侬:rB”e类型的数组它是内存中用于存储从NetworkStream读取的数据的位置。o凰赍bu胁中开始存储数据的位置。sizr要从NetworkStream中读取的字节数。callback在BeginRead完成时执行的AsyncCallback委托。statr包含用户定义的任何附加数据的对象。返回值:表示异步调用的IAsyncResult。EndRead方法处理异步读取的结束。声明:PublicOverridesFunctionEndRead(asyncResultAsIAsyncResult)AsInteger参数:asyllcResul卜一一个表示异步调用的IAsyncResult。返回值:从NetworkStream中读取的字节数。BeginWrite方法开始向流异步写入。声明:PublicOverridesFunctionBeginWrite(bufferAsByte()offsetAsInteger,sizeAsIntegercallbackAsAsyncCallbackstateAsObject)AsIAsyncResult参数:bu仟c=rByte类型的数组该数组包含要写入NetworkStream的数据。o凰eHu脑中开始发送数据的位置。第章通信子系统的实现Sizr要写入NetworkStream的字节数。Callback在BeginWrite完成时执行的AsyncCallback委托。State一咆含用户定义的任何附加数据的对象。返回值:表示异步调用的IAsyncResult。EndWrite方法处理异步写入的结束。声明:PublicOverridesSubEndWrite(asyncResultAsIAsyncResult)参数:嬲yncResult一表示异步调用的IAsyncResult。..Socket监听功能的实现通信进程创建一个使用TCP/IP协议的、面向连接的Socket套接字并利用该套接字监听特定的端口连接请求。通信进程负责管理清算中心和所有的分系统的连接包括连接权限和同时连接的数量。通信进程的监听流程如图.所示。第章通信子系统的实现图.监听流程图通信进程在判断是否允许接入时会限制同时连接的数量当连接的数量超过最大允许值时服务器Socket就会阻止该接入请求直至有连接释放时才会允许新的连接接入。当服务器Socket接入一个连接时产生一个新的Socket负责和客户端Socket进行通信同时会生成一个通信处理线程处理两者之间的通信服务器Socket并不等待该线程的处理结束而是直接等待下一次的连接请求。为了保证通信进程能随时响应关闭请求服务器Socket采用异步非阻塞式的监听即:无论有无连接请求系统都会继续后面的处理当接收到退出指】第章通信子系统的实现令时关闭服务器Socket进入通信模块结束处理。通信进程结束时要等待其所有子线程都结束。本节部分源代码参见附录A..报文过程处理所有的通信过程由客户端发起通信控制头由客户端组织、发出通信过程处理根据通信控制头的内容选择具体的业务处理过程。流程图如图.所示。图.报文处理流程图每个通信过程处理开始于接收一个通信控制头根据面向的对象不同报文会有所差异。.充值/消费一体机通信的实现第章通信子系统的实现充值/消费一体机主要作为脱机消费终端使用多用在不能提供稳定网络的环境下。当需要进行联机通信时一体机通过专线拨号的方式与前置服务平台建立连接实现采集数据的上传和所需参数的下载功能。.网络结构一体机网络结构如图.所示。霎一睁|簪端终端P。馓终靖终端据对账圈一体机网络结构图第章通信子系统的实现..通信流程通信整体流程如图.所示。图.一体机整体通信流程图第章通信子系统的实现.发起通信当准备进行联机通信时一体机执行拨号程序通过读取存储器中指定的远程中心号码进行拨号。出于安全目的这个连接有别于一般的电话拨号而是采用PSTN的专有线路。拨号后一体机程序试图建立一个针对指定端口的连接。前置服务程序判断是否有足够的资源来允许建立连接如果有同意建立连接。图.发起通信流程第章通信子系统的实现.终端认证当连接建立后一体机发送认证请求到前置服务程序。前置服务程序通过一体机提交的信息生成一个明文信息返回给一体机。一体机根据预先定义好的加密方式对明文加密后反馈给前置服务程序然后由前置服务程序判断这一个返回加密数据是否合法。如果合法则允许一体机进行其他通信如果不合法则中断本次连接。一体机前置服务程序发送认证请求根据信息生成明文及终端信息//对明文加密/返回密文数据解密密文继续下一步认证成功一◇图.认证流程.时间校对一体机发起时间校对请求。前置服务程序返回当Ij{『服务器上的标准时间。这个时间十分重要因为一体机上的结算等需要准确时间功能都要以服务器时间为准。第章通信子系统的实现一体机前置服务程序发起校对时间请求返回服务器时间图.时间校对.参数下载一体机发送参数下载请求。前置服务程序根据一体机的机器编号从数据库或者中心发布文档中获取相应信息打包成自有的协议包后发送给一体机。一体机对协议包解包后将参数存储到对存储器应区域中并实时更新变量。下载的参数包括黑名单、卡类型列表、一体机参数表等。第章通信子系统的实现Y图.参数下载流程一般来说IC卡黑名单数量与该城市发卡量有一个比例关系大约为/到/。这就决定了一个发卡量大的城市其黑名单数量会十分庞大。而受限于一体机的机能并不能通过文件的方式传输这个黑名单。所以在传输黑名第覃通信子系统的实现单时采取了分批分量的方式下载。将全部黑名单分为个部分:()基础黑名单()增量黑名单()白名单基础黑名单一般一个月或者几个月发布一次包含有发布时最新最全的黑名单数量。增量黑名单每天发布一次是在最近一次基础黑名单发布之后产生的新的挂失卡号名单。白名单每天发布一次为解禁的卡号列表。一般来说每月的月初下载一次基础黑名单这次下载通常会占用较多时间。之后的每天下载增量黑名单和白名单。而且因为黑名单的特殊性一般把整个名单分为多组。服务程序一般以条为一组打包在一个报文内传输。当报文在一体机上接收并通过校验后一体机返回确认报文请求下一组数据否则将发送重发报文请求重发刚才一组数据。见图.。第章通信子系统的实现图.黑名单下载流程.数据上传一体机发送数据上传请求。前置服务程序根据请求判断将要上传的数据类型并根据设计要求来生成数据文档或者直接将数据入库。每次报文发送一条数据在前置服务程序验证数据完整性后发送一个返回报文告知一体机是重发上一条数据还是继续发送新的数据直到一体机中全部需要上传的数据发送完毕。第章通信子系统的实现图.数据上传流程.通信结束一体机发送结束通信请求。前置服务程序接到请求后回复一体机可以断开连接。一体机切断网络连接通信结束。前置服务程序在一体机断开连接后释放分配给本次连接的资源。第章通信子系统的实现.联机模式通信的实现网络结构联机模式的网络结构由中心服务器网络和终端部分组成。邕联机模式网络结构创第章通信子系统的实现..通信流程联机模式通信需要较好的网络环境。设备是一直在线的可以随时方便的查询数据库中的信息并且通过服务器的强大性能完成各种认证计算和操作。终端只负责基本的IC卡读写和一些信息录入反馈等。.使用机具在线充值流程网点客户机进行充值时由读写机具完成对卡片的充值操作通过认证卡内密钥与ISAM卡是否匹配来确定是否是本系统卡。客户端程序发送给读写机具读卡指令后读写机具会将卡内的信息发送给客户端用来显示给客户。如果继续充值那么需要根据相应提示来确定充值金额。此时充值交易开始客户端将充值金额和相关内容组成充值请求报文发送给中间件。中间件首先判断请求报文是否合法以及有效然后查询黑名单并进行充值权限和授权充值额度的认证。认证通过后后台交易流程开始数据库记录本笔充值交易数据相应扣减网点的充值额度并将充值内容通过客户端返回给读写机具。读写机具根据发送回来的内容再利用ISAM卡计算充值密钥依据充值规则对用户卡进行充值。充值成功后由客户端向后台返回充值成功报文充值交易及后台交易流程均结束。流程示意图如图.所示。第章通信子系统的实现值开始)J.读取卡片信息J输入充值金额J交易开始熊厶、鲥一会..\./一V迁车{i过交易开始J生成充值记录./\『返刚“认证不通过”进入冲正流程·觚《到返回报多一返回报文报文\/L威I\.::威l功I工发送‘‘充值成功’’报文lI交易结束交易结束J(充值完成)图.使用机具的在线充值流程示意图第章通信子系统的实现.使用一体机的在线充值流程读卡机具需要一台PC配合所以控制程序实际上是工作在PC平台的。这样通信中使用的数据报文可以通过PC端程序进行封包或解包。与机具不同一体机是独立工作的单片机结构的设备并不需要专门分配PC。但由于其性能的限制频繁的封包解包对于一体机来说也相对吃力。本系统中将采用中转的办法来实现与数据中间件接口结合。一体机将原有报文发送到一体机前置服务服务器由前置服务程序接收重新封装成符合数据中间件接口的数据报文然后发送给数据中间件。经后台服务器处理后通过中间件将数据报文返回给前置服务程序再由服务程序将数据重新封装为一体机协议中的报文发送给一体机最后完成充值功能。流程如图.所示。一体机前置服务程序数据中间件图.使用一体机的在线充值转发流程第章前置网关于系统的实现第章前置网关子系统的实现.概述前置网关子系统是中心服务器同外网交互的一个平台。出于安全的考虑如果让外网访问直接到达中心服务器或者直接访问数据中心显然是欠妥的。同时由于中心网络中可能存在多个服务器协同工作。作为数据访问者如果直接访问则可能需要建立多个连接不但不安全而且不必要的资源开销也会增加。使用前置网关服务器可以有效的解决这个问题。将专门开茇的网关程序安置在网关服务器上对来访的数据进行分类综合处理和转发并将相应的返回数据返还给访问者这不但增强了安全性同时也降低了访问者的访问难度。图前置网关服务程序网络示意图网关服务还可以独立部署在某些分立采集点实现数据在采集点采集然后上传信息到中心汇总的工作模式。一声蝴^.陵麓碱固一辫一燃陪《霉◇il妒错妒鲥第章前置网犬子系统的实现图.分立模式工作的前置网关服务程序网路图前置网关服务器上还放置有通过开发的B/S管理程序可以实现远程管理系统运行参数和监控系统运行状态。基于B/S程序的特点管理员在进行管理和监控的时候不在需要特定计算机和专用的客户端这大大方便了管理。当然出于安全的考虑可以通过IIS服务设置限制可访问的m范围和访问用户。本网关服务可以和网站服务使用同一服务器节约客户的成本。.前置网关数据转发的实现前置网关服务程序的主要功能就是对数据进行转发。转发方式可以分为报文转发和文件转发。..报文转发的实现所谓报文转发就是将终端传回的报文进行分类整理然后按照需要向不同的服务程序发送并等待回应。当收到回应后将各个回应(如果为多返回)重新打包并发送给终端。另外针对一体机的处理机能较低这一情况为了降低一体机程序开发难度和提高一体机效率一体机采用简单的二进制报文方式通信。而将这些简单的报文转换成通用包报文的工作也交给网关程序负责。图.所示为报文的转发例程:第章前置网关子系统的实现缈嵩哆J对报文解包按照报文类型将数据按需投送给各个服务器进行处理J等待报文返回按需重新封包r将封好的报文发送到终端图.报文的转发..文件转发的实现文件转发功能是提供给旧有系统的一个接口。原有系统的部分模块并没有直接的TCP/IP通信接口而是使用临时文件作为数据采集和下载的传输媒介。因为在原有系统工作正常的情况下对其做修改是没有必要和不安全的。所以出于安全的目的并为了降低开发难度文件转发模式仍然保留。网关程序可以按照规则对终端上传的数据进行解包和整理、解析。然后根据原有项目模块的数据格式定义生成相应的文件存放在指定位置实现数据采集功能。同时可以读取原有模块生成的设置信息文件根据终端的请求将这些信息打包发送给终端完成参数下载等功能。生成的文件将由原有的数据处理模块如消费数据采集平台等进行处理将数据入库分析完成一次数据采集。转发例程如图.所示第章前置网关子系统的实现绷艮L对报文解包★按照报文类型将数据生成文件L将文件存放到指定地址图.文件转发功能在一些特殊情况下比如某些项目需要在终端部署密集的地区设置分立采集点而采集点需要实现尽快的核对采集信息下发终端参数等功能。为了解决这类问题文件转发的功能也是必须的。当采集文件生成后将数据信息解析录入到采集点本地的数据库并执行清算过程(主要完成合法数据累计、剔除重复数据、备份错误数据并报警等功能)。同时根据客户要求(可能客户为多方)将采集文件通过FTP、HvrP、PP等方式上传到管理中心进行清算或备份工作。根据需要采集文件可以先进行可逆的加密后再传输。这样做的目的除了方便采集点核对账目外也增强了数据的安全性。尤其是当多个客户以合作方式采用本系统时这样就可以大大增强对账的准确性减少一些人为因素对数据完整性的干扰。..网关程序的实现前置网关程序的实质是一个TCP/IP监听和发送程序并包含简单的数据处理能力和文件的读取和写入功能。网关程序需要一面监听来自终端的传入连接~面建立和内部各服务器的第章前置网夫子系统的实现连接。网关程序工作时至少包含个以上线程其中监听线程监听某个固定的端口接收数据然后建立面向内部服务程序的连接用于向内转发数据报文。根据需要访问的服务多少决定建立多少个向内的连接每个连接都在独立的线程中工作互不干扰。终端在每次需要通信时才建立连接完成通信后会自动关闭连接这样可以降低网络资源的占用减少因占用网络时间而产生的费用。网关程序需要在及时的响应终端的连接请求的同时不能失去界面的响应。采用异步的监听方式虽然会稍微提升响应时间但这个影响微乎其微并不会造成终端的负担。且因为不阻塞监听线程就大大降低了资源的开销而且不会妨碍界面的响应使程序的操作更加友好。根据市场调查一般的通信会集中在使用方早上开始营业和晚上结束营两个比较集中的时间段内这就需要监听线程有良好的并发处理能力以应对可能发生的短时间内集中通信的问题。前置网关服务程序专门为此建立了一个简单的线程池来处理连接的建立和管理连接的排队。线程池包括一个监视线程一个线程队列和一个线程计数器监视线程用来巡视线程池中的线程状态线程队列用来存放线程和进行线程排队线程计数器用来标示当前的己用线程数量。线程池建立后会设置一个规定最高线程数比如。这样当线程计数器达到后将不再允许建立新的线程。表现在连接管理上就是当已经有个连接处于存活状态时新的连接将不被允许建立。直到有当某个线程执行完毕后释放了对应的那部分资源后新的连接才被允许建立。如果一个线程长期没有反应或者发生网络连接超时问题那么这个线程的资源会被监视线程强制释放。监视线程工作流程见下图:第章前置网关子系统的实现最后图.监视线程工作流程这样不仅解决了多线程开发中常见的线程过多导致资源耗尽的问题同时也使程序具有了一定的阻挡外部网络攻击的功能。网关程序和内部服务器之间的连接使用频率很高所以向内的连接采用长连接的方式进行报文的传输。所谓长连接是一种特殊的TCP短连接方式。当连接建立后要保持连接的持续存在即在每次通信后并不中断连接。因为TCP每次连接的三次握手是很大的系源开销长连接的优势就在于减少这些开销。为了维持长连接我采用了发送“心跳包’’的方式来确定服务器在线和连接的通畅。“心跳包”是一种特殊的报文因为其发送方式就好像心脏跳动一样有固定的时间间

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/18

IC卡一卡通小额充值消费系统的构建

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利