收藏 分销(赏)

Linux环境下基于gSO...ervice应用设计与实现_严竞雄.pdf

上传人:自信****多点 文档编号:325603 上传时间:2023-08-15 格式:PDF 页数:4 大小:2.58MB
下载 相关 举报
Linux环境下基于gSO...ervice应用设计与实现_严竞雄.pdf_第1页
第1页 / 共4页
Linux环境下基于gSO...ervice应用设计与实现_严竞雄.pdf_第2页
第2页 / 共4页
Linux环境下基于gSO...ervice应用设计与实现_严竞雄.pdf_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2023.7电脑编程技巧与维护1WebServiceWebService具有跨语言、跨平台、可远程访问的特点,采用超文本传输协议(HTTP)来传输数据,使用XML、JSON等格式进行数据封装。在服务端,WebSer-vice可通过WSDL对外说明有哪些服务可供调用,可用于描述WebService服务及其方法、参数和返回值。在实际应用中,使用WebService技术可以屏蔽不同软件和不同平台之间的差异性,这种技术架构可以很好地实现分布式、跨平台的动态数据交换和应用集成,通过简单对象访问协议(SOAP)进行远程访问和调用,实现工作环境中的高可集成性。2gSOAPgSOAP是 一 个 可 用 于SO

2、AP和 表 述 性 状 态 传 递(REST)的XML Web服务,以及数据绑定的C/C+软件开发工具包,具有高效、可靠和灵活的特征,可用处理XML数据、开发Web服务。基于gSOAP的相关软件已应用于嵌入式系统、移动设备、大数据和云计算等领域。此外,gSOAP工具包通过自编码技术提供了C/C+XML数据绑定解决方案。为开发人员在C/C+中实现WebService服务节省了大量时间,简化了XML在C/C+应用程序中的使用。3应用示意图项目应用分为服务端和客户端两部分,主要涉及服务端接口的创建、服务端接口的具体实现、服务端服务的开启、客户端调用等。在具体开发过程中,使用MyEclipse开发工具

3、和Java语言进行服务端程序设计和开发;采用Deepin Linux操作系统,使用gcc开发套件和gSOAP进行客户端程序设计和开发。在应用中,服务端先对外发布WebService服务;客户端向服务器发送访问请求,调用服务端的WebService接口,并将需要传递的参数通过服务端的WebService接口传入;服务端通过获得的客户端数据,采用对应的WebService函数进行数据处理,并将结果返回;客户端获得服务器的运算处理结果,并将结果返回给用户。具体流程如图1所示。Linux 环境下基于 gSOAP 的 WebService 应用设计与实现严竞雄1,2,3,4(1.南通理工学院计算机与信息

4、工程学院,江苏 南通226002;2.南通市虚拟现实与云计算重点实验室,江苏 南通226002;3.南通理工学院物联网工程教研室,江苏 南通226002;4.南通理工学院计算机技术应用研究所,江苏 南通226002)摘要:WebService 具有跨平台、低耦合、自包含的特征,可以使运行在不同软、硬件上的程序进行数据交换或集成,可以使用可扩展标记语言(XML)或 JS 对象标记(JSON)进行数据的描述和传递,可用于开发分布式交互操作的应用程序。近年来,WebService 技术可使不同的平台借助 Web 应用程序进行交互,使各平台之间协同工作,提升了系统的可用性。基于 Linux 环境开发、

5、设计了一款基于 gSOAP的 WebService 应用,实践表明,该系统运行稳定、实时性强、具有良好的跨平台特性。关键词:Linux 操作系统;Deepin 操作系统;gSOAP 工具包;WebService 服务;Java 语言基金项目:2020年度江苏省高校哲学社会科学专题研究项目(2020SJA1619);2022年度南通理工学院中青年骨干教师培养(科学研究)专项(ZQNGGJS202238);2022年度南通理工学院科研项目(2022XK(K)68);2021年度教育部高校学生司第一期供需对接就业育人项目(20220102346);2021年度教育部第二批产学合作协同育人项目(202

6、102639007);2021年度南通市科技计划指令性项目(JC2021134);2021年度江苏省高等学 校 教 育 技 术 研 究 会 高 校 教 育 信 息 化 研 究 课 题(2021JSETKT070);2020年度江苏省现代教育技术研究项目(2019-R-76815);2019年度南通理工学院“课堂革命”教学改革研究专项项目(2019JJG010)。作者简介:严竞雄(1988),男,硕士,实验师,研究方向为软件工程、信息安全。图1具体流程个人计算机(PC)客户端第1步:发送WebService调用请求第2步:服务端获得请求,解析数据,并返回结果WebService服务端56DOI:

7、10.16184/prg.2023.07.0182023.7电脑编程技巧与维护4WebService 服务端开发服务端的开发可以使用相关的WebService框架完成,将具体的业务对象对外发布为WebService服务,常用的第三方框架有Axis,xfire,cxf等。这里采用JWS来实现,JWS即Java Web Service,是使用Java语言WebService服务,不需要任何第三方库,便于程序开发人员开发和部署WebService项目。服务端的开发主要涉及WebService代码的编写,主要步骤是在MyE-clipse中 新 建WebService项 目,然 后 在 项 目 中 创

8、建WebService程序文件,在WebService程序文件中引入javax.jws和javax.xml.ws.Endpoint等相应的包和类,在ServiceHello类中编写WebService服务代码。getValue函数用来对外提供WebService服务,该函数具有inta和int b两个参数,用于接收客户端发来的函数参数。getValue函数获得参数后,将两参数的值带入自定义函数中进行数据运算,并在计算得到结果后通过getValue函数返回,在Main函数中,通过Endpoint中的publish方法对外发布WebService服务,并在发布的统 一 资 源 定 位 器(URL)

9、中 绑 定 服 务 器 的IP地 址10.0.132.253和端口9000。对应代码如下。package com.web.service;import javax.jws.*;import javax.xml.ws.Endpoint;WebServicepublic class ServiceHello public int getValue(int a,int b)return a+b;/*param args*/public static void main(String args)/TODO Auto-generated methodstubEndpoint.publish(http:/

10、10.0.132.253:9000/Service/ServiceHello,new ServiceHello();System.out.println(Service Success);选中WebService工程中的ServiceHello类,运行Java应用程序,当控制台中显示Service Success时应用正常运行。WebService服务端运行效果如图2所示。在浏览器地址栏中输入网址,WSDL在线文档展示如图3所示。在该XML文件中,可以得到该Web服务器上运行的WebService服务名和相关接口信息,以便开发人员进行客户端的Web服务对接开发。5WebService 客户端开

11、发gSOAP工具提供了基于C/C+编程语言的SOAP/XML实现,从而使C/C+语言开发Web服务或客户端程序更为便捷。gSOAP支持Windows、Linux、MacOS等平台。gSOAP工具主要包括两个可执行文件:wsdl2h和soapcpp2。wsdl2h可执行文件通过读取.wsdl格式文件输出.h格式文件;soapcpp2可执行文件通过读取.h格式文件生成server和client端的框架。客户端的开发和设计基于gSOAP 2.8.97、Deepin20.9,通 过 命 令 行sudo apt-get install build-essentiallibgtk2.0-dev libgl

12、ib2.0-dev安装编译、开发工具,以及GTK+的开发文件和GLib库;通过命令行sudo apt-getinstall flex bison openssl libssl-dev安装OpenSSL和SSL开发工具包。使用configure命令检查无误后,就可以通过make和make install命令进行gSOAP的编译和安装。安装完gSOAP开发环境后,在Deepin中创建client目录,在该目录 中运行命令wsdl2h-c-o hi.h http:/10.0.132.253:9000/Service/ServiceHello?wsdl和soapcpp2图2WebService服务端运

13、行效果图3WSDL在线文档展示572023.7电脑编程技巧与维护-c hi.h。其中,参数-c的作用是生成C语言形式的代码,最终在client目录下生成ServiceHelloPortBinding.getValue.res.xml,soapClientLib.c,soapServer.c,Service-HelloPortBinding.getValue.req.xml,ServiceHelloPortBind-ing.nsmap,soapClient.c,soapServerLib.c等代码文件。分析soapStub.h头文件,可以得到structns1_getValue、struct n

14、s1_getValueResponse等结构体和SOAP_FMAC5 intSOAP_FMAC6 soap_call_ns1_getValue函数。ns1_getVal-ue结构体内有两个成员arg0和arg1,分别用来表示服务端程序getValue函数中的两个形参a和b,ns1_get-ValueResponse结构体中含有成员return_,对应服务端程 序getValue函 数 中 返 回 的 变 量。ns1_getValue和ns1_getValueResponse结构体如下所示。struct ns1_getValue/*Requ ired element arg0 of XMLsch

15、ema type xsd:int*/int arg0;/*Required element arg1 of XMLschema type xsd:int*/int arg1;struct ns1_getValueResponse/*Required element return of XMLschema type xsd:int*/int return_;SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns1_get-Value函数是由gSOAP根据在线Webservice内容自动生成的,用以对接服务端的getValue函数接口。根据以上分析,可以对客户端进行C语言程序

16、的设计与编写,核心代码如下。int add(const char*server,int num1,int num2,int*sum)struct soap add_soap;int result=0;soap_init(&add_soap);soap_set_namespaces(&add_soap,names-paces);struct ns1_getValue element;element.arg0=num1;element.arg1=num2;struct ns1_getValueResponse tResult;soap_call_ns1_getValue(&add_soap,ser

17、ver,&element,&tResult);if(add_soap.error)printf(soap error:%d,%s,%sn,add_soap.error,*soap_faultcode(&add_soap),*soap_faultstring(&add_soap);result=add_soap.error;*sum=tResult.return_;soap_end(&add_soap);soap_done(&add_soap);return result;在该函数设计中,首先,对结构体变量element进行元素赋值;然后,通过函数soap_call_ns1_getValue获取

18、Webservice的求和功能,在主函数中调用add函数,result=add(server,num1,num2,&sum);最后,返回最终求和结果。6实践结果服务端启动WebService服务后,在Deepin客户端通过命令gcc-o client client.c对client程序进行编译并运行,可得到如图4所示结果。客户端将需要相加的51和125两数通过对element进行封装后发送至服务端;服务端接收到从客户端发来的数据后相加,将计算得到的结果返回;在客户端中,程序通过获取tResult中的return_值得到最终WebService服务端的计算结果,并在屏幕上呈现给用户。7结语该项目

19、基于gSOAP实现了一套WebService应用示例,该项目服务端和客户端分别基于Java和C语言进行设计实现,WebService作为一种跨平台的技术应用,其本质是服务器端提供一些特定的服务使客户端应用访问和获取数据,可部署在Linux、Windows等操作系统上,具有跨平台的特性,易于迁移,实现了PC端、移动端,以及不同单位、不同部门之间数据传输和获取的问题,降低了运维成本,提升了工作效率。后期还可以图4Webservice客户端运行效果图(下转第97页)582023.7电脑编程技巧与维护计与开发J.科技与创新,2022(8):17-19.11何丽,龚旺.jQuery在AJAX技术框架中页

20、面加载的应用J.计算机时代,2011(8):25-26.12邓鑫,高亢,王春芳,等.CAP协议在我国预警信息发布系统中应用的研究C/中国气象学会.创新驱动发展 提高气象灾害防御能力S3第三届气象服务发展论坛公众,专业气象预报服务技术与应用.中国气象学会,2013.13崔磊,呂宸,白静玉,等.一种基于CAP的应急预警信息交互协议J.南京:中国高新科技,2020(20):110-111.方式提交到服务器,服务器依据表格数据源组件自带的方法(或动态生成的SQL语句)进行数据更新。使用EasyGrid控件时,后端能够自动向前端写入jquery.js、easui.js、easui.css等文件,并在表头

21、生成保存、新增、删除工具栏。3.1自动套用格式设置控件的属性CssClass=“easyui-datagrid”。3.2以文本框方式实现全表格编辑设置控件的属性AllowEdit=true。3.3自动更新数据日志字段加 入creator、create_date、updater、update_date、auditor、auditdate等Parameters信息,系统会根据登录用户信息和操作时间自动更新数据日志字段信息。3.4控件支持丰富的列表编辑器首先,使用EasyUI扩展方法getGridColumns取得表头信息;然后,列属性formatter格式化显示信息,用列属性editor自定义丰富

22、的列表编辑器,例如,支持单选和多选的下拉列表、下拉表格、下拉树、下拉日期等;最后,用datagrid方法渲染表格4。以性别、民族、学籍状态下拉列表为例,在前端写入以下JS代码:var cc=$.easyui.getGridColumns(#+gridId);var columns=cc1;columns0.forEach(function(column)switch(column.field)case SEX:case NATION_CODE:case REG_STATUS:column.formatter=function(value,row)var f=codecolumn.field.f

23、ilter(function(item)return item.id=value)return f.length 0?f0.text:value;column.editor=type:combobox,options:valueField:id,textField:text,data:codecolumn.field;break;)var dg=$(#+gridId).datagrid(columns:columns);4结语控件在Web应用程序基础数据维护、全表格数据输入时非常有用,可以大大减少开发工作量,前端界面友好,符合用户操作习惯,用户既能像操作Excel一样编辑表格,还可以灵活定义多

24、种下拉组合框,方便用户输入各类标准数据。参考文献1微软官网学习中心.什么是ASP.NET?2微软官网文档中心.IDataSourceViewSchema接口.3EasyUi Demo.Cell Editing in DataGrid.4EasyUi Documentation.DataGrid.(上接第53页)加入安全套接层(SSL)身份认证,以提高数据交互的安全性。参考文献1薛宁.基于WebService实现跨部门在线数据交互J.审计月刊,2021(1):37-40.2宗起振,王丹丹,赵琴.基于GSOAP的状态监测设备系统设计与实现J.软件导刊,2016,15(1):73-75.3刘兵.利用WebService实现嵌入式设备与PC端的无线通信J.单片机与嵌入式系统应用,2016,16(3):30-33.4徐娟华.基于WebService的扫码发货系统设计与实现J.铜业工程,2022(1):77-79.5刘国强,柯敏毅.基于WebService的公路设备保养管理系统的设计与实现J.科学技术创新,2020(13):68-69.(上接第58页)97

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 自然科学论文

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服