论文部分内容阅读
摘 要:互联网商品交易市场发展迅猛,交易规模及交易额屡创新高,其中,各类业务支撑引擎发挥了不可替代的作用,针对“面向对象编程(高级)”教学内容,对通用业务支撑引擎进行了分析与设计。软件以C++及Lua脚本语言为载体进行设计,主要模块包括Lua环境绑定及注册模块、核心业务场景模块、数据加密模块、数据通信模块、数据库操作模块、日志模块、配置模块等,引擎体系功能完备,性能高效且稳定,具有较高的教学指导意义。
关键词:互联网商品交易;业务引擎;教学指导
中图分类号:TP391.3 文献标识码:A 文章编号:2096-4706(2021)02-0024-04
Abstract:Internet commodity transaction market is developing rapidly,and the scale and amount of transactions have repeatedly hit new highs. Among them,various business support engines have played an irreplaceable role. Aiming at the “Object Oriented Programming(Advanced)” teaching content,general business support engines have been analyzed and designed. The software is designed with C++ and Lua scripting language as the carrier. The main modules include Lua environment binding and registration module,core business scene module,data encryption module,data communication module,database operation module,log module,configuration module,etc.,the engine system has complete functions,high efficiency and stability,and has higher teaching guidance significance.
Keywords:internet commodity transaction;business engine;teaching guidance
0 引 言
互联网商品交易是指通过互联网或其他电子渠道,针对个人或家庭需求销售商品以及提供服务,主要以B2B及B2C两种交易模式来实现交易。商品交易活动是通过互联网进行信息的组织及传递,实现了有形商品和无形商品所有权的转移及服务的消费。近年来,得益于通信技术的发展和普及,国内互联网用户逐年攀升,特别是手机用户增长迅猛,使得网络购物业已成为我国消费者较为重要的消费方式,年网络交易总额已近10万亿元,如此庞大市场规模的另一个支点就是互联网技术,而其中的业务支撑引擎则是较为关键的一环,它为高并发的交易订单在众多用户与商户之间的正常流转提供了保障。
通过对业务支撑引擎软件的分析与设计,使学生了解更多有关互联网后台程序的技术细节,同时增强了对“面向对象编程(高级)”课程知识点的理解与掌握,可提升学生的实践动手能力。
1 系统需求分析
根据商品交易业务复杂多变的特性,在设计时采用了C++与Lua脚本语言相结合的方式,C++语言用于完成框架的通信、数据库交互等基本功能,Lua语言则在框架的基础上进行业务流程代码的开发。Lua语言作为一种脚本语言,具有编程简单、快速响应的特点,对于商品交易领域要求快速接入同时需求多变的应用场景具有明显的优势。因此软件功能设计上主要采用Lua环境绑定及注册模块、核心业务场景模块、数据加密模块、数据通信模块、数据库操作模块、日志模块、配置模块。Lua环境绑定及注册模块用于在C++的框架下将Lua代码执行的环境进行绑定,并将其他C++类功能函数注册到Lua环境中,以便可以在Lua脚本中直接调用,实现Lua代码与C++代码的相互配合调用。核心业务场景模块包含服务器模块、生产—消费者模块、定时器模块,可根据配置将软件注册为对应功能的系统服务。服务器模块主要用于接收网络请求,生产者—消费者模块主要用于筛选符合条件的订单记录并发处理,定时器模块间隔固定时间运行一次以完成特定业务功能。数据加密模块用于对交互的报文数据进行加密处理,发送端对数据进行加密生成签名信息,接收端进行同样的加密操作并进行对比验签,避免数据在传输过程中被篡改而造成损失。数据通信模块用于实现基础的http报文交互功能,確保报文交互高效稳定。数据库操作模块用于执行与数据库相关的操作,保证数据安全存储。日志模块主要用于订单业务流程的日志记录,便于对订单状态的跟踪分析。配置模块为系统启动提供初始配置,避免改动代码,便于灵活部署。
2 开发环境及关键技术
软件是基于Windows 10系统进行的设计,集成开发环境采用Visual Studio 2018,功能强大,操作简便,可有效提高编程效率。
编程语言采用C++与Lua相结合的模式,充分结合两种语言各自的优势,使得软件功能稳定且易于扩展,因此两种语言的相互正确调用是此软件的关键技术点之一,这里采用以C++语言为主体,以Lua语言为嵌入语言的方式进行设计。
在设计时将互联网常用的三种业务场景支撑后台程序集成到一个软件中也是个关键的技术点,通过配置启动对应的模块功能,增加了开发的难度,但却简化了程序部署等后期维护的工作量,从长远来看此举更为有利。 数据库采用目前广泛应用的开源数据库——MySQL数据库,其具有稳定、高效、易于开发的优点。为进一步提高数据库的性能,在实现基本的增删改查功能的基礎上增加了数据库连接池的设计,通过减少数据库连接对象的创建及释放操作,可有效提高并发操作性能。
数据通信则是采用Windows系统下最高效的异步完成端口网络通信模型,以期实现单平台下最佳的网络报文通信能力,确保高并发订单接收的准确性。
3 系统功能结构设计
软件系统功能结构图如图1所示,其主要由7个模块构成。下文从类图的角度逐一说明各模块的设计。
3.1 Lua环境绑定及注册模块
Lua代码并不是直接被Lua解释器解释执行,而是先被编译为字节码,然后再交由lua虚拟机去执行。因此Lua脚本语言在执行之前,就需要在C++代码中对Lua虚拟机进行绑定,通过创建一个与之相对应的状态结构来实现对当前Lua环境的管理,上述步骤均可以通过相关的动态库函数来实现,方便快捷。在绑定好Lua环境之后,就可以往该环境中注册可在Lua脚本中直接调用的C++函数,注册时需要提供C++的类名及对应函数,同时在注册时需要指定对应环境的状态结构。通过此步骤即可在Lua脚本中调用其他各功能模块中的函数,以完成业务逻辑的编码工作。该模块的主要类图如图2所示,该类除了实现前述功能外,同时也是一个线程基类,后续部分模块类需要继承该类,才能实现函数的相互调用。
3.2 核心业务场景模块
核心业务场景模块包含服务器模块、生产—消费者模块、定时器模块。
服务器模块用作报文通信的接收服务端,负责接收来自网络上不同节点商户或用户的请求,具有高并发的特点,若不能满足此项要求,会直接影响系统收单数量,降低收益。
生产者—消费者模块是指由生产者脚本筛选符合条件的订单,再分配给消费者脚本进行处理,两者之间的关系是1:N,即1个生产者匹配多个消费者,如此达到并发处理的效果,快速将系统中的订单再次分发到下游商家或直接分发到供应商系统。
定时器模块主要用于完成定时执行的监控任务,系统中的订单总会有少数订单会出问题,比如订单超时,为了实现自动扫描出现问题的订单,需要有定时程序不断轮询检查,以便及时发现问题订单并及时处理,避免造成不必要的损失。
如图3所示,三个模块类均继承了cluabase类以实现各线程的Lua环境绑定及操作,也分别实现了各自线程的启动结束的函数,同时增加了加载配置信息操作,以便处理各个模块自身的配置信息。
3.3 数据加密模块
数据加密模块用于确保数据传输的安全性,数据报文在网络中传输时可能会被恶意截取篡改,轻则造成单笔交易订单的数据记录出现问题,重则对整个数据库内的数据造成不可逆的破坏,后果不堪设想,所以需要在数据发送前进行加密计算获取签名,在接收端进行签名验签,确保数据无误后才可对其进行后续处理。模块主要类图如图4所示,目前设计上只使用两种加密算法,一个是MD5信息摘要加密算法,一个是Des加密算法,这两种算法在实际应用中被广泛采用,安全度也较高,可有效验证数据安全性。
3.4 数据通信模块
数据通信是互联网软件的核心功能,http报文是网络通信的主要方式之一,本文设计的引擎系统采用该方式进行通信,数据通信模块需要解决http报文的组包、发送、接收、解析等功能。采用完成端口异步通信能最大限度地保证数据发送及接收的效率,但其组包及解析功能相对复杂,需要考虑的情况比较多。图5为该模块的主要类图,CSocketHandle类主要负责底层的套接字通信,而chttpprocess类继承了csockehandl类,在继承基类功能的基础上添加了http报文的两种请求方式,即Get和Post方式,两种方式在组包及解析上有较大不同,需要区别对待。
3.5 数据库操作模块
数据库操作是所有软件的必备功能,该模块功能组件化后也可直接集成于不同的软件系统,省时省力。从综合性能以及成本方面的考虑,软件设计采用MySQL数据库,在完成基本数据库操作功能后,性能是高并发应用软件主要的优化点,这里采用常用的数据连接池。图6为该模块的主要类图,cdatabase类图提供基础的数据库增删改查功能,在此基础上,cdbconncetpool在启动时创建多个数据库连接对象并将它们保存到队列中,需要时即从队列中提取,结束后再将其归还到队列中,此方法在高并发的数据库访问下可避免频繁地创建和释放数据库连接对象,减少资源消耗,有效地提高了访问性能。
3.6 日志及配置模块
日志模块用于记录时间及各函数调用情况,在函数调用前后及函数内部代码的执行过程中都需要日志输出,便于分析业务流程及查找问题,其类图如图7所示。
配置模块用于配置信息的读取,比如数据库信息的配置、核心业务场景模块信息的配置等,都通过配置文件提供,其类图如图8所示。
4 结 论
本文分析了互联网商品交易业务支撑引擎的通用需求,并对引擎的设计展开描述,后台业务引擎可帮助进行线上商品交易的企业实现定单接收、订单转发、异常订单监控管理等产品链中的核心业务功能。本案例应用场景为“面向对象编程(高级)”课程,通过对软件系统设计的分析与描述,增进学生对行业应用的了解,提升了软件系统分析与设计的能力。
参考文献:
[1] 吴杰明,方英兰.软件工程实例教程 [M].北京:清华大学出版社,2010.
[2] 王英英.MySQL8从入门到精通 [M].北京:清华大学出版社,2019.
[3] 陈晓军,朱铨荃,何欣,等.网站后台通用管理系统分析与设计 [J].技术与市场,2009(9):11-12.
[4] 李伟红,龚卫国,马任飞,等.基于C/S和B/S的大中型商场后台系统的设计与实现 [J].计算机应用研究,2004(5):94-96+162.
[5] 刘天卓.基于GIS技术的城市交通信息查询系统分析与设计 [D].上海:复旦大学,2009.
作者简介:谢剑(1987.06—),男,汉族,湖南长沙人,软件学院专任教师,初级职称,硕士,研究方向:计算机应用,图像处理。
关键词:互联网商品交易;业务引擎;教学指导
中图分类号:TP391.3 文献标识码:A 文章编号:2096-4706(2021)02-0024-04
Abstract:Internet commodity transaction market is developing rapidly,and the scale and amount of transactions have repeatedly hit new highs. Among them,various business support engines have played an irreplaceable role. Aiming at the “Object Oriented Programming(Advanced)” teaching content,general business support engines have been analyzed and designed. The software is designed with C++ and Lua scripting language as the carrier. The main modules include Lua environment binding and registration module,core business scene module,data encryption module,data communication module,database operation module,log module,configuration module,etc.,the engine system has complete functions,high efficiency and stability,and has higher teaching guidance significance.
Keywords:internet commodity transaction;business engine;teaching guidance
0 引 言
互联网商品交易是指通过互联网或其他电子渠道,针对个人或家庭需求销售商品以及提供服务,主要以B2B及B2C两种交易模式来实现交易。商品交易活动是通过互联网进行信息的组织及传递,实现了有形商品和无形商品所有权的转移及服务的消费。近年来,得益于通信技术的发展和普及,国内互联网用户逐年攀升,特别是手机用户增长迅猛,使得网络购物业已成为我国消费者较为重要的消费方式,年网络交易总额已近10万亿元,如此庞大市场规模的另一个支点就是互联网技术,而其中的业务支撑引擎则是较为关键的一环,它为高并发的交易订单在众多用户与商户之间的正常流转提供了保障。
通过对业务支撑引擎软件的分析与设计,使学生了解更多有关互联网后台程序的技术细节,同时增强了对“面向对象编程(高级)”课程知识点的理解与掌握,可提升学生的实践动手能力。
1 系统需求分析
根据商品交易业务复杂多变的特性,在设计时采用了C++与Lua脚本语言相结合的方式,C++语言用于完成框架的通信、数据库交互等基本功能,Lua语言则在框架的基础上进行业务流程代码的开发。Lua语言作为一种脚本语言,具有编程简单、快速响应的特点,对于商品交易领域要求快速接入同时需求多变的应用场景具有明显的优势。因此软件功能设计上主要采用Lua环境绑定及注册模块、核心业务场景模块、数据加密模块、数据通信模块、数据库操作模块、日志模块、配置模块。Lua环境绑定及注册模块用于在C++的框架下将Lua代码执行的环境进行绑定,并将其他C++类功能函数注册到Lua环境中,以便可以在Lua脚本中直接调用,实现Lua代码与C++代码的相互配合调用。核心业务场景模块包含服务器模块、生产—消费者模块、定时器模块,可根据配置将软件注册为对应功能的系统服务。服务器模块主要用于接收网络请求,生产者—消费者模块主要用于筛选符合条件的订单记录并发处理,定时器模块间隔固定时间运行一次以完成特定业务功能。数据加密模块用于对交互的报文数据进行加密处理,发送端对数据进行加密生成签名信息,接收端进行同样的加密操作并进行对比验签,避免数据在传输过程中被篡改而造成损失。数据通信模块用于实现基础的http报文交互功能,確保报文交互高效稳定。数据库操作模块用于执行与数据库相关的操作,保证数据安全存储。日志模块主要用于订单业务流程的日志记录,便于对订单状态的跟踪分析。配置模块为系统启动提供初始配置,避免改动代码,便于灵活部署。
2 开发环境及关键技术
软件是基于Windows 10系统进行的设计,集成开发环境采用Visual Studio 2018,功能强大,操作简便,可有效提高编程效率。
编程语言采用C++与Lua相结合的模式,充分结合两种语言各自的优势,使得软件功能稳定且易于扩展,因此两种语言的相互正确调用是此软件的关键技术点之一,这里采用以C++语言为主体,以Lua语言为嵌入语言的方式进行设计。
在设计时将互联网常用的三种业务场景支撑后台程序集成到一个软件中也是个关键的技术点,通过配置启动对应的模块功能,增加了开发的难度,但却简化了程序部署等后期维护的工作量,从长远来看此举更为有利。 数据库采用目前广泛应用的开源数据库——MySQL数据库,其具有稳定、高效、易于开发的优点。为进一步提高数据库的性能,在实现基本的增删改查功能的基礎上增加了数据库连接池的设计,通过减少数据库连接对象的创建及释放操作,可有效提高并发操作性能。
数据通信则是采用Windows系统下最高效的异步完成端口网络通信模型,以期实现单平台下最佳的网络报文通信能力,确保高并发订单接收的准确性。
3 系统功能结构设计
软件系统功能结构图如图1所示,其主要由7个模块构成。下文从类图的角度逐一说明各模块的设计。
3.1 Lua环境绑定及注册模块
Lua代码并不是直接被Lua解释器解释执行,而是先被编译为字节码,然后再交由lua虚拟机去执行。因此Lua脚本语言在执行之前,就需要在C++代码中对Lua虚拟机进行绑定,通过创建一个与之相对应的状态结构来实现对当前Lua环境的管理,上述步骤均可以通过相关的动态库函数来实现,方便快捷。在绑定好Lua环境之后,就可以往该环境中注册可在Lua脚本中直接调用的C++函数,注册时需要提供C++的类名及对应函数,同时在注册时需要指定对应环境的状态结构。通过此步骤即可在Lua脚本中调用其他各功能模块中的函数,以完成业务逻辑的编码工作。该模块的主要类图如图2所示,该类除了实现前述功能外,同时也是一个线程基类,后续部分模块类需要继承该类,才能实现函数的相互调用。
3.2 核心业务场景模块
核心业务场景模块包含服务器模块、生产—消费者模块、定时器模块。
服务器模块用作报文通信的接收服务端,负责接收来自网络上不同节点商户或用户的请求,具有高并发的特点,若不能满足此项要求,会直接影响系统收单数量,降低收益。
生产者—消费者模块是指由生产者脚本筛选符合条件的订单,再分配给消费者脚本进行处理,两者之间的关系是1:N,即1个生产者匹配多个消费者,如此达到并发处理的效果,快速将系统中的订单再次分发到下游商家或直接分发到供应商系统。
定时器模块主要用于完成定时执行的监控任务,系统中的订单总会有少数订单会出问题,比如订单超时,为了实现自动扫描出现问题的订单,需要有定时程序不断轮询检查,以便及时发现问题订单并及时处理,避免造成不必要的损失。
如图3所示,三个模块类均继承了cluabase类以实现各线程的Lua环境绑定及操作,也分别实现了各自线程的启动结束的函数,同时增加了加载配置信息操作,以便处理各个模块自身的配置信息。
3.3 数据加密模块
数据加密模块用于确保数据传输的安全性,数据报文在网络中传输时可能会被恶意截取篡改,轻则造成单笔交易订单的数据记录出现问题,重则对整个数据库内的数据造成不可逆的破坏,后果不堪设想,所以需要在数据发送前进行加密计算获取签名,在接收端进行签名验签,确保数据无误后才可对其进行后续处理。模块主要类图如图4所示,目前设计上只使用两种加密算法,一个是MD5信息摘要加密算法,一个是Des加密算法,这两种算法在实际应用中被广泛采用,安全度也较高,可有效验证数据安全性。
3.4 数据通信模块
数据通信是互联网软件的核心功能,http报文是网络通信的主要方式之一,本文设计的引擎系统采用该方式进行通信,数据通信模块需要解决http报文的组包、发送、接收、解析等功能。采用完成端口异步通信能最大限度地保证数据发送及接收的效率,但其组包及解析功能相对复杂,需要考虑的情况比较多。图5为该模块的主要类图,CSocketHandle类主要负责底层的套接字通信,而chttpprocess类继承了csockehandl类,在继承基类功能的基础上添加了http报文的两种请求方式,即Get和Post方式,两种方式在组包及解析上有较大不同,需要区别对待。
3.5 数据库操作模块
数据库操作是所有软件的必备功能,该模块功能组件化后也可直接集成于不同的软件系统,省时省力。从综合性能以及成本方面的考虑,软件设计采用MySQL数据库,在完成基本数据库操作功能后,性能是高并发应用软件主要的优化点,这里采用常用的数据连接池。图6为该模块的主要类图,cdatabase类图提供基础的数据库增删改查功能,在此基础上,cdbconncetpool在启动时创建多个数据库连接对象并将它们保存到队列中,需要时即从队列中提取,结束后再将其归还到队列中,此方法在高并发的数据库访问下可避免频繁地创建和释放数据库连接对象,减少资源消耗,有效地提高了访问性能。
3.6 日志及配置模块
日志模块用于记录时间及各函数调用情况,在函数调用前后及函数内部代码的执行过程中都需要日志输出,便于分析业务流程及查找问题,其类图如图7所示。
配置模块用于配置信息的读取,比如数据库信息的配置、核心业务场景模块信息的配置等,都通过配置文件提供,其类图如图8所示。
4 结 论
本文分析了互联网商品交易业务支撑引擎的通用需求,并对引擎的设计展开描述,后台业务引擎可帮助进行线上商品交易的企业实现定单接收、订单转发、异常订单监控管理等产品链中的核心业务功能。本案例应用场景为“面向对象编程(高级)”课程,通过对软件系统设计的分析与描述,增进学生对行业应用的了解,提升了软件系统分析与设计的能力。
参考文献:
[1] 吴杰明,方英兰.软件工程实例教程 [M].北京:清华大学出版社,2010.
[2] 王英英.MySQL8从入门到精通 [M].北京:清华大学出版社,2019.
[3] 陈晓军,朱铨荃,何欣,等.网站后台通用管理系统分析与设计 [J].技术与市场,2009(9):11-12.
[4] 李伟红,龚卫国,马任飞,等.基于C/S和B/S的大中型商场后台系统的设计与实现 [J].计算机应用研究,2004(5):94-96+162.
[5] 刘天卓.基于GIS技术的城市交通信息查询系统分析与设计 [D].上海:复旦大学,2009.
作者简介:谢剑(1987.06—),男,汉族,湖南长沙人,软件学院专任教师,初级职称,硕士,研究方向:计算机应用,图像处理。