Apache 在远程软件供应系统的目标端使用OSGi有什么好处?

Apache 在远程软件供应系统的目标端使用OSGi有什么好处?,apache,osgi,target,provisioning,Apache,Osgi,Target,Provisioning,我正在开发一个远程软件供应系统,该系统应该能够处理软件组件的所有部署、安装、卸载和升级。软件可以是java、.net、c/c++等任何语言,目标端可以是PC、嵌入式系统和智能手机 我发现ApacheACE是开发这个系统的很好的候选者 我想知道在目标端使用OSGi是否有任何优势/必要性,因为Apache ACE也可以为非OSGi目标提供软件。好吧,OSGi的优势没有改变,因此我可以向您介绍 更具建设性的一点是,我将把这个问题理解为“我是否应该费心将我的应用程序转换为OSGi,因为它对于ACE来说是

我正在开发一个远程软件供应系统,该系统应该能够处理软件组件的所有部署、安装、卸载和升级。软件可以是java、.net、c/c++等任何语言,目标端可以是PC、嵌入式系统和智能手机

我发现ApacheACE是开发这个系统的很好的候选者


我想知道在目标端使用OSGi是否有任何优势/必要性,因为Apache ACE也可以为非OSGi目标提供软件。

好吧,OSGi的优势没有改变,因此我可以向您介绍

更具建设性的一点是,我将把这个问题理解为“我是否应该费心将我的应用程序转换为OSGi,因为它对于ACE来说是不必要的?”

我认为这取决于你想要什么样的更新机制。如果您有一个单一的应用程序,至少从资源调配的角度来看是这样的,您只能像一个iOS应用程序一样作为一个整体进行部署和更新,那么使用OSGi进行资源调配就没有什么好处了


对于其余的部分,我可以告诉你和我告诉其他任何人一样的事情:将应用程序转换为OSGi并不难,但是模块化代码可能是一场噩梦,但在某个时候,不管是否是OSGi,你都需要面对一些事情。如果您的代码已经模块化了,那么使用OSGi应该是小菜一碟。

好吧,OSGi的优点没有改变,因此我可以向您推荐

更具建设性的一点是,我将把这个问题理解为“我是否应该费心将我的应用程序转换为OSGi,因为它对于ACE来说是不必要的?”

我认为这取决于你想要什么样的更新机制。如果您有一个单一的应用程序,至少从资源调配的角度来看是这样的,您只能像一个iOS应用程序一样作为一个整体进行部署和更新,那么使用OSGi进行资源调配就没有什么好处了


对于其余的部分,我可以告诉你和我告诉其他任何人一样的事情:将应用程序转换为OSGi并不难,但是模块化代码可能是一场噩梦,但在某个时候,不管是否是OSGi,你都需要面对一些事情。如果您的代码已经模块化了,那么使用OSGi应该是小菜一碟。

在客户端使用类似OSGi的模块化框架在进行远程管理时是一个巨大的优势,因为它可以让您更深入地了解已安装的捆绑包、依赖项、捆绑包的状态、,可用服务等。当您必须远程解决问题时,这会有很大帮助。另一个优点是OSGi基本上迫使程序员开发适当的模块化和动态系统,这使得远程更新更加容易

因此,如果您现在必须决定客户端使用何种语言和框架,我强烈建议嵌入式和移动客户端使用OSGi。对于个人电脑,我想你指的是台式电脑?这可能不是最好的选择——这在很大程度上取决于你想要在那里实现什么。如果你想远程安装MS Office,OSGi不会帮你

但是,如果您在客户端已经有了现有的程序,并且正在讨论是否将它们转换为OSGi,我建议您先调查一下它们是否可以轻松转换。有些软件包在转换到OSGi时可能会给您带来很多麻烦,这不是因为OSGi很复杂,而是因为程序本身不是模块化的,并且对环境的静态性质有很多假设,例如,任何东西都不会消失,系统的某些部分永远不会更新等。。具有讽刺意味的是,无论您选择哪种远程资源调配系统,这些程序都将在以后给您带来最大的麻烦


如果您在某些目标上有OSGi,请确保使用远程资源调配系统,该系统使您能够访问完整的OSGi功能,而不仅仅是最基本、最简单的安装和更新功能。我还没有使用ApacheACE,但我有使用另一个资源调配系统的经验-。以下是一些可以让您感受到OSGi作为基础的可能性的方法-您可以得出自己的结论,它是否对您的案例有用。

在客户端使用类似OSGi的模块化框架是远程管理的巨大优势,因为它可以让您更深入地了解内部发生的情况—已安装的捆绑包、依赖项、捆绑包的状态、可用服务等。当您必须远程解决问题时,这会有很大帮助。另一个优点是OSGi基本上迫使程序员开发适当的模块化和动态系统,这使得远程更新更加容易

因此,如果您现在必须决定客户端使用何种语言和框架,我强烈建议嵌入式和移动客户端使用OSGi。对于个人电脑,我想你指的是台式电脑?这可能不是最好的选择——这在很大程度上取决于你想要在那里实现什么。如果你想去的话 高高在上的微软办公软件OSGi不会把你带到前台

但是,如果您在客户端已经有了现有的程序,并且正在讨论是否将它们转换为OSGi,我建议您先调查一下它们是否可以轻松转换。有些软件包在转换到OSGi时可能会给您带来很多麻烦,这不是因为OSGi很复杂,而是因为程序本身不是模块化的,并且对环境的静态性质有很多假设,例如,任何东西都不会消失,系统的某些部分永远不会更新等。。具有讽刺意味的是,无论您选择哪种远程资源调配系统,这些程序都将在以后给您带来最大的麻烦


如果您在某些目标上有OSGi,请确保使用远程资源调配系统,该系统使您能够访问完整的OSGi功能,而不仅仅是最基本、最简单的安装和更新功能。我还没有使用ApacheACE,但我有使用另一个资源调配系统的经验-。以下是一些可以让您感觉到OSGi作为基础的可能性的方法-您可以自己得出结论,它是否对您的案例有用。

我在您提出的另一个问题中给出了一些示例:


您可以编写自己的管理代理,与ACE服务器对话并安装工件。实际上,有几个地方可以挂接您自己的代码和协议。您是否正在考虑使用具体的语言/环境,或者您现在只是在探索可能性?

我在您提出的另一个问题中给出了一些示例:


您可以编写自己的管理代理,与ACE服务器对话并安装工件。实际上,有几个地方可以挂接您自己的代码和协议。您是否正在考虑使用具体的语言/环境,或者您现在只是在探索可能性?

谢谢您的回复。我们正在努力寻找解决方案,在嵌入式设备上提供软件,例如升级固件。所以,我们的重点是C/C++。我们发现ApacheCelix是C的OSGi实现,我们可以在目标端使用,但它目前处于早期阶段。这是肯定的。Celix作为一个开源项目,总是在寻找贡献者,所以如果你尝试过,在他们的邮件列表中提供一些关于你的经验的反馈会很好。在这里,您还可以找到有关ACE和Celix如何互操作的更多信息。感谢您的回复。我们正在努力寻找解决方案,在嵌入式设备上提供软件,例如升级固件。所以,我们的重点是C/C++。我们发现ApacheCelix是C的OSGi实现,我们可以在目标端使用,但它目前处于早期阶段。这是肯定的。Celix作为一个开源项目,总是在寻找贡献者,所以如果你尝试过,在他们的邮件列表中提供一些关于你的经验的反馈会很好。在这里,您还可以找到有关ACE和Celix如何互操作的更多信息。