2010-10-10 82 views
3

我試圖在我的POS系統中實現模塊化以允許第三方執行某種模塊/插件/附加模塊。我已經開始實現一個SPI和一個API,我的問題是:訪問數據庫上的數據必須這樣,否則我需要提供一個服務?模塊化系統架構

在這一點上,你可能已經注意到,我在這幾年的經驗,所以這個話題的任何建議是很好

編輯:阿多一點信息。我的系統有一個用戶系統,通過理論檢查憑據來訪問系統的任何部分,mysql數據庫,都是用Java編寫的。我的模塊安全地需要訪問數據庫中的某些表格,訪問主菜單,我不知道我還能說什麼,但我的問題更多地是關於如何api需要。

在此先感謝

PS很抱歉,如果我的英語不好

奧克塔維奧·魯伊斯

+0

實現一個方便您和第三方的界面。我們不知道沒有進一步的信息。 – 2010-10-10 14:18:11

回答

2

一般而言,軟件系統(通常)分成「層」(如用戶界面(UI),業務邏輯(BL),數據訪問層(DAL)等)。這些圖層還提供了自然的地方進行整合。所以......

的訪問數據的數據庫具有 是通過這種方式或者我需要提供 服務?

從你說過的話我會認爲其他系統應該通過服務或API進行集成。直接訪問數據庫意味着他們將旁觀適用於他​​們想要執行的交互的業務邏輯。在你的具體情況下,這可能也意味着他們會採取安全措施。

模塊化

有兩個部分,以這樣的:

  • 建築風格和設計模式,其有助於模塊化系統(specifcially關於維護和可擴展性);這些都是技術不可知的(不管你使用的是什麼技術)。
  • 實現和技術特定的框架和技術。

設計模式

維基百科是一個偉大的地方得到的引入模式和StackOverflow上有很多他們身邊偉大的內容太多。

我開始用getitng來處理所謂的SOLID,儘管它很有用,我認爲你會發現S,O,I和D區域的最大價值。就模塊性而言,依賴性倒置(「D」)將與您特別相關。通過界面創建「合同」,您可以創建其他各方可以構建的內容 - 例如:他們可以將您的「默認」實施與他們所做的一樣。

特定技術

我不能爲Java專門講(雖然它應該很容易爲你find out),但淨有專門爲這種事情,比如建幾個框架: Managed Extensibility Framework(MEF)。

問題是,大多數技術堆棧將爲構建模塊化系統提供各種框架,工具和方法。

+0

我正在研究你的答案,我非常感謝你的高質量回應,並且只是我想要的迴應類型。 – ZooMMX 2010-10-11 14:33:16

+0

目前系統通常是一大塊泥土,但是一些部分使用控制反轉來實現戰略代理模式和幾個類。我關心的是每個部分的重構部分,重構像我這樣的項目是一個好主意嗎? (200班,4個發展年,生產18個月)。我想修復它以發佈它的開源代碼。 – ZooMMX 2010-10-11 14:45:26

+0

一次重構一部分就沒有問題。我建議列出你想要做的所有優化因素 - 優先考慮它們的價值和努力,並且確定依賴關係;這應該可以幫助你制定出重構的最佳順序:) – 2010-10-11 21:28:52