`

[IronRuby] IronRuby 1.0及与.NET互操作

阅读更多
ironruby 是.Net平台下的一个ruby实现,众所周知,ruby具有Perl的灵活性,带有实体对象模型,是一门动态/解释语言。从进入ironruby 0.9.1之后,ironruby日趋稳定,目前ironruby的最新版本是0.9.2.

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


动态语言与静态语言的互操作:

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框架带了许多新的变化,这些在后面会详述。

运行在ironruby上的rails 2.3.4


这里我们主要讨论ironruby与.Net的集成问题。

要在ironruby中使用.net的装配件,首先必须引用装配件,根据不同的装配件,ironruby提供了三种不同方法

1. 第三方的装配件,只要它存在于ironruby的LOAD_PATH中,你就可以直接引用dll的名字。
require "modelxxx"


2.GAC内的装配件,可以用强命名引用。
require "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"


3. 使用ironruby自带的CLR组件,则可以直接引用。
require "System.Windows.Forms"


下面的"Hello,World"展示了IronRuby和.NET是如何集成的
require "System"
include System
Console.Out.WriteLine("Hello,World")
Console.Out.write_line("Hello,World")


Ironruby为.Net的方法创建了ruby风格的别名,所以WriteLine和write_line是等价的。

这是一个复杂一点例子,Ironruby使用了.Net的Winform来作为GUI,这段例子与大部分.NET winform的代码结构是一样,目的只是为了展示如何使用Winform,实际过程中,除非是需要动态生成ui,否则你应该在.NET中完成form的设计,然后在ironruby中直接使用。
require 'mscorlib'  
require 'System.Windows.Forms'
require 'System.Drawing'  
   
Application = System::Windows::Forms::Application  
Form = System::Windows::Forms::Form  
MessageBox = System::Windows::Forms::MessageBox  
Button = System::Windows::Forms::Button  
Point = System::Drawing::Point  
   
 class MyForm < Form  
   
   def initialize  
     self.text = "My .NET Form from Ruby"  
   
     @button = Button.new  
     @button.location = Point.new 150, 150  
     @button.text = "Click Me!"  
   
     my_click_handler = Proc.new {|sender, e| MessageBox.show 'Hello from Ruby!'}  
     @button.click(&my_click_handler)  
   
     self.controls.add @button  
   end  
 end  
   
 my_form = MyForm.new  
 Application.run my_form 



为了证明Ironruby的良好扩展性,这个是我机器上另一份rails的截图,我用SQLite for ADO.NET在一个小时里,写了SQLite的activerecord_adapter,并正常工作。


  • 大小: 54.1 KB
  • 大小: 46.4 KB
分享到:
评论
5 楼 kyougi 2010-02-19  
請教一下
一直很困惑的, 就是這個東西可不可以compile成直接執行的.exe檔?
google了半天也找不太到答案, 謝謝
4 楼 yza0088 2009-12-06  
IronRuby确实很值得期待.感觉他和Silverlight或WPF结合将会大放异彩。
但目前来看进度有点慢,远不如IronPython
3 楼 smiletuna 2009-12-04  
这个第一个 有这个必要么??

第三个不错。。我特别讨厌 类basic的语法...
2 楼 rainlife 2009-11-25  
个人倾向的是:
1. ray_linn什么时候把那130分给扣了
1 楼 ray_linn 2009-11-24  
个人倾向的ironruby适用范围:

1. Windows平台上的rails.

2. ASP.NET MVC扩展。

3. 取代VBScript的脚本语言。

相关推荐

    [博客空间]IronRuby博客中文版 Alpha_ironruby-pre-alpha1(ASP.NET源码).rar

    IronRuby是基于DLR(Dynamic Language Runtime,动态语言运行时)构建的,DLR是.NET Framework的一部分,为动态语言提供了一套运行时环境和语言互操作性支持。通过IronRuby,开发者可以利用Ruby的简洁语法和灵活性,...

    Sams.IronRuby.Unleashed.Feb.2010.pdf

    开发者可以轻松地在IronRuby代码中调用.NET类库,反之亦然,从而实现了语言间的互操作性。此外,IronRuby还支持.NET的多线程模型,提高了程序的并发处理能力。 #### 使用场景 IronRuby适合于需要快速开发、高灵活...

    Professional C# 5.0 and .NET 4.5.1.pdf_c#5.0_

    此外,C# 5.0还引入了动态类型(`dynamic`),它允许在运行时确定变量的类型,增强了与动态语言如IronPython和IronRuby的互操作性。动态类型可以用于简化与COM对象交互或处理JSON等动态数据。 另一个显著的改进是...

    [IronRuby] C# 4.0调用ActiveRecord

    这些新特性使得与动态语言如IronRuby的互操作变得更加容易。 知识点三:ActiveRecord介绍 ActiveRecord是一种为对象关系映射(Object-Relational Mapping, ORM)提供的模式。它是Ruby on Rails框架中的一部分,允许...

    .net framework 4.0 这个上传错了

    8. **互操作性**:提升了与COM组件、WinRT(Windows Runtime)和非托管代码的互操作性。 9. **安全性和稳定性**:修复了许多已知的安全漏洞,增强了框架的整体稳定性和安全性。 10. **部署和配置**:改进了安装和...

    .net Framework 4.5 及以下框架信息

    同时,泛型协变和逆变的增强提高了代码的重用性和互操作性。 在性能优化方面,.NET Framework 4.5改进了垃圾回收机制,减少了应用程序暂停时间,并提升了内存管理效率。WCF(Windows Communication Foundation)也...

    Pro DLR in .NET 4

    DLR广泛应用于自动化测试、脚本编写、快速原型开发、插件系统以及与非.NET环境的互操作性等场景。 10. **学习和实践** 《Pro DLR in .NET 4》这本书提供了大量实例和练习,帮助读者掌握DLR的使用,提升开发动态和...

    Apress.Pro.Dynamic.NET.4.0.Applications.Jan.2010

    例如,当与COM互操作或使用JavaScript库时,“dynamic”关键字特别有用。 书中还会详细讨论如何使用IronPython和IronRuby等动态语言与.NET集成,这些语言在.NET平台上运行,充分利用了DLR的优势。此外,可能还会...

    Rails for .NET Developers (Facets of Ruby)

    2. **跨语言互操作性:** 随着IronRuby的发展,.NET开发者可以更容易地与其他语言(如Ruby)编写的代码进行交互,从而扩展自己的技能树。 3. **未来趋势展望:** 本书还将展望Ruby on Rails如何继续塑造微软的应用...

    Microsoft.NET Framework 4.0 Full_x86_x64.rar

    《深入理解Microsoft.NET Framework 4.0:基石与应用》 Microsoft .NET Framework 4.0,作为微软开发平台的核心组件,为软件开发者提供了一个强大的工具集和运行环境,用于构建、部署和运行各种跨平台应用程序和...

    .Net 4.0 Framework and Extentions

    1. Service Model Metadata Tool (Svcutil.exe)更新:提供更好的互操作性和支持更多的标准协议。 2. WCF Data Services(前身为Astoria):提供了基于RESTful服务的数据访问框架,支持OData协议。 六、Windows ...

    .net framework 4.0

    这个框架提供了一整套丰富的类库、语言互操作性、内存管理、安全性和性能优化,使得开发者能够更高效地编写高质量的代码。 在.NET Framework 4.0中,最重要的改进之一是引入了CLR(Common Language Runtime)的更新...

    CLR via .NET 3rd

    通过CLR,开发者可以编写用C#、VB.NET、F#等语言编写的代码,并在相同的平台上运行,实现跨语言互操作性。 本书内容涵盖了以下几个主要知识点: 1. **内存管理**:详细讲解了CLR如何进行垃圾回收,包括对象生命...

    .net framkwork 4.0框架

    5. **WCF(Windows Communication Foundation)增强**:服务契约接口更易用,增加了WS-Discovery和HTTP/RESTful支持,提升了服务的互操作性。 6. **WPF(Windows Presentation Foundation)更新**:UI设计工具XAML...

    .NET Framework 4.0

    9. **互操作性**:通过COM互操作和Platform Invoke (P/Invoke),.NET Framework 4.0能轻松地与非托管代码交互,允许开发者利用已有的COM组件或C/C++库。 10. **安装和更新**:.NET Framework 4.0的安装过程更加智能...

    .NET Framework 4.0 安装包 dotNetFx40-Full-setup.exe

    2. **动态编程**:引入了C# 4.0和Visual Basic .NET 10.0,其中包含动态类型(dynamic)和扩展方法,提高了与非.NET框架库(如IronPython和IronRuby)的互操作性。 3. **语言集成查询 (LINQ)**:进一步成熟,增强了...

    .Net framework 4.0

    此外,多语言互操作性得到提升,支持更多的编程语言,如C#、VB.NET、F#等。 3. **并行计算框架**:随着多核处理器的普及,.NET Framework 4.0引入了Task Parallel Library (TPL),使得开发者可以轻松地编写并行代码...

    .Net FramaWork4.0

    2. CTS(Common Type System):CTS定义了一套统一的类型系统,确保所有.NET语言都能理解和互操作。这意味着用不同语言编写的代码可以无缝地一起工作。 3. JIT(Just-In-Time)编译器:JIT将.NET代码转换为机器码,...

    微软IronPython源码

    4. **.NET互操作性**:IronPython通过CLS Compliance(公共语言规范)与.NET组件兼容,使得Python代码可以像使用.NET语言那样使用.NET组件。 5. **C#与Python的协同工作**:IronPython使得Python和C#开发者可以共享...

Global site tag (gtag.js) - Google Analytics