在這一篇將會看所謂的Service層。爲什麽需要Service層?並且Service層包含了什麽東西,並且在使用上,會給我們帶來什麽便利。
同步發表於我的部落格:http://alantsai2007.blogspot.com/2014/10/BuildYourOwnApplicationFrameworkOnMvc-13-service-intro.htm
這邊提到的層就是英語所謂的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。
在Mvc裡面有個3字口訣:
這邊需要注意到的是Controller。
由於預設的scaffolding產生出一個基本的CRUD的時候會在Controller裡面直接實例一個DbContext,並且在Action裡面直接和DbContext溝通,導致 和容易就把程式邏輯寫在Action裡面。但是這個對於整個程式的彈性是不好。
因為假設別的地方也需要用到一樣的邏輯去產生對應的ViewModel,寫在Controller裡面,就沒有辦法共用這個邏輯。
而Service層才是適合做這件事情。
基本上來說,在Mvc和3 Layer Application的對應大概是:
3層式架構和Mvc對應
在這一篇瞭解到了透過增加Service層,我們能夠讓一些商業邏輯更容易的被共用,並且整個Application的SoC更加的清楚。
在下一篇將會看到,如何建造Service層,並且Controller如何使用。