[Architect]ABP(現代ASP.NETテンプレート開発フレームワーク)(4)起動構成
3687 ワード
このセクションのディレクトリ ABP を配置する. Module の構成モジュールの構成 を作成する.
ABPはモジュール起動時に構成機能を提供する.
モジュールのPreInitializeメソッドで構成する.次のようになります.
ABPはモジュール化に基づいて設計する.異なるモジュールでABPを構成することができる.例えば、異なるモジュールにおいてnavigation providerによりメインメニューに独立したメニュー項目が提供する.(See localization and navigation documents for details)
システム内蔵の構成に加える、1つのモジュールでIAbpModuleConfigurationsがモジュールに構成点を提供することも可能である.例:
この例では、AppWeb moduleがクライアントにすべての例外を送信ように構成する.
各モジュールが構成を定義する必要はありません.通常、モジュールが異なるアプリケーションで再利用する場合、起動時に構成することができる.
MyModuleというmoduleがあり、いくつかの構成プロパティがあるとします.まず、これらのプロパティのクラスを作成します.
そしてMyModuleのPreInitializeメソッドにこのクラスを登録します.(これで注入できます)
最後に、IModuleConfigurationsの拡張方法を作成してMyModuleConfigを取得します.
これにより、他のモジュールは起動時にこのモジュールを構成することができる.(MyModuleが必要なPreInitializeメソッドで)
時々、MyModuleはこの構成を使用する必要があります.注入して使用することができます.例:
これにより、ABPシステムにおいてモジュール構成を一元的に作成することができる.
ABPはモジュール起動時に構成機能を提供する.
ABPの設定
モジュールのPreInitializeメソッドで構成する.次のようになります.
public class SimpleTaskSystemModule : AbpModule
{
public override void PreInitialize()
{
//Add languages for your application
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"));
//Add a localization source
Configuration.Localization.Sources.Add(
new XmlLocalizationSource(
"SimpleTaskSystem",
HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem")
)
);
//Configure navigation/menu
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
}
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}
ABPはモジュール化に基づいて設計する.異なるモジュールでABPを構成することができる.例えば、異なるモジュールにおいてnavigation providerによりメインメニューに独立したメニュー項目が提供する.(See localization and navigation documents for details)
モジュールの構成
システム内蔵の構成に加える、1つのモジュールでIAbpModuleConfigurationsがモジュールに構成点を提供することも可能である.例:
...
using Abp.Web.Configuration;
...
public override void PreInitialize()
{
Configuration.Modules.AbpWeb().SendAllExceptionsToClients = true;
}
...
この例では、AppWeb moduleがクライアントにすべての例外を送信ように構成する.
各モジュールが構成を定義する必要はありません.通常、モジュールが異なるアプリケーションで再利用する場合、起動時に構成することができる.
モジュールの構成の作成
MyModuleというmoduleがあり、いくつかの構成プロパティがあるとします.まず、これらのプロパティのクラスを作成します.
public class MyModuleConfig
{
public bool SampleConfig1 { get; set; }
public string SampleConfig2 { get; set; }
}
そしてMyModuleのPreInitializeメソッドにこのクラスを登録します.(これで注入できます)
IocManager.Register<MyModuleConfig>();
最後に、IModuleConfigurationsの拡張方法を作成してMyModuleConfigを取得します.
public static class MyModuleConfigurationExtensions
{
public static MyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)
{
return moduleConfigurations.AbpConfiguration
.GetOrCreate("MyModuleConfig",
() => moduleConfigurations.AbpConfiguration.IocManager.Resolve<MyModuleConfig>()
);
}
}
これにより、他のモジュールは起動時にこのモジュールを構成することができる.(MyModuleが必要なPreInitializeメソッドで)
Configuration.Modules.MyModule().SampleConfig1 = false;
Configuration.Modules.MyModule().SampleConfig2 = "test";
時々、MyModuleはこの構成を使用する必要があります.注入して使用することができます.例:
public class MyService : ITransientDependency
{
private readonly MyModuleConfig _configuration;
public MyService(MyModuleConfig configuration)
{
_configuration = configuration;
}
public void DoIt()
{
if (_configuration.SampleConfig2 == "test")
{
//...
}
}
}
これにより、ABPシステムにおいてモジュール構成を一元的に作成することができる.