2010-02-23 81 views
1

使用的RSL我们正在建设一个相当复杂的应用程序,我们需要能够在不同的时间释放的不同部分。为了帮助我们解决这个问题,我们使用RSL和模块。与模块

所以我给大家介绍的项目(名称已更改为保护无辜者)

核心(RSL)

客户端(应用程序)

杂货(模块) groceriesCore(RSL)

面包店(模块) bakeryCore(RSL)

我们有一个应用程ation客户端将应用程序的各个区域作为模块加载。我们有一个核心的RSL,它可以执行诸如登录和持有权利等功能,并为模块提供一个API来访问这种状态并且还可以相互通信。

当我们加载客户端,我们只希望要加载的核心RSL,因为这是当前所需。当加载杂货模块时,我们希望加载杂货rsl,同样当面包店模块加载时,我们需要加载bakeryCore rsl。

在现实中,这是不会发生什么变化。如果我们在运行时像这样设置项目,则核心rsl会在应用程序启动时加载,但模块加载时不加载模块RSL。如果我们从包含杂货模块的项目运行应用程序,那么当应用程序加载时,rsl加载,但在模块不加载时加载。

我们需要加载RSL当模块加载的方式。

在我们的客户端应用程序指定groceriesCore和bakeryCore因此它们都负载在客户端负载的时刻。这显然不是一个好主意,因为当我们添加另外30个部门时,我们不希望在应用程序启动时下载所有这些部门 - 我们只希望在应用程序加载时下载它们。

我该如何做到这一点? (除了一个可怕的自定义rsl加载器类型的东西)。

+0

我发布了一个错误(或者现在看起来像一个功能请求): https://bugs.adobe.com/jira/browse/SDK-25616 – Roaders 2010-02-23 14:26:56

回答

1

的RSL只能在应用程序启动时加载。我过去所做的是制作诸如杂货的东西,而不是RSL。然后,您只需在某处指定它作为杂货模块的依赖项,以便当您要加载杂货时,它将检查groceriesCore模块是否已加载,并在需要时加载它。

管理模块的依赖关系并不是Flex为您管理的事情。所以你必须手动完成。或者Potomac Framework可能会帮助它实现OSGI-ish方法。

+0

感谢您的回复James。我曾见过之前提到的波托马克框架,并认为它可能对我们有用,但从未全面研究它。 难道你不能在运行时加载RSL吗?还是必须将它们变成模块? – Roaders 2010-02-23 14:25:42