CSScript 系列之一——初识

最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希望根据教室内人员的多少来控制教室灯管的开关,或者根据季节来决定路灯的开关时间。总之规则很灵活,不同的项目有不同的需求,很难事先在系统中预先事先。

通过分析这些需求发现,其实他们有一些共同的输入输出,只是规则各不相同,这时我的第一反应就是脚本化,把一些常用的基础功能做成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,今天到此结束。

后续继续研究。

最近打算做一个新系统,为了满足不同项目对于数据处理流程的定制化需求,可能需要引入脚本引擎来引入灵活性,

时间: 2024-10-06 01:20:50

CSScript 系列之一——初识的相关文章

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

iOS流布局UICollectionView系列一--初识与简单使用UICollectionView 一.简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似.简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面: 1.支持水平和垂直两种方向的布局 2.通过layout配置方式进行布局 3.类似于TableView中的cell特性外,Collecti

SpringMVC 框架系列之初识与入门实例

SpringMVC 框架系列之初识与入门实例 1.SpringMVC 概述 (1).什么是 MVC:Model-View-Control Control 层属于框架性质,完成的主要工作是:封装 web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给客户端. (2).什么是 SpringMVC Spring mvc 和 Struts2 都属于表现层的框架,是 Spring 框架的一部分,Spring 框架的 Control 层的核心是 DispatcherServ

Gradle系列之初识Gradle

原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradle 相关的知识.Gradle 是一个非常优秀的项目构建工具,其 DSL(领域特定语言)基于 Groovy 实现,大部分功能通过插件的方式来实现,也可以自定义 Gradle 插件,下面开始入门 Gradle 系列的第一篇. 配置 Gradle 环境 首先确保在环境变量中配置好 JAVA_HOME,使用

Gradle for Android 系列:初识 Gradle 文件

读完本文你将了解到: settinggradle 主目录下的 buildgradle 模块下的 buildgradle 备注 注意 applicationId 和 package name 其实不是一个东西 总结 我们用 Android Studio 新创建一个项目时,会自动生成 3 个 Gradle 文件: 接下来介绍这三个文件的作用. 1. setting.gradle 上篇文章:为什么 Gradle 这么火 中介绍了, 一个 Gradle 构建通常包括三个阶段:初始化,配置,和执行. se

Vue.js系列之一初识Vue

在看vue.js之前,可以先看这两篇文章,对于为什么要使用vue会有一定帮助 1.Vue.js !important 2.界面之下:还原真实的MV*模式 !important 3.web前端优化之reflow(减少页面的回流) 4.深度剖析:如何实现一个 Virtual DOM 算法 本系列文章是基于官方文档,整理的,旨在让新手快速上手.学习vue.js需要一定基础. 一.声明式渲染 1.实现Hello World的功能 还是熟悉的Hello World,下面用Vue.js的声明式渲染来实现 <

编程之路:MySql系列之初识

数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题. 很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题...... 1.程序所有的组件就不可能运行在一台机器上 #因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的

RxJava系列之一 初识Rxjava

1.简介 基础知识 响应式代码的基本组成部分是Observables和Subscribers(事实上Observer才是最小的构建块,但实践中使用最多的是Subscriber,因为Subscriber才是和Observables的对应的.). Observable发送消息,而Subscriber则用于消费消息.消息的发送是有固定模式的.Observable可以发送任意数量的消息(包括空消息), 当消息被成功处理或者出错时,流程结束.Observable会调用它的每个Subscriber的Subs

MS MDS系列之初识MS Master Data Service(微软主数据服务)

背景介绍: 主数据服务(Master Data Services)是微软平台支持的主数据管理(MDM)平台.类似MDS这样的系统,如果后续维护得当,会给企业提供一个强大的中心数据库系统,来防止企业数据变得不同步或不一致:同时也是企业内部管理数据流的可靠方式. 目前一个企业很多时候通过良性循环或者收购来实现业务增长.无论哪种方式,都将增加企业应用程序的数据流的数量和复杂度.如果断开和分离这些系统,将带来的各种问题,如数据不一致.数据数据碎片.数据不准确等等,并且对IT部门来讲,也会面对越来越多的困

1.ionic系列之初识ionic

ionic官方这样解释ionic"ionic: Advanced HTML5 Hybrid Mobile App Framework",其意为:"ionic:先进的HTMl5混合移动App框架".意思已经很明显了,ionic是为移动端的APP开发而生的,无论是运行在手机浏览器上的webApp,还是说运行在手机App上的混合App,ionic都能出色完成.ionic混合应用的开发中至今为止只支持了android和IOS,缺点是尚未支持Windows Phones.并且