實體對象辨析(POCO、Entity、Model、DTO、BO、DO、PO)

POCO (Plain Old CLR Object)源自Java EE編程領域的POJO概念(2000年由Martin Fowler提出)和POTS (Plain Old Telephone Service)概念。POCO被應用於面向.NET框架的CLR (Common Language Runtime, 公共語言運行時)。但是POCO本身不依賴於外部框架,它是PLAIN的。

 

POCO的優點:

  • 簡單數據存儲機制,簡化層間數據傳遞和序列化。
  • 可用於依賴注入和倉庫(Repository)模式。
  • 減少對其它邏輯層的依賴和複雜性,實現鬆耦合(較高的邏輯層需要考慮POCO,POCO不關心其它任何事物)。
  • 通過簡化實現可測試性。

POCO是計算機領域限定名詞。

 

Entity是實體,代表以自身存在,實際的或潛在的、具體的或抽象的、物理的或非物理的。Entity是非計算機領域限定名詞,所以有時會有Data Entity或POCO Entity。

 

Model是數學邏輯名詞,包括有限操作的集合以及定義於其上的關係,主要用於分析、設計過程。

 

DTO (Data Transfer object)是數據傳輸實體,用於在進程間傳遞數據。其概念從進程間通訊到本地與遠程接口(如Web服務)的通訊,每次調用都是很消耗資源和性能的操作。

 

DTO與BO或者DAO的區別是DTO沒有任何行爲(方法),只是存儲和提供它所擁有數據的查詢(訪問器和修改器)。DTO是簡單對象,不包含任何需要測試的業務邏輯。

 

DTO模式經常被錯誤地用於遠程接口調用以外的場景,實際上是錯誤的,這意味着進程內層間調用使用的對象是不應該被稱爲DTO的。

 

應用中的所有實體(Entity)都是業務對象(Business Object),但並不是所有業務對象都是實體。業務對象(Business Object)包括包含方法的實體對象(Entity Object)和不包含方法的值對象(Value Object)。

 

業務實體(Business Entity)封裝了高階邏輯需要的業務邏輯或業務規則。它使用實體字段進行裁決或者在必要時修改並進行實體的序列化。

 

領域對象/實體/類型(Domain Object/Entity/Class)包含複雜的業務邏輯。描述了多條件下不同的行爲邏輯和業務規則。領域實體與業務實體無大致區別,談到領域實體多數情況是因其複雜的邏輯和規則。

 

持久化對象/實體/類型(Persistent Object/Entity/Class)主要是爲了將數據保存到內存或數據庫中的載體類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章