Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Openfire、Smack和Play的聊天网站架构!框架_Java_Web Services_Playframework_Openfire_Smack - Fatal编程技术网

Java 使用Openfire、Smack和Play的聊天网站架构!框架

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客户端都是通用的

我正在开发一个聊天网站,它使用OpenFireXMPP服务器,客户端使用SMACKAPI。使用Smack API的web项目是使用Play!框架使其具有RESTful。我选择了玩!因为它的异步编程产品(Comet Sockets/WebSockets)

到目前为止,我的架构基本上如下所示:

Openfire Web服务器用户/浏览器

为了支持Android设备,并最大限度地实现代码重用,我是否应该将XMPP客户端代码实现为一个RESTful web服务,这对于网站和Android客户端都是通用的

Openfire Web服务网站浏览器/用户

OpenFireWebService Android应用程序

我担心可伸缩性问题,因为引入了中间web服务?由于必须通过多个组件,我是否会在通信中引入延迟


以上任何建议都会有所帮助。谢谢。

我认为最好的方法是制作一个轻薄的网页,在加载后直接使用浏览器中的Web服务(就像任何应用程序一样)


因此,应用程序和网页之间的唯一区别在于,每次用户访问网页时,浏览器都会加载网页。

可扩展性的关键在于解耦。因此,从本质上讲,您可以从“如果其中一个组件出现故障,其他组件是否会继续正常工作?”的角度来考虑问题。除了避免世界末日场景之外,您还可以独立地水平缩放每个组件

考虑到这一点,现在让我们继续讨论您的特定用例。为了层而层仍然让我看到一些JavaEE架构的噩梦。它不仅引入了不必要的延迟,还使问题更难确定。如果您的服务出现故障,故障是由web服务器、android应用程序还是web服务引起的

如果希望代码重用,请重用代码而不是复制组件。这就是图书馆的作用。将您的通用代码和摘录作为一个库,并在web服务器和Android应用程序中使用它