我正在为一个基本的在线协作IDE构建一个Java应用程序。在此应用程序中,客户端将命令发送到服务器,服务器将这些命令序列化,然后将结果返回给每个客户端。我正在尝试确定能够最大限度地提高性能、效率和代码简单性的架构风格。
目前,我在客户端-服务器模型和发布-订阅模型之间使用一种混合模型。客户端发送命令(例如,请求编辑代码、远程编译等)发送到服务器。对于特定的客户端命令,在服务器响应该命令之前,客户端上的文件实际上不会更改。由于该项目的主要目标之一是IDE允许实时着色,因此每次输入的击键都会发送客户端命令。这是客户端-服务器方面。
但是,由于客户端还必须接收从其他客户端中继到它们的事件,因此它不是一个纯粹的客户端-服务器设置。我使用ExecutorService类来实现这个发布-订阅行为。
我的问题是--有没有一种特定的架构风格与这样的应用程序相对应?有没有其他可以实现应用程序目标的方法?或者,也许我已经在使用最好的架构风格了?
发布于 2012-10-05 04:06:52
混合样式在复杂系统中很常见。最重要的是要确保所使用的样式所提升的质量属性相互补充,并且不会造成紧张。显然,需要解决造成的紧张局势。
似乎有一个隐藏的质量属性,“在服务器响应命令之前,客户端上的文件实际上不会更改”,这表明了除了发布-订阅之外,您还选择使用调用-返回样式的原因。我确实担心在这里使用阻塞调用来提高性能,但您还需要担心数据完整性问题。
稍微考虑一下这一点,您似乎可以使用纯发布-订阅样式来处理正确的消息集。
在“要使用的正确样式”方面--专注于您的质量属性,并具体说明您的设计决策所促进和禁止的内容。基于您在这里所写的内容,我认为现在有一些额外的场景需要充实,以便真正成为一种风格优于另一种风格的有力理由。
https://stackoverflow.com/questions/12711649
复制相似问题