最近在作新產品,這個產品須要知足不一樣項目對於系統的定製性數據處理需求,好比有的要統計一段時間內某開關打開關閉了多少次,有的要統計一段時間內空調的使用率,有的但願根據溫度來控制空調的開仍是關,有的則是但願根據教室內人員的多少來控制教室燈管的開關,或者根據季節來決定路燈的開關時間。總之規則很靈活,不一樣的項目有不一樣的需求,很難事先在系統中預先事先。css
經過分析這些需求發現,其實他們有一些共同的輸入輸出,只是規則各不相同,這時個人第一反應就是腳本化,把一些經常使用的基礎功能作成api,而後根據不一樣項目的需求編寫不一樣的業務腳本,經過這些腳本調用api,再配合必定的邏輯來完成特定的需求。html
一直以來咱們都是基於windows作開發,使用c#相對較多,可是你們知道,c#是靜態語言,編譯後纔可使用,因此我首先想到的是是否能夠對c#作動態編譯,好像曾經據說過一些這方面的概念。因而就開始搜索相關文章,因而搜索到了一些相關的文章,好比:c#
#,如何用C#動態編譯、執行代碼, http://www.cnblogs.com/jailu/archive/2007/07/22/827058.html、windows
#,c#動態編譯執行對象方法示例 運用映射機制建立對象, http://www.jb51.net/article/45768.htm api
好的開始,說明確實存在這種可能性,只是用起來比較麻煩,因此我就想,確定有人已經在此基礎上作過包裝了,在這個年代,任何有需求的地方,確定已經有人開始行動了,因此就順着搜索引擎的結果往下一頁一頁看,csscript出如今眼前,看名字像是我要的東西,因而點擊去看看:http://www.csscript.net/ 性能
CS-Script is a CLR (Common Language Runtime) based scripting system which uses ECMA-compliant C# as a programming language. CS-Script currently targets Microsoft implementation of CLR (.NET 2.0/3.0/3.5/4.0/4.5) with full support on Mono.學習
CS-Script is an open-source (MIT) initiative that is distributed under the license agreement, which can be found here.測試
基本上來講,就是能夠用c#來寫腳本,能夠充分發揮c#的威力,這對咱們來講是好事,由於主程序和腳本語言都是用c#來寫,學習成本降低了很多,其實這不論是從咱們開發腳本系統的角度來考慮仍是從使用者的角度來考慮,都下降了很多的成本。搜索引擎
對於咱們開發來講,咱們原來所寫的各類接口對於csscript來講都是可見的,不須要像以前用lua作腳本,還得專門爲他開發一套api。lua
從使用者角度來講,c#的類c的語法,其實沒什麼學習門檻,你們都至少本科畢業,c仍是多少懂一點的,對於作用戶服務的同事來講,壓力陡然小了不少。
而後看License,MIT的,又放心了,公司這麼摳門,若是要花錢買,估計會不太願意吧。O(∩_∩)O哈哈~
打開看了一下,有兩種方式可使用csscript:
#,一種是經過官方提供的cscs.exe做爲host,而後經過命令行的方式來運行本身的cs腳本,這不是我想要的,不過能夠用來作測試;
#,一種是經過本身的host來運行腳本,讓腳本成爲本身的程序的一種擴充,成爲一個插件,這個是我喜歡的,要實現這種方式,只須要在本身的程序中引用CSScriptLibrary.dll程序集便可。這個對我來講沒什麼問題。
下載了一個最新的壓縮包,而後運行其中的示例,能夠跑通,OK,今天到此結束。
後續繼續研究。
本系列包括: