Bom, tenho escrito o bastante para nem precisar perguntar como você está! Né?!

Já estamos íntimos e agora vou contar uma novidade! Implementei o suporte a dois containers bem conceituados no mercado e simplifiquei o modelo para que você possa implementar facilmente uma nova extensão para qualquer IoC container que tenha o interesse de trabalhar.

Só para mostrar como é simples, está aqui todo o código para estender o Oragon Architecture Application Hosting para o Ninject.

Se não se convenceu ainda, aqui está o código para criar uma integração nova com o SimpleInjector

Simples né?!

A escolha dos dois frameworks se deu pelas suas características enquanto o SimpleInjector é o mais rápido em diversos benchmarks, o Ninject é de cara o mais procurado. Embora eu ainda continue usando o Spring.Net em meus projetos, você pode seguir com seus próprios frameworks e pipelines de aplicação independentes. 3 projetos foram criados para exemplificar.

Eu ainda estou trabalhando na identificação de como usar o ciclo de vida automático desses caras (autocarregamento) etc, para poder implementar a chamada ao pipeline no Start e Stop do Windows Services, inclusive se você já souber, me conte.

No Spring.Net o ciclo de vida é gerenciado de 2 formas, automática, com a implementação de 2 interfaces IInitializingObject, própria do Spring e IDisposable. No load do Spring a interface IInitializingObject permite o controle do fluxo com o método AfterPropertiesSet, enquanto no unload do Spring.Net o método Dispose é chamado.

Também, para o Spring, implementei uma segunda alternativa que é usar a interface ILifeCycle, que provê os métodos Start e Stop, ficou assim:

Bem simples né?!

Simples mas muito eficiente. Cada uma dessas integrações representam 100% do código necessário para toda a criação da integração.

A propósito, o Factory, do container é um ponto de configuração. Isso acontece pela necessidade de configuração dos frameworks atuais. Como todos se baseiam em configuração fluent, que não consigo abstrair, nada mais justo que delegar a você a melhor forma para criar seus containers. O resultado é que você precisará de mais uma classe em seu projeto, ou em sua infraestrutura, apenas para inicializar o container. Todo o resto fica com o Oragon Architecture.

IOC Containers

Se você quer que seu IoC container esteja presente no Oragon, faça um Pull Request ou me mande um email respondendo as seguintes perguntas:

1) Qual o nome do framework e endereço do projeto

2) Como manipular o ciclo de vida do container e dos objetos definidos nele (há uma interface, uma marcação, métodos específicos, etc). Responder dizendo que não há manipulação também é válido.

Para que você entenda o que quero, vou citar o Spring.Net que conheço bem:

1) Qual o nome do framework e endereço do projeto

R: Spring.Net ( http://www.springframework.net/ e http://www.springframework.net/doc-latest/reference/html/index.html )

 

2) Como manipular o ciclo de vida do container e dos objetos definidos nele (há uma interface, uma marcação, métodos específicos, etc). Responder dizendo que não há manipulação também é válido.

R: 5.6.1. Lifecycle interfaces,

Perguntas e respostas simples, né?!

Bom, espero que tenha gostado!

 

Comente, compartilhe, curta!

Logo abaixo desse texto você encontra os Posts Relacionados, e botões de compartilhamento, em seguida a sessão de comentários!

Gostou? Então aproveite para curtir, compartilhar e enviar comentários, dúvidas ou sugestões.

Conheça o Grupo Arquitetura de Softwate | .NET: Facebook e Telegram
Luiz Carlos Faria: Site, Youtube, Facebook, Twitter, Telegram, Linkedin e Email