对于我的硕士论文,我正在开发一个销售大型活动门票的应用程序框架。我的主要要求是可修改性,可扩展性和性能。我的客户(活动组织者)应该能够在运行时轻松替换组件并添加功能。这种组件的一个例子可以是座位分配组件。
我的导师说要看看OSGi。松散耦合束的想法当然很有吸引力。在寻找替代品时,我发现了Akka。这个框架承诺了很多东西,比如可伸缩性和高性能。我想知道Akka的演员概念是否符合我的可修改性要求。 Akka似乎比OSGi更有效率,因此开发速度会更快。 Akka似乎更适合可扩展性。使用OSGi,我会有更难的时间。
如果你有OSGi和Akka的经验,你会推荐给我吗?比较它们时,两种技术的优缺点是什么?最后,OSGi或Akka有什么好的替代品可以满足我的要求吗?
修改
首先,感谢你们的回复,你们是一个很好的帮助。 如下所述,我试图比较苹果和梨。一个更合乎逻辑的问题是:OSGi和Akka如何一起使用并互相受益?这个结构如何?您的所有演员是否都驻留在一个OSGi包中,他们每个人都得到一个单独的包,是否有混合解决方案或者不是真的有“正确”的方法吗?
EDIT bis
我发布了一个跟进问题here,询问如何结合OSGi和Akka。
答案 0 :(得分:3)
彼得说他们没有直接可比性。事实上,你可以一起使用它们,它们应该是相辅相成的。
Akka提供异步通信API。 OSGi提供了一个模块化,面向服务的框架。例如,在Akka中没有任何东西可以解决隔离模块的问题,这样他们就无法看到彼此的内部结构。同样,OSGi中没有任何东西与Akka提供的异步通信非常相似。所以一起使用它们就可以获得两全其美......
OSGi确实具有同步服务,这是单个JVM中模块之间通信的主要方法。 OSGi还有一个远程服务层,可用于远程机器之间的通信。我想这可能是OSGi和Akka最直接重叠的区域。但即使在这里,我认为有合作潜力。例如,OSGi远程服务具有非常强大的发现机制,允许我们在网络上发布功能。您可以使用此发现来查找可供您与之通信的Akka演员。
我不知道有人真正将此作为礼物,所以我认为探索和扩展这个想法对于硕士论文来说是一个很好的主题!
你在哪所大学就读? OSGi联盟对促进与学术界的联系非常感兴趣,也许我们可以与您和您的教授建立在线会议?答案 1 :(得分:2)
我认为你比较苹果和梨。您可以在OSGi上运行Scala代码(尽管它们的二进制兼容性很糟糕)。
Scala是一种编程语言,而Akka是一种消息传递库。 OSGi是一个动态组件系统。所以不确定如何比较它们
答案 2 :(得分:2)
我同意Neil和Peter的意见,你要求我们对苹果和橘子进行比较。您可以将两个框架一起使用。我目前正在开发一个具有您指定的相同主要要求的项目。我正在创建一个原型,演示同时使用两种技术,OSGi提供模块化和可更新性,以及Akka提供可扩展性和性能。
答案 3 :(得分:1)
它们不是苹果对苹果的比较。它们彼此正交,如果有的话,相互补充。同时使用两者。