在這一篇將會看所謂的Service層。爲什麽需要Service層?並且Service層包含了什麽東西,並且在使用上,會給我們帶來什麽便利。
什麽是Service層?
這邊提到的層就是英語所謂的Layer。而Layer就是logical separation of set of functionality (邏輯性的切割一組功能)。舉例來說,和儲存有關的功能就屬於Data Access Layer。
Layer的主要作用和所謂的SoC(Separation of Concern)是一樣的概念,每一個Layer有屬於自己的範圍。
在一般任意的Application裡面,通常都有至少3個Layer。Presentation Layer、Service Layer和Data Access Layer。
Presentation Layer屬於任何和畫面有關的部份。
Service Layer 屬於比較偏商業邏輯層。
Data Access Layer - 任何Application最終都需要儲存資料,而Data Access Layer就是儲存資料的層級。
這三個Layer組起來就是常見所謂的3 Layer Application。
爲什麽需要Service層
在Mvc裡面有個3字口訣:
- Model要重 :表示處理邏輯都在這邊
- Controller要輕:Controller只負責組裝ViewModel的資料和選擇呈現的View
- View要笨:不要有過多的邏輯和運算,這邊只是要呈現資料的template
這邊需要注意到的是Controller。
由於預設的scaffolding產生出一個基本的CRUD的時候會在Controller裡面直接實例一個DbContext
,並且在Action裡面直接和DbContext
溝通,導致和容易就把程式邏輯寫在Action裡面。但是這個對於整個程式的彈性是不好。
因為假設別的地方也需要用到一樣的邏輯去產生對應的ViewModel,寫在Controller裡面,就沒有辦法共用這個邏輯。
而Service層才是適合做這件事情。
3 Layer Application在Mvc裡面的對應
基本上來說,在Mvc和3 Layer Application的對應大概是:
結語
在這一篇瞭解到了透過增加Service層,我們能夠讓一些商業邏輯更容易的被共用,並且整個Application的SoC更加的清楚。
在下一篇將會看到,如何建造Service層,並且Controller如何使用。