2012-02-19 25 views
11

什麼是以數據爲中心的應用程序?與面向對象的應用程序模型有什麼不同?以數據爲中心和麪向對象的應用程序模型有什麼區別?

+0

你能提供一些你的問題的背景嗎? – 2012-02-19 05:29:49

+0

[1]:http://en.wikipedia.org/wiki/Database-centric_architecture [2]:http://en.wikipedia.org/wiki/Object-oriented_programming – 2012-02-19 05:38:27

+0

我在讀一本關於分佈式體系結構的書以及如何製作應用程序框架。有一個關於以數據爲中心和oo應用程序模型的討論,但我不能理解它。然後我谷歌它,但我無法找到關於這個比較的很多信息。 – 2012-02-19 05:41:25

回答

13

這兩個概念有點正交,Data Centric Application是數據庫扮演關鍵角色的角色,其中數據庫中的屬性可能影響在您的應用程序中運行的代碼路徑,以及代碼更通用以及所有/大多數業務邏輯通過數據庫關係和約束來定義。 OOP可以用來創建一個以數據爲中心的應用程序。

一些大的multi-tier體系結構,人們認爲當他們說OOP體系結構在代碼中實現業務邏輯並將數據存儲在數據庫中時。然而,認爲面向對象的設計必然是一個大型的業務邏輯纏身系統是錯誤的。

假設你必須在兩個系統之間實現消息傳遞。一種方式(儘管是一種壞方法)是讓每個系統都將消息寫入數據庫,並且每隔一段時間從數據庫中讀取其他系統以拾取消息。這將是一種以數據爲中心的方法,因爲除了讀取和寫入數據之外,所需的代碼非常少。

可以通過讓系統彼此打開套接字連接並直接發送消息來實現相同的系統。以這種方式,有更多的代碼和更少的數據庫訪問。這是非數據中心的方法。其中任何一個都可以使用OOP概念實現。

我的工作的另一個例子是我們實現遊戲的服務器,一種類型的服務器處理多玩家遊戲,因此用戶按下按鈕並且飛船在其他玩家處發射導彈。該服務器不是基於事件的數據中心。另一臺服務器存儲用戶高分,朋友列表等,這個服務器是存儲分數和列表的數據庫的薄包裝。

+0

感謝您的回答。你能否提供更多的信息,你所說的是「如果你的對象是通用的,那麼你的應用程序仍然是以數據爲中心的」? – 2012-02-19 05:48:58

+0

編輯了一些示例 – 2012-02-19 09:59:25

8

以數據爲中心的設計是應用程序行爲被數據封裝的設計。一個簡單的例子。考慮以下OOP類別:

class Car { 
    void move(x, y); 
private: 
    int x, y; 
} 

這是一輛汽車的OOP表示。調用'移動'方法將觸發汽車開始移動。換句話說,通過調用類方法觸發任何副作用

下面是同一類,但數據中心:

class Car { 
    int x, y; 
} 

爲了得到這輛車的移動,我會「只是」改變x和y的值。在大多數編程語言中,更改成員不允許執行邏輯,這就是數據中心通常需要框架的原因。

在這樣的框架中,邏輯運行在CRUD的C,U和D上。這種框架將提供適當設施在任何這些事件,以使代碼插入,例如:

  • DBMS觸發
  • OMG DDS waitsets /聽衆(DDS是數據中心的消息收發標準)
  • CORTO觀察員(CORTO是數據中心的應用程序框架)

數據中心的設計具有很多影響。例如,由於應用程序狀態實際上由其數據表示,因此可以自動保留應用程序。一個寫得很好的以數據爲中心的應用程序可以被存儲,停止並從數據庫中恢復,並繼續像從未消失。

以數據爲中心的設計與傳統的3層Web架構非常匹配。 Web應用程序通常由後端數據庫的內容驅動。這就是爲什麼當你關閉並重新打開一個動態網頁時,它仍然看起來一樣(只要數據沒有改變)。

相關問題