最近在作新产品,这个产品须要知足不一样项目对于系统的定制性数据处理需求,好比有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的但愿根据温度来控制空调的开仍是关,有的则是但愿根据教室内人员的多少来控制教室灯管的开关,或者根据季节来决定路灯的开关时间。总之规则很灵活,不一样的项目有不一样的需求,很难事先在系统中预先事先。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,今天到此结束。
后续继续研究。
本系列包括: