flash – 使用Adobe AIR构建插件体系结构
我正在考虑选择Adobe AIR作为即将到来的项目的客户端实现技术。 (以前的选择是C#和WPF,但最近我对Flash / Flex / AIR印象深刻。)
但是,我的产品最重要的功能之一就是其插件架构,允许第三方开发人员以有趣的方式扩展功能和GUI。 我知道我如何在C#中设计架构:插件加载程序将枚举本地“app / plugins /”目录中的所有程序集。对于每个程序集,它将枚举所有类,查找“IPluginFactory”接口的实现。对于由工厂创建的每个插件,我会要求它的MVC类,并将其GUI元素(菜单项,面板等)捕捉到现有GUI布局中的相应插槽中。 我想在AIR中完成同样的事情(从本地文件系统加载插件,而不是从网络加载插件)。阅读this article后,我的理解是可能的,基本架构(将SWF加载到沙盒ApplicationDomains等)与您在.NET中的方式非常相似。 但是我很好奇, 如果您有任何人使用Flash播放器进行任何动态类加载(最好是混合的Flash / Flex应用程序,并且在AIR主机中是非常好的),我很乐意听到您构建插件框架的经验,以及遇到棘手的情况与Flash播放器,以及闪存,Flex和AIR API。 例如,如果有人问我这个同样的问题,但是考虑到Java平台,我肯定会提到JVM没有“模块”或“程序集”的概念。最高级别的聚合是“类”,因此在管理大型项目的插件系统中创建组织结构可能很困难。我还会讨论多个类加载器的问题,以及每个维护自己独立的加载类的实例(使用其自己的单独的静态vars)。 这里有几个具体问题仍然没有得到我的回答: 1)动作脚本“Loader”类可以将SWF加载到ApplicationDomain中。但这个appdomain究竟包含什么呢?模块?类? MXML组件如何代表?如何找到实现我的插件界面的所有类? 2)如果您已经从主应用程序将插件加载到单独的ApplicationDomain中,从其他应用程序域内调用代码是否更为复杂?对于可以通过应用程序间组织编组层的数据种类有什么重要的限制吗?编组过于昂贵? 3)理想情况下,我想开发大部分我自己的主要代码作为一个插件(主要应用程序只不过是一个插件加载的shell),并使用插件架构将该功能提升到应用程序中。这是否在你的心中恐惧? 解决方法
Luca Tettamanti已经对您的具体问题给出了很好的答案,所以我将只提供一般主题的其他信息:
我已经使用 Flex 3帮助中的主题“Modular applications overview”有一些很好的信息(“模块域”子部分在模块的上下文中讨论应用程序域)。这是一个摘录:
主题“Using the ApplicationDomain class”对应用程序域的主题进行了更深入的了解,如果还没有,您应该明白它。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |