ABP總體介紹

来源:http://www.cnblogs.com/aidanzsj/archive/2016/05/17/5501653.html
-Advertisement-
Play Games

ABP是“ASP.NET Boilerplate Project (ASP.NET樣板項目)”的簡稱。 ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程式的新起點,它旨在成為一個通用的WEB應用程式框架和項目模板。 ASP.NET Boilerplate 基於DD ...


ABP是“ASP.NET Boilerplate Project (ASP.NET樣板項目)”的簡稱。

ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程式的新起點,它旨在成為一個通用的WEB應用程式框架和項目模板。

ASP.NET Boilerplate 基於DDD的經典分層架構思想,實現了眾多DDD的概念(但沒有實現所有DDD的概念)。

ABP的官方網站http://www.aspnetboilerplate.com

ABP在Github上的開源項目https://github.com/aspnetboilerplate

ABP框架於2014年5月4日首次在Github開源,截止到2015年5月25日,總共進行了1271次代碼提交,49次版本發佈,現在的版本號是0.6.1.1。

 

 

ASP.NET Boilerplate採用了以下技術:

伺服器端:

  • ASP.NET MVC 5、Web API 2、C# 5.0
  • DDD領域驅動設計 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
  • Castle windsor (依賴註入容器)
  • Entity Framework 6 \ NHibernate,數據遷移
  • Log4Net(日誌記錄)
  • AutoMapper(實現Dto類與實體類的雙向自動轉換)

客戶端:

  • Bootstrap 
  • Less
  • AngularJs
  • jQuery
  • Modernizr
  • 其他JS庫: jQuery.validate、jQuery.form、jQuery.blockUI、json2

ABP框架已實現了以下特性:

  • 多語言/本地化支持
  • 多租戶支持(每個租戶的數據自動隔離,業務模塊開發者不需要在保存和查詢數據時寫相應代碼)
  • 軟刪除支持(繼承相應的基類或實現相應介面,會自動實現軟刪除)
  • 統一的異常處理(應用層幾乎不需要處理自己寫異常處理代碼)
  • 數據有效性驗證(Asp.NET MVC只能做到Action方法的參數驗證,ABP實現了Application層方法的參數有效性驗證)
  • 日誌記錄(自動記錄程式異常)
  • 模塊化開發(每個模塊有獨立的EF DbContext,可單獨指定資料庫)
  • Repository倉儲模式(已實現了Entity Framework、NHibernate、MangoDB、記憶體資料庫)
  • Unit Of Work工作單元模式(為應用層和倉儲層的方法自動實現資料庫事務)
  • EventBus實現領域事件(Domain Events)
  • DLL嵌入資源管理
  • 通過Application Services自動創建Web Api層(不需要寫ApiController層了)
  • 自動創建Javascript 的代理層來更方便使用Web Api
  • 封裝一些Javascript 函數,更方便地使用ajax、消息框、通知組件、忙狀態的遮罩層等等

 

除ABP框架項目以外,還開發了名叫“Zero”的模塊,實現了以下功能:

  • 身份驗證與授權管理(通過ASP.NET Identity實現的)
  • 用戶&角色管理
  • 系統設置存取管理(系統級、租戶級、用戶級,作用範圍自動管理)
  • 審計日誌(自動記錄每一次介面的調用者和參數)

 

我在其他項目中看到的很多優秀設計,在ABP項目中也已存在,而且可能實現得更好。ABP框架的代碼,都通過xUnit進行了單元測試。作者一直在用ABP框架開發他們的實際項目,從Github和他官方論壇上的信息可以看到,有很多國外的開發者在將ABP用作生產項目的基礎框架。如果需要直接使用ABP組件,可以通過Nuget安裝(在VS的Nuget包管理界面搜索Abp)。

為了更好地將ABP適用於自己的項目,我對ABP的源碼做了一些修改,而沒有直接使用ABP組件。

我的前篇文章中有介紹:新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式(續1)


我希望更多國內的架構師能關註到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目可以發展得更好。
今天只是作了一個大概介紹,希望有更多的朋友能去閱讀源代碼,然後參與討論。


ABP適用的場景:中小規模WEB應用開發。(處理高併發並不是ABP的強項。需要非常高併發的DDD框架,建議去研究netfocus的ENode。)

原文地址:http://www.cnblogs.com/Leo_wl/p/4537392.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • session的使用方法詳解 Session是什麼呢?簡單來說就是伺服器給客戶端的一個編號。當一臺WWW伺服器運行時,可能有若幹個用戶瀏覽正在運正在這台伺服器上的網站。當每個用戶首次與這台WWW伺服器建立連接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其分配一個SessionID ...
  • 在早期學習c#的過程中,經常遇到這樣的語句: public string StudentName { get{return stuName;} set{stuName=value;} } 當時也不是很明白為什麼要這樣?學深了c#後,又沒法對其做一個總結。今天看了《Visual c#.net程式設計教 ...
  • 只能輸入數字onkeyup='this.value=this.value.replace(/\D/gi,"")'限制文本框只能輸入正數,小數onkeyup="value=value.replace(/[^\d.]/g,'')" 只能輸入正數 負數 小數onkeyup="value=value.rep ...
  • ![圖片來自網路/圖文無關][0] 前言 今天接到領導佈置的一個任務,是之前同事負責的項目。離職了,現在客戶有些地方需要修改,由於我之前參與過,就落在我的頭上了。 然後我就把代碼弄了過來,打開發現其中需要用到水晶報表。(我覺得不好用,不想占用多餘的磁碟空間,就沒有安裝) 想想算了,大不了重新添加一下 ...
  • 一個列表頁面不止是查詢,它也包含了很多業務上功能的實現,這些業務功能的實現的邏輯我稱之為動作。如觸發單擊按鈕刪除數據,更改業務表數據,調用webService,調用WCF介面,彈出新窗體新增、修改、查看數據,根據列表數據顯示行的顏色等等這些我都稱為動作。動作的實現有兩類:第一類編碼實現,第二類利用通 ...
  • 1.項目右鍵-添加 新建項目 重新生成: 引用-新建引用 引入命名空間: ...
  • controller: ,view: 效果圖: ...
  • 資料庫設計 sql語句: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...