什么OOD设计模式应该用于服务器句柄客户端请求?
我建议使用消息交换模式,允许在组件和应用程序之间交换信息(即消息)。
消息交换模式(MEP)描述了通信协议建立或使用通信信道所需的消息模式。有两种主要的消息交换模式 - 请求 - 响应模式和单向模式。例如,HTTP是请求 - 响应模式协议,UDP具有单向模式。
http://en.wikipedia.org/wiki/Messaging_pattern
我是对的吗?好主意?
由于
答案 0 :(得分:1)
通过UDP非常熟悉客户端 - 服务器应用程序,我通常使用观察者模式,这在从网络接收数据包时非常有用。只要数据包来自远程计算机,套接字就会接收消息并将其广播给所有侦听器。然后,听众将根据收到的数据做任何他们想做的事情,如下例所示
public class MySocket {
private socket rawSocket;
private List<Listeners> dataListeners;
//.. Initialization
// This method gets called when data is received
public receive(byte[] data){
for(Listener listener : dataListeners) listener.processMessage(data);
}
public registerListener(Listener listener){
dataListeners.add(listener);
}
public unRegisterListener(Listener listener){
dataListeners.remove(listener);
}
}
// Interface listener to be implemented by whoever want to receive data from a socket
public interface Listener{
// Method to be implemented by any listener interested in receiving data
void ProcessMessage(byte[] data);
}
public class MyListener implements Listener{
@Override
public void processMessage(byte[] data){
// Do something with data...
}
}
// All bits put together
MySocket mySocket = new MySocket();
socket.registerListener(new MyListener());
// Class MyListener can now receive everything that comes from a remote machine through the socket "mySocket"
我希望这有帮助, 的问候,
答案 1 :(得分:0)
是否要使用UDP(单向),HTTP(无状态请求 - 响应)或某种机制取决于应用程序的行为。在需要实时消息传递的地方(如在算法交易中),UDP是第一选择,其中发送数据包的时间变得更加重要,数据包的可靠性。 HTTP是Web应用程序的方法。 但是,这些都是消息传递协议的协议。在应用程序级别,这是我的想法。在客户端 - 服务器应用程序中,通常有许多客户端尝试访问同一服务器。因此,您的服务器应用程序应该能够并行响应多个客户端。因此,在应用程序级别,您应该维护thread pool,并且应该在线程池的线程中处理每个客户端请求。阅读链接以了解有关使用线程池的好处的更多信息,而不是为每个客户端请求创建线程。