什麼OOD設計模式應該用於服務器處理客戶端請求?什麼OOD設計模式應該用於服務器處理客戶端請求?
我建議消息交換模式,它允許在組件和應用程序之間交換信息(即消息)。
消息交換模式(MEP)描述了通信協議建立或使用通信信道所需的消息模式。有兩種主要的消息交換模式 - 請求 - 響應模式和單向模式。例如,HTTP是請求 - 響應模式協議,UDP具有單向模式。
http://en.wikipedia.org/wiki/Messaging_pattern
我說得對不對?更好的想法?
感謝
什麼OOD設計模式應該用於服務器處理客戶端請求?什麼OOD設計模式應該用於服務器處理客戶端請求?
我建議消息交換模式,它允許在組件和應用程序之間交換信息(即消息)。
消息交換模式(MEP)描述了通信協議建立或使用通信信道所需的消息模式。有兩種主要的消息交換模式 - 請求 - 響應模式和單向模式。例如,HTTP是請求 - 響應模式協議,UDP具有單向模式。
http://en.wikipedia.org/wiki/Messaging_pattern
我說得對不對?更好的想法?
感謝
無論你想使用UDP(單程),HTTP(無狀態的請求 - 應答)或某種機制取決於應用程序的行爲。在需要實時類型的消息傳遞的地方(如在算法交易中),UDP是發送數據分組的時間變成數據分組更重要的可靠性的首選。 HTTP是Web應用程序的方式。然而,這些都是消息傳遞協議的所有協議。在應用程序級別,這是我的想法。在客戶端 - 服務器應用程序中,通常有許多客戶端嘗試訪問同一臺服務器。所以你的服務器應用程序應該能夠並行響應多個客戶端。因此,在應用程序級別,您應該維護一個thread pool,並且每個客戶端請求都應該在線程池的線程中處理。閱讀該鏈接可查看有關使用線程池的優點,而不是爲每個客戶端請求創建線程。
通過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"
我希望這有助於 問候,
FWIW,我認爲,如果你是在懷疑其模式使用時,最好先解決問題,然後再決定哪種模式最能描述解決方案,看看這種實現是否允許您清理它。如果您知道該模式可以解決問題,那麼從設計模式開始就非常棒,但如果您不確定,那麼您只是將自己限制在解決其他問題的解決方案上,而這些問題很可能不屬於您的問題。很難想象服務器與客戶端之間的交互不能被鬆散地描述爲消息交換模式,因此標籤不會添加任何內容。 –
+1給史蒂夫。設計模式被認爲是有害的。 –
我同意你的意見。但是,在我開始編寫代碼之前,我必須有一個關於如何解決問題的基本框架。那是哪種模式可以幫助我解決它。對 ? – user1002288