iT邦幫忙

DAY 13
0

以Asp .Net MVC 5 為基礎,建立自己的程式開發框架系列 第 13

Service層 - 概念篇

在這一篇將會看所謂的Service層。爲什麽需要Service層?並且Service層包含了什麽東西,並且在使用上,會給我們帶來什麽便利。

同步發表於我的部落格:http://alantsai2007.blogspot.com/2014/10/BuildYourOwnApplicationFrameworkOnMvc-13-service-intro.htm

什麽是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字口訣:

  1. Model要
    :表示處理邏輯都在這邊
  2. Controller要
    :Controller只負責組裝ViewModel的資料和選擇呈現的View
  3. View要
    :不要有過多的邏輯和運算,這邊只是要呈現資料的template

這邊需要注意到的是Controller。

由於預設的scaffolding產生出一個基本的CRUD的時候會在Controller裡面直接實例一個DbContext,並且在Action裡面直接和DbContext溝通,導致 和容易就把程式邏輯寫在Action裡面。但是這個對於整個程式的彈性是不好。

因為假設別的地方也需要用到一樣的邏輯去產生對應的ViewModel,寫在Controller裡面,就沒有辦法共用這個邏輯。

而Service層才是適合做這件事情。

3 Layer Application在Mvc裡面的對應

基本上來說,在Mvc和3 Layer Application的對應大概是:

3層式架構和Mvc對應

結語

在這一篇瞭解到了透過增加Service層,我們能夠讓一些商業邏輯更容易的被共用,並且整個Application的SoC更加的清楚。

在下一篇將會看到,如何建造Service層,並且Controller如何使用。


上一篇
BaseController的重要性
下一篇
把目前的CRUD功能抽到Service層
系列文
以Asp .Net MVC 5 為基礎,建立自己的程式開發框架30

尚未有邦友留言

立即登入留言