O TNF introduz uma infra-estrutura para a construção de módulos para construir uma aplicação.
Todo assembly pode ser registrado através de um módulo onde este conterá definições sobre suas dependências, registro de tarefas de acordo com o ciclo de vida, definições de configuração, etc.
Um módulo pode depender de outro módulo. Se você criou uma aplicação com mais de um assembly, sugerimos criar uma definição de módulo para cada assembly.
A estrutura para utilização de módulos está contida no pacote Tnf disponível via nuget em nosso package souce: https://www.myget.org/F/tnf/api/v3/index.json
Um módulo é definido através da herança da classe derivada TnfModule.
Digamos que estamos desenvolvendo um módulo Blog (Blog.dll) que pode ser usado em diferentes aplicativos. A definição mais simples do módulo pode ser como mostrado abaixo:
public class MyBlogApplicationModule : TnfModule { public override void PreInitialize() { } public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } public override void PostInitialize() { } public override void Shutdown() { } } |
A classe de definição do módulo é responsável por registrar as classes para a injeção de dependência se necessário. Ele pode conter configuração de outros aplicativos e módulos, adicionar novos recursos e assim por diante ...
Este é o primeiro método executado quando a aplicação é iniciada. Ele pode ser usado para executar algum código especifico antes do registro de injeção de dependência da aplicação por exemplo.
Este é o método onde deve ser feito todo o registro de dependência de seu modulo. Se você irá usar convenções do TNF para trabalhar com injeção de dependência o método IocManager.RegisterAssemblyByConvention deverá ser usado para registrar as dependências para o assembly.
Esse método é chamado após a inicialização da aplicação e registro de suas dependências.
Esse método é chamado quando a aplicação é encerrada.
Um módulo pode depender de outro modulo. Para informar essa dependência é necessário usar o atributo "DependsOn", como mostrado abaixo:
[DependsOn(typeof(MyBlogCoreModule))] public class MyBlogApplicationModule : TnfModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } } |
Dessa forma quando o modulo for carregado suas dependências serão carregadas com ele.