基礎結構解釋
- UI-表現層-與控制器打交道(UI向Controller 傳遞數據時使用DTO(數據傳輸對象))
- Service-應用服務層
- Domain 領域對象
- DTO 數據傳輸對象,一般只包含基礎的Get,Set功能,也會包含一些數據驗證,如必填項,大小,自定義規則等。
一個完整的業務是通過領域實體(對象)domain建立的,而DTO是根據UI的需求來設計的。
-
比如:Customer領域對象可能會包含一些諸如FirstName, LastName, Email, Address等信息。但如果UI上不打算顯示Address的信息,那么CustomerDTO中也無需包含這個 Address的數據。
-
比如:User表設計字段如下:Id,UserName,Password,RegisterTime。注冊時,那這個接口的參數應該只有UserName,Password,因為RegisterTime是后台賦值的,Id是數據庫自動生成的。即設計一個RegisterDto,只包含UserName,Password二個字段,作為注冊接口的參數。不然,那二個參數對於開發前端的人來說是無意義的,因為傳遞也沒有效果。所以不應該暴露給前端使用。
以上即領域對象來實現業務,DTO只注重數據。
UI->Controller(通過 DTO完成數據傳輸,表單驗證)->Service(操作Domain,完成業務服務)。
DTO->Domain,在C#中可使用一些類庫,快速將二個類相互轉換。良好的設計什么要使用DTO,集成 AutoMapper