WebAPI

【Web API 04-2】Business Service Layer

江崑成 2016/12/04 17:29:30
833







主題

Web API 04-2Business 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.InterfaceWebApiDb.RepositoryWebApiDb.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 FrameworkNuGet Package Repository.Pattern.Ef6


6. Service Project

Step 1. 透過 NuGet 安裝下列 PackagesService.PatternRepository.Pattern.Ef6


Step 2. 將 WebApiDb.EntitiesWebApiDb.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

江崑成