選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
1 分鐘閱讀時間 (296 個字)

[Asp .Net MVC] ViewMode vs DTO(Data Transfer Object)

cea41753a318aceac2efb91dadb4f88e
View Model 與 DTO 到底有何不同的時候,想用這篇文章解釋一下差異。

簡單來說View Model 是一個 POCO 物件,一個POCO 物件可以包含以下行為:

1.保留狀態(State)。

2.具有行為(資料驗證...)

最重要的就是具有行為,我們在做前端畫面時,很常透過Data Annotation 的方式,來驗證前端傳來的資料是否符合我們的定義,



_asp__net_mvc__viewmode_vs_dto_data_transfer_object____harry_s_tech_world_-_%e9%bb%9e%e9%83%a8%e8%90%bd

各位可以看到上面這個View Model ,UsrId 一定要必填、Email 格式一定要正確、申請日期預設帶今日,這些都是我們定義好的前端行為。

那DTO 又是什麼呢?

DTO(Data Trasfer Object)我認為翻成「資料乘載物件」較為合適,即這個物件只是一條船,這條船只負責幫我把貨物送到我們想要的地點,

但不會幫我們確認貨物是否違法、有無過期(因為這些工作是POCO 物件的工作)。




當然,有時我們沒有在View Model 做一些行為時,這時候View Model 就會跟 DTO 長得一模一樣,

這也是為何很多新人無法理解為何要將這兩樣東西區分開來(因為還要多維護好幾個檔案);

另外一個要區分的原因,是因為我們並不想把這些行為帶到商業邏輯層或是資料存取層來,

因為View 隨時都有可能變動,一變動我們一定會異動Model ,異動Model 近一步就會影響到我們的商業邏輯層跟資料存取層,這樣整個程式架構的耦合性就會變得很高!

另外一些分開的好處可以參考「[Asp .Net MVC] 淺談MVC系統架構

本文也發表於Harry’s Tech World
對目前大學資訊教育課程感想
[C#] File.Create 鎖定檔案

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/06, 週一

Captcha 圖像