【Web API 04-2】Business Service Layer
主題: |
【Web API 04-2】Business Service Layer |
文章簡介: |
說明 Web API 分層架構中的Business Service Layer。 |
作者: |
江崑成(Vito) |
版本/產出日期: |
V1.0/2016.12.02 |
1. 前言
在 #4-1 準備好 Data Access Layer 後,接下來要準備的 Business Service Layer 共會有三個類別庫專案(可彈性調整),每個專案擁有各自的職責,我們一樣將 URF 給一併整合進去。
在此先簡單說明一下各專案包含的項目及用途,但本系列文章的重點不在這邊,所以不會多加著墨,也不會用到全部的內容。
粗體字體:表示會有實體的資料夾。
☆ 重要:Business Service Layer 是否要分為那麼多專案,以及各專案的職責都是可以被討論的,並沒有強制一定要如何切割。所謂的架構,通常會因應自己、團隊成員甚至是專案的規模,來調整出適合的架構,而沒有所謂最好的架構。
2. 環境準備
• Visual Studio 2015
• .Net Framework 4.6
3. Business Service Layer(商業邏輯層)
我們先建立下列三個 Class Library 專案,分別命名為 WebApiDb.Interface、WebApiDb.Repository、WebApiDb.Service,並刪除專案下預設的 Class1.cs,建立完成後,我們可以得到下面的專案結構。
另外,因如何安裝 NuGet Packages 在 Web API # 4-1 #### Entities Project 整合 URF 已有詳細的步驟,本篇就不再重複說明,僅會說明應安裝的 NuGet Package 有那些。
4. Interface Project
Step 1. 透過 NuGet 安裝下列 Packages:Service.Pattern、Repository.Pattern.Ef6,其他相關的 Package 會一併被安裝。
若套件有出現 Update,也都可以進行更新,基本上不會有問題 XD。
Step 2. 將 WebApiDb.Entities 加入專案參考當中。
Step 3. 新增 IProductService.cs,程式碼內容如下:
using System.Collections.Generic;
using Service.Pattern;
using WebApiDb.Entities;
namespace WebApiDb.Interface
{
public interface IProductService : IService<Product>
{
}
}
這樣我們就完成 iProductService 的介面定義,至於有什麼用以及怎麼用,因為不在本次範圍,就不再多說了。
5. Repository Project
其實 Repository 的擴充,在本系列的情境下我們暫時不會用到,所以可以跳過。但也可以一併安裝完 URF Framework,NuGet Package 為 Repository.Pattern.Ef6。
6. Service Project
Step 1. 透過 NuGet 安裝下列 Packages:Service.Pattern、Repository.Pattern.Ef6。
Step 2. 將 WebApiDb.Entities、WebApiDb.Interface 加入專案參考當中。
Step 3. 新增 ProductService.cs,程式碼內容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Repository.Pattern.Repositories;
using Service.Pattern;
using WebApiDb.Entities;
using WebApiDb.Interface;
namespace WebApiDb.Service
{
public class ProductService : Service<Product>, IProductService
{
public ProductService(IRepositoryAsync<Product> repository)
: base(repository)
{
}
}
}
這樣我們就完成 IProductService 介面的實作。
7. 總結
在整合 Entity Framework 及 URF 後,看似沒有寫什麼看起來可以動的 Method,但實際上已包含了基本的 CRUD,若想要先進行瞭解,一樣可以先參考作者的說明。
URF - Unit of Work & (extensible/generic) Repositories Framework
專案全貌:
8. 參考來源
文章內容的敘述如有錯誤及觀念不正確,請不吝嗇指教,如有侵權內容也請您與我反應。感謝您~
URF - Unit of Work & (extensible/generic) Repositories Framework