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
分享到:
相关推荐
IronRuby是基于DLR(Dynamic Language Runtime,动态语言运行时)构建的,DLR是.NET Framework的一部分,为动态语言提供了一套运行时环境和语言互操作性支持。通过IronRuby,开发者可以利用Ruby的简洁语法和灵活性,...
开发者可以轻松地在IronRuby代码中调用.NET类库,反之亦然,从而实现了语言间的互操作性。此外,IronRuby还支持.NET的多线程模型,提高了程序的并发处理能力。 #### 使用场景 IronRuby适合于需要快速开发、高灵活...
此外,C# 5.0还引入了动态类型(`dynamic`),它允许在运行时确定变量的类型,增强了与动态语言如IronPython和IronRuby的互操作性。动态类型可以用于简化与COM对象交互或处理JSON等动态数据。 另一个显著的改进是...
这些新特性使得与动态语言如IronRuby的互操作变得更加容易。 知识点三:ActiveRecord介绍 ActiveRecord是一种为对象关系映射(Object-Relational Mapping, ORM)提供的模式。它是Ruby on Rails框架中的一部分,允许...
8. **互操作性**:提升了与COM组件、WinRT(Windows Runtime)和非托管代码的互操作性。 9. **安全性和稳定性**:修复了许多已知的安全漏洞,增强了框架的整体稳定性和安全性。 10. **部署和配置**:改进了安装和...
同时,泛型协变和逆变的增强提高了代码的重用性和互操作性。 在性能优化方面,.NET Framework 4.5改进了垃圾回收机制,减少了应用程序暂停时间,并提升了内存管理效率。WCF(Windows Communication Foundation)也...
DLR广泛应用于自动化测试、脚本编写、快速原型开发、插件系统以及与非.NET环境的互操作性等场景。 10. **学习和实践** 《Pro DLR in .NET 4》这本书提供了大量实例和练习,帮助读者掌握DLR的使用,提升开发动态和...
例如,当与COM互操作或使用JavaScript库时,“dynamic”关键字特别有用。 书中还会详细讨论如何使用IronPython和IronRuby等动态语言与.NET集成,这些语言在.NET平台上运行,充分利用了DLR的优势。此外,可能还会...
《深入理解Microsoft.NET Framework 4.0:基石与应用》 Microsoft .NET Framework 4.0,作为微软开发平台的核心组件,为软件开发者提供了一个强大的工具集和运行环境,用于构建、部署和运行各种跨平台应用程序和...
2. **跨语言互操作性:** 随着IronRuby的发展,.NET开发者可以更容易地与其他语言(如Ruby)编写的代码进行交互,从而扩展自己的技能树。 3. **未来趋势展望:** 本书还将展望Ruby on Rails如何继续塑造微软的应用...
1. Service Model Metadata Tool (Svcutil.exe)更新:提供更好的互操作性和支持更多的标准协议。 2. WCF Data Services(前身为Astoria):提供了基于RESTful服务的数据访问框架,支持OData协议。 六、Windows ...
这个框架提供了一整套丰富的类库、语言互操作性、内存管理、安全性和性能优化,使得开发者能够更高效地编写高质量的代码。 在.NET Framework 4.0中,最重要的改进之一是引入了CLR(Common Language Runtime)的更新...
通过CLR,开发者可以编写用C#、VB.NET、F#等语言编写的代码,并在相同的平台上运行,实现跨语言互操作性。 本书内容涵盖了以下几个主要知识点: 1. **内存管理**:详细讲解了CLR如何进行垃圾回收,包括对象生命...
5. **WCF(Windows Communication Foundation)增强**:服务契约接口更易用,增加了WS-Discovery和HTTP/RESTful支持,提升了服务的互操作性。 6. **WPF(Windows Presentation Foundation)更新**:UI设计工具XAML...
9. **互操作性**:通过COM互操作和Platform Invoke (P/Invoke),.NET Framework 4.0能轻松地与非托管代码交互,允许开发者利用已有的COM组件或C/C++库。 10. **安装和更新**:.NET Framework 4.0的安装过程更加智能...
2. **动态编程**:引入了C# 4.0和Visual Basic .NET 10.0,其中包含动态类型(dynamic)和扩展方法,提高了与非.NET框架库(如IronPython和IronRuby)的互操作性。 3. **语言集成查询 (LINQ)**:进一步成熟,增强了...
此外,多语言互操作性得到提升,支持更多的编程语言,如C#、VB.NET、F#等。 3. **并行计算框架**:随着多核处理器的普及,.NET Framework 4.0引入了Task Parallel Library (TPL),使得开发者可以轻松地编写并行代码...
2. CTS(Common Type System):CTS定义了一套统一的类型系统,确保所有.NET语言都能理解和互操作。这意味着用不同语言编写的代码可以无缝地一起工作。 3. JIT(Just-In-Time)编译器:JIT将.NET代码转换为机器码,...
4. **.NET互操作性**:IronPython通过CLS Compliance(公共语言规范)与.NET组件兼容,使得Python代码可以像使用.NET语言那样使用.NET组件。 5. **C#与Python的协同工作**:IronPython使得Python和C#开发者可以共享...