移动跨平台开发中使用Lua实现业务逻辑多平台重用
移动跨平台开发中使用Lua实现业务逻辑多平台重用
@authorAnderson Mao, 2013-03-26
移动跨平台应用,如果不是用HTML5的Web应用,经常需要在多个客户端开发原生程序,如J2ME/Android/iOS/等。
一般来说会有两大类客户端代码: C/ObjectC 和 Java。
如果没有代码重用/共享,开发类似的功能,比如一个Job, 在每个平台上都需要有一个Job Service业务逻辑。
使用原生应用,优点是UI方面现在可以比HTML5等表现更好。(以后HTML5可能会功能增强)。缺点是需要为每个平台编写类似,但是不共用的代码,比如Job Service, 功能类似,但是有多个平台版本。
对于HTML5可以满足的应用,跨平台可以用类似PhoneGap框架等来实现跨平台。
对于游戏等图像操作,也可以用基于Mono的Unity3D等框架来实现跨平台开发。
但是,对于业务逻辑比较复杂的其它应用,HTML5的UI效果又达不到要求,需要原生UI的,则可以考虑在业务逻辑层共享代码。
结构:

特点:
- 客户端UI代码使用原生代码,每个平台独立编程。客户端业务逻辑代码,全部使用Lua语言实现,每个平台嵌入Lua引擎,Lua业务逻辑代码只有一套,多平台重用。比如Job Service, 用Lua实现,多平台重用。
优点:
客户端UI 可以用原生做到性能最好客户端业务逻辑多平台重用Lua业务逻辑代码可以在PC上直接测试。(不需要客户端和模拟器)Lua语言和引擎小巧使用广泛比较稳定可靠。
缺点:
需要学习Lua, 在多平台上配置嵌入Lua环境.
问题:
Q: 可不可以用JavaScript 引擎替代Lua?
A: JavaScript引擎也可以被嵌入,但是相比Lua体积太大,JavaScript功能主要是操作DOM方面比较方便,但是写业务逻辑Lua应该也可以胜任。
Q: Mono 平台也可以跨平台使用,用C#实现业务逻辑重用,然后也用原生做UI,相比Lua是不是更好?
A: Mono平台本身的以后发展可能是一个问题。另外如果以前没用过C#,也需要学习C#。
参考:
Lua: http://www.lua.org/
Calatrava:自由构建UI的跨平台移动框架(使用JavaScript开发重用业务逻辑) http://www.infoq.com/cn/articles/calatrava