2012-10-03 31 views
1

我正在爲基本的在線協作IDE構建Java應用程序。在這個應用程序中,客戶端將命令發送到服務器,將這些命令序列化,然後將結果返回給每個客戶端。我試圖確定能最大限度地提高性能,效率和代碼簡單性的架構風格。客戶機 - 服務器和發佈 - 訂閱混合的體系結構

目前,我正在使用客戶端 - 服務器模型和發佈 - 訂閱模型之間的一種混合。客戶端向服務器發送命令(即請求編輯代碼,遠程編譯等)。對於特定的客戶端命令,在服務器響應命令之前,客戶端上的文件實際上並未更改。由於該項目的主要目標之一是IDE允許實時協作,所以輸入的每個按鍵都會發送客戶端命令。這是客戶端 - 服務器方面。

但是,由於客戶端還必須接收從其他客戶端轉發給他們的事件,因此它不是純粹的客戶端 - 服務器設置。我正在使用ExecutorService類來實現這種發佈 - 訂閱行爲。

我的問題是 - 是否存在與此類應用程序相對應的特定體系結構風格?我可以採用另一種方法來實現應用程序目標嗎?或者,也許我已經在使用最好的建築風格了?

+1

對我來說,他們不是對抗者。基本上,「客戶端 - 服務器」更多地關於工作負載分佈,而「Pub-Sub」則關於消息分發實現。 Quake服務器是一樣的:) – mikalai

回答

2

混合樣式在複雜系統中很常見。最重要的是確保所使用的風格所促進的質量屬性相互補充,而不會產生緊張局勢。顯然,需要加以解決。

似乎有一個隱藏的質量屬性,「客戶端上的文件直到服務器響應命令時才真正改變」,這表明您爲什麼除了發佈 - 訂閱之外還選擇使用回調風格。我確實擔心在這裏出現性能阻塞的問題,但您也需要擔心數據完整性問題。

想到這一點,似乎你可能能夠在正確的消息集合中使用純粹的發佈 - 訂閱風格。

在「正確的使用風格」方面 - 關注您的品質屬性,並針對您的設計決策提升和抑制的內容。根據你在這裏寫的內容,我認爲還有一些額外的場景需要充實,以便爲現在一種風格創造出一種風格。

相關問題