CN106775616A - 基于C++与Java混合编程的分布式服务系统 - Google Patents
基于C++与Java混合编程的分布式服务系统 Download PDFInfo
- Publication number
- CN106775616A CN106775616A CN201610987580.7A CN201610987580A CN106775616A CN 106775616 A CN106775616 A CN 106775616A CN 201610987580 A CN201610987580 A CN 201610987580A CN 106775616 A CN106775616 A CN 106775616A
- Authority
- CN
- China
- Prior art keywords
- service
- java
- client
- bus
- middleware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于C++与Java混合编程的分布式服务系统,其特征在于,包括服务端,中间件,服务总线和客户端,服务端是服务的提供者,包括C++应用和JAVA应用,服务总线用来实现监听服务端提供的服务并形成服务清单,客户端调用服务端提供的服务,包括C++应用和JAVA应用,中间件包括服务端与服务总线之间和客户端与服务总线之间两部分,其中服务端与服务总线之间的中间件用来向服务总线注册服务端C++应用提供的服务,客户端与服务总线之间的中间件提供调用服务的Rest接口,辅助客户端实现服务调用。该系统同时支持C++和JAVA开发的服务,提高了程序开发效率,增强了软件的运行速度与稳定性。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种分布式服务系统。
背景技术
随着计算机技术的发展,采用多台计算机组成一个分布式服务系统可以为用户提供比传统的集中式系统更好的服务,特别是可以克服主机资源紧张和响应瓶颈的缺陷,更好地实现任务的分配与优化。目前,可实现调用、监听服务、提供远程通信与信息交换的分布式系统很多,如阿里巴巴旗下开源的分布式服务框架dubbo、开源软件Apache Hadoop的分布式服务框架Zookeeper等。但上述框架均是Java版本的,无法支持大量现有的C++应用。
发明内容
发明目的:针对现有技术中存在的问题,本发明公开了一种基于C++与Java混合编程的分布式服务系统,该分布式服务系统支持C++应用和JAVA应用,并且增强了软件的运行速度与稳定性。。
技术方案:一种基于C++与Java混合编程的分布式服务系统,包括服务端,中间件,服务总线和客户端;其中服务端是服务的提供者,包括C++应用和JAVA应用;服务总线用来实现监听服务端提供的服务并形成服务清单;客户端调用服务端提供的服务,包括C++应用和JAVA应用;中间件包括服务端与服务总线之间和客户端与服务总线之间两部分,其中服务端与服务总线之间的中间件用来向服务总线注册服务端C++应用提供的服务,客户端与服务总线之间的中间件提供调用服务的Rest接口,辅助客户端实现服务调用。
服务端通过HttpServlet将自身信息封装成服务;服务端C++应用包括C++方法和C++动态库两部分,其中C++方法采用C++反射机制将其信息通过Rest接口供中间件调用,中间件中的JAVA代理自动加载C++动态库的函数,并以服务的形式注册到服务总线。
服务总线包括传输客户端、数据传输、传输服务器。传输客户端发起服务请求,接收客户端提供的方法和参数,发送至传输服务器;传输过程中数据传输对方法和参数根据数据格式进行编码和解码;传输服务器接收解码后的方法和参数,通过中间件调用服务端的C++方法。
客户端与服务总线之间中间件的JAVA代理提供Rest接口,客户端的C++应用通过HttpClient来调用此Rest接口实现服务的调用;客户端的JAVA应用通过WebSocket调用服务端提供的服务。
中间件的JAVA代理通过开源的java框架调用C++动态库,自动实现Java和C++的数据类型映射。
具体地,中间件的JAVA代理通过JNA(Java Native Access)调用C++动态库,JNA提供了一个动态的C++语言编写的转发器,来自动实现Java和C++的数据类型映射。
有益效果:与现有技术相比,本发明公开的基于C++与Java混合编程的分布式服务系统具有以下优点:1、服务端和客户端包括C++应用和JAVA应用,可同时支持C++和JAVA开发的服务,不仅秉承了传统C++软件开发的优势,同时继承了Java软件设计的快速性与可靠性,抛弃了编程环境和语言的约束,不仅大大提高了程序开发效率,并且增强了软件的运行速度与稳定性,具有很好的工程应用价值;2、服务端提供的服务注册到服务总线上,通过服务总线来统一管理、监听服务,客户端只需与服务总线连接即可,当有多个服务端或多个客户端时,显著降低连接数,从而简化了系统的连接;3、服务端与服务总线、客户端与服务总线的连接都通过中间件,使系统支持多种平台。
附图说明
图1是本发明公开的分布式服务系统的架构图;
图2是WebSocket通信流程图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明。
如图1所示,是本发明公开的分布式服务系统架构图。
本实施例以某信息战对抗训练为例,进一步阐释本发明。对抗训练总共部署三台计算机,采用B/S架构(Browser/Server,即浏览器和服务器架构)。其中一台为数据服务器,存储三维态势显示所需影像、地形及矢量等数据;一台为应用服务器,一台作为应用客户端。服务器与客户端均国产化,配置龙芯3A芯片与中标麒麟操作系统。
应用服务器端部署信息共享分发服务、态势显示组件及态势分析组件。其中态势显示组件主要包括图形绘制、目标维护、场景切换、仿真控制等各类显示功能;态势分析组件实现侦察干扰分析、目标态势分析及战场环境分析功能;信息共享分发服务、态势显示组件均采用Java语言开发,用于提升界面的开发速度、稳定性,实现跨平台机制;态势分析组件则使用C++语言开发,以提升各类算法的执行速度。数据服务器和应用服务器均为分布式服务系统的服务端,各类服务通过服务总线进行链接,最终实现分布式服务化。
应用客户端为分布式服务系统的客户端,安装chrome浏览器,与数据服务器端通过websocket实现双向实时通信,与应用服务器通过Http实现界面展现,通过Rest实现数据传输。如图2所示,为客户端浏览器与数据服务器WebSocket通信流程图。
服务端与客户端通过服务总线、中间件连接起来;服务总线、中间件分布于每个服务端、客户端设备本地。
通过数据服务器、应用服务器和应用客户端三者协同工作,实现了复杂地形地貌的分层组织、符号显示,实现浏览器端态势要素的快捷组装、显示和交互控制。
与服务器与客户端均采用C++单一开发语言的信息战对抗训练系统相比,基于C++与Java混合编程的系统在性能、适应平台、稳定性、界面美观与开发效率等方面存在优势,具体情况可见表1。
表1单一开发语言与混合编程系统对比表
名称 | C++单一开发语言 | 混合编程语言 |
性能 | 加载速度较慢 | 加载速度较快,约为C++单一开发语言的4倍 |
适应平台 | 弱 | 强,可运用在iPad、安卓等移动终端 |
稳定性 | 差 | 强,出现异常情况时不容易产生崩溃 |
界面美观 | 差 | 较为美观 |
开发效率 | 较低 | 较高,约为C++单一开发语言的5倍 |
Claims (7)
1.一种基于C++与Java混合编程的分布式服务系统,其特征在于,包括服务端,中间件,服务总线和客户端,
所述服务端是服务的提供者,包括C++应用和JAVA应用,
所述服务总线用来实现监听服务端提供的服务并形成服务清单,
所述客户端调用服务端提供的服务,包括C++应用和JAVA应用,
所述中间件包括服务端与服务总线之间和客户端与服务总线之间两部分,其中服务端与服务总线之间的中间件用来向服务总线注册服务端C++应用提供的服务,客户端与服务总线之间的中间件提供调用服务的Rest接口,辅助客户端实现服务调用。
2.根据权利要求1所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述服务端通过HttpServlet将自身信息封装成服务。
3.根据权利要求1所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述服务端C++应用包括C++方法和C++动态库两部分,所述C++方法采用C++反射机制将其信息通过Rest接口供中间件调用,中间件自动加载C++动态库的函数,并以服务的形式注册到服务总线。
4.根据权利要求1所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述服务总线包括传输客户端、数据传输、传输服务器;
所述传输客户端发起服务请求,接收客户端提供的方法和参数,发送至传输服务器;传输过程中数据传输对方法和参数根据数据格式进行编码和解码;传输服务器接收解码后的方法和参数,通过中间件调用服务端的C++方法。
5.根据权利要求1所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述客户端与服务总线之间中间件的JAVA代理提供Rest接口,所述客户端的C++应用通过HttpClient来调用此Rest接口实现服务的调用。
6.根据权利要求1所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述客户端的JAVA应用通过WebSocket调用服务端提供的服务。
7.根据权利要求5所述的基于C++与Java混合编程的分布式服务系统,其特征在于,所述中间件的JAVA代理通过开源的java框架调用C++动态库,自动实现Java和C++的数据类型映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610987580.7A CN106775616B (zh) | 2016-11-10 | 2016-11-10 | 基于C++与Java混合编程的分布式服务系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610987580.7A CN106775616B (zh) | 2016-11-10 | 2016-11-10 | 基于C++与Java混合编程的分布式服务系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775616A true CN106775616A (zh) | 2017-05-31 |
CN106775616B CN106775616B (zh) | 2020-08-11 |
Family
ID=58973211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610987580.7A Active CN106775616B (zh) | 2016-11-10 | 2016-11-10 | 基于C++与Java混合编程的分布式服务系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775616B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341010A (zh) * | 2017-06-26 | 2017-11-10 | 华中科技大学 | 一种C/C++与COStream混合编程方法和可视化编译系统 |
CN110704828A (zh) * | 2019-09-06 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种验证方法、装置、设备及计算机可读存储介质 |
WO2020192667A1 (zh) * | 2019-03-25 | 2020-10-01 | 华为技术有限公司 | 一种跨语言编译方法及设备 |
CN113609092A (zh) * | 2021-06-30 | 2021-11-05 | 济南浪潮数据技术有限公司 | 分布式存储对接hdfs客户端的方法、系统、终端及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6110226A (en) * | 1998-02-19 | 2000-08-29 | Cygnus Solutions | Java development environment using optimizing ahead-of-time compiler |
CN101661494A (zh) * | 2009-09-29 | 2010-03-03 | 莱芜钢铁集团有限公司 | 一种分布式中间件与数据库数据交互方法 |
CN102053860A (zh) * | 2009-10-30 | 2011-05-11 | 中国人民解放军国防科学技术大学 | 基于CORBA的OSGi分布式扩展系统及方法 |
CN104160377A (zh) * | 2012-03-12 | 2014-11-19 | 国际商业机器公司 | 混合系统中的方法调用的优先执行 |
CN102694866B (zh) * | 2012-06-01 | 2015-02-25 | 北京首钢自动化信息技术有限公司 | 一种分布式网络环境中的服务请求代理系统 |
CN105162858A (zh) * | 2015-08-20 | 2015-12-16 | 中国人民解放军国防科学技术大学 | 针对corba中间件的通用传输协议框架、通信系统及方法 |
-
2016
- 2016-11-10 CN CN201610987580.7A patent/CN106775616B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6110226A (en) * | 1998-02-19 | 2000-08-29 | Cygnus Solutions | Java development environment using optimizing ahead-of-time compiler |
CN101661494A (zh) * | 2009-09-29 | 2010-03-03 | 莱芜钢铁集团有限公司 | 一种分布式中间件与数据库数据交互方法 |
CN102053860A (zh) * | 2009-10-30 | 2011-05-11 | 中国人民解放军国防科学技术大学 | 基于CORBA的OSGi分布式扩展系统及方法 |
CN104160377A (zh) * | 2012-03-12 | 2014-11-19 | 国际商业机器公司 | 混合系统中的方法调用的优先执行 |
CN102694866B (zh) * | 2012-06-01 | 2015-02-25 | 北京首钢自动化信息技术有限公司 | 一种分布式网络环境中的服务请求代理系统 |
CN105162858A (zh) * | 2015-08-20 | 2015-12-16 | 中国人民解放军国防科学技术大学 | 针对corba中间件的通用传输协议框架、通信系统及方法 |
Non-Patent Citations (1)
Title |
---|
刘万明 等: "基于CORBA的分布式管理系统的研究与实现", 《河北北方学院学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341010A (zh) * | 2017-06-26 | 2017-11-10 | 华中科技大学 | 一种C/C++与COStream混合编程方法和可视化编译系统 |
CN107341010B (zh) * | 2017-06-26 | 2019-12-13 | 华中科技大学 | 一种C/C++与COStream混合编程方法和可视化编译系统 |
WO2020192667A1 (zh) * | 2019-03-25 | 2020-10-01 | 华为技术有限公司 | 一种跨语言编译方法及设备 |
CN110704828A (zh) * | 2019-09-06 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种验证方法、装置、设备及计算机可读存储介质 |
CN113609092A (zh) * | 2021-06-30 | 2021-11-05 | 济南浪潮数据技术有限公司 | 分布式存储对接hdfs客户端的方法、系统、终端及存储介质 |
CN113609092B (zh) * | 2021-06-30 | 2024-02-27 | 济南浪潮数据技术有限公司 | 分布式存储对接hdfs客户端的方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106775616B (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103327117B (zh) | 应用程序的跨系统运行方法和装置 | |
US20240139621A1 (en) | Server and Data Processing Method, Apparatus, and System | |
CN106775616A (zh) | 基于C++与Java混合编程的分布式服务系统 | |
EP2911342B1 (en) | Home gateway and intelligent terminal integrated system and communication method therefor | |
WO2017193612A1 (zh) | 使用移动终端对电器设备进行操控的设备、系统和方法 | |
CN110178357A (zh) | 远程设备可接入的云中基于云的手机服务 | |
US20100115532A1 (en) | Computer System with Controller Kernel and Remote Desktop | |
CN105847332A (zh) | 桌面虚拟化方法、客户端设备和服务端设备 | |
CN109032793A (zh) | 资源配置的方法、装置、终端及存储介质 | |
US11966795B2 (en) | Method and device for loading minus-one screen, terminal, and computer readable storage medium | |
CN103077024A (zh) | 一种支持SaaS应用流程按需定制与运行的装置及方法 | |
CN107436786A (zh) | 应用启动优化方法、装置及计算机可读存储介质 | |
CN105022627B (zh) | 一种Android系统中View间的通信方法 | |
CN103516538A (zh) | 一种电信级集群化应用的统一配置的方法及装置 | |
CN106797670A (zh) | 使用表征状态转移业务的物理交换机初始化 | |
CN109213496A (zh) | 一种部署OpenStack的实现方法及系统 | |
CN107632877A (zh) | Vdi与voi架构虚拟机融合系统及启动方法 | |
CN108920274B (zh) | 用于图像处理服务器端的性能优化及装置 | |
CN102664952B (zh) | 一种对嵌入式设备集群管理及监控的方法 | |
CN107193565A (zh) | 跨移动端开发原生app的方法 | |
CN111045838A (zh) | 基于远程过程调用协议的分布式驱动中间件 | |
CN113886731A (zh) | 一种基于iOS平台路由跳转页面的方法及应用 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN105208123A (zh) | 一种虚拟桌面的实现方法及其系统 | |
CN108228139B (zh) | 基于html5浏览器框架的单片机开发系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |