使用Lua脚本语言开发出高扩展性的系统,AgileEA

AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。

AgileEAS.NET.png

AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。

二、关于Lua语言

Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua语言目前应用最广泛的领域是游戏编程领域,最早接触和认识Lua也是因为在2008年玩金山的剑网3,通过解包读过其中的一些游戏脚本,慢慢也看过一些其他游戏的Lua脚本,在我们开发自己的电子病历系统的过程之中,引入了Lua脚本语言实现那些可变性非常高的场景。

.NET通过LuaInterface开源项目类库实现对Lua的脚本调用以及Lua与C#的相互绑定,有关于这此方面的内容请大家搜索相关文章以获得帮助。

在AgileEAS.NET SOA5.0版本之中,我们决定把在开发过程之中形成的Lua脚本引擎一并集成入AgileEAS.NET SOA中间件平台,目前Lua脚本语言被我们广泛的应用电子病历系统这中的病案自动评分、短信系统之中的交互式应答、和一些计划任系统之中的计划任务定义。

三、AgileEAS.NET SOA平台Lua引擎

AgileEAS.NET SOA5.0平台目前使用的是Lua5.1版本,使用LuaInterface实现C#与Lua的相互绑定处理,平台已经对其进行了二次封装以提供统一的API支持,目前由EAS.LuaScript.dll程序集承载所有业务。

AgileEAS.NET SOA平台Lua引擎提供了以下接口或类型的API:

ILuaEngine,定义为一个Lua脚本引擎:

1:using System; 2: 3:namespace EAS.LuaScript 4: { 5:/// <summary> 6:/// Lua脚本解析引擎。 7:/// </summary> 8:/// <remarks> 9:/// 用于完成程序之中嵌入的动态Lua脚本,Lua脚本在AgileEAS.NET SOA 中间件之中主要用于环境的各种参数的动态解析处理之中。 10:/// </remarks> 11:publicinterface ILuaEngine:IDisposable 12: { 13:/// <summary> 14:/// 脚本路径。 15:/// </summary> 16:string ScriptDirectory 17: { 18: get; 19: set; 20: } 21: 22:/// <summary> 23:/// 输出重定向方法/用于调试。 24:/// </summary> 25: Action<object> OutAction 26: { 27: get; 28: set; 29: } 30: 31:/// <summary> 32:/// 注册lua函数,实现Lua绑定。 33:/// </summary> 34:/// <param>lua函数类</param> 35:void BindLuaFunctions(object luaAPIClass); 36: 37:/// <summary> 38:/// 执行lua脚本文件。 39:/// </summary> 40:/// <param>脚本文件名。</param> 41:/// <returns>lua脚本执行结果。</returns> 42:object[] DoFile(string luaFileName); 43: 44:/// <summary> 45:/// 执行lua脚本文本。 46:/// </summary> 47:/// <param>lua指令。</param> 48:/// <returns>lua脚本执行结果。</returns> 49:object[] DoString(string chunk); 50: 51:/// <summary> 52:/// 调用Lua函数。 53:/// </summary> 54:/// <param>函数名称。</param> 55:/// <param>调用参数。</param> 56:/// <returns>lua脚本执行结果。</returns> 57:object[] Invoke(string luaFunction, paramsobject[] args); 58: } 59: }

其中脚本路径ScriptDirectory指示Lua脚本文件的存储位置,在DoFile执行脚本文过程之中如果传入为相关路径则可以自动在ScriptDirectory之中寻址,ScriptDirectory默认为当前程序目录。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1dfe892d76179737b15145fe122e78a6.html