一种CS架构下网络层模块代码自动生成工具及方法
技术领域
本发明属于计算机软件开发领域,具体涉及一种CS架构下网络层模块代码自动生成工具及方法。
背景技术
Client/Server架构,即客户端/服务端架构,是目前通用的软件***体系结构,随着计算机技术的快速发展,目前该架构广泛应用于各类软件平台。在客户端与服务端的交互中,网络通讯层的开发是至关重要的。通常在实际开发中,需要由开发人员对照网络协议编写通讯层代码,此过程费时费力,开发质量不易控制,且在进行其他类似***的开发时,需要重复进行此项开发,浪费人力物力。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种CS架构下网络层模块代码自动生成工具及方法,是非常有必要的。
发明内容
本发明的目的在于,针对上述网络通讯层代码开发过程费时费力,开发智力不易控制,且类似***重复开发,浪费人力物力的缺陷,提供一种CS架构下网络层模块代码自动生成工具及方法,以解决上述技术问题。
为实现上述目的,本发明给出以下技术方案:
一种CS架构下网络层模块代码自动生成工具,包括协议文件获取模块、命名空间获取模块、应用端选择模块和网络模块代码生成模块;
协议文件获取模块,用于获取***网络协议;
命名空间获取模块,用于获取命名空间;
应用端选择模块,用于选择应用端,所述应用端包括客户端和服务端;
网络模块代码生成模块,用于根据获取的***网络协议、命名空间名称以及选择的应用端生成网络模块代码。
进一步地,还包括编译模块和导出模块;
编译模块,用于将生成的网络模块代码进行编译,生成网络模块动态链接库;
导出模块,用于导出网络模块动态链接库。通过编译将网络模块代码生成动态链接库,导出后即可使用。
进一步地,网络模块代码生成模块包括命名空间解析单元、协议文件解析单元、网络模块代码通用模板单元、目录创建单元、网络模块资源文件创建单元、依赖库文件拷贝单元以及网络模块代码生成单元;
命名空间解析单元,用于解析命名空间,将解析后的各级命名空间保存到命名空间结构体;
协议文件解析单元,用于解析协议文件,将解析出的每个功能模块内容保存到参数集合中;
网络模块代码通用模板单元,用于提供网络模板代码通用模板给网络模块代码生成单元,所述网络模块代码通用模板包括网络模块资源文件、依赖库文件以及可替换变量;
目录创建单元,用于根据解析的命名空间创建各级目录;
网络模块资源文件创建单元,用于创建所需的网络模块资源文件;
依赖库文件拷贝单元,用于从指定目录拷贝网络模块所需的基础库文件、头文件和依赖库文件;
网络模块代码生成单元,用于将协议文件解析出的参数集合中的参数代替网络模块代码通用模板中的可替换变量,在命名空间的底级目录生成网络模块代码。只需获取命名空间和***网络协议,本发明的工具可自动解析,在解析出的命名空间下创建目录,再根据解析出的***网络协议中参数替换生成网络模块网络模板代码通用模板中的变量,生成网络模块代码。
进一步地,所示网络模块资源文件包括项目文件、资源文件、预编译头文件、数据定义、API接口文件、协议解析组装文件以及基础库文件,基础库文件包括TCP网络文件和和Json协议解析文件。
进一步地,所述网络模块代码生成单元包括数据定义文件生成子单元、API接口文件生成子单元、功能模块文件生成子单元以及网络模块代码生成子单元;
数据定义文件生成子单元,用于循环读取协议文件解析单元解析出的每个功能模块内容的参数集合,生成每个功能模块所需的结构体定义,保存到数据定义文件;
API接口文件生成子单元,用于循环读取协议文件解析单元解析出的每个功能模块的参数集合,生成每个功能模块的接口类;
功能模块文件生成子单元,用于循环读取协议文件解析单元解析出的每个功能模块的参数集合,生成每个功能模块的协议数据解析与组装类;
网络模块代码生成子单元,用于将每个功能模块的结构体定义、接口类以及协议数据解析与组织类替换网络模块代码通用模板中相应的可替换变量。
进一步地,所述***网络协议采用Json格式协议。
进一步地,所述命名空间名称支持三级命名空间,相邻两级命名空间通过分隔符隔开。
本发明还给出如下技术方案:
一种CS架构下网络层模块代码自动生成方法,包括如下步骤:
S1.获取命名空间;
S2.解析命名空间,将解析后的各级命名空间保存到命名空间结构体;
S3.获取***网络协议;
S4.解析协议文件,将解析出的每个功能模块内容保存到参数集合中;
S5.选择应用端,所述应用端包括客户端和服务端;
S6.根据解析的***网络协议、命名空间名称以及选择的应用端生成网络模块代码;
S7.将生成的网络模块代码进行编译,生成网络模块动态链接库;
S8.导出网络模块动态链接库;
S9.结束。
进一步地,步骤S2中,若解析命名空间失败,则进入步骤S9;
步骤S4中,若解析协议文件失败,则进入步骤S9。
进一步地,步骤S6的具体步骤如下:
S61.根据解析的命名空间创建各级目录;
S62.创建所需的网络模块资源文件;
S63.从指定目录拷贝网络模块所需的基础库文件、头文件和依赖库文件;
S64.将协议文件解析出的参数集合中的参数代替网络模块代码通用模板中的可替换变量,在命名空间的底级目录下生成网络模块代码。
进一步地,步骤S64的具体步骤如下:
S641.循环读取协议文件中解析出的每个功能模块内容的参数集合,生成每个功能模块所需的结构体定义,保存到数据定义文件;
S642.循环读取协议文件中解析出的每个功能模块的参数集合,生成每个功能模块的接口类;
S643.循环读取协议文件中解析出的每个功能模块的参数集合,生成每个功能模块的协议数据解析与组装类;
S644.将每个功能模块的结构体定义、接口类以及协议数据解析与组织类替换网络模块代码通用模板中相应的可替换变量。
本发明的有益效果在于:
本发明根据***网络协议,自动生成客户端和服务端网络模块的代码,并导出到项目中,可直接编译生成网络模块,并对外提供API调用接口。本发明的工具提供可视化操作界面,通用性好、易用性高、易维护,只需提供标准的网络协议,可生成高质量的网络模块,并以动态链接库的形式提供。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明的网络层模块代码自动生成工具结构示意图;
图2为本发明的网络模块代码生成模块的结构示意图;
图3为本发明的网络层模块代码自动生成工具可视化界面示意图;
图4为本发明的方法流程图;
图5为本发明的网络模块代码生成的具体步骤;
图6为实施例中采用的Json格式***网络协议;
其中,1-协议文件获取模块;2-命名空间获取模块;3-应用端选择模块;4-网络模块代码生成模块;4.1-命名空间解析单元;4.2-协议文件解析单元;4.3-网络模块代码通用模板单元;4.4-目录创建单元;4.5-网络模块资源文件创建单元;4.6-依赖库文件拷贝单元;4.7-网络模块代码生成单元;4.7.1-数据定义文件生成子单元;4.7.2- API接口文件生成子单元;4.7.3-功能模块文件生成子单元;4.7.4-络模块代码生成子单元;5-编译模块;6-导出模块。
具体实施方式:
为使得本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明具体实施例中的附图,对本发明中的技术方案进行清楚、完整地描述。
实施例1:
如图1所示,本发明提供一种CS架构下网络层模块代码自动生成工具,包括协议文件获取模块1、命名空间获取模块2、应用端选择模块3、网络模块代码生成模块4、编译模块5和导出模块6;
协议文件获取模块1,用于获取***网络协议;
命名空间获取模块2,用于获取命名空间;
应用端选择模块3,用于选择应用端,所述应用端包括客户端和服务端;
网络模块代码生成模块4,用于根据获取的***网络协议、命名空间名称以及选择的应用端生成网络模块代码;
编译模块5,用于将生成的网络模块代码进行编译,生成网络模块动态链接库;
导出模块6,用于导出网络模块动态链接库。
上述实施例1中的一种CS架构下网络层模块代码自动生成工具的可视化界面如图3所示;
上述实施例1中***网络协议采用如图6所示的Json格式协议,网络模块代码生成模块4采用Doxygen注释规范。
实施例2:
如图2所示,上述实施例1中网络模块代码生成模块4包括命名空间解析单元4.1、协议文件解析单元4.2、网络模块代码通用模板单元4.3、目录创建单元4.4、网络模块资源文件创建单元4.5、依赖库文件拷贝单元4.6以及网络模块代码生成单元4.7;
命名空间解析单元4.1,用于解析命名空间,将解析后的各级命名空间保存到命名空间结构体;
协议文件解析单元4.2,用于解析协议文件,将解析出的每个功能模块内容保存到参数集合中;
网络模块代码通用模板单元4.3,用于提供网络模板代码通用模板给网络模块代码生成单元4.7,所述网络模块代码通用模板包括网络模块资源文件、依赖库文件以及可替换变量;
目录创建单元4.4,用于根据解析的命名空间创建各级目录;
网络模块资源文件创建单元4.5,用于创建所需的网络模块资源文件;
依赖库文件拷贝单元4.6,用于从指定目录拷贝网络模块所需的基础库文件、头文件和依赖库文件;
网络模块代码生成单元4.7,用于将协议文件解析出的参数集合中的参数代替网络模块代码通用模板中的可替换变量,在命名空间的底级目录生成网络模块代码;所述网络模块代码生成单元4.7包括数据定义文件生成子单元4.7.1、API接口文件生成子单元4.7.2、功能模块文件生成子单元4.7.3以及网络模块代码生成子单元4.7.4;
数据定义文件生成子单元4.7.1,用于循环读取协议文件解析单元4.2解析出的每个功能模块内容的参数集合,生成每个功能模块所需的结构体定义,保存到数据定义文件;
API接口文件生成子单元4.7.2,用于循环读取协议文件解析单元4.2解析出的每个功能模块的参数集合,生成每个功能模块的接口类;
功能模块文件生成子单元4.7.3,用于循环读取协议文件解析单元4.2解析出的每个功能模块的参数集合,生成每个功能模块的协议数据解析与组装类;
网络模块代码生成子单元4.7.4,用于将每个功能模块的结构体定义、接口类以及协议数据解析与组织类替换网络模块代码通用模板中相应的可替换变量。
上述实施例2中命名空间名称支持三级命名空间,相邻两级命名空间通过分隔符“.”隔开,命名空间解析单元4.1通过分隔符“.”区分各级命名空间。
应用上述实施例2生成网络层模块代码,根据格式要求编写如图6所示的规范的Json协议,编写完成后保存为txt文本文件,文件名称以英文项目名称命名;
打开本发明的CS架构下网络层模块代码自动工具,如图3所示,点击选择进行浏览,找到保存的txt文件;
在命名空间输入框内输入想要生成的命名空间,最多支持3级命名空间;
选择客户端点击生成将生成客户端网络模块代码;
选择服务器端点击生成将生成服务器端网络模块代码;
打开客户端网络模块代码或服务器端网络模块代码,编译即可生成可用的网络通讯模块的动态链接库。
实施例3:
如图4所示,本发明提供一种CS架构下网络层模块代码自动生成方法,包括如下步骤:
S1.获取命名空间;
S2.解析命名空间;
若解析命名空间失败,则进入步骤S9;
若解析命名空间成功,将解析后的各级命名空间保存到命名空间结构体;
S3.获取***网络协议;
S4.解析协议文件;
若解析协议文件失败,则进入步骤S9;
若解析协议文件成功,将解析出的每个功能模块内容保存到参数集合中;
S5.选择应用端,所述应用端包括客户端和服务端;
S6.根据解析的***网络协议、命名空间名称以及选择的应用端生成网络模块代码;
S7.将生成的网络模块代码进行编译,生成网络模块动态链接库;
S8.导出网络模块动态链接库;
S9.结束。
如图5所示,上述实施例3中步骤S6的具体步骤如下:
S61.根据解析的命名空间创建各级目录;
S62.创建所需的网络模块资源文件;
S63.从指定目录拷贝网络模块所需的基础库文件、头文件和依赖库文件;
S64.将协议文件解析出的参数集合中的参数代替网络模块代码通用模板中的可替换变量,在命名空间的底级目录下生成网络模块代码;步骤S64的具体步骤如下:
S641.循环读取协议文件中解析出的每个功能模块内容的参数集合,生成每个功能模块所需的结构体定义,保存到数据定义文件;
S642.循环读取协议文件中解析出的每个功能模块的参数集合,生成每个功能模块的接口类;
S643.循环读取协议文件中解析出的每个功能模块的参数集合,生成每个功能模块的协议数据解析与组装类;
S644.将每个功能模块的结构体定义、接口类以及协议数据解析与组织类替换网络模块代码通用模板中相应的可替换变量。
实施例4:
本发明的实施例是说明性的,而非限定性的,上述实施例只是帮助理解本发明,因此本发明不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他的具体实施方式,同样属于本发明保护的范围。