Script.NET是蓝蚂蚁工作室从2000年开始开发的一个通用脚本语言开发平台,最初主要用于Tcl、Python等脚本语言的开发、调试,2004年发布的V1.1版本可以较好的支持Tcl、Python语言的开发,发布之后得到了不少用户的支持,不少用户也给我提了很多很好的建议。Script.NET V1.1版本主要的用户还是Tcl开发人员,因为Tcl语言在国内使用的人非常少,并且也没有很好的开发平台,比较出名的是ActiveState公司的Komodo,我觉得相比之下Script.NET在易用性和运行速度方面应该比Komodo有一定的优势,并且中文的开发资料也比较完善,因此有不少国内的Tcl开发人员使用过这个工具。
Script.NET最初的开发思路来源于我在公司负责开发的一套基于VC的测试平台,当时那个平台提供了VC的测试程序开发框架,所有的测试程序都是使用VC开发的动态库,加载在平台上运行。我觉得如果能使用Tcl这种脚本语言来开发测试程序,应该可以大大降低开发难度,提高开发的效率,因此深入研究了Tcl的嵌入、扩展、调试等技术,后来这些研究并没有完全应用于测试平台,但我使用这些技术在业余时间开发出了Script.NET,这其中我觉得难度最大,最有突破性的主要有下面几个技术:
1、Tcl和Python脚本的调试技术,特别是Tcl脚本的调试技术,采用了和Komodo等开发环境都完全不同的思路,采用了对被调试脚本进行预处理的方法,经过多次的改进,虽然不能达到百分之百的准确,但实际使用效果还是比较满意的,以后有时间我会详细解释一下这种调试方法。Python的调试实现相对来说简单一些,因为Python自身带的有完善的调试扩展库,我基本上是对其进行封装。
2、界面和非界面模块的组件化技术,在Script.NET中有界面组件(OWM)和非界面组件(VCI)两种扩展模块,整个平台的核心并不是很大,大部分功能都是由这些扩展组件实现的,通过组件的动态加载,可以有效的加快启动时间,减少内存占用。
3、通过脚本调用扩展组件的技术,这个功能的核心是使用汇编语言编写的接口函数调用方法,通过翻译头文件,先解析出所有的接口函数和每个参数的类型,然后通过参数压栈,来执行相应的接口函数,这样只要编写一次C++的组件封装,就可以在任意脚本中调用这些组件,而不用为每种脚本语言编写大量的扩展模块了。
4、通过Tcl等脚本生成动态的Html页面,并在应用程序中嵌入Html浏览器,从而实现灵活的界面显示,使用这种方法可以避免用VC来编写大量的界面,因为VC编写界面工作量比较大,并且修改也不方便,脚本+html的方式使得界面编写的工作量相对小一些,并且不需要编译,基本上可以立即看到效果,灵活性非常高。后来我使用这种技术应用于我开发的大部分项目中,效果应该还不错。
从2005年我开始V2.0版本的设计与开发,V2.0版本的架构变化非常大,基本上重新设计了整个程序框架,参考了Eclipse等组件化设计比较好的项目,使组件化做的更彻底,平台的内核更小,V2.0的目标已经不仅仅是脚本语言的开发平台,我的设想是可以作为类似于Eclipse RCP的通用富客户端开发与运行平台,基于这个平台,用户只要做少量的扩展开发,就可以开发出面向不同应用的客户端应用系统,因为Script.NET提供了丰富的基础功能、美观的界面(V2.0中还可以支持皮肤),并且可以提供内嵌任意脚本,因此二次开发人员只要专注与自己的业务开发就可以了。
因为我的工作很忙,V2.0版本的开发进度一直非常慢,到目前为止发布了beta1和beta2两个版本,离我预想的目标还有不少差距,我希望2007年年底之前可以发布V2.0的正式版本。下面大概介绍一下V2.0版本的特性与构想:
1、组件化程度大大增强,采用类似Eclipse的组件架构,并在性能、扩展性、灵活性等方面做了很多的考虑,主要有三类组件:OWM界面组件、解释器组件、普通的组件(VCI组件)。可以方便的扩展界面、脚本解释器、非界面类组件。
2、界面美观性的改进,支持Office2007、Visual Studio 2005等界面风格和界面换肤。
3、国际化的支持,采用一种非常方便的国际化手段,使系统完全支持国际化,(目前主要是中文和英文)。
4、非常强的界面扩展能力,界面中的很多地方都可以通过VC或各种脚本语言来扩展,特别是提供了TclVci扩展模块,使得在脚本中可以直接调用界面和组件的接口,实现各种功能。
5、强大的脚本开发能力和扩展能力,Script.NET V2将脚本解释器作为独立的组件,通过开发向导可以自己扩展其他的脚本解释器,系统定义了一个解释器的标准接口,如果全部实现接口的功能,则扩展的解释器将具有强大的调试能力,并可以在任意脚本中直接调用系统中的其他组件和平台的功能接口,可以支持Tcl等脚本的编译、构建可执行文件。
6、TclFace本地web开发包,提供了TclFace界面扩展包,用于开发基于Tcl的本地web界面,思路类似于Java中的JSF,将本地web界面开发对象化,可以采用堆积各种组件的方法来开发本地web界面,Scrpt.NET本身的各种管理界面就是用TclFace(TLF)开发的。此模块目前还只实现了一小部分功能,还在不断完善中,源代码请参考Tcl库的tclFace目录。
7、各种功能强大的扩展组件,包括图象编辑器组件、UML组件、查找组件等,另外还增加NSIS脚本的支持...
8、即时通信功能,使用XMPP通信协议,封装gloox开源XMPP客户端,并很好的集成在Script.NET平台中,可以支持基于XMPP的一些扩展和自动化应用,例如远程协助、自动应答机器人、通过IM与第三方系统的集成。
9、基于此平台开发的一些应用,例如类似于Outlook的邮件客户端应用,FTP客户端应用。
10、提供Script.NET客户端、服务器解决方案,可以提供通用的数据采集等功能。
关于Script.NET这次就先介绍这么多,以后我会逐步的介绍一些细节。
蓝蚂蚁工作室的网站:
Script.NET的安装程序除了可以在主页上下载之外,也可以在Script.NET的google论坛上下载,论坛地址为:
http://groups.google.com/group/scriptnet
电子邮件地址:blueant_hw AT 21cn.com 或 script.net AT gmail.com
下面是几张界面截图,更多的界面请参考Script.NET相册:
http://blog.csdn.net/oceanheart/Gallery/328803.aspx