2010-07-18 80 views
2

我想構建一個主要解釋的應用程序框架。 假設源代碼將存儲在數據庫中,用戶可以編輯它,並始終執行最新版本。c#編譯數據庫源代碼

任何人都可以給我一些想法如何做到這一點!

歡呼聲, 的Gabor

回答

0

通常,本程序對可編寫腳本的部分使用腳本語言,即Lua或Javascript。

3

在.Net中,您可以使用反射和CodeDOM即時編譯代碼。但這兩種方法都不是非常簡單或實用。單聲道有一些動態解釋C#的能力,但我還沒有仔細觀察它。

另一種選擇是使用像Boo或IronPython這樣的解釋.Net語言作爲數據庫代碼的語言。

無論哪種方式,請確保您認真考慮平臺的安全性。允許用戶執行任意代碼始終是一個充滿危險的練習。尋找簡單的eval()方法往往太誘人了,即使存在這種方法,也就是而不是,這對於這種情況來說足夠好。

+0

+1提安全方面。 – 2010-07-19 01:38:48

0

要回答您的技術問題:您不想編寫自己的語言和解釋器。這對你來說太麻煩了。所以選擇一些其他語言,比如說Python或者Lua,然後尋找可以讓你的C程序交給代碼執行的文檔。當然,腳本需要能夠執行某些操作,因此您需要找到如何將程序對象展示給腳本。另外,如果客戶端在更新數據庫中的源代碼時正在運行該程序,會發生什麼情況?客戶端是否應該重啓?您是要將整個程序作爲單行存儲在此數據庫中,還是要存儲單個函數?這會影響您構建更新的方式。

要解決您的問題的其他問題:爲什麼你想這樣做?將「解釋型語言」作爲系統設計規範的一部分通常不是一個好兆頭。真正的需求是這樣的:「我經常更新程序,我希望用戶始終擁有最新的副本?」如果是這樣,還有其他更好的方法可以解決這個問題(只需給我們實際場景和要求)。