ABP(現代ASP.NET樣板開發框架)系列之五、ABP啓動配置

點這裏進入ABP系列文章總目錄html

 

基於DDD的現代ASP.NET開發框架--ABP系列之五、ABP啓動配置
git

 

ABP是「ASP.NET Boilerplate Project (ASP.NET樣板項目)」的簡稱。github

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

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

 


 
本文由 東莞-天道 提供翻譯
 ide

 

譯者注:在看這一節的內容以前,建議你們先下載module-zero這個例子代碼,這個例子就是一個用戶和角色的模塊,而且使用的實例。配置在每個應用中均可能會有,好比你有一個網站,你要獲取網站的一些自定義基本參數,好比logo位置,網站名稱,上傳文件大小等等。模塊化的配置方式和咱們以前的作法確定是不一樣的,你們要注意。以前無非就是一個方法getconfig從對應的表取數據,而後使用。模塊化

 

在應用啓動以前,abp框架提供了模塊基本的配置和方法,你們參照下面這個例子就能夠了。 網站

配置ABP

配置是經過在本身模塊的PreInitialize方法中來實現的(對於module的PreInitialize方法,在上一篇中已經向你們作了簡單的說明)spa

代碼示例以下:.net

public class SimpleTaskSystemModule : AbpModule
{
    public override void PreInitialize()
    {
        //在你的應用中添加語言包,這個是英語和做者的土耳其語。
        Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flag-england", true));
        Configuration.Localization.Languages.Add(new LanguageInfo("tr", "Türkçe", "famfamfam-flag-tr"));

        Configuration.Localization.Sources.Add(
            new XmlLocalizationSource(
                "SimpleTaskSystem",
                HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem")
                )
            );

        //配置導航和菜單
        Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
    }

    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
    }
}

 

和orchard相似,abp框架一開始就被設計成模塊化的,不一樣的模塊能夠經過abp框架來進行配置。舉個例子吧,不一樣的模塊均可以添加導航,經過導航添加菜單項到本身定義的主菜單,具體的細節你們能夠參照:

 

配置模塊

和.net框架原生的啓動配置相比較,abp有哪些不同呢?abp框架的模塊能夠經過IAbpModuleConfigurations接口進行個性化的擴展,這樣的話,模塊配置更加簡單、方便。
示例代碼以下:

...
using Abp.Web.Configuration;
...
public override void PreInitialize() 
{
    Configuration.Modules.AbpWeb().SendAllExceptionsToClients = true;
}
...

在上面這個例子中,咱們經過配置AbpWeb模塊,發送異常到客戶端。固然了,不是每個模塊都須要這種配置,一般狀況下咱們須要,是當一個模塊須要在多個不一樣的應用中重複使用,咱們才進行這樣的配置。

 

爲一個模塊建立配置

以下代碼,假如咱們有一個命名爲MyModule的模塊,而且這各模塊有一些本身的配置。那麼咱們首先要建立一些類,這些類定義爲屬性(譯者注:屬性有自動的get和set訪問器。),表明了不一樣的配置。

public class MyModuleConfig
{
    public bool SampleConfig1 { get; set; }

    public string SampleConfig2 { get; set; }
}

接下來,咱們經過依賴注入,註冊這個類。

IocManager.Register<MyModuleConfig>(); //譯者注:在IocManager中註冊了一個類,換句話說,咱們經過IocManager能夠獲得這個類MyModuleConfig的實例。至於IOC的原理這裏就不在詳細說了,總之,就是能夠獲得一個類的實例。

最後,咱們經過建立一個擴展的方法IModuleConfigurations來獲得配置的引用。以下代碼:

譯者注:模塊配置是一個靜態類,由於咱們須要重複使用它。靜態方法Mymodule返回的是一個配置接口,參數是ImoduleConfigurations接口。

如今,在其餘模塊中也能夠配置咱們自定義的這個MyModule模塊了。

Configuration.Modules.MyModule().SampleConfig1 = false;
Configuration.Modules.MyModule().SampleConfig2 = "test";

 

在某種意義上,MyModule須要這些配置,你能注射MyModuleConfig而且可使用這些值。

public class MyService : ITransientDependency
{
    private readonly MyModuleConfig _configuration;

    public MyService(MyModuleConfig configuration)
    {
        _configuration = configuration;
    }

    
    public void DoIt()
    {
        if (_configuration.SampleConfig2 == "test")
        {
            //...
        }
    }
}

這意味着,在abp框架的系統中,全部的模塊均可以集中配置。

  


 

但願更多國內的架構師能關注到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目能夠發展得更好。

歡迎加ABP架構設計交流QQ羣:134710707

ABP架構設計交流羣

 

點這裏進入ABP系列文章總目錄

相關文章
相關標籤/搜索