我们正在构建一个相当复杂的应用程序,我们需要能够在不同时间发布不同的部分。为了帮助我们解决这个问题,我们使用RSL和模块。
所以让我来描述这些项目(名称已经改变以保护无辜者)
core(rsl)
客户(申请)
杂货(模块) groceriesCore(rsl)面包店(模块) bakeryCore(rsl)
我们有一个应用程序客户端,它将应用程序的区域作为模块加载。我们有一个核心RSL,它可以执行登录和保留权利等操作,并为模块提供API以访问这种状态并相互通信。
当我们加载客户端时,我们只希望加载核心rsl,因为这是当前所需的。加载杂货模块时,我们希望加载杂货rsl,同样当加载烘焙模块时,我们希望loadingCore rsl加载。
实际上,这不是发生的事情。如果我们在运行时将项目设置为类似,则核心rsl会在应用程序启动时加载,但模块RSL在加载模块时不会加载。如果我们从包含杂货模块的项目中运行一个应用程序,那么他会在应用程序加载时加载,而不是在模块加载时加载。
我们需要一种在模块加载时加载rsl的方法。
目前我们在客户端应用程序中指定groceriesCore和bakeryCore,以便在客户端加载时加载它们。这显然不是一个好主意,因为当我们添加另外30个部门时,我们不希望在应用程序启动时下载所有这些部门 - 我们只希望在需要时下载它们 - 在应用程序加载时。
我如何实现这一目标? (除了一个可怕的自定义rsl加载器类型的东西)。
答案 0 :(得分:1)
RSL只能在应用程序启动时加载。我过去所做的就是让你的杂货变成另一个模块而不是RSL。然后你只需将它指定为杂货模块的依赖项,这样当你想加载杂货时,它会检查是否加载了groceriesCore模块,如果需要,加载它。
管理模块的依赖关系不是Flex为您管理的。所以你必须手动完成。或者Potomac Framework也许有助于它的OSGI-ish方法。