InfoQ

新闻

Ruby.NET 0.8发布:提升与其它.NET语言的互操作性

作者 Werner Schuster 译者 高昂 发布于 2007年6月20日 上午7时30分

社区
.NET,
Ruby
主题
.NET框架,
动态语言
标签
C#,
IronRuby,
CLR,
Ruby.NET

如今Ruby运行时的实现已经满大街俯拾皆是了。目前在Java虚拟机平台上已有两个Ruby的实现了,它们分别是JRuby和XRuby,而.NET平台也在迎头赶上。IronRuby项目就在上个月引来了众多开发者的关注,但是不到2007年7月末它最终被发布出来,外界谁都不知道它到底有多完善。

在另一方面,Gardens Point Ruby.NET编译器是由昆士兰理工大学的Wayne Kelly博士和John Gough教授所领导的研究小组负责开发的,于2006年6月面世,通过将Ruby代码编译成微软中间语言(Microsoft Intermediate Language/MSIL,.NET CLR的指令集),使得代码在CLR之上得以运行。

同样是提供了Ruby在.NET环境下的运行机制,IronRuby项目与Ruby.NET项目间的关系非常微妙。IronRuby项目的开发者John Lam曾提到,IronRuby项目借用了Ruby.NET项目中的部分代码

我们在今年初得到了Ruby.NET项目代码使用的授权许可,并且我们在IronRuby之中使用了Ruby.NET的扫描机制和解析机制。这帮助我们减轻许多编码方面的工作,同时使我们项目获得了与MRI(译注:Matz's Ruby Interpreter,即Matz的Ruby解释器,Ruby的C语言版本,也是标准实现)高度集成的扫描器和解析器。

在项目代码实现中,符合标准的语法解析器是非常重要的组成部分,使用Ruby.NET的解析器可以减轻IronRuby项目组大量的工作。

Ruby.NET新的0.8版本中添加了重要的功能改进

自从在Ruby.NET上一个版本中我们添加了与其它.NET语言的互操作机制以来,基于.NET语言开发的组件能够方便的使用Ruby.NET实现跨语言的函数调用,反之也是如此。

下面是一个在C#代码中调用Ruby代码的例子,Ruby编写的类如下:

class Person
def init(name, age)
@name = name
@age = age
end

def print()
puts "#{@name} is #{@age}"
end
end

在C#中调用Ruby代码:

Person bruce = new Person();
bruce.init("Bruce", 42);
bruce.print();

在Ruby中调用基于.NET编写的函数也是遵循同样的方式,在0.8版本发布中,关于项目有一段有趣的注释:

项目将会很快转移到一个更为普遍的开放源代码社区之中,同时需要吸引更多的开发者参与到项目之中。如果你在维护开源社区运转方面有丰富的经验,我们将会非常欢迎你加入到社区之中。
至于近来关于IronRuby的一些疑虑, 事实上一直以来,许多Ruby基础运行时库的开发者已被吸收到JRuby、XRuby、Rubinius和IronRuby这些项目的开发之中,熟悉Ruby的.NET开源项目参与者将会感兴趣语言互操作方面的内容。

由于对IronRuby存在着一些疑虑,而且从去年以来,有许多Ruby运行时实现的开发人员都被商业公司雇用,为各自的Ruby实现(包括JRuby、XRuby、Rubinius和IronRuby)添砖加瓦,对Ruby有强烈兴趣的.NET开源开发人员可以好好探索一下这个项目。

查看英文原文:Ruby.NET 0.8 release

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。