C#脚本引擎 CS-Script 之(一)——初识
最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希望根据教室内人员的多少来控制教室灯管的开关,或者根据季节来决定路灯的开关时间。总之规则很灵活,不同的项目有不同的需求,很难事先在系统中预先事先。
通过分析这些需求发现,其实他们有一些共同的输入输出,只是规则各不相同,这时我的第一反应就是脚本化,把一些常用的基础功能做成api,然后根据不同项目的需求编写不同的业务脚本,通过这些脚本调用api,再配合一定的逻辑来完成特定的需求。
一直以来我们都是基于windows做开发,使用c#相对较多,但是大家知道,c#是静态语言,编译后才可以使用,所以我首先想到的是是否可以对c#做动态编译,好像曾经听说过一些这方面的概念。于是就开始搜索相关文章,于是搜索到了一些相关的文章,比如:
#,如何用C#动态编译、执行代码, http://www.cnblogs.com/jailu/archive/2007/07/22/827058.html、
#,c#动态编译执行对象方法示例 运用映射机制创建对象, http://www.jb51.net/article/45768.htm
好的开始,说明确实存在这种可能性,只是用起来比较麻烦,所以我就想,肯定有人已经在此基础上做过包装了,在这个年代,任何有需求的地方,肯定已经有人开始行动了,所以就顺着搜索引擎的结果往下一页一页看,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。
从使用者角度来说,c#的类c的语法,其实没什么学习门槛,大家都至少本科毕业,c还是多少懂一点的,对于做用户服务的同事来说,压力陡然小了很多。
然后看License,MIT的,又放心了,公司这么抠门,如果要花钱买,估计会不太愿意吧。O(∩_∩)O哈哈~
打开看了一下,有两种方式可以使用csscript:
#,一种是通过官方提供的cscs.exe作为host,然后通过命令行的方式来运行自己的cs脚本,这不是我想要的,不过可以用来做测试;
#,一种是通过自己的host来运行脚本,让脚本成为自己的程序的一种扩充,成为一个插件,这个是我喜欢的,要实现这种方式,只需要在自己的程序中引用CSScriptLibrary.dll程序集即可。这个对我来说没什么问题。
下载了一个最新的压缩包,然后运行其中的示例,可以跑通,OK,今天到此结束。
后续继续研究。
本系列包括:
C#脚本引擎 CS-Script 之(一)——初识的更多相关文章
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- Shell脚本编程(一):初识shell script
Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...
- C#脚本引擎 CS-Script 之(二)——性能评测
以下以一个简单的HelloWord程序为例,来分析csscript脚本引擎的性能. class HelloWorld { public void SayHello() { Console.WriteL ...
- C#脚本引擎 CS-Script 之(三)——如何部署
本文不但介绍了CS-Script如何部署,还介绍了CS-Script的部署后面的原理,并用一个框图详细介绍了部署中的各种细节. 一.获取资源 1.从官网上下载编译好的csscript资源:cs-scr ...
- Java 8 的 Nashorn 脚本引擎教程
本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...
- 【开源】.Net 动态脚本引擎NScript
开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务 238543768 .Net 动态脚本引擎 NScript ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Nmap源码分析(脚本引擎)
Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...
- 利用Roslyn构建一个简单的C#交互脚本引擎
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 微软的下一代编译器技术Roslyn是一个里程碑的技术,可以给.NET平台带来无限想象空间.比 ...
随机推荐
- android intent 5.1
1.intent 6 items action, data(uri &type),Component name,Extras,flags 2.data---uri & type 不管使 ...
- Asp.net MVC 4新项目中创建area的后续操作
Asp.net MVC 4新项目中创建area后,往往HomeController与area的HomeController路由发生混淆,需要手工设置一些地方避免mvc无法识别默认路由的状况. 无废话具 ...
- 肯爹的 StringUtils.isNumeric(String str)
在项目中遇到一处bug,调试的结果竟然是StringUtils.isNumeric(String str) 在捣鬼(采用的是org.apache.commons.lang.StringUtils),下 ...
- linux动态网络和静态网络和克隆后的网络配置
建议设置网卡NAT模式 动态网络配置:1.一定要开启本地DHCP服务 2.在虚拟网络编辑器中选择NAT模式选中DHCP项如下图 3.ifup eth0 静态网络配置 : 注释:ifcfg-eth0部分 ...
- freemarker如何遍历HashMap
查询资料有以下两种方法: 1. <#if appMap?exists> <#list appMap?keys as key> key:${key} value:${appMap ...
- 微信微博分享注意事项(sharesdk)
0.(重要)如果接入多渠道可以考虑微博微信appid appkey等信息放到服务端,方便临时修改又可避免很多渠道时替换ShareSDK.xml文件出错. 但是cocos2dx-2.x版本使用代码配置a ...
- 利用Windows自带的Certutil查看文件MD5
当遇到需要对比两个文件是否一致时,可以使用下面的命令来显示文件的MD5, 然后对比两个文件的MD5码. certutil -hashfile <filename> MD5 命令的相关帮助信 ...
- bat文件重启SQL服务和IIS服务
sqlserver有自动备份功能,所以要重启两个服务器,下面是重启脚本,脚本名称:sql_restart.bat net stop sqlserveragent net stop mssqlse ...
- docker常用术语命令
镜像(Image) vs Dockerfile 这组概念很少会让人产生疑惑,但是这两者的区别非常重要.Docker在镜像(image)中运行你的代码,而不是Dockerfile.Dockerfile是 ...
- EM basics- the Maxwell Equations
All the two important problems that the EM theory trys to describe and explain are propogation and r ...