2011-04-08 126 views
1

我有一个复杂的应用程序。我使用Flex 4.1 RSL和我的所有库的定制RSL(并且有15个定制SWC-Flex库项目)Howto:具有自己的自定义RSL的Flex模块只加载到子ApplicationDomain中?

我想用最少的RSL加载主应用程序,然后将Flex模块加载到所有其他RSL在用户与应用程序的第一部分进行交互的背景中。

主应用程序需要3个SWCs,模块需要其余部分(12)。

如果我有一个Application.mxml Flash Builder中Apllication项目中,我已经全部链接的RSL(如的RSL)和Module.mxml

如何解决这个问题,所以的RSL加载模块为孩子申请域?

目前我使用:

info = ModuleManager.getModule(URL); 
info.load(new ApplicationDomain(ApplicationDomain.currentDomain)); 

...所以应该载入到新的应用领域,不过的RSL预加载到父域了!

我在我的模块中使用静态字段/单例,所以我不能加载更多的。

如果我可以将带有RSL的模块加载到子应用程序域中,则类定义将分开,我可以使用两个模块,每个模块都有其自己的静态字段。

回答

1

解决方案来使用Flex 4.5 - 介绍的RSL

使用占位符的RSL

当你与 的Flex编译应用程序时,默认行为是 编译反对 应用框架(或默认)RSL。当 应用程序运行时,它仅加载它实际使用的框架RSL ,并为其余的框架RSL创建占位符 。当 应用程序加载的模块或 子应用程序要求的 一个为其中的框架的RSL有 一个占位符,模块或 子应用程序然后载入RSL 到主应用程序。

看到Adobe Flex 4.5 - Introduction to RSLs @ help.adobe.com

+0

如果这是您的问题的解决方案,那么接受它作为正确答案。 – 2011-05-10 19:50:24

1

为什么不尝试OSGI灵感Potomac模块化框架?它使您能够更精确地控制资产负载。它可能涉及一些重构,但事实上,在应用程序中有15个不同的编译资源,这表明您已经在考虑模块化的线。

编辑:

我要指出的是波托马克将加载所有的“捆绑”到应用程序域,但它确实解决您的按需加载你的资产的问题。我不确定问题的哪一部分是最重要的问题。您也可以查看sub-applications,这可能会或可能不符合您的要求。

+0

谢谢,这看起来非常有用。不过现在看来,我们需要摆脱Flex的重载,所以我不会在这个项目中使用它。使用Flex 4.5来移除未使用的RSL并将它们与模块一起加载到它们的子域中请参阅[在模块和子应用程序中使用RSL](http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf674ba-7fff.html# WS19f279b149e7481c-152c7c012d9aabe32a-7fff)和[Customize project builds](http://help.adobe.com/en_US/flashbuilder/using/WSe4e4b720da9dedb524b8220812e5611f28f-7fe1.html) – 2011-05-10 14:46:05