Electronic Joint Business

Solution for E-Business

win32api

Ironruby与CLR语言的互操作 (一)

ironruby 是 .Net 平台下的一个 ruby 实现,众所周知,ruby 吸取了 Perl,python 等脚本语言的灵活性,带有实体对象模型,是一门动态/解释语言。从进入 ironruby 0.9.1 之后,ironruby 日趋稳定,之后发布的 Ironruby 1.0,兼容于 ruby 1.8.6,1.1 版本则增加了了对 .NET 扩展方法的支持,可以完美的运行 LINQ,目前开发中的 Ironruby 1.1.1 则是第一个兼容 ruby 1.9.2 的版本。

由于 IronRuby 是基于 .NET DLR,因此你可以在 IronRuby 中调用任何已有的 .NET 代码。这意味着可以在 IrongRuby 中使用任何框架,比如 Windows Forms、WPF 或者 GTK(#),因为.NET 和 Mono(分)拥有对这些框架的 CLI 绑定。Mono 甚至有一个使用GTK 实现的 Windows Forms,这样应用程序无须修改就可以运行在两个实现上。

Ironruby与CLR语言的互操作
IronRuby 带来的改变:
1. 与静态语言的互操作:IronRuby 与 .NET 框架集成的非常紧密,在 IronRuby 中调用 C#/VB 代码不会感觉是在使用“互操作”。C# 也可以通过 DLR Hosting API 调用 IronRuby 代码。而在 .NET 4.0 中,动态方法分配已经成为了 C# 的一部分,因此在 C# 中调用 IronRuby 代码和调用 C# 方法差不多。由于 IronRuby 基于 DLR,因此也可以方便的与其它 DLR 语言进行交互,如今 Python 和 Ruby 可以很好的合作,未来的 DLR 语言也一样可以。

2. 更稳定且丰富的支持,你可以抛弃 rubyforge 上许多质量不高的无人维护的 gems,改用 .Net 自身丰富的资源,你可以放弃ruby 中频繁变更的 win32api,而使用 .net 的 p/invoke,你可以放弃无人维护的 fireruby,而简单用 .net firebird provider 为自己添加 firebird 的 activerecord 支持而不用再担心找不到数据库的 activerecord 支持。

3. 为 .Net 带来 Rails,基于 Ironruby 0.9.2 你只需要对 rails 2.3.4 做一些小小的修改,就可以在 CLR/DLR 上运行最新的Rails,同时使用 Ironruby 也可以为.Net 的 MVC 框架带了许多新的变化,这些在后面会详述。

>>> 阅读全文

 

, , , , , , ,