前言
之前關注ABP框架有一陣子了,一直沒有潛下心來實際研究一下。最近想自己建站,以后有自己的功能開發項目,可以在自己的站點上開發,並一步步的完善,所以找個比較好用的框架迫在眉睫,選來選去,決定用ABP框架。用群里的大大門的話來說,掌握了ABP,基本就可以飛天了~
先簡單介紹下吧(以下部分資料來自群里資料,如有侵權,請告知):
ABP是“ASP.NET Boilerplate Project (ASP.NET樣板項目)”的簡稱。
ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程序的新起點,它旨在成為一個通用的WEB應用程序基礎框架和項目模板。
ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了眾多DDD的概念。
ABP的官方網站:http://www.aspnetboilerplate.com
ABP在Github上的開源項目:https://github.com/aspnetboilerplate
APB采用了以下技術:
服務器端:
l ASP.NET MVC 5、Web API 2、C# 5.0
l DDD領域驅動設計 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
l Castle windsor (依賴注入容器)
l Entity Framework 6 \ NHibernate,數據遷移
l Log4Net(日志記錄)
l AutoMapper(實現Dto類與實體類的雙向自動轉換)
客戶端:
l Bootstrap
l Less
l AngularJs
l jQuery
l Modernizr
其他JS庫: jQuery.validate、jQuery.form、jQuery.blockUI、json2
以上只是其中的主要一部分,其實其他項目框架的很多優秀設計,ABP框架也有涉及,所以我采用這個框架,方便以后的功能集成和擴展。
ABP框架已實現了以下特性
l 多語言/本地化支持
l 多租戶支持(每個租戶的數據自動隔離,業務模塊開發者不需要在保存和查詢數時寫相應代碼)
l 軟刪除支持(繼承相應的基類或實現相應接口,會自動實現軟刪除)
l 統一的異常處理(應用層幾乎不需要處理自己寫異常處理代碼)
l 數據有效性驗證(Asp.NET MVC只能做到Action方法的參數驗證,ABP實現了Application層方法的參數有效性驗證)
l 日志記錄(自動記錄程序異常)
l 模塊化開發(每個模塊有獨立的EF DbContext,可單獨指定數據庫)
l Repository倉儲模式(已實現了Entity Framework、NHibernate、MangoDB、內存數據庫)
l Unit Of Work工作單元模式(為應用層和倉儲層的方法自動實現數據庫事務)
l EventBus實現領域事件(Domain Events)
l DLL嵌入資源管理
l 通過Application Services自動創建Web Api層(不需要寫ApiController層了)
l 自動創建Javascript 的代理層來更方便使用Web Api
l 封裝一些Javascript 函數,更方便地使用ajax、消息框、通知組件、忙狀態的遮罩層
l “Zero”的模塊,實現了以下功能:
身份驗證與授權管理(通過ASP.NET Identity實現的)
l 用戶&角色管理
l 系統設置存取管理(系統級、租戶級、用戶級,作用范圍自動管理)
l 審計日志(自動記錄每一次接口的調用者和參數)
下載和還原nuget
我們去官網,找到Free Startup Templates,點擊Create Your Project。
這里我們選擇我們的運行環境,我選擇的是ASP.NET MVC 5.x,默認選擇單頁開發模式和EF,給自己的項目取個名字,然后點擊創建。
官網會自動打包你的項目,下載即可。
我們將項目文件解壓,查看ABP最新的版本是3.1.2,因為用的是.net 4.6.1,所以我用vs 2017打開。
項目組織結構如下:
一共有5個主要的工程,1個測試工程,1個工具類工程。主要介紹下這幾個主要的工程項目(涉及到DDD,領域驅動設計的概念,不清楚請先百度):
MyWebSite.EntityFramework-基礎設施層
MyWebSite.Core-領域層
MyWebSite.Application-應用層
MyWebSite.WebApi,MyWebSite.Web-WEB和展現層
接下來,我們需要用nuget來還原一下相關引用,
新版本有個小問題,還原以后,Abp.AutoMapper 沒有能正常識別,這里刪除,再重新引用packets包里的dll就行。
遷移MySQL
我本地用的數據庫是mysql,如果不需要遷移數據庫的,請跳過這一段。
如果沒有MySQL驅動,先安裝驅動:MySQL Connector
nuget引入MySql.Data.Entity,這里最新版本跟EF有沖突,所以我降了一個版本,用的是MySql.Data.Entity 6.9.10
EF遷移配置里增加MySQL的生成器
最后,工具--程序包管理器控制台選中MyWebSite.EntityFramework
運行Update-Database,完成數據庫的生成和初始化:
啟動項目
好的,我們啟動項目試試:
網站已經正常運行起來,我們后面將逐步研究解析框架牛逼的功能,並完善我們的網站的功能。今天只是作了一個簡單介紹,希望大家更多關注ABP這個開源項目,希望有更多的朋友能去閱讀源代碼,然后歡迎跟我一起討論。
資源