BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

用Anvil构建企业级Flex应用

| 作者 Jon Rose 关注 0 他的粉丝 ,译者 张凯峰 关注 1 他的粉丝 发布于 2009年2月13日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在本报道中,Anvil项目的创建者Ryan Knight与InfoQ.com分享了他自己的开源项目。Anvil是一个用来帮助更容易地开发企业级Flex应用的开源项目。另外,它还为运行Flex应用程序提供了一个门户环境。

首先,Ryan为InfoQ.com整体介绍了Anvil:

介绍一下历史背景可能会帮助大家了解Anvil。在2007年5月份,我开始为Williams Gas Pipelines编写一个新的企业级Flex项目。在当时,Flex才刚刚开始用于构建企业中的大型应用。我们预见到在使用Flex构建大型应用时会遇到很多挑战,所以我们寻求了James Ward的帮助,他是来自于Adobe的Flex布道者。他提供了如何模块化应用程序,以及如何在应用程序的不同层次处理事件等很多方面的早期指导。作为此次合作内容的一部分,我们决定在核心框架之上启动一个开源项目。

在将Anvil从一个实际项目核心框架的一部分独立出来,最让我高兴的是,我能够将我在Williams中做的许多工作贡献给开源社区。而且由于它的广泛采用,大量最明显的bug都已经得到修复。另外我们还多次与James会面,以取得架构方向和编码上的帮助。所以你今天能看到的,是一个高端框架,能够解决开发者在构建大型Flex应用时遇到的一些巨大挑战。现在Anvil提供了许多有用的功能,比如布局环境、与Spring Security集成的安全机制、模块加载和管理,以及许多其他功能。它还提供了一个基于Flex MDI项目(现在是FlexLib的一部分)的门户框架。这样就提供了布局和窗体的管理。

接下来,Ryan解释了Anvil与其他Flex框架有什么不同:

Anvil跟Mate和Cairgorm这样的框架相比,解决的是不同的问题。那些框架解决的是MVC较低层次的问题。而Anvil的重心在于解决像如何有效利用Flex架构大型应用这样宏观的问题。大多数情况下,它可以和其他框架共同使用,比如Mate。可是我们确实发现了Cairngorm无法配合工作,因为Cairngorm只允许一份运行时的MVC。通过模块功能,你可以让同一模块加载多次,这样本质上针对每个模块你都有个微MVC。可这样的情形在Cairngorm中是行不通的,比如当某个模块触发事件更新模型的时候。其实这样的更新应该隔离成一个独立的模块,但Cairngorm是在全局范围内传递事件的。

至于Anvil的许可证:

Apache 2.0 - 不出众人所料,但这只是为了让用户知道你在用它做什么。

Ryan接着解释了其他人如何从Anivl获得益处:

我总是会从别人的代码中受益很多。比如项目的最困难部分之一就是将ant的构建过程合在一起。为了完成这个任务,我实际上参考了Google GWT项目构建过程中的很多思想。因此即使你已经有了一个很不错的应用程序,我想你仍然可以从Anvil中学到很多。把所有的东西合起来使用需要很陡的学习曲线,而且我们过去的确遭遇过大量的技术挑战。

对于崭新的应用程序,我们强烈建议先浏览一下Anvil,看看它是不是合适你。它可以提供一个简单的门户环境,你的portlet可以在其中显示并布局。它还有菜单系统让用户选择具体显示哪些portlet。

InfoQ接着请Ryan讨论一下Flex的各个模块,以及Anvil是如何使用他们的:

这是我们从James那里学到的最重要的技能之一,即如何使用各个模块。我们尝试着在Anvil中提供工具来处理模块加载和管理,来遵从所有这些最佳实践。将一个应用分成不同的模块可以带来很多好处,比如开发者可以同时分别工作在应用程序的不同部分上。在开发时你不需要将整个项目都加载到Flex Builder中去。Anvil还提供了ant脚本来方便地编译flex应用程序。这跟模块结合在一起,在编译整个应用程序时提供另外一个好处,模块可以让编译呈线性进行,从而加速编译过程。

而对于运行时和部署,模块则有另外的好处。应用程序中的一小部分可以在应用启动时加载起来,从而为用户提供快速的响应。然后应用的其他部分就会在需要时从后台悄悄加载。这样每个单独的模块都很安全,甚至可以分发到不同的机器上以得到负载均衡或者故障转移。

最后,InfoQ询问Ryan我们的读者还需要了解些什么:

现在我们一直在期待来自于社区的反馈。我们有很多如何采用Anvil的想法,但我们也希望Anvil能对更多的人有用。我在最近接受DrunkOnSoftware.com的视频采访时谈到了很多内容。

另外,我最近加入了Gorilla Logic(www.gorillalogic.com),并期望能将那里工作合并进Flex Monkey项目(http://code.google.com/p/flexmonkey)中。我们一直在寻找办法使用Flex Monkey测试Anvil中的各个模块。

但更重要的是,我们非常欢迎来自于社区的最有帮助的想法。

谢谢你,Ryan。

开始使用Anvil,请参考Ryan编写的指导,Anvil的介绍

查看英文原文:Enterprise Flex with Anvil

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

by Wang Frank

阿福的英文越来越好了....

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT