客户端 - 服务器和发布 - 订阅混合的体系结构样式

时间:2012-10-03 15:22:11

标签: architecture client-server publish-subscribe

我正在为基本的在线协作IDE构建Java应用程序。在此应用程序中,客户端将命令发送到序列化这些命令的服务器,然后将结果返回给每个客户端。我正在尝试确定最大化代码性能,效率和简单性的架构风格。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

似乎存在隐藏的质量属性,“在服务器响应命令之前,客户端上的文件实际上没有更改”,这表明除了发布 - 订阅之外您还选择使用回调样式的原因。我担心在这里进行阻塞调用以获得性能,但您还需要担心数据完整性问题。

稍微考虑一下,看起来您可以使用纯正的发布 - 订阅样式和正确的消息集。

在“正确的使用方式”方面 - 关注您的质量属性,并具体说明您的设计决策所促进和抑制的内容。根据你在这里写的内容,我认为有一些额外的场景需要充实才能真正为一种风格提供一个强有力的案例而不是另一种风格。