2011-05-12 47 views
0

我有一個MVP的應用程序,它具有以下層:在MVP(或任何體系結構)中,數據轉換髮生在哪裏?

  • 介紹
  • 服務
  • 業務
  • 數據

我用DTO的介紹和服務層之間。

假設我使用L2S或EF從數據庫中獲取數據。我得到一個dataype可以是一個int或日期時間等,但表示層需要它作爲一個字符串或以某種格式。這發生在什麼地方?

服務是否做到這一點? DTO?主持人?其他地方?

回答

0

有兩種類型的轉換。

將數據庫字段轉換爲有用的數據模型對象(可能在您的業務層中),並將模型數據轉換爲某種表示對象。

前者會將數據庫中的BIT字段轉換爲模型中的Boolean

後者將在演示文稿中將DateTime轉換爲可見字符串。

這兩個轉換髮生在數據提取點和呈現的呈現點。

+0

對,並實現我傾向於使用適配器 - 將域對象轉換爲DTO,反之亦然。然後,我可以使用適配器來例如將日期時間更改爲字符串並返回。 – DerMeister 2011-05-12 12:53:52

0

但表示層需要它作爲 一個字符串或以某種格式。

如果表現層(UI)需要它在一定的格式(否則就不能互操作),那麼你別無選擇,只能將它轉換 - 但轉換是最有可能的UI具體的;在這種情況下,最佳選擇(靈活性/關注點分離)將是構建一個UI之間的特定適配器/代理/外觀(進行轉換),它位於UI之間以及從哪裏獲取數據。

這將適用於您可以控制整個系統的場景 - UI除外。

我讀到你的問題的一個可能的微妙之處不在於UI需要它在一個特定的格式,但它,我們應該說「強烈傾向於」在一個特定的格式;在這種情況下,您可以將適配器/代理構建到UI中。

這將適用於您控制UI但不是應用程序其餘部分的情況。這聽起來不像你的情況那樣 - 但值得一提。

+0

是的,我認爲適配器模式可能是唯一的。我發現這個:_適配器是一個負責以不同格式佈置一些數據所需邏輯的類。例如,適配器會從讀取數據庫表列的整數中提取位,並將它們轉換爲一系列布爾值以適應用戶界面._因爲我打算讓DTO執行信息穿梭,而且我還需要一個轉換到域對象,我想我會像這樣實現它。 – DerMeister 2011-05-12 12:51:36

相關問題