本文原创作品,如需转载请注明来源,作者:姜涛, towerjt@gmail.com
在电信的计费系统中,所用的语言基本都是
C
、
C++
,应该是基于速度优势,至少目前国内还很少听说用别的语言来做计费系统的。而对于繁杂的定价计划,一般的处理有两种:
1
、通过数据模型描述
2
、通过脚本语言描述
两者都各有优势,对于前者而言,优势在于设计优秀的数据模型是完全能够描述大部分的批价形式,如果能有比较友好的配置界面支持的话,定义严格的批价规则能被很好的使用。
Y
由于依然完全基于原生的
C
或者
C++
语言的,所以性能上应该能得到保证。
通过数据模型来描述规则的核心思想,类似于通过数据模型来构建一个语法树,所以不可避免的复杂性会让开发人员以及后来的配置人员挠头。有时候一个很简单的
if else then
的规则,实现起来却是很复杂的,而且配置好后的规则,如果比较复杂的话,可读性又会比较差——除非配置的
UI
能很好的解释。
同时,通过数据模型来描述计费规则有一个扩展性的问题,如果数据模型设计得不够通用的话——谁能够保证面面俱到呢——一旦有不是很好描述的规则的话,极有可能要修改数据模型。
基于上面的问题,通过脚本语言来描述计费规则是一个比较好的替代方法,
Lua
作为一个非常适合嵌入
C/C++
程序的一个脚本语言,能很方便的调用宿主语言(
C/C++
)的函数,同时又能很方便的被宿主语言可调用。
用
Lua
来描述计费规则的过程大致如下:
<!-- -->1、
<!-- -->将相关的计费要素的访问做好封装,注册成
Lua
能调用的函数。一般来说,这种计费要素多是存储在数据库中的记录,根据需要,可以封装一些必要的访问方法。
<!-- -->2、
<!-- -->Lua
的批价函数接受一个计费事件,计费事件可以抽象成一些
ATTRIBE-VALUE
值,这个在
Lua
中是很容易用
TABLE
来表示的。
<!-- -->3、
<!-- -->在
Lua
的批价函数接受的参数是一个表,其他系统传过来的是一个
xml
,解析完后形成一个
TABLE
传给批价函数
<!-- -->4、
<!-- -->批价函数中可以根据传入的计费事件,做相关处理,在处理的过程中,如果需要访问一些参考值或参考对象的话,可以通过调用第一步中封装的函数来操作。
这周基本就是在做这个
DEMO
,已经基本成样子了,下周应该把它完善一下。
分享到:
相关推荐
`tolua_function`宏用于将C++函数绑定到Lua,`myFunctionWrapper`是C++中的一个包装函数,用于处理Lua和C++之间的类型转换。 总结来说,这个"lua_test.rar"实例展示了如何在C++项目中集成Lua,以及如何从Lua脚本...
在IT领域,有时候我们需要在不同的编程语言之间进行交互,例如使用脚本语言 Lua 调用 C++ 编写的动态链接库(DLL...通过理解这些原理,开发者可以灵活地将 C++ 的强大功能融入到 Lua 脚本中,提高项目的效率和灵活性。
- 在C++中定义`lua_open`和`lua_close`函数,用于初始化和清理LUA环境。 2. **C++类封装**: - 创建C++类的静态库,包含类的定义和实现。确保类的公共方法是可导出的,以便LUA可以访问。 - 如果有私有或保护...
比如,当在C++中创建了一个对象并传递给Lua后,可能需要在C++中管理这个对象的生命周期,以防止内存泄漏。 6. **性能优化**:虽然Lua执行速度快,但相比C++仍有差距。对于性能敏感的部分,可以使用C++编写,然后...
3. **Lua的调用约定**:在C++中,你需要使用`luaL_register`或`lua_register`函数将C++函数导出给Lua。这些函数需要一个lua_State指针和两个字符串参数,分别代表函数名和对应的C++函数指针。 4. **C++函数处理Lua...
在IT行业中,将Lua嵌入到C/C++应用程序中可以极大地提高代码的灵活性和可扩展性,使得开发者能够利用Lua的简洁语法和动态特性来编写控制逻辑或处理复杂任务,同时保持C/C++的高性能和底层控制能力。 首先,我们要...
1. 注册C++函数:在C++中,你需要使用`lua_register`或`lua_CFunction`定义一个C++函数,使其能在Lua中调用。例如: ```cpp static int myCppFunction(lua_State *L) { // 获取参数并进行操作 int arg = lua_to...
本项目重点展示了如何在C++中集成Lua,实现两者之间的交互,特别适用于初学者理解这一过程。 **描述分析:** 这个项目来源于一本关于Lua游戏开发的书籍,其目标是通过一个精简版的TakeAway游戏,直观地展示Lua脚本...
4. 交互:在C++中,你可以通过`lua_pcall`来调用Lua函数,并传递参数。在Lua脚本中,你可以直接调用之前注册的C++函数。 5. 错误处理:在调用Lua函数时,应检查返回值以处理可能出现的错误。 压缩包中的“2.first...
Lua的灵活性在于它的轻量级和强大的元表机制,使得在C++中定义复杂的数据结构和行为变得容易。例如,通过元表,你可以模拟出面向对象的特性,实现类和对象的概念。 总之,"vc++中嵌入动态解析语言Lua"的示例展示了...
本文将深入探讨如何在 Lua 中调用 C++ 函数,实现两者之间的交互。 首先,我们要理解 Lua 和 C++ 之间的接口是如何建立的。这主要通过 Lua 的 C API 实现,它提供了一套 C 函数供外部语言(如 C++)调用,同时也...
当C++与Lua结合时,访问封装通常涉及到在C++中定义的类如何被Lua脚本调用和控制,以及如何在Lua中安全地访问C++的对象和功能。 在“Version2”中,我们可以预期开发者已经对前一版进行了优化,可能包括性能提升、...
通过Lua与C++的结合,开发者可以在C++中编写核心逻辑和性能敏感的部分,而在Lua中编写更易变和灵活的业务逻辑。 结合的关键在于Lua的绑定机制,即通过Lua C API或第三方库如SWIG、LuaBridge等将C++函数和类暴露给...
通过`luaL_newstate()`函数可以创建一个新的Lua环境,并通过`luaL_openlibs()`打开标准库,这样就可以在C++中使用Lua的基本功能了。 2. **加载和执行Lua脚本** 使用`luaL_dofile()`或`luaL_dostring()`函数加载并...
c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包c++ lua 框架资源包...
- 注意内存管理,C++中的动态分配内存需要在Lua中释放,反之亦然,避免内存泄漏。 通过以上步骤,我们可以成功地在Lua中调用C++函数,实现两种语言的高效协同。这个实例不仅展示了如何在实际项目中结合使用Lua和...
在实际开发中,lua经常被用来作为C++应用程序的接口,使得程序员能够用lua编写易于维护和扩展的控制逻辑。"lua调用C++_c2lua"这一主题,正是关注于如何通过工具c2lua实现lua与C++之间的交互。 c2lua是专门为lua和...
本文将深入探讨如何在C++程序中调用Lua动态链接库,并讲解其编译过程和环境配置。 首先,我们需要理解Lua的动态链接库(liblua.so)。Lua是一个轻量级的脚本语言,它的动态链接库允许C/C++程序直接嵌入和调用Lua...
通过LuaAction,开发者可以在C++中直接调用这些包或表内的函数,极大地增强了代码的灵活性和可扩展性。 其次,LuaAction支持传递任意数量的参数和接收任意数量的返回值。这种灵活性使得C++和Lua之间的接口设计更加...
- **配置环境变量**:添加系统变量`ANDROID_NDK_ROOT`,并将值设为NDK的安装路径(例如`D:\Android\android-ndk-r9b`),然后将该变量添加到`Path`系统变量中。 ##### 3. 安装PyYAML - **下载地址**:...