Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[iThome 第七屆鐵人賽 13] Service層 - 概念篇

在這一篇將會看所謂的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字口訣:

  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的對應大概是:

3Vjfc+IsFP1reOxODDHGR7V292E70xln9scjJajMYnAI/upf34u5mETar9avbrt9ceRALnDO4XITQkeL7VfDlvNbnQtF4ijfEnpN4jhLevDrgF0FxGlUATMj8wrq1MBEPggE/bCVzEXZGmi1VlYu2yDXRSG4bWFTrdpTLNnMh6+BCWcqRH/K3M5xD3Fa49+EnM39NJ20X/WUdudj5GLKVspe7SHoc90L5mPhrrYRspFggB0C2FyyorWiB60XLcCIsqYKdytxWTjHvTa5MC1IyeJPkzY6BuWM1vCg+7fYjoRy6nll4vt+Gk/70263y7Mk5VdVnJtThx/4NKLAxf3fkMjomqkVbv8OuIDwzEpdQM93toNdH6ti9KrIhQvaIXS4mUsrJkvGXe8GfAvYWhgrwQoDJWeOfKsdOpVKjbTSFY80TYfxDax1ONWFRbN2shN2iUy4SQQejVoBODtCL4Q1O2eNo3OC56afVM1N7Usa4ZB505MeZCj07BC6phn+INMnsk4D1n9IsQGEjLukH5MMQkYj4MRopc6g/wIEUtomsBN3AwY7vScY9MS/KYGoXoPAiTBrCQx8WsfGFKd5H8ui2g3GA4pFkQ+M0RtoccXKUvKAJzqEQTdA6V6Hk1kTeeuiCTkzQkHCWrcz+FP7x0fvtIQ5a3N743pz+/TgQ5R6ZbjAp5r59YVAB9F8IMvMTNgg0F6Ow37OUwhv1YZCWD18hOSBbvG0eJreJXlgCdUg6ppZBsiAc1GWnzeF0N673nq4x0+aQrIjro9P/skp5DiQF+0vpBAslz9mCmnTkkShly+WQpIkTaeM34ONWBSJCKvs11sZCDG7XwBFX3pd3/6NPIqttM0+aLoueJUZliC69eEKXcAcFYYHwY0JjsWR5U9R5M2PRdJ9wc2nHosg0OVu1kBtb9ZXq/28oP9thH9ByaC0OVfJoNi6oJLhixcg/rqPBsulgusb33yb72K3a07GPdIfkCxx+DAi2TUZpyTrkSz8aAE5DcQZMiwDOGjlPh0E9cFC5rl7Jrji9m2M91yqPM8FvjQ4FiEsyKjHmtnUZ9hXZFNo1t9EKhHrT1t0/Ag=
3層式架構和Mvc對應

結語

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

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


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus