Java 使用Openfire、Smack和Play的聊天网站架构!框架
我正在开发一个聊天网站,它使用OpenFireXMPP服务器,客户端使用SMACKAPI。使用Smack API的web项目是使用Play!框架使其具有RESTful。我选择了玩!因为它的异步编程产品(Comet Sockets/WebSockets) 到目前为止,我的架构基本上如下所示: Openfire Web服务器用户/浏览器 为了支持Android设备,并最大限度地实现代码重用,我是否应该将XMPP客户端代码实现为一个RESTful web服务,这对于网站和Android客户端都是通用的 Openfire Web服务网站浏览器/用户 OpenFireWebService Android应用程序 我担心可伸缩性问题,因为引入了中间web服务?由于必须通过多个组件,我是否会在通信中引入延迟Java 使用Openfire、Smack和Play的聊天网站架构!框架,java,web-services,playframework,openfire,smack,Java,Web Services,Playframework,Openfire,Smack,我正在开发一个聊天网站,它使用OpenFireXMPP服务器,客户端使用SMACKAPI。使用Smack API的web项目是使用Play!框架使其具有RESTful。我选择了玩!因为它的异步编程产品(Comet Sockets/WebSockets) 到目前为止,我的架构基本上如下所示: Openfire Web服务器用户/浏览器 为了支持Android设备,并最大限度地实现代码重用,我是否应该将XMPP客户端代码实现为一个RESTful web服务,这对于网站和Android客户端都是通用的
以上任何建议都会有所帮助。谢谢。我认为最好的方法是制作一个轻薄的网页,在加载后直接使用浏览器中的Web服务(就像任何应用程序一样)
因此,应用程序和网页之间的唯一区别在于,每次用户访问网页时,浏览器都会加载网页。可扩展性的关键在于解耦。因此,从本质上讲,您可以从“如果其中一个组件出现故障,其他组件是否会继续正常工作?”的角度来考虑问题。除了避免世界末日场景之外,您还可以独立地水平缩放每个组件 考虑到这一点,现在让我们继续讨论您的特定用例。为了层而层仍然让我看到一些JavaEE架构的噩梦。它不仅引入了不必要的延迟,还使问题更难确定。如果您的服务出现故障,故障是由web服务器、android应用程序还是web服务引起的 如果希望代码重用,请重用代码而不是复制组件。这就是图书馆的作用。将您的通用代码和摘录作为一个库,并在web服务器和Android应用程序中使用它