作者:小龍女先生
出處:https://www.cnblogs.com/cqhaibin/p/12410365.html
假定一個場景,開始做開發的你,領導走到你的面前說道:“小夥子,看了簡歷和最近的工作表現,很不錯,現在交給一個任務,開發一個簡單的CMS後端接口吧,前端有人配合你”,當時你內心讀白:“CMS什麼東西,還好我可以百度,但我要在哪個項目上開搞啊”,這時的領導又說道:“項目你自己建立,然後上傳git就行了”,這時的你是否已經石化,本篇文章就爲您提供一個快速建立後端開發的模板,作者自己總結出品,如有不妥,指正即可。
模板代碼下載:https://github.com/cqhaibin/ApiTemplate.git
目標
由於搭建的只是後端開發模板,主需要滿足基本要求即可。
框架結構簡單
數據庫支持:Mssql, Mysql
構架易於上手
支持良好的業務擴展
是一套基礎開發模板
技術選型
開發語言:c#
運行時 .net Framework4.5
IoC:Autofac、Autofac.WebApi2
Dto:AutoMapper
序列化:Newtonsoft.Json
Orm:FreeSql
Api:Aspnet.WebApi
數據庫:首先MSSQL、次先Mysql
緩存:基於List或Dictionary實現單機內存級緩存
架構分層
數據庫訪問層
Freesql實體定義,也就是我們常說的是數據庫實體
提供dbContext上下文的方式訪問
複雜的sql操作接口定義及實現,如:多表查詢、存儲過程執行等
業務層
業務層拆分兩個項目,BAccurate只做業務領域實體、值對象、系統配置對象、系統Model對象、AppService的定義等定義;BAccurate.Implement領域業務的實現
BAccurate.Implement可以依賴BAccurate.Repository.Fresql層,實現領域實體的數據持久化
Feesql實體定義未放在BAccurate層(業務規範項目),是爲了防止領域實體與數據庫實體混淆
BAccurate項目可以被其他所有項目使用
服務層
AppService.Implement和Webapi我都劃分在服務層,其中webapi是一個貧血項目,只是把AppService做到WebApi接口化
AppService的接口和Model定義,都放到了BAccurate(業務規範項目)中,方便後期對AppService的重寫和擴展
UI層
前端開發項目
接口規範
接口以類resetful api規範返回
返回結果規則一致
接口名稱前綴動詞:Get:表示查詢;Post:提交數據(添加/修改);Delete:移除數據
接口命名規則:接口名前綴+業務名稱;以大駝峯命名
接口要進行統一管理
部署規範
IIS託管部署
前端靜態資源,託管到wwwroot目錄