计算机故障交流论坛
域名注册

在.NET中嵌入IronPython 交互

发表时间:09-11-2   来源:计算机故障网|chinaz.com   点击:

  随着IronPyhon 2.0 的发布,.NET Dynamic Language Runtime 也更加成熟了,在2.0中我们可以用动态脚本以粘合剂的方式编写架构体系中的各种逻辑单元,既便于修改,又能灵活适合多变的业务场景。当然,我的目标是在 Platform Framework 中能嵌入脚本引擎,而不是用 ipy.exe 去执行一个 “独立” 的任务。要让.net 项目能真正跟脚本进行交互,还得需要提供脚本引擎的实现。这得提到DLR一些基本概念了。

  下图摘自 DLR 帮助文件,通过它我们基本可以了解基于 DLR 的组成方式。

uploads/200812/18_155159_1.png

  下图描述了 DLR 的基本执行流程。

uploads/200812/18_155213_2.png

  ScriptRuntime: 创建 DLR 运行环境,这是整个执行过程的起始点,它表示一个全局的执行状态(比如程序集引用等等)。每个应用程序域(AppDomain)中可以启动多个 ScriptRuntime。

  ScriptScope: 构建一个执行上下文,其中保存了环境及全局变量。宿主(Host)可以通过创建不同的 ScriptScope 来提供多个数据隔离的执行上下文。

  ScriptEngine: DLR 动态语言(比如 IronPython) 执行类,可于解析和执行动态语言代码。

  ScriptSource: 操控动态语言代码的类型,我们可以编译(Compile)、读取(Read Code Lines)或运行(Execute)代码。

  CompiledCode: 调用 ScriptSource.Compile() 将源代码编译成 CompiledCode,这样多次执行就无需重复编译,从而提高执行性能。

  ObjectOperations: 提供了相关方法,允许我们在宿主(Host)中操作 DLR 对象成员(Member)。

  现在我们来构建脚本引擎

  当然我们必须加入IronPyhton提供的相关引用并导入命名空间

  using IronPython.Hosting;

  using IronPython.Compiler;

  using IronPython.Runtime;

  using Microsoft.Scripting;

  using System.Runtime.Remoting;

第1页:在.NET中嵌入IronPython 交互(1)   第2页:在.NET中嵌入IronPython 交互(2)  

© CopyRight 2008-2010, WWW.JSJGZ.CN All Rights Reserved

CopyRight 2008-2010 计算机故障网版权所有 闽ICP备09000710号