2010-04-03 73 views
0

我想創建一個執行遠程腳本的應用程序。用戶可以創建一個腳本(可能是LUA腳本),然後將其存儲在服務器中。然後他可以使用API​​來執行腳本。我在想,API可能是一個web服務。 所以我的問題是:執行遠程腳本 - 體系結構

  • 我需要高性能來執行腳本。所以我的第一個選擇是LUA腳本。有人有另一個消化?

  • 原因我需要高性能,我想如果web服務是最好的解決方案。也許我可以創建一個持有用戶請求的TCP/IP Windows服務。很重要的一點是,我將有許多用戶同時執行腳本。所以我會遇到併發問題。

  • 我的腳本將在數據庫中查詢。我會用東京內閣或東京暴君。我認爲Tokio Tyrant是唯一的解決方案,因爲我會有很多要求。對於性能,我需要建立連接池嗎?無論如何共享Web服務請求之間的變量?

  • 爲了使Web服務或Windows服務我想使用C++。

有人可以幫助解決這些問題嗎?

感謝

回答

1
  • Lua是一種腳本語言相當高的性能,特別是如果你使用LuaJIT或類似的東西。

  • 你說的是高性能。我們講多少?假設您有一個非常簡單的web服務來執行通過POST接收的腳本,那麼與Lua編譯環境設置執行時間相比,HTTP開銷可能相當小。

  • 關於數據庫我什麼也不能告訴你。有很多可能性進行池化,這也取決於你如何執行Lua腳本。他們在一個共同的環境中運行嗎?每個會話一個?每個請求一個?

  • C++肯定是託管Lua的好選擇,因爲Lua非常適合。儘管還有其他良好的語言綁定。

但請記住,只有沙盒腳本才能完成您的工作。用戶提交的腳本可能會故意或錯誤地做很多其他的壞事(TM),比如分配大量內存或佔用CPU。在Lua中(我認爲很多,即使不是全部,沙盒環境也是如此),除了殺死有問題的實例,或者如果你不允許在你的沙盒中使用協程,你就不能在這方面做很多工作。更聰明的東西。