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 是 Ruby 编程语言在微软 .NET 平台上的一种实现。 IronRuby 与 Wilco Bauwer 的 IronRuby project 同名,2007年4月30日由微软于 MIX 上发表。并计划于2007年的 OSCON 公开推出。 2007年8月31日,John Lam...
[博客空间]IronRuby博客中文版 Alpha_ironruby-pre-alpha1(ASP.NET源码).rar
[博客空间]IronRuby博客中文版 Alpha_ironruby-pre-alpha1.rar [博客空间]iShuo多用户博客 v1.5_ishuo1.5.rar [博客空间]LalaBlog 2006 v9_lalablog.rar [博客空间]LevenBlog 2.0.8 源码版_levenblogsor.rar [博客...
ASP.NET源码——[博客空间]IronRuby博客中文版 Alpha.zip
IronRuby博客中文版_多用户博客空间源码下载
[博客空间]IronRuby博客中文版 Alpha_ironruby-pre-alpha1.zip源码ASP.NET网站源码打包[博客空间]IronRuby博客中文版 Alpha_ironruby-pre-alpha1.zip源码ASP.NET网站源码打包[博客空间]IronRuby博客中文版 Alpha_...
Delves into other .NET languages, such as IronRuby and IronPython About the Author István Novák is a Microsoft MVP in Visual C# and an associate of Grepton, a Hungarian IT services company. Andrá...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
[博客空间]ASP.NET Wiki v1.0_asp.net_wiki_10.rar [博客空间]Badgirl blog v1.0 源码_bgblog.rar [博客空间]Bitrac单用户博客 v1.22.0.1200 bulid 090514_bitracpub.rar [博客空间]biyuan JScript.NET 单用户博客 ...
[博客空间]ASP.NET Wiki v1.0_asp.net_wiki_10.rar [博客空间]Badgirl blog v1.0 源码_bgblog.rar [博客空间]Bitrac单用户博客 v1.22.0.1200 bulid 090514_bitracpub.rar [博客空间]biyuan JScript.NET 单用户博客 ...
[博客空间]ASP.NET Wiki v1.0_asp.net_wiki_10.rar [博客空间]Badgirl blog v1.0 源码_bgblog.rar [博客空间]Bitrac单用户博客 v1.22.0.1200 bulid 090514_bitracpub.rar [博客空间]biyuan JScript.NET 单用户博客 ...
[博客空间]ASP.NET Wiki v1.0_asp.net_wiki_10.rar [博客空间]Badgirl blog v1.0 源码_bgblog.rar [博客空间]Bitrac单用户博客 v1.22.0.1200 bulid 090514_bitracpub.rar [博客空间]biyuan JScript.NET 单用户博客 ...
Sams.IronRuby.Unleashed.Feb.2010.pdf
1.支持(面向)该平台的编程语言(如C#、Visual Basic、C++/CLI、F#、IronPython、IronRuby…), 2.用于该平台下开发人员的技术框架体系(.NET Framework、.NET Core、Mono、UWP等), 1.定义了通用类型系统,庞大的CTS...
Sams.IronRuby.Unleashed.Feb.2010.rar
You'll be prepared for real-world application deployment, and we'll give you a taste of how Ruby and Rails are reshaping the Microsoft application landscape, including a look at IronRuby.
另请访问官网 nehulsinghide.blogspot.in 使用包括 C#、VB.NET、F#、IronPython 和 IronRuby 等语言编写应用程序,以及目标丰富和范围:Windows Forms 或 WPF,以及 ASP.NET MVC 和 WCF。 它从 USB 驱动器开始,支持...
Ruby语言在.net平台的实现。alpha版源代码,最初阶段代码,可能比较粗糙,但是对于初学者确实比较容易入门。
NULL 博文链接:https://raylinn.iteye.com/blog/670006