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


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



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