[Architect] ABP(現代ASP.NET樣板開發框架) 翻譯


所有翻譯文檔,將上傳word文檔至GitHub

 

本節目錄:

  • 簡介
  • 代碼示例
  • 支持的功能
  • GitHub

 

簡介

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

ABP不僅僅是1個框架,更提供了一個基於DDD和最佳實踐方案

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

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

 

代碼示例

(Application層代碼示例)

public class TaskAppService : ApplicationService, ITaskAppService
{
    private readonly IRepository<Task> _taskRepository;

    public TaskAppService(IRepository<Task> taskRepository)
    {
        _taskRepository = taskRepository;
    }

    [AbpAuthorize(MyPermissions.UpdatingTasks)]
    public async Task UpdateTask(UpdateTaskInput input)
    {
        Logger.Info("Updating a task for input: " + input);

        var task = await _taskRepository.FirstOrDefaultAsync(input.TaskId);
        if (task == null)
        {
            throw new UserFriendlyException(L("CouldNotFoundTheTaskMessage"));
        }

        input.MapTo(task);
    }
}

  

支持的功能

  • Dependency Injection: 繼承了application service的每個類, 都會注冊到容器中 as transient (created per request). 並會自動注入所有依賴.
  • Repository: ABP 會創建1個 default repository for each entity. Default repository 有很多實用的方法. 我們也可以自定義repository的方法.
  • Authorization: ABP 會檢查權限. 如果用戶沒有登錄或者沒有UpdatingTasks權限,在上面的例子中,則會自動阻止執行.通過添加特性標簽實現權限.
  • Validation: ABP 會自動驗證input參數是否為null.並根據(data annotation attributes and custom validation rules)對所有屬性做驗證.如果驗證不通過,會拋出異常.
  • Audit Logging: User, browser, IP address, calling service, method, parameters等信息會自動記錄下
  • Unit Of Work: 在ABP中, 每個application service 方法默認都會開啟事務.在方法開始的時候,自動創建1個數據庫連接和開啟事務,方法沒有異常的執行完會自動提交事務.
  • Exception Handling: 在ABP中,我們幾乎不需要處理異常.ABP會自動記錄,並通過合適的方法返回給客戶端.
  • Logging: 可以通過Logger屬性 write logs.Log4Net 是默認的日志框架,並且可配置替換成其他日志框架.
  • Localization: 當拋異常的時候,可以調用L方法,會自動使用本地化語言配置.
  • Auto Mapping: ABP定義1個MapTo擴展方法,使用AutoMapper方便我們做實體映射.
  • Dynamic Web API Layer: 通過配置,ABP會在運行的時候,自動將application service methods 生成Web API.
  • Dynamic Javascript AJAX Proxy: ABP自動創建javascript proxy methods可以直接調用application service methods.
  • Modularity: 提供了完善的基礎設施層來生成可復用的模塊.
  • Data Filters: 提供自動過濾,如軟刪除,多租戶.
  • Multi Tenancy: 提供單數據庫 多用戶方式的多租戶.
  • Setting Management: 提供了完善的基礎設施層來獲取更改 application, tenant and user level 設置信息.
  • Unit & Integration Testing: 提供了基類簡化單元和集成測試.
  • ...

 

GitHub

(圖片引用tkb至簡)

 

 

說明:

之所以一邊英文,一邊中文是由於某些詞英文表達更好,或者是由於ABP已自帶相關內容鏈接.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM