InfoQ

新闻

RubyConf大会演示:IronRuby运行在Silverlight之上

作者 Robert Bazinet译者 高昂 发布于 2007年11月15日 上午4时59分

社区
.NET,
Ruby
主题
.NET框架,
Silverlight,
动态语言
标签
IronRuby,
RubyConf,
DLR

RubyConf大会之上,John Lam对微软为动态语言提供的新特性进行了预先介绍,介绍中给出了可以使Ruby运行在动态语言运行时DLR以及Silverlight之上的示例。

RubyConf大会的演示示例不同于其他Silverlight的演示,代码是用Ruby语言编写,而非编写XAML来呈现Silverlight引擎。对此John Lam谈到:

就我所知,这是第一批Code-First的Silverlight 1.1应用示例之一。大多数Silverlight应用通过创建提交到XAML解析器的XAML字串来生成UI界面。但当你拥有Ruby这样优雅的语言之后,使用字串创建解析树就显得有些笨重了。

示例中的XAML标记如下所示:

<Storyboard x:Name="Timeline1" TargetName="ScaleTransform1">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="ScaleX">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="ScaleY">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>

微软提供了在DLR之上运行动态语言的机制,并在.NET CLR之上开发的IronRuby对于Ruby编程语言进行的全面的实现。

为DLR编写代码的目标是,可以编写本地代码并且不需手工编写XAML。开发者可以编写如下的Ruby代码来代替上面列出的XAML代码:

class BounceAnimation < AnimationBase
def initialize(scale_transform_element)
@obj = Wpf.build(Storyboard, :name => random_name,
:target_name => scale_transform_element) {

add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
:target_property => "ScaleX") {

add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
}

add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
:target_property => "ScaleY") {

add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
}
}
end
end

较之编写XAML,使用Ruby语言更为方便直接,并且更易于让人读懂。尽管这些特性在示例中得到展示,但其中小部分特性将在下一个版本Silverlight 1.1的CTP出现时才可以使用,届时开发者可以在浏览器中运行IronRuby。

关于IronRuby的更多信息,可以在IronRuby的站点中找到,并且这个示例的源代码可以在John Lam的blog上下载

查看英文原文:IronRuby on Silverlight Demo at RubyConf

2 条回复

回复

ironruby的更新频率太低了 发表人 jiang jianxiao 发表于 2007年11月15日 下午11时11分
是啊。 发表人 Jerome Chen 发表于 2007年11月29日 上午1时0分
  1. 返回顶部

    ironruby的更新频率太低了

    2007年11月15日 下午11时11分 发表人 jiang jianxiao

    有时10天半月也不来个一回

  2. 返回顶部

    是啊。

    2007年11月29日 上午1时0分 发表人 Jerome Chen

    是啊,什么时候才能在asp.net里使用ironruby呢?

    ------------------------------------------
    [Ruby中文社区] - ruby-lang.org.cn

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!