写点什么

Ivan Porto Carrero 谈 IronNails

2008 年 8 月 28 日

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

IronNails Ivan 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

2008 年 8 月 28 日 07:53258

评论

发布
暂无评论
发现更多内容

什么才是“应用拓扑”?

小清新同学

运维 监控

刷爆朋友圈的字节跳动编码题,今天把解析思路分享下!

Java架构师迁哥

虚拟卡兑换架构设计

孙志平

数据库-技术专题-SQL编写规范

李浩宇/Alex

从『用户』到『客户』,企业服务平台如何实现高效转化?

易观大数据

架构师训练营第 2 周作业

netspecial

极客大学架构师训练营

架构师训练营第 1 期第 2周作业

du tiezheng

极客大学架构师训练营

难得干货,揭秘支付宝的2维码扫码技术优化实践之路

JackJiang

支付宝

传销资金盘挂靠区块链热点 肃清整顿热潮拉开帷幕

CECBC区块链专委会

区块链 金融

框架设计:作业

Nick~毓

MySQL varchar类型最大值,原来一直都理解错了

架构精进之路

MySQL varchar

保留时序数据波动细节的一种采样算法

小清新同学

监控 时序数据库

架构师训练营第 1 期第二周课后练习题

Leo乐

极客大学架构师训练营

RN运行项目报错:Unable to resolve module `./debugger-ui/debuggerWorker.js` from ``

凌宇之蓝

ios android React Native

某大厂一位核心技术人员不小心泄漏的公司内部培训以及工作笔记内容,手慢无。

Java架构师迁哥

缓存解决方案-技术专题-Caffeine Cache

李浩宇/Alex

c++基础——杂谈2

菜鸟小sailor 🐕

c++ 语言

为什么海外服务器打开网站会卡呢?

德胜网络-阳

架构师训练营第二周作业

尹斌

从大数据的角度来谈谈运维监控这件事儿

小清新同学

运维 监控

华为轮值董事长郭平2020全联接大会主题演讲:永远面向阳光,阴影甩在身后

华为云开发者社区

5G ICT huawei

架构师训练营第二周学习总结

尹斌

来不及解释了,快上车!快速开发平台,助力企业搭乘万物互联顺风车

Philips

敏捷开发 企业开发 互联网革命

娱乐圈套路多?看区块链如何来破解

CECBC区块链专委会

网红 娱乐圈

跟着B站UP主小姐姐去华为坂田基地采访扫地僧

华为云开发者社区

华为 技术 大牛 扫地僧

机构进场区块链安全基础设施准备好了么?

CECBC区块链专委会

区块链 数字资产

SpringBoot-技术专题-提升服务吞吐量

李浩宇/Alex

架构师训练营 1 期第 2 周:框架设计 - 总结

piercebn

极客大学架构师训练营

Dolphinscheduler系统架构设计

dll

Apache DolphinScheduler

监控应用,应该监控什么?

小清新同学

云计算 运维 监控

2B还是2C,这真是个问题

MavenTalker

SaaS

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

Ivan Porto Carrero谈IronNails-InfoQ