lua腳本引擎用法總結(jié)(1)
?
???? 前段時間自己弄了個小的開發(fā)平臺,其實就是一堆類庫封裝了一下呵,畢竟自己用,方便就好。后來覺得不夠靈活,就把lua引進來了。選的平臺是luaplus,最新版本的那個。感覺比較方便,隨手發(fā)出來大家一起研究哈:)
???? 現(xiàn)在總結(jié)了一下它的用法:
???? 1、當配置文件用,拿來保存會根據(jù)環(huán)境變化的初值、常量。
?????這種用法應該是最沒難度,也是最方便的了,因為與常拿來當配置文件的,像ini和xml文件,都不能實現(xiàn)這樣的功能
???? m_sigDebug = true
???? if (m_sigDebug == true) then
??????? value = "調(diào)試中的值"
???? else
??????? vlaue = "發(fā)行版的值"
???? end
???? 我把它用的一個接口系統(tǒng)中,在調(diào)試時返回的目錄是本地的,而運行時把debug一關(guān),嘿,俺是懶人嘛。其實也可以有其他的高級應用,luaplus中有向 LuaStateOwner注冊變量的方法,所以這個配置文件還是可以很靈活滴,甚至可以將IP地址和CPU號甚至硬件序號發(fā)進來,然后實現(xiàn)注冊控制呵。 如果沒注冊,不提供常量,跑不下去了吧,哈??


Re: lua腳本引擎用法總結(jié)(2)
?
2、拿來維護一些易變的算法。
我有一個工具,用VC作了界面,所有的事件、調(diào)用全發(fā)到LuaStateOwner中了,分別調(diào)用不同的.lua文件。于是實現(xiàn)了修改算法,不必改代碼,不用重編譯。
當然,這樣伴隨著一個問題,.lua不要直接發(fā)出去,編譯一下再發(fā)。還有,就是我在程序中對.lua的md5驗證了一下,這樣可以保證別人不要修改俺的代碼,因為是和數(shù)據(jù)庫相關(guān)的嘛,如果別人可以改代碼,那不是把數(shù)據(jù)庫給賣了嘛:)



Re: lua腳本引擎用法總結(jié)(3)
?
3、為LuaStateOwner實現(xiàn)開放的功能庫
實現(xiàn)了配置、實現(xiàn)了邏輯算法,但還是覺得不方便,因為在第2種應用方法中,所有的數(shù)據(jù)要由VC向LuaStateOwner注冊,也就是說數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時代碼就沒用了。這樣就不能實現(xiàn)個性化或叫二次開發(fā)。
要實現(xiàn)到這一步,有兩種方案:
a.增強lua的數(shù)據(jù)庫處理能力,開放數(shù)據(jù)庫給lua直接訪問,我自己抓數(shù)據(jù)過來處理,這樣就沒問題了呵。
b.為LuaStateOwner擴展功能庫,lua中增加一個函數(shù),向VC要數(shù)據(jù),我要哪個數(shù)據(jù)源、哪個表的哪個SQL結(jié)果,你給我發(fā)過來,創(chuàng)建成table×××。
我選擇了b。因為像a計劃呵,lua在程序中的地位太超然了,也就是給他的權(quán)限太強了。這樣容易失控。舉例哈,建立數(shù)據(jù)庫連接時要暴露太多信息。有人說我 用VC把usr/pwd注冊到LuaStateOwner中去給它用,保密了。那我再舉例哈,每個表都要用lua創(chuàng)建,我試過一個20萬記錄的表,那速 度,汗。不過用VC創(chuàng)建這些表感覺快好多呵,不知是不是錯覺呵。
好的想法就要實施哈,我現(xiàn)在想把這種應用封裝一下,弄個SERVO(伺服)系統(tǒng)。大體想法是將數(shù)據(jù)源、常量、網(wǎng)絡信息、功能類庫通通作為受控的SERVO 向LUA提供。LUA專門負責邏輯、算法(當然,有些算法要求比較BT的像MD5可以用SERVO封一下再給LUA)的實現(xiàn)和業(yè)務重組,而SERVO專心 負責數(shù)據(jù)源的權(quán)限控制、常量的演變以及類庫接口在訪問中的控制這些應用權(quán)限上的實現(xiàn)。
好了,寫到這兒,我的QQ:25723030,MSN是myao@hotmail.com,歡迎一起討論。