框架设计网络通信论文

2022-04-19 版权声明 我要投稿

摘要:该文提出了运用Struts、Hibernate和Ajax框架设计与实现网上考试系统的方案,并进行了系统的功能设计、软件架构以及各层的规划,对系统的性能问题给出了解决方案。实验结果表明,该系统具有较好的系统性能和良好的用户体验。今天小编为大家精心挑选了关于《框架设计网络通信论文 (精选3篇)》,欢迎大家借鉴与参考,希望对大家有所帮助!

框架设计网络通信论文 篇1:

一种边灯式FOD探测设备伺服控制系统设计

DOI:10.19850/j.cnki.2096-4706.2021.08.012

摘 要:文章分析了边灯式FOD探测设备伺服控制系统的特点,从转台框架设计、伺服控制器硬件设计和伺服控制器软件设计三个方面介绍了伺服控制系统的设计与实现。结构上采用步进电机经行星减速机构及齿轮副减速的形式,伺服控制器硬件采用TMS320F28335作为主处理芯片,软件采用模块化方法进行设计和实现。该伺服控制系统已完成实现,并已通过了高低温及振动冲击环境试验,能够满足工作方式、精度、环境适应性和远程更新等需求。

关键词:FOD;转台结构设计;伺服控制器;伺服控制软件

Design of a Servo Control System of Side Lamp FOD Detection Equipment

SANG Qinghua,ZHU Weilin

(The 38th Research Institute of China Electronics Technology Group Corporation,Hefei 230088,China)

0 引 言

机场跑道异物(Foreign Object Debris,FOD)的快速定位和检测已成为飞机飞行安全的重要保障[1],雷达和图像处理技术的发展使自动检测跑道异物成为可能,然而,若使雷达或相机在FOD探测中真正发挥作用,必须依赖高性能的控制平台作为载体[2],伺服转台可作为其运动载体。雷达与摄像设备以固定或移动方式监测整条跑道[1],固定方式主要有边灯式和塔式,本文研究的是边灯式FOD探测设备的伺服控制系统。

作为雷达和相机的运動载体(并为跑道异物定位提供数据[3]),此伺服控制系统应具有较高的位置控制精度和较好的运动平稳度。边灯式安装方式是将设备安装在跑道边缘,工作环境受日照强度、近地面二次辐射、环境温度[4]以及飞机尾流强风等影响,对转台的环境适应性提出了较高的要求。因机场流量大,为后期设备调试和维护升级少占用跑道时间,转台设备软件应具有远程升级功能。

本文从转台框架设计、伺服控制器硬件设计和伺服控制软件设计等方面系统介绍了某边灯式FOD探测设备伺服控制系统的设计与实现。在结构设计上充分考虑了系统精度要求和飞机尾流强风影响,伺服控制器设计采用TI的32位浮点型芯片TMS320F28335作为主处理芯片,软件设计上采用模块化设计方法。目前该伺服控制系统已经实现,满足系统精度和工作方式等要求,并通过了高低温和振动冲击环境试验,系统运行稳定,环境适应性强。

1 伺服控制系统总体设计

伺服控制系统的主要功能是接收雷达分系统的控制指令,驱动转台运转,承载雷达和相机按照期望工作模式运动到期望位置,并向雷达和相机反馈转台当前位置。

伺服控制系统设计主要包括转台框架设计、伺服控制器硬件设计和伺服控制器软件设计,如图1所示。转台框架设计主要包括伺服转台结构设计和主要器件选型;伺服控制器硬件设计主要实现伺服控制电路板各功能模块,伺服控制器软件设计主要完成系统数据采集、逻辑运算和控制驱动等功能实现。

2 伺服控制系统转台框架设计

2.1 转台框架结构设计

转台框架设计为单轴旋转结构,由底座、框架、电机驱动组合、齿轮传动组合、角度检测机构及旋转组合等部分组成,如图2所示。

电机驱动结构采用步进电机经行星减速机构及齿轮副减速后,通过电控实现转台运动。为防止转台在高速飞机尾流下过冲导致设备损坏,电机末端加装制动器,在转台不工作或掉电情况下,可抱闸锁定。齿轮传动组合中安装偏心套,可消除齿轮传动间隙。同时,角度传感器部分经双片齿轮减速输出至绝对值编码器进行测量,可消除角度检测的间隙和误差,确保转台旋转满足精度要求。设备整体框架采用圆柱形造型设计,可减少风载荷对设备的附加载荷。框架各零部件安装接口处设计有密封槽保证设备密封性。

2.2 主要结构件选型

2.2.1 电机驱动组合选型

转台驱动系统需克服转台工作时的惯性力矩、摩擦力矩和低温时轴承附加力矩等。根据设备整体尺寸、功率、性能需求及成本分析,选用某型号两相四线制步进电机,工作电压10~48 V,额定电流3 A,静扭矩1.5 Nm,步距角1.8°。制动器选用弹簧式断电刹车,额定电压24 V。减速机采用某型号行星齿轮减速器,减速比36,额定扭矩50 Nm。末级传动链采用大、小齿轮传动方式,传动比3.6。

2.2.2 角度传感器

光电编码器具有精度高、响应快、抗干扰能力强的优点,因此本系统采用光电编码器作为角度传感器。系统精度要求0.1°,故编码器最终分辨率应大于12位;为避免系统意外掉电导致的寻零位问题,选用绝对值编码器;伺服控制系统主轴与编码器的传动比为1:2,为方便后期软件设计中圈数判断,选用多圈编码器。综上,本系统选用某型号的15位多圈绝对值式编码器,该编码器工作电压为+5 V,通信接口为RS485,支持Modbus协议。

3 伺服控制器硬件设计

伺服控制器工作原理和硬件主要组成如图3所示。

伺服控制器接收雷达分系统的工作模式、定位角度等工作指令,通过编码器检测转台框架角度位置,综合工作指令和控制算法产生驱动信号,经功率放大后驱动电机运转,实现雷达分系统所期望的运动控制,并向雷达分系统和相机反馈伺服分系统的实时角度等状态信息。非超载情况下,电机转速和停止位置只取决于脉冲信号的频率和脉冲数[5],改变脉冲频率即可改变转台运动速度,控制PWM脉冲数量即可控制转台角位移量,改变驱动模块的DIR信号电平可以控制转台运动方向。同时,系统设计了网络接口,通过连接到外部交换机上,可方便地实现远程程序更新。

伺服控制器以32位浮点型芯片TMS320F28335为主处理芯片,该芯片主频可达150 MHz,指令周期为6.67 ns,具有强大的运算能力。伺服控制器硬件电路主要包括以下功能模块:DSP及其外围电路、电源管理模块、通讯控制模块、驱动控制模块、制动器控制模块等。各模块的实现方式及功能为:

(1)DSP及其外部电路。包括512 kB×16位大小的RAM扩展、30 MHz晶振时钟电路、JTAG电路等。DSP电路模块主要完成逻辑判断、控制运算、系统通信等功能。

(2)电源管理模块。主要实现防雷防浪涌和所需的电源转换功能。防雷防浪涌功能采用两级保护电路实现,第一级采用GDT气体放电管+电感,第二级采用TVS瞬态电压抑制二极管。系统外部供电为+24 V,伺服控制器硬件所需电源有+24 V、+5 V、+3.3 V和+1.9 V,其中+24 V到+5 V以及+5 V到3.3 V和1.9 V的电源转换由此模块实现。

(3)通信控制模块。包括RS422通信接口和网络接口。RS422通信通过DSP的SCI模塊和RS422收发驱动芯片实现,网络接口通过DSP的SPI模块和网络控制芯片W5500实现。由于所选择的编码器为RS485半双工通信接口,为实现控制器小型化设计,充分利用422收发模块芯片功能,设计中利用RS422全双工接口实现编码器角度数据的采集,只需在接线时将RS422的T+和R+与RS485的A相连,将RS422的T-和R-与RS485的B相连,同时在软件设计时注意区分收发时序即可实现。

(4)驱动控制模块。TMS320F28335具有6个EPWM模块,可以输出PWM控制信号,但DSP输出信号电平为3.3 V,电机驱动芯片控制信号所需电平为5 V,因此需实现电平匹配。驱动控制模块主要实现3.3 V到5 V的电平转换,并实现步进电机相电压的生成。为提高步进电机控制精度,降低步进电机的振动和噪声,驱动器细分设置为8。

(5)抱闸控制模块。此模块与驱动控制模块类似,DSP输出的PWM信号经3.3 V到5 V电平转换后,控制MOSFET的通断实现DC/DC转换,进而改变制动器两端电压。

4 控制器软件设计

伺服控制软件是整个伺服控制系统的大脑,系统逻辑与控制功能最终都需要通过软件实现。本系统软件主要完成数据采集、数据分析与处理、电机驱动、设备间通信、远程更新等功能。控制器软件采用模块化设计方法,主要模块划分如图4所示。

伺服控制器软件各模块功能为:

(1)系统初始化模块。主要实现系统上电后DSP的GPIO、SCI、EPWM、SPI等的初始化,网络通信相关参数和寄存器的初始化,系统变量初始化,电机驱动器和制动器初始化等,此模块在主程序部分完成。

(2)系统自检模块。系统初始化完成后进入自检模式,自检完成后等待雷达分系统的控制指令,自检结果传送给雷达分系统,此模块在主程序部分完成。

(3)角度采集模块。编码器设置为高速自动上传模式,更新频率为200 Hz,利用DSP的SCIB完成角度数据采集与解析。由于存在加工误差、结构安装误差,系统安装完成后,利用激光跟踪仪或全站仪对角度检测误差进行标定,并在软件中采用“查表+线性插值”的方法进行补偿。此模块在DSP的SCIRXINTB中断处理部分实现。

(4)指令接收处理模块。利用DSP的SCIA接收雷达分系统工作模式和控制指令,并进行解析处理。根据结构设计的转动范围,增加软限位保护,防止过冲对设备造成损坏。此模块在DSP的SCIRXINTA中断处理部分实现。

(5)控制算法模块。采用位置、速度双闭环控制,如图5所示,系统综合雷达分系统的工作指令、当前框架角度和PID控制算法,产生驱动信号,经功率放大后驱动电机运转。因空间有限,系统未设置速度传感器,只安装编码器作为角度传感器,软件设计中通过对角度位置取微分的方式计算速度分量,为避免速度分量噪声过大,采用滑动平均值法进行滤波处理。控制算法对实时性要求高,此模块在DSP的timer0中断处理部分实现,控制周期取5 ms。

(6)抱闸控制模块。在电机转动过程中,应使制动器保持带电松闸状态。利用DSP的EPWM模块输出脉冲波形,调节脉冲占空比可改变施加在制动器两端的电压值。系统选用的制动器额定电压为24 V,上电松闸后,当两端施加电压降低至小于7 V时,制动器将抱闸制动。为降低系统热耗,给制动器上电松闸后,在电机工作期间,减小脉冲占空比使制动器两端电压保持在10 V左右(留有一定余量);需要制动时将占空比减小为0,使制动器两端电压为0而抱闸制动。抱闸控制模块对实时性要求不高,此模块在DSP的timer0中断处理部分实现,控制周期取50 ms。

(7)网络更新模块。采用TCP/IP协议,利用DSP的SPI模块完成程序的远程更新功能,此模块在DSP的SPIRXINTA中断处理中实现。

5 结 论

本文从框架结构设计、伺服控制器硬件设计和伺服控制软件设计等方面详细介绍了某边灯式FOD探测设备伺服控制系统的设计与实现。目前,该FOD探测设备伺服控制系统已完成实现,使用激光跟踪仪进行角度标定并进行软件补偿后,定位精度优于0.1°,具有扇扫、定位、自检和停止等工作模式,具备抗高速飞机尾流、软件远程更新功能。该系统通过了-30 ℃~60 ℃的高低温试验和加速度为2 g、频率为10 Hz~150 Hz的扫频振动冲击试验,试验结果表明系统运行平稳,对环境适应性强。

参考文献:

[1] 张艳,孙灿飞,郑国,等.机场跑道异物检测技术的研究与进展 [J].航空科学技术,2017,28(5):14-18.

[2] 孙久荣,王大明,李寒.基于STM32的FOD雷达转台控制系统的设计 [J].计算机与数字工程,2015,43(12):2288-2290.

[3] 郭晓静,于之靖.機场跑道异物定位算法研究 [J].测控技术,2012,31(5):41-44.

[4] 刘双富,余南阳.机场跑道义务探测系统光学探测转台温度控制试验研究 [J].制冷与空调,2019,33(1):98-102.

[5] 党威望,岳改丽.基于DSP的四相步进电机控制系统设计 [J].计算机技术与自动化,2017,36(12):51-54.

作者简介:桑青华(1986—),女,汉族,河南商丘人,工程师,硕士研究生,主要研究方向:伺服控制设计。

收稿日期:2021-03-14

作者:桑青华 朱伟林

框架设计网络通信论文 篇2:

基于Struts+Hibernate+Ajax框架开发网上考试系统的设计与实现

摘要:该文提出了运用Struts、Hibernate和Ajax框架设计与实现网上考试系统的方案,并进行了系统的功能设计、软件架构以及各层的规划,对系统的性能问题给出了解决方案。实验结果表明,该系统具有较好的系统性能和良好的用户体验。

关键词:Struts;Hibernate;Ajax;网上考试系统

开放科学(资源服务)标识码(OSID):

1 引言

近年来,J2EE平台已经成为开发企业级应用的事实标准和规范之一。J2EE应用系统各层的技术实现提供有多种选择,每一种技术都存在着优缺点,对应着适用的范围。不同的技术选择方案,都将会带来系统性能的显著差异,用户体验也千差万别。所以在进行系统设计的时候,如何合理的选择各层的技术以及将这些技术整合来实现一个应用系统是一个难题[1]。网上考试系统是将计算机和网络通信技术应用到教学领域的产物。现有的网上考试系统或多或少都存在着一些现实问题,比如系统功能还不完善、用户体验不好、系统性能需要进一步提高等等。如何设计一个功能强大、性能良好且有良好用户体验的网上考试系统,也是值得研究的一个方向。

Struts是一个基于MVC设计模式实现的框架,主要采用Servlet、JavaBean、JSP等技术解决软件开发过程中由于系统复杂性所带来的各种问题。目前Struts在许多的大型的软件系统中得到应用。

对象技术是应用系统开发常见的环境,关系数据库也是最常见的信息存储方法,但是这两种方法却存在着差异性。这是因为,对象技术是基于软件工程的原理,而关系则是基于数学思想方面的原理,二者的差异性是一个需要解决的问题。Hibernate框架解决了对象和数据库的映射关系。另外,Hibernate的缓存机制也能够带来系统性能的提升[2]。

同时, AJAX的异步特性使得Web页面的局部更新成为可能,这将带来用户体验的提升。

J2EE的上述技术的特点很适合构造网上考试系统这样一个基础平台。

2 系统功能设计

为了实现网上考试系统的可扩展性和开发的方便性,网上考试系统模块划分思想及要求遵循:各模块的功能要相对单一;模块间耦合度较小,便于并行开发;各模块工作量基本相当。在该系统的设计中,针对网上考试系统中教师、学生、管理员三大主体,将网上考试系统按功能分为七个模块部分,各模块功能描述如下:

1) 考生信息管理模块

这是该系统中相对独立的模块,主要完成考生基本信息的管理。主要包括导入考生考试信息,导出和回收考生试卷,方便教师对考生基本信息进行编辑。该模块的开发主要为后续模块,如成绩评判,考场监控等模块提供信息,也可作为一个独立的学生信息管理系统使用。

2) 试题库模块

主要进行试题的编辑。该系统包括客观题和主观题两大类。客观题包括单项选择题、多项选择题、判断题。主观题包括填空题、论述题、文档处理题、编程题、简答题、名词解释。该模块实现课程名称的设置和各种题型题目的新建、修改、删除、排序和保存。同时也提供试题的批量导入与导出、题库的清空。该模块主要为随机抽题组卷模块提供试题库支持。这一部分也是一个相对独立的基于试题的信息管理系统

3) 抽题组卷模块

从试题库中使用合适的人工或自动抽取算法来生成试卷。该系统应该以算法和接口为主,根据试题的知识点、类型、分值等信息生成试卷。同时,这一部分也考虑了添加输出Word考卷的功能,这样可以提供非在线考试系统的类似功能。

4) 考生登录模块

主要完成考生登录考试系统的身份验证。

5) 在线考试模块

这是网上考试系统系统最重要最核心的模块。这一部分应具有考生登录验证、考试时间显示、试卷暂存、文档的下载上传、提交试卷等功能,同时应以各种措施保证网络考试的安全和正常的进行。

6) 成绩评判模块

这一部分应该主要分成客观题评判和主观题评判部分,客观题评判应即时生成,主观题评判应以易用的方式汇总至教师处以利于批改。

7) 考场监控模块

可以针对正在考试进行中的考生信息进行确认,对考场情况进行查询和统计,实时刷新包含考场报名人数,参加人数,考试情况等的数据,并能以多种图形方式查看。同时进行已考和在考考生管理、缺考考生管理,并可以导出成绩单。

3 系统软件架构

网上考试系统在逻辑上分为五层,包括客户层、表示层、业务层、持久层和数据库层。客户层主要用于人机对话;表示层实现对客户的请求做出响应;业务层负责进行数据库的访问等;持久层完成对数据库操作方法的封装等;数据库负责数据的存储和备份等。在进行WEB应用开发时,最主要做的是对表示层、业务层、持久层进行规划和实现。

网上考试系统的开发在表示层采用Struts框架,持久层采用Hibernate框架。另外,采用AJAX技术,改善了传统的Web表示层“提交-刷新”的方式,提高了用户的体验。本系统的整体架构所下图所示:

4 基于Struts+Hibernate+Ajax的解决方案设计

下面给出网上考试系统各层实现的主要组件,可以从宏观上了解整个系统的实现。

1) 表现层的实现:

网上考试系统各模块的JSP页面文件构成了视图层。主要实现对静态页面的规划和划分,采用模板创建各个静态页面,这种设计思路可以方便以后的系统扩充和升级。

2) 业務逻辑层(模型)实现:

业务逻辑层的实现主要是利用Struts的Action类及方法。另外还包括相对应的进行数据库操作的Hibernate类及方法。

3) 数据持久层:

包括主要关系表与相对应的Java类以及映射文件的建立。本系统中,持久层使用数据库连接池技术,以提高系统性能。

4) 数据库设计

数据库结构设计对于系统设计尤为重要。一方面要考虑设计方案的通用性,另一方面也要考虑系统的可扩展性。由于该系统数据表较多,只列出几个关键表的类图设计:

5 系统开发中几个主要问题的解决

1) 页面反映速度问题的解决

主要考虑的是,在传统的教师的组卷模块中,由于该组卷处理大部分位于一个页面上,页面提交后系统刷新,这不仅会造成系统的延迟,也会造成用户点击鼠标前后位置的丢失,从而没有很好的用户体验;而采用以异步交互为特征的AJAX技术后,系统在不刷新页面的情况下立即给出显示效果,而全部组卷结束之后,才需要提交整个页面。也就是说,整个组卷过程,用户仅需要一次的等待系统刷新延迟。

2) 服务器承载能力问题的解决

现有的网上考试系统有时会出现一些性能问题。比如在大量学生提交试卷时,会出现服务器无法承载过多用户,导致系统停止响应、页面错误,甚至丢失试题已答结果、丢失成绩等问题。本系统采用Hibernate的缓存机制,对系统进行了性能优化,缓存技术的使用可以极大地改善了系统性能,部分避免上述问题的产生。

本系统投入运行之后,进行了并发测试,实验结果证明,系统性能表现良好。

参考文献:

[1] 崔枝. 基于Ajax技术电信财务数据处理平台的设计与实现[D].杭州:杭州电子科技大学, 2016.

[2] 林志灿. Struts与Hibernate框架下在线考试系统的设计与实现[J].信息技术与信息化,2018(1):79-83.

【通联编辑:梁书】

作者:乔俊玲

框架设计网络通信论文 篇3:

电磁频谱监测系统中间件设计实现方法

【摘要】基于gRPC框架设计实现电磁频谱监测系统中间件,主要包括:定义gRPC服务、实现客户端与服务端功能。实践表明该方法通用性好,适用于架构分布式测试系统,能够满足自动测试方向的需求。

【关键词】电磁频谱监测系统;中间件;远程过程调用;gRPC

Key words: Electromagnetic Spectrum Monitoring System; middleware; Remote Procedure Call; gRPC

1.引言

隨着计算机技术和网络通信技术的发展,分布式技术在计算机的工程应用领域,例如:数据信息管理、自动化等方面取得快速发展,并应用于自动测试系统的分布式部署中,即基于局域网与互联网,把分散在不同地点、不同测试能力的计算机、设备组合在一起,实现远程自动化测试与测试资源共享。电磁频谱监测系统属于分布式测试系统,它具备的一个重要能力是远程过程控制功能,中间件技术为这种分布式架构方法提供了有力保障,使用该技术可独立于平台与语言实现远程过程调用、数据库访问、消息传递等服务,从而实现电磁频谱监测系统中不同监测角色(如:客户端、服务器、设备)的灵活组态、远程测试、以及资源共享与管理。

分布式测试系统中,各种应用不是部署在一个进程(/主机)中,通常基于RPC(Remote Procedure Call,远程过程调用)协议实现对远程计算机服务的调用。RPC遵从server/client模型,实际使用时,客户端调用服务端提供的接口就如同本地调用,且不需要开发网络通信和协议层的功能,只需关心业务相关的服务。目前有多种RPC框架用于开发实现网络进程间通信,例如:Dubbox 、thrift ,gRPC等。其中gRPC 框架是一个由谷歌开发的语言中立、平台中立、开源的 RPC 框架,它面向 HTTP/2 设计、使用 protobuf 作为数据序列化协议,并且具有解析速度快,序列化数据体积小,可扩展性高,使用简单等特性,相比其他RPC框架而言,发展空间更大。

2. 电磁频谱监测系统中间件设计与实现

2.1 整体框架设计

实际的测试场景中,监测系统的客户端与服务端物理位置分离,两端通过网络连接,中间件位于客户端与服务端中间,实现了两者之间的远程应用程序调用、数据序列化与数据传输功能。客户端是用户业务的入口,接收用户的监测意图,即服务消费方,通过中间件调用服务端提供的对应服务。该服务执行时,操作监测设备,获取测量数据,经服务端分析、处理后再经过中间件将测量结果返回客户端,从而实现客户端的业务功能。

远程过程调用中间件框架如图1所示:

2.2 gRPC安装与部署

基于gRPC框架开发中间件,需要预先在目标平台上安装gRPC库、配置 gRPC运行环境、安装 protocol buffer 以及gRPC插件来编译系统定义的服务。首先,确定目标平台和语言,这里选择Windows操作系统,目标语言为C++;接着,安装目标语言的IDE开发环境(Visual Studio 2015);最后,通过vcpkg包管理工具便捷地实现第三方开发库(gRPC库等)的管理以及与IDE的集成。

2.3 定义gRPC服务

首先,按照要求生成gRPC服务接口。gRPC通过 Protobuf(Google protocol buffers)定义服务以及生成客户端与服务端的接口执行代码。Protobuf 是谷歌提出的一种数据序列化协议,它的语言无关、平台无关、可扩展的特性,使得它十分适合用于gRPC框架实现数据传输。它最大的特点是能够根据用户自定义的远程调用服务文件(.proto文件)转换成目标语言的头文件与接口实现文件,从而用户可以方便地调用服务接口函数,实现客户端请求的服务功能。定义gRPC服务需要两步:

1) 编写proto文件

proto文件相当于待传输的消息模板,它定义了需要传输的数据本身,主要包括服务端与客户端的接口和消息。

·接口:是客户端与服务端远程过程调用的函数接口,该接口定义可表达四种类型RPC方法(例如:简单RPC、流式RPC)。接口定义需遵循规定的格式,即由service 关键字引导具体的服务接口名称,大括号内包含具体的RPC方法(服务接口函数)列表,格式如下:

service 服务接口名称

{

rpc 函数名(请求) returns (响应){ }

......

}

·消息:定义不同消息类型(例如:enum,message)包含的字段。格式如下:

消息类型关键字消息名称

{

消息字段1;

......

消息字段n;

}

2) 编译proto文件

由于proto文件不能直接使用,也不能直接传输,所以需要通过protobuf编译器(protoc.exe),将proto文件转换为目标语言的头文件和源文件(C++语言对应的是.h与.cc文件),生成的文件中包含了对上述proto文件中定义的消息字段的读写函数,以及服务端与客户端的接口调用函数。经过这一步就将语言中立的proto文件的信息转换为接口与消息的C++类(包含数据与方法),下一步就是在生成的目标语言代码的基础上,开发服务端与客户端的功能。

2.4 实现服务端

首先,VS2015新建server项目(控制台项目),并设置项目属性,主要包括:

1) 添加gRPC的宏定义:_WIN32_WINNT=0x0600;

2) 指定目标语言的头文件(.h)和源文件(.cc)所在目录,并将源文件添加到项目;

3) 添加windows socket库ws2_32.lib。

接着,编码实现服务端接口功能:按照上述proto文件定义的service服务接口,依次实现包含的服务接口函数功能,即从自动生成的接口类 Service(.grpc.pb.h 文件中,自动生成的服务接口文件。)派生自定义C++类,并重写该类的服务端接口虚函数。代码段示例:

//文件xx.grpc.pb.h中定义的server接口

class Service : public ::grpc::Service

{

public:

Service();

virtual ~Service();

virtual ::grpc::Status teamFile(::grpc::ServerContext* context,

const::DEPARTMENT::Identity* request, ::DEPARTMENT::Profile* response);

};

//类TeamService派生自类Service,需重写接口函数teamFile,实现服务端功能。

class TeamService final : public teamData::Service

{

public:

TeamService ();

virtual ~ TeamService ();

public:

Status teamFile(ServerContext* context, const Identity* request, Profile* response) override;

private:

void editTeam(const string& id, const string& name, Gender gender);

private:

map m_file;

};

最后,构建并启动server端服务,监听指定的地址和端口,等待接收来自客户端的服务请求。代码段示例:

int main(int argc, char** argv)

{

std::string server_address("127.0.0.1:50051"); //server端监听地址和端口

TeamService service; //服务类对象

ServerBuilder builder;

builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());

builder.RegisterService(&service);

std::unique_ptr server(builder.BuildAndStart()); //构建服务并运行

cout << "Server listen on" << server_address << endl;

server->Wait();

return 0;

}

2.5 实现客户端

首先,新建client项目,并设置项目属性,方法同server端项目属性设置方法。

接着,编码实现client功能:按照proto文件中定义的接口,调用client端同名接口函数,从而测试 server端服务接口功能是否正确。开发客户端功能不必像实现server端功能那样编码实现具体的服务实现过程,而是委托Stub类对象调用客户端的接口函数即可。

最后,编译生成client项目,查错直至成功。

2.6 运行测试

基于gRPC框架实现的远程过程调用,以server/client模型实现。实际程序员做的工作就是在目标IDE中按照gRPC要求的接口、数据规范分别实现服务端与客户端的功能,而gRPC框架实现了两端的通信,所以服务端与客户端的程序编译生成成功后,可直接测试服务接口功能。

测试方法是:通过分别运行客户端与服务端程序,客户端向服务端发送服务请求,验证是否调用成功服务端接口函数,并获得预期结果。具体步骤如下:

step1.根据目标平台与版本,选择并打开client端与server端可执行程序所在目录;

step2.运行server端可执行程序,根据提示信息,确认服务端是否构建并运行成功,并进入监听状态;

step3.运行client端可执行程序:根据命令行提示输入请求命令,进行服务接口测试,查看server端的响应结果,并验证。

3. 结论

基于gRPC框架设计实现中间件,是将复杂的系统模块功能或业务拆分为多个服务功能,且每部分可独立并行开发、测试以及环境部署,实现了功能高内聚、接口低耦合。各服务进程独立,互相协作配合,实现用户业务功能。同时gRPC框架完成了网络数据传输与序列化,能够有效提升网络传输效率。该远程过程调用中间件设计实现方法已应用于某电磁频谱监测系统软件开发中,测试结果表明其平台适应性好,中间件可靠、稳定,传输数据体积小、速度快,能够满足电磁频谱监测系统分布式部署与测试需求。

参考文献:

[1] 刘龙,王伟平,刘远飞.自动测试系统的发展现状及前景[J].飞机设计, 2007(04):71-74.

[2] 马雄.基于微服务架构的系统设计与开发[D].南京:南京邮电大学,2017.

[3] 宋瑾.基于ProtocolBuffer协议的服务端-客戶端通信[J].电脑编程技巧与维护,2014(12):100-101.

[4] 刘宏,吴江.分布式对象中间件技术[J].现代电子技术,2003(08):91-94.

作者:赵明芳 刘军 杨青 赵世伟

上一篇:县邮政局总结下一篇:教师教材创作管理论文