业务逻辑的实现方法和系统的利记博彩app
【技术领域】
[0001]本发明涉及计算机应用技术,特别是涉及一种业务逻辑的实现方法和系统。
【背景技术】
[0002]随着计算机技术的发展,开发人员常通过开发各种服务器引擎实现各种业务逻辑。例如,通过开发的服务器引擎实现游戏业务逻辑。
[0003]传统的服务器引擎在接收到数据包之后,直接通过栈的方式将接收到的数据包压给服务器引擎中的lua(—种动态类型语言)层进行解析,进而使得服务器引擎在数据交换方面存在着一定的性能损耗。
[0004]因此,为了减少服务器引擎在数据交换上的性能损耗,将通过服务器引擎中的C++层解析数据包的包头,并根据不同的命令字来读取数据包中的包体。
[0005]但是,这将存在着不利于扩展的局限性,也就是说,当新加一个命令字、修改一个协议的数据体时,都需要进行C++代码的修改,并进行重新编译,缺乏灵活性。
【发明内容】
[0006]基于此,有必要针提供一种易于扩展、能提高灵活性的业务逻辑的实现方法。
[0007]此外,还有必要提供一种易于扩展、能提高灵活性的业务逻辑的实现系统。
[0008]一种业务逻辑的实现方法,包括如下步骤:
[0009]在C++层由接收到的数据包获取协议命令字,以得到相应的lua文件规定的协议,根据得到的协议解析数据包得到参数;
[0010]根据所述协议命令字获取lua层中对应的协议命令字处理函数;
[0011]将所述参数传入所述获取得到的协议命令字处理函数,以实现业务逻辑。
[0012]在其中一个实施例中,所述在C++层由接收到的数据包获取协议命令字,以得到相应的lua文件规定的协议,根据得到的协议解析数据包得到参数的步骤包括:
[0013]初始化服务器,并解析所述lua文件以得到所述lua文件中包含的协议,存储所述得到的协议。
[0014]在其中一个实施例中,所述在C++层由接收到的数据包获取协议命令字,以得到相应的lua文件规定的协议,根据得到的协议解析数据包得到参数的步骤包括:
[0015]通过C++层接收发送至服务器请求进行业务逻辑处理的数据包;
[0016]C++层从数据包的包头中获取协议命令字;
[0017]C++层根据协议命令字查找由所述lua文件中包含的协议,根据所述查找到的协议,解析所述数据包以得到参数。
[0018]在其中一个实施例中,所述方法还包括:
[0019]根据所述lua层中当前触发的事件回调所述C++层中的接口,通过所述C++层中的接口调用所述C++层中设置的模块实现所述当前触发的事件。
[0020]在其中一个实施例中,所述当前触发的事件包括写日志事件、定时器事件、服务器事件、客户端事件以及数据库操作事件。
[0021]一种业务逻辑的实现系统,包括:
[0022]数据包处理模块,用于在C++层由接收到的数据包获取协议命令字,以得到相应的lua文件规定的协议,根据得到的协议解析数据包得到参数;
[0023]函数获取模块,用于根据所述协议命令字获取lua层中对应的协议命令字处理函数;
[0024]业务逻辑处理模块,用于将所述参数传入所述获取得到的协议命令字处理函数,以实现业务逻辑。
[0025]在其中一个实施例中,所述系统还包括:
[0026]初始化模块,用于初始化服务器,并解析所述lua文件以得到所述lua文件中包含的协议,存储所述得到的协议。
[0027]在其中一个实施例中,所述数据包处理模块包括:
[0028]接收单元,用于通过C++层接收发送至服务器请求进行业务逻辑处理的数据包;
[0029]包头提取单元,用于通过C++层从数据包的包头中获取协议命令字;
[0030]查找解析单元,用于通过C++层根据协议命令字查找由所述lua文件中包含的协议,根据查找到的协议,解析数据包以得到参数。
[0031]在其中一个实施例中,所述系统还包括:
[0032]回调模块,用于根据所述lua层中当前触发的事件回调所述C++层中的接口,通过所述C++层中的接口调用所述C++层中设置的模块实现所述当前触发的事件。
[0033]在其中一个实施例中,所述当前触发的事件包括写日志事件、定时器事件、服务器事件、客户端事件以及数据库操作事件。
[0034]上述业务逻辑的实现方法和系统,在C++层中由接收到的数据包获取协议命令字,以得到lua文件规定的协议,得到的协议解析接收到的数据包,以得到数据包中包含的参数,根据该协议命令字获取lua层中对应的协议命令字处理函数,将解析得到的参数传输获取得到的协议命令字处理函数,以实现业务逻辑的处理,由于数据包的解析是在lua文件规定的协议作用下由C++层实现的,lua文件可以动态进行重新加载,因此,在需要加入新的协议时,只需要修改lua文件即可,不需要进行C++代码的修改和重新编译,将大为提高了扩展性和灵活性。
【附图说明】
[0035]图1为一个实施例中业务逻辑的实现方法的流程图;
[0036]图2为图1中在C++层由接收到的数据包获取协议命令字,以得到相应的lua文件规定的协议,根据得到的协议解析数据包得到参数的方法流程图;
[0037]图3为一个实施例中业务逻辑的实现系统的结构示意图;
[0038]图4为图3中数据包处理模块的结构示意图。
【具体实施方式】
[0039]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0040]如图1所示,在一个实施例中,一种业务逻辑的实现方法,包括如下步骤:
[0041]步骤110,在C++层由接收到的数据包获取协议命令字,以得到lua文件规定的协议中与所述协议命令字对应的协议,根据所述得到的协议解析数据包以得到与该协议命令字对应的参数。
[0042]本实施例中,用于实现业务逻辑的服务器包括C++层以及与C++层进行交互的lua层,其中,C++层采用C++语言,以提供丰富,甚至于更为复杂的算法,为服务器实现各种业务逻辑提供基础;lua层采用lua语言,用于灵活地完成各种业务逻辑。
[0043]具体的,预先设定包含了各种协议的lua文件,在接收到数据包之后,C++层将进行数据包中包头的处理,以得到包头中所包含的协议命令字,读取存储的协议中与所得到的协议命令字对应的协议,以根据读取得到的协议进行数据包的协议解析,以完成数据包中包体的处理,从而得到其包含的与包头中的协议命令字对应的参数。其中,所述存储的协议是服务器初始化后读取lua文件所得到并存储的,以便于后续进行的数据包处理。
[0044]C++层解析数据包所得到的协议命令字指示了当前接收得到的数据包所对应网络事件的协议;所得到的参数即为实现当前接收得到的数据包所对应网络事件的参数。
[0045]例如,C++层当前解析的数据包所对应的网络事件为客户端触发的登录事件,则解析数据包所得到的参数为该客户端所对应的登录信息,即用户标识和用户密码。
[0046]步骤130,根据协议命令字获取lua层中对应的协议命令字处理函数。
[0047]本实施例中,lua层将作为服务器中的应用层实现各种业务逻辑。业务逻辑所触发的各种事件将通过调用lua层中的各种函数进行处理,以实现该事件的响应。
[0048]也就是说,服务器中触发的各种事件将通过C++层提供的接口传递到lua层中,进而由lua层响应该事件,实现相应的功能。
[0049]由于lua层采用的lua语言是用于扩展C++编程的轻量级语言,较为易懂,因此,对于开发人员而言,降低了编码的难度,不需要耗费过多的学习成本,进而使得基于服务器的各种业务逻辑开发速度大为提高,有效缩短了业务逻辑的开发周期。
[0050]每一协议命令字都有与其对应的协议命令字处理函数,因此,将根据解析得到的协议命令字获取得到存在于lua层中并且与其对应的协议命令字处理函数。
[0051]具体的,可以通过CProtocal::get_message(cmd)方法获取lua层中的协议命令字处理函数,其中,所述cmd为解析数据包所得到的协议命令字。
[0052]步骤150,将所述参数传入获取到的协议命令字处理函数,以实现业务逻辑。
[0053]本实