以前關注ABP框架有一陣子了,一直沒有潛下心來實際研究一下。最近想本身建站,之後有本身的功能開發項目,能夠在本身的站點上開發,並一步步的完善,因此找個比較好用的框架迫在眉睫,選來選去,決定用ABP框架。用羣裏的大大門的話來講,掌握了ABP,基本就能夠飛天了~mysql
先簡單介紹下吧(如下部分資料來自羣裏資料,若有侵權,請告知):git
ABP是「ASP.NET Boilerplate Project (ASP.NET樣板項目)」的簡稱。github
ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程序的新起點,它旨在成爲一個通用的WEB應用程序基礎框架和項目模板。ajax
ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了衆多DDD的概念。sql
ABP的官方網站:http://www.aspnetboilerplate.com數據庫
ABP在Github上的開源項目:https://github.com/aspnetboilerplatejson
服務器端:服務器
l ASP.NET MVC 五、Web API 二、C# 5.0架構
l DDD領域驅動設計 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)app
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框架也有涉及,因此我採用這個框架,方便之後的功能集成和擴展。
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 審計日誌(自動記錄每一次接口的調用者和參數)
咱們去官網,找到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 Connector
nuget引入MySql.Data.Entity,這裏最新版本跟EF有衝突,因此我降了一個版本,用的是MySql.Data.Entity 6.9.10
EF遷移配置裏增長MySQL的生成器
最後,工具--程序包管理器控制檯選中MyWebSite.EntityFramework
運行Update-Database,完成數據庫的生成和初始化:
啓動項目
好的,咱們啓動項目試試:
網站已經正常運行起來,咱們後面將逐步研究解析框架牛逼的功能,並完善咱們的網站的功能。今天只是做了一個簡單介紹,但願你們更多關注ABP這個開源項目,但願有更多的朋友能去閱讀源代碼,而後歡迎跟我一塊兒討論。