web camps mef

Post on 11-Jun-2015

394 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MEF E ASP.NET MVC 3

Cadu SouzaTwitter: @cadu_szawww.arquiteturando.com.br

Foco em Arquitetura de Software, Boas Práticas, TDD, DDDCertified Scrum MasterArticulista da Revista .NET Magazine

Quem sou eu?

Aplicações Monoliticas a origem do caos?

O Que dá origem a este tipo de aplicação?

Desenvolvimento sem TDDIgnorar princípios de desenvolvimentoFalta de sabedoria na hora de aplicar padrões de projeto ou aplicaçãoFoco somente na entrega e desprezo da qualidade de códigoForte Acoplamento e baixa coesão

Manutenção? Evolução? NÃOOOOOOOO

E agora quem poderá nos defender?

Composição e Extensibilidade

Fundamentos e AliadosTDDS.O.L.I.DTecnologias aderentes a extensão e composiçãoPadrões e Princípios de DesenvolvimentoBaixo Acoplamento e Alta coesão

Aplicação que abraça mudanças!

Hot Spots – Pontos de extensão na sua aplicação

Injetar não dói e soluciona?

MEF para que ele veio?

Arquitetura do MEF

Parts e ComposableParts

Part

[Import] [Export]

IContract

Catalogos e Containers

Catalog

Part

MEF container

O Processo de composição

Ciclo de vida no MEF

MEF E MVC Casamento ideal

Resolução de Dependências no MVC

ASP.NET MVC 3 usa a interface IDependencyResolverMembros de IDependencyResolverGetService()GetServices()

Implementação baseada no MEFUsando MEF Contrib Mef contrib possui um conventionModel

Opções de implementação de IDependencyResolver

Conventions no MefContrib-MVC3public class MvcApplicationRegistry : PartRegistry { public MvcApplicationRegistry() { Scan(x => { x.Assembly(Assembly.GetExecutingAssembly()); x.Directory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")); });

Part() .ForTypesAssignableFrom<IController>() .MakeNonShared() .ExportTypeAs<IController>() .ExportType() .Imports( // ... ); }}

Unity Application BlockStructureMapCastleWindsor

IDependencyResolver flexível a framworks de DI existentes

Aplicação LEGO

MEF descobre as dependências e ManutenívelEvolutivaSelf-ValidatingTimely

TDD + MEF + MVC

Conclusão

Aplicações mais robustasManutenívelEvolutivaConstruir a aplicação como um LEGOTer uma aplicação testável

top related