InfoQ

新闻

Ivan Porto Carrero谈IronNails

作者 Robert Bazinet译者 赵斯思 发布于 2008年8月28日 上午7时53分

社区
.NET,
Ruby
主题
Silverlight,
Web框架
标签
IronRuby,
WPF

一个为有Ruby on Rails开发经验的人设计的、使用IronRuby构建应用程序的新项目诞生了。这个项目被被称为IronNails,已经为向开发者发布做好了准备。

IronNailsIvan Porto Carrero(开发者、作家和Ruby爱好者)开发。Ivan向其它开发者开放了代码以便于使用及进一步的开发。他将IronNails描述为“与Rails类似得面向IronRuby和WPF/Silverlight开发工具”。InfoQ采访了Ivan,和他聊了聊IronNails。

我们向Ivan问到,IronNails是什么:

IronNails应该成为一个IronRuby专属的gem包,它将Rails的开发风格带进WPF和 Silverlight中。这意味着它应该有生成器、类似的启动命令行脚本、一个插件框架等。同时我希望它能利用现有工具(如Blend和 Ilustrator)在布局上的优点。Blend是一个为设计师开发的用来设计图形界面及互动的工具。这就是说可以只使用XAML文件或者甚至是 XAML DSL以创建视图。

通过定义一系列行为,设计者可以像在Blend里一样拖放各种行为。行为包括左键单击、悬浮(进入/离开)等。开发者接下来可以将欣慰连接到一个具名的命令,这个命令连接到一个控制器动作。这在WPF可以通过附加属性(依赖对象)实现。其中将有很多工作要做。

这个项目很有意思,它需要运行在IronRuby下,但IronRuby还没发布,我们想知道为什么这个框架被提前创建:

现在我正在为Manning写IronRuby in Action这本书,在探索结合使用IronRuby和WPF的可能性时它出现了,它看起来是个不错的主意。

我体验过界面构建器和Mac上的ruby cocoa,喜欢Rucola项目的呈现方式。Rucola的目标和IronNails是一样的,只是它是基于cocoa的。cocoa对于视图的理解与 Microsoft是不同的,这就是为什么IronNails使用的一些概念也不同。Eloy是给我指了这条道路的人,也许他会读到这篇文章。它应该做的是让你能够使用e-editor/Textmate或其它你所喜欢的编辑器进行有效地开发。它应该和Test::Unit及RSpec很好地集成,以解决Rails框架为web开发所解决的同样的问题。

我喜欢使用MVC模式进行web开发,并且我发现它非常适合我大多数的项目,所以我希望将同样的方式带入WPF和Silverlight开发中。

对于一些新的工具或框架,创建者对于其的定义往往与社区对其得观感完全不同,你如何定义IronNails的目标用途:

但你看到它是适合的:) 但是我认为它应该使你能使用手中最好的工具进行设计和排版,恕我直言,你最好不要使用一种视觉元素的工具进行这些工作。若手边的工作是编码,则一个编辑器或者一个更重量级的IDE就足够了。最后,你应该使用IronNails < >, 它将为你建立一个应用程序的骨架。之后你可以使用命令行工具生成控制器、模型和视图。一个新建立的视图将被添加到csproj文件中,这时候设计器就可以 往里添加内容了。正如我提到的,设计器可以为任何元素定义行为,开发者可以重定它们到具名的动作。设计者可以使用他们选择的工具建立故事板等。

框架有一些预定义的文件夹用来查找主题(Skin)。主题包括应用程序的模板。视图包含数据绑定控件和一般布局,但是这里分离内容到模板并存放到主题文件中(资源目录)。这样内容和布局很好地分离,你可以很轻松地创建新主题或者完全不同地呈现数据。

IronNails为IronRuby和WPF/Silverlight增加了新功能,关于新增价值的类型:

它实现了模型-视图模型-视图-控制器这个看起来在WPF中很流行的模式。它是基于一些解耦代码和XML的最佳实践的概念建立的。在绝大多数情况下你不需要在后台代码中做任何事情,因为视图模型负责提供命令并连接视图和控制器。

它提供Rails开发者熟悉的经验以实现这些。它使用元编程来生成视图模型,使你能够绑定至你在控制器中定义的对象。你可以定义你自己的视图模型以添加行 为,但你并不需要。需要遵守一些命名约定,然后它就能工作了。它使开发更加的可测试,并且紧密地与流行的Ruby测试框架绑定。

Microsoft宣布IronRuby将在2009年第一季度发布,还有如此多得工作需要完成的情况下,IronNails需要等待它的完成。Ivan对于IronNails的未来的想法:

目前我不能完全按我的预想中实现IronNails,因为IronRuby缺少一些特性。当越来越多特性在 IronRuby中实现,我们会去除其中更多得C#代码将其转入Ruby代码基础。目前在XAML不能绑定到纯DLR,但是在将来这将变成可能。当前代码 基础中有一些技巧和规避措施,当IronRuby支持这些特性后这些代码也将被替代。

如前面所说它是我为我的IronRuby书而写,但是现在看起来它足够被试用了,所以如果社区有兴趣,这个项目将会持续进步并更上语言和框架的发展。

作为一个开源项目,常常会有外界的开发者帮忙,Iven说他乐于接受帮助:

IronNails寄居在GitHub。他们可以通过GitHub的分叉和推动系统提交补丁以加入这个项目。他们也可以把他们的GitHub用户名通过Email发给我,然后我将他们添加到项目中。还有一个Lighthouse项目可以提交评论。我接受任何形式的帮助,如代码、文档、测试等。

我期望我不会更多地投入到代码中,直到我写完了我的书。我也许每个月只能花两小时在它上面,所以我也期待社区能维护它直到我能投入更多的时间。

更多关于IronNails的信息可以从Ivan的博客中找到,IronNails可以从GitHub下载

查看英文原文:Talking with Ivan Porto Carrero about IronNails

1 条回复

回复

很有意思的东西啊 发表人 Jeffrey Zhao 发表于 2008年8月31日 上午4时29分
  1. 返回顶部

    很有意思的东西啊

    2008年8月31日 上午4时29分 发表人 Jeffrey Zhao

    要试试看的

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。