最近设计的架构基础框架基本编码完毕,DBAL和DAL基本实现了自动化,实体层的代码生成器我选用JS快速堆了一个也已经达到
了90%左右的完成度.于是我决定开始弄脚本引擎了...
.net嘛.考虑到开发速度和运行速度当然VSA是首选(虽然我自己有自己以前封装的一套ActiveScriptHost库,不过和VSA在执行
效率上一比直接被我54了).于是用VS2010(头儿在与时俱进这块做得不错.加上我再使劲的布道传教F#啦~C#的新dynamic
特性拉甚至是我自己目前都不甚了解的FP编程思想啦...之类的东东,所以下版就已经敲定用.net4.0了)新建了个ScriptEngine
工程,大概的定了个接口,开始弄JS的封装.
就在我习惯性的敲上using Microsoft.的时候,发现那亲切的Vsa并没有出现在自动的下拉列表内.联想到.net2.0起VSA就被标
记为过时...囧.M$还真TM对VSA下手了?不过在导入Microsoft.JScript后仍能看到Microsoft.JScript.Vsa的存在,但是原来处于
Microsoft.Vsa下的一堆接口全改成了IJSVsa*被放到了Microsoft.JScript.Vsa命名空间下,上MSDN翻了翻,这几个接口其实就
是原Microsoft.Vsa照搬过来的.联想到以前反编译JS.NET生成的代码可以看出其自身的运行机制也是依赖于VSA的,VSA估计就
是这个原因被M$在JS里保留了下来.不过VB貌似就没有那么多顾虑了,Microsoft.VisualBasic.Vsa被直接从.net4.0里移除了.
这也就意味着以前实现个简单的IVsaSite就能随意切换VB/JS引擎的日子一去不复返了...
嘛...虽然很早就听说MS建议用动态代码编译代替VSA引擎,但是这玩意毕竟实现起来超麻烦(早在.net 1.1时代自己就用Managed
C++做了个C#的引擎,不难,但巨烦无比),所以学了VSA后VSA一直是俺的最爱.在保有.net编译型语言的执行效率的同时又可以像
Windows ActiveScript Engine随意在VB 和JS 间切换,而所有要做的工作只是写一个实现IVsaSite的类...
算了.反正我都弄了个通用的IScriptEngine以求兼容JS/F# & etc了.先用JSVSA弄个JS的封装,反正VB我不常用.至于其它的...原
VSA本身就只支持JS/VB,到头来还是要自己写,貌似影响也不太大.只求M$别哪天把JS也给删了.