2012-10-03 30 views
1

我正在为基本的在线协作IDE构建Java应用程序。在这个应用程序中,客户端将命令发送到服务器,将这些命令序列化,然后将结果返回给每个客户端。我试图确定能最大限度地提高性能,效率和代码简单性的架构风格。客户机 - 服务器和发布 - 订阅混合的体系结构

目前,我正在使用客户端 - 服务器模型和发布 - 订阅模型之间的一种混合。客户端向服务器发送命令(即请求编辑代码,远程编译等)。对于特定的客户端命令,在服务器响应命令之前,客户端上的文件实际上并未更改。由于该项目的主要目标之一是IDE允许实时协作,所以输入的每个按键都会发送客户端命令。这是客户端 - 服务器方面。

但是,由于客户端还必须接收从其他客户端转发给他们的事件,因此它不是纯粹的客户端 - 服务器设置。我正在使用ExecutorService类来实现这种发布 - 订阅行为。

我的问题是 - 是否存在与此类应用程序相对应的特定体系结构风格?我可以采用另一种方法来实现应用程序目标吗?或者,也许我已经在使用最好的建筑风格了?

+1

对我来说,他们不是对抗者。基本上,“客户端 - 服务器”更多地关于工作负载分布,而“Pub-Sub”则关于消息分发实现。 Quake服务器是一样的:) – mikalai

回答

2

混合样式在复杂系统中很常见。最重要的是确保所使用的风格所促进的质量属性相互补充,而不会产生紧张局势。显然,需要加以解决。

似乎有一个隐藏的质量属性,“客户端上的文件直到服务器响应命令时才真正改变”,这表明您为什么除了发布 - 订阅之外还选择使用回调风格。我确实担心在这里出现性能阻塞的问题,但您也需要担心数据完整性问题。

想到这一点,似乎你可能能够在正确的消息集合中使用纯粹的发布 - 订阅风格。

在“正确的使用风格”方面 - 关注您的品质属性,并针对您的设计决策提升和抑制的内容。根据你在这里写的内容,我认为还有一些额外的场景需要充实,以便为现在一种风格创造出一种风格。

相关问题