首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Adobe AIR构建插件架构

使用Adobe AIR构建插件架构
EN

Stack Overflow用户
提问于 2008-12-05 18:12:38
回答 2查看 3.9K关注 0票数 16

我正在考虑为即将到来的项目选择Adobe AIR作为客户端实现技术。(之前的选择是C#和WPF,但最近我对Flash/Flex/AIR印象深刻。)

但我的产品最重要的功能之一将是它的插件架构,允许第三方开发人员以有趣的方式扩展功能和GUI。

我知道如何在C#中设计体系结构:插件加载器将枚举本地"app/plugins/“目录中的所有程序集。对于每个程序集,它将枚举所有类,查找"IPluginFactory“接口的实现。对于工厂创建的每个插件,我都会要求它提供其MVC类,并将其GUI元素(菜单项、面板等)快照到现有GUI布局中的适当插槽中。

我想在AIR中完成同样的事情(从本地文件系统加载插件,而不是从web)。在阅读了this article之后,我的理解是这是可能的,并且它的基本架构(将SWF加载到沙盒ApplicationDomains等)与你在.NET中做这件事的方式非常相似。

但我对这些问题很好奇。

如果你们中的任何人使用flash player做过任何动态类加载(最好是在flash/flex混合应用程序中,尤其是在AIR主机中),我很想听听你们在构建插件框架方面的经验,以及你们在使用flash player和flash、flex和AIR APIs时遇到的棘手情况。

例如,如果有人问我同样的问题,但考虑到Java平台,我肯定会提到JVM没有“模块”或“程序集”的概念。最高级别的聚合是“类”,因此在管理大型项目的插件系统中创建组织结构可能很困难。我还将讨论多个类加载器的问题,以及每个类加载器如何维护自己的已加载类的单独实例(具有自己的单独静态变量)。

以下是我仍未回答的几个具体问题:

1) actionscript类可以将SWF加载到ApplicationDomain中。但是appdomain到底包含了什么呢?模块?类?MXML组件是如何表示的?如何找到实现插件接口的所有类?

2)如果你已经将一个插件加载到一个独立于主应用程序的ApplicationDomain中,那么从另一个应用程序域中调用代码会不会变得更加复杂?对于可以通过应用程序域间编组层的数据类型,是否有任何重要的限制?编组是不是太贵了?

3)理想情况下,我希望将自己的大部分主代码开发为插件(主应用程序只是一个加载插件的shell),并使用插件架构将该功能提升到应用程序中。这让你心生恐惧了吗?

EN

回答 2

Stack Overflow用户

发布于 2009-01-24 15:14:01

作为对将Java作为可能的插件体系结构的声明的回应:

事实证明,Java已经被用来设计插件架构系统很多年了。至于客户端,Equinox OSGi模块管理框架可能是最知名的。Eclipse IDE一度在Equinox OSGi之上重构了他们的插件架构。Eclipse IDE可能是迄今为止设计的最成功的客户端插件体系结构系统之一-从历史寿命的角度来看,以及插件开发的广泛用户基础和后续社区。他们还提供了自己的插件架构,作为设计任意客户端应用程序的基础框架- Eclipse RCP。

我不得不插入这一点,因为尽管Java被定位为在这方面可能是一个非常弱的选择,但在交付这种工作系统方面,它实际上比任何其他语言/运行时环境都要成功得多-特别是与C# .NET相比,后者当然具有很好的模块先天功能。有点讽刺,但你已经明白了。

至于Adobe AIR,我正在开发一个正在AIR上设计的项目。在我们的例子中,我们的模块可扩展性总是从web服务器交付的-而不是本地目录。Flex拥有

<mx:Module/>

标记,用于创建可在运行时离散加载的模块。

遗憾的是,AIR的一个令人沮丧的地方是它缺少任何用于启动其他应用程序的类API。您可以加载URL,以便在用户的默认浏览器中加载某些内容,但不能启动Excel。Java和C#都有将其他应用程序作为外部进程启动的API。

票数 0
EN

Stack Overflow用户

发布于 2009-08-14 12:09:58

您是否尝试过加载子应用程序?

在AIR中有很好的文档可以做到这一点,我在几个小时内就成功了。然而,同样的实现在Flex中却是另一回事,因为子应用程序和主应用程序之间存在沙箱冲突。我已经花了几个星期的时间把头撞到墙上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/344705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档