SlideShare une entreprise Scribd logo
1  sur  30
SETEMBRO, 2010 | SÃO PAULO
Instruções gerais (hidden slide): Instruções aos palestrantes: Complete este slide para que o Track Owner avalie a sequência da sua apresentação, tópicos cobertos, integração das demos e alinhamento do conteúdo com a descrição e nível da sessão.  ,[object Object]
Nível Técnico:300
Audiência foco:Desenvolvedores com experiência  em programação orientada a objetos e na linguagem de programação C# 3 ou superior
Objetivos (quais são as três principais mensagens que você gostaria que a audiência absorva):
1Motivações para criação do MEF como facilitador na extensão de software
2O princípio de funcionamento do MEF: exportação, importação e composição
3A integração do MEF com o .NET Framework 4 e o Silverlight 4
Sequência da sua apresentação (incluindo as demos):,[object Object]
AgendaManagedExtensibility Framework (MEF) Objetivos Princípio aberto-fechado Plug-ins Problemas de extensibilidade O ManagedExtensibility Framework (MEF) O MEF como facilitador da extensibilidade Diagrama de extensibilidade com MEF Funcionamento do MEF Exportação e importação no MEF Composição no MEF
AgendaManagedExtensibility Framework (MEF) Demo 1: Fundamentos do MEF Criação tardia de instância Demo 2: Criação tardia de instância Tempo de vida das partes Demo 3: Tempo de vida das partes MEFContrib
ObjetivosPrincipais assuntos a serem abordados Exposição da importância da extensibilidadeno desenvolvimento de software Introdução à nova biblioteca MEF Incorporada ao .NET Framework 4 e ao Silverlight 4 Apresentação de quando  e como o MEF deve ser usado
Princípio aberto-fechadoIntrodução e conceito do princípio Termo introduzido por Bertrand Meyer na primeira edição do seu livro Object-Oriented Software Construction, em 1988 Em 1996, Robert C. Martin escreveu o influente artigo “The Open-ClosedPrinciple” Entidades de software devem serabertas para extensão,mas fechadas para modificação Entidade
Plug-insConceito e vantagens de uso Plug-in Aplicação hospedeira Gerenciador de plug-ins Serviços O que é um plug-in? Componente de software para acrescentar funcionalidades específicas a uma aplicação maior Vantagens de uso de plug-ins Extensão de aplicações com novas funcionalidades desenvolvidas por terceiros Facilita o acréscimo de novas funcionalidades Reduz o tamanho de uma aplicação Separação de código-fonte numa aplicação devido a incompatibilidades em licenças de software
Problemas de extensibilidadeDificuldades mais comuns É comum que aplicações hospedeiras criem uma infraestrutura própria para permitirem extensão Sem reuso em outras implementações Alguns frameworks .NET de extensão ManagedAdd-In Framework (MAF) Projetado no .NET Framework para gerenciar extensões Plux.NET http://ase.jku.at/plux/ Mono.Addins http://monoaddins.codeplex.com/ CompactPlugs & CompactInjection http://compactplugs.codeplex.com/
O ManagedExtensibility Framework (MEF)Conceito O que é o MEF? Framework para simplificar a criaçãode aplicações extensíveis Que recursos o MEF oferece? Recursos de descoberta e composição que permitem carregar dinamicamente extensões de aplicações Qual a principal vantagem fornecida pelo MEF? Facilidade de transformar aplicações estaticamente compiladas para dinamicamente compostas
O MEF como facilitador da extensibilidadeSolução de problemas de extensibilidade Padrão para exposição e consumo de extensões Facilita o reuso de extensões em várias aplicações Diversas abordagens possíveis de descoberta Facilita a localização e o carregamento de extensões Dispensa a necessidade do registro explícito das extensões disponíveis Metadados permitem marcar extensões Facilita a consulta e filtragem de extensões
Diagrama de extensibilidade com MEFRelacionamento entre os componentes do MEF
Funcionamento do MEFCatálogo e contêiner e partes de composição Simplificadamente, o MEF é composto por: Catálogo (Catalog) Responsável por descobrir extensões Contêiner de composição (CompositionContainer) Responsável por coordenar a criação e satisfazer as dependências das partes de composição Parte de composição (ComposablePart) Importações (Imports)  Especificação declarativa de suas dependências Exportações (Exports) Especificação declarativa de suas capacidades
Exportação e importação no MEFCapacidades e dependências de partes de composição Exportação (Export) Uma parte de composição oferece um ou mais serviços (exportações) Importação (Import) Uma parte de composição pode depender de um ou mais serviços externos (importações) Contrato (Contract) Exportações e importações têm contratos Contratos são as pontes entre exportações e importações
Exportação e importação no MEFCapacidades e dependências de partes de composição Eutenho Eupreciso
Composição no MEFCatálogo O catálogo fornece as partes Catálogo
Composição no MEFContêiner de composição O contêiner faz as combinações Catálogo
Composição no MEFCombinações das partes de composição dos catálogos AggregatingCatalog O contêiner faz as combinações DirectoryCatalog AssemblyCatalog Catálogo TypeCatalog
Composição no MEFEsquema de composição Parte Aplicação hospedeira Precisa de um IContrato [Import] [Export] Tem um IContrato Contêiner de composição Extensão A Parte
Fundamentos do MEF
Criação tardia de instância Parte A Parte B
Criação tardia de instância Parte A Lazy <B>
Criação tardia de instância
Tempo de vida das partes Parte compartilhada(Shared) Parte não compartilhada(Non-Shared) Contêiner Contêiner Parte A Parte B Parte B Parte B

Contenu connexe

Tendances

Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Fernando Gonçalves
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
elliando dias
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
Ricardo Guerra Freitas
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
Julian Cesar
 

Tendances (20)

TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
TDC 2012 Goiânia: Trilha Windows Phone / Windows 8 - Desenvolvimento de apps ...
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
 
Aula 1
Aula 1Aula 1
Aula 1
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 
Demoiselle Behave - Parte 4
Demoiselle Behave - Parte 4Demoiselle Behave - Parte 4
Demoiselle Behave - Parte 4
 
Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1Fundamentos do .NET Framework - Parte 1
Fundamentos do .NET Framework - Parte 1
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 

En vedette

En vedette (6)

TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4 MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
MSDN Webcast: Trabalhando com covariância e contravariância no C# 4
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 

Similaire à Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (MEF)

Palestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community LaunchPalestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community Launch
Waldyr Felix
 
T@rget trust c# 4.0 - fundamentos da linguagem
T@rget trust   c# 4.0 - fundamentos da linguagemT@rget trust   c# 4.0 - fundamentos da linguagem
T@rget trust c# 4.0 - fundamentos da linguagem
Targettrust
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010
Felipe Pimentel
 

Similaire à Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (MEF) (20)

TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Palestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community LaunchPalestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community Launch
 
T@rget trust c# 4.0 - fundamentos da linguagem
T@rget trust   c# 4.0 - fundamentos da linguagemT@rget trust   c# 4.0 - fundamentos da linguagem
T@rget trust c# 4.0 - fundamentos da linguagem
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-net
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Curso de Macros en Excel (VBA)
Curso de Macros en Excel (VBA)Curso de Macros en Excel (VBA)
Curso de Macros en Excel (VBA)
 
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
Palestra EPF (Eclispe Process Framework) Estudo Caso FliSoL Abr 09
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
 
DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4
 
Integração e APIs com Mulesoft
Integração e APIs com MulesoftIntegração e APIs com Mulesoft
Integração e APIs com Mulesoft
 
Caderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de EducaçãoCaderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de Educação
 
Ger201
Ger201Ger201
Ger201
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 

Plus de Rogério Moraes de Carvalho

TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
Rogério Moraes de Carvalho
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
Rogério Moraes de Carvalho
 

Plus de Rogério Moraes de Carvalho (18)

Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo real
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões Web
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
 

Dernier

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Dernier (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (MEF)

  • 1. SETEMBRO, 2010 | SÃO PAULO
  • 2.
  • 4. Audiência foco:Desenvolvedores com experiência em programação orientada a objetos e na linguagem de programação C# 3 ou superior
  • 5. Objetivos (quais são as três principais mensagens que você gostaria que a audiência absorva):
  • 6. 1Motivações para criação do MEF como facilitador na extensão de software
  • 7. 2O princípio de funcionamento do MEF: exportação, importação e composição
  • 8. 3A integração do MEF com o .NET Framework 4 e o Silverlight 4
  • 9.
  • 10. AgendaManagedExtensibility Framework (MEF) Objetivos Princípio aberto-fechado Plug-ins Problemas de extensibilidade O ManagedExtensibility Framework (MEF) O MEF como facilitador da extensibilidade Diagrama de extensibilidade com MEF Funcionamento do MEF Exportação e importação no MEF Composição no MEF
  • 11. AgendaManagedExtensibility Framework (MEF) Demo 1: Fundamentos do MEF Criação tardia de instância Demo 2: Criação tardia de instância Tempo de vida das partes Demo 3: Tempo de vida das partes MEFContrib
  • 12. ObjetivosPrincipais assuntos a serem abordados Exposição da importância da extensibilidadeno desenvolvimento de software Introdução à nova biblioteca MEF Incorporada ao .NET Framework 4 e ao Silverlight 4 Apresentação de quando e como o MEF deve ser usado
  • 13. Princípio aberto-fechadoIntrodução e conceito do princípio Termo introduzido por Bertrand Meyer na primeira edição do seu livro Object-Oriented Software Construction, em 1988 Em 1996, Robert C. Martin escreveu o influente artigo “The Open-ClosedPrinciple” Entidades de software devem serabertas para extensão,mas fechadas para modificação Entidade
  • 14. Plug-insConceito e vantagens de uso Plug-in Aplicação hospedeira Gerenciador de plug-ins Serviços O que é um plug-in? Componente de software para acrescentar funcionalidades específicas a uma aplicação maior Vantagens de uso de plug-ins Extensão de aplicações com novas funcionalidades desenvolvidas por terceiros Facilita o acréscimo de novas funcionalidades Reduz o tamanho de uma aplicação Separação de código-fonte numa aplicação devido a incompatibilidades em licenças de software
  • 15. Problemas de extensibilidadeDificuldades mais comuns É comum que aplicações hospedeiras criem uma infraestrutura própria para permitirem extensão Sem reuso em outras implementações Alguns frameworks .NET de extensão ManagedAdd-In Framework (MAF) Projetado no .NET Framework para gerenciar extensões Plux.NET http://ase.jku.at/plux/ Mono.Addins http://monoaddins.codeplex.com/ CompactPlugs & CompactInjection http://compactplugs.codeplex.com/
  • 16. O ManagedExtensibility Framework (MEF)Conceito O que é o MEF? Framework para simplificar a criaçãode aplicações extensíveis Que recursos o MEF oferece? Recursos de descoberta e composição que permitem carregar dinamicamente extensões de aplicações Qual a principal vantagem fornecida pelo MEF? Facilidade de transformar aplicações estaticamente compiladas para dinamicamente compostas
  • 17. O MEF como facilitador da extensibilidadeSolução de problemas de extensibilidade Padrão para exposição e consumo de extensões Facilita o reuso de extensões em várias aplicações Diversas abordagens possíveis de descoberta Facilita a localização e o carregamento de extensões Dispensa a necessidade do registro explícito das extensões disponíveis Metadados permitem marcar extensões Facilita a consulta e filtragem de extensões
  • 18. Diagrama de extensibilidade com MEFRelacionamento entre os componentes do MEF
  • 19. Funcionamento do MEFCatálogo e contêiner e partes de composição Simplificadamente, o MEF é composto por: Catálogo (Catalog) Responsável por descobrir extensões Contêiner de composição (CompositionContainer) Responsável por coordenar a criação e satisfazer as dependências das partes de composição Parte de composição (ComposablePart) Importações (Imports) Especificação declarativa de suas dependências Exportações (Exports) Especificação declarativa de suas capacidades
  • 20. Exportação e importação no MEFCapacidades e dependências de partes de composição Exportação (Export) Uma parte de composição oferece um ou mais serviços (exportações) Importação (Import) Uma parte de composição pode depender de um ou mais serviços externos (importações) Contrato (Contract) Exportações e importações têm contratos Contratos são as pontes entre exportações e importações
  • 21. Exportação e importação no MEFCapacidades e dependências de partes de composição Eutenho Eupreciso
  • 22. Composição no MEFCatálogo O catálogo fornece as partes Catálogo
  • 23. Composição no MEFContêiner de composição O contêiner faz as combinações Catálogo
  • 24. Composição no MEFCombinações das partes de composição dos catálogos AggregatingCatalog O contêiner faz as combinações DirectoryCatalog AssemblyCatalog Catálogo TypeCatalog
  • 25. Composição no MEFEsquema de composição Parte Aplicação hospedeira Precisa de um IContrato [Import] [Export] Tem um IContrato Contêiner de composição Extensão A Parte
  • 27. Criação tardia de instância Parte A Parte B
  • 28. Criação tardia de instância Parte A Lazy <B>
  • 29. Criação tardia de instância
  • 30. Tempo de vida das partes Parte compartilhada(Shared) Parte não compartilhada(Non-Shared) Contêiner Contêiner Parte A Parte B Parte B Parte B
  • 31. Tempo de vida das partes
  • 32. MEFContribExtensões ao MEF O que é o MEFContrib? Biblioteca de extensões ao ManagedExtensibility Framework (MEF) desenvolvida pela comunidade Recursos Extensões Catálogo genérico Integração Integração com Unity Modelos de programação Modelo de Provider Modelo de convenções
  • 33.
  • 34. Conteúdo relacionadoSessões do Tech·Ed Brasil 2010 DEV 201 - Novidades e razões para migrar para o Microsoft .NETFramework 4 (João Paulo Clementi e Diego Blanco) DEV 301 - Novidades do Windows Communication Foundation (WCF) no .NET Framework 4 (Evilázaro Alves) DEV 305 - Implementando Serviços RESTful usando o Microsoft .NET Framework (Israel Aece) DEV 402 - Desenvolvimento com C# no mundo moderno(Alfred Myers)
  • 35. Conteúdo relacionadoSites e livros indicados MEFCommunity Site (Hospedado no CodePlex)http://mef.codeplex.com/ MEFContrib (Hospedado no CodePlex) http://mefcontrib.codeplex.com/ Object-Oriented Software Construction, 2ndEditionAutor: Bertrand Meyer - Editora: Prentice Hall Clean Code: A Handbook of Agile Software CraftsmanshipAutor: Robert C. Martin - Editora: Prentice Hall
  • 36. © 2008 Microsoft Corporation.Todos os direitos reservados.Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países. Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação.Como a Microsoft deve atender a condições de mercado em constante alteração, este documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação.A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.
  • 37. Por favor, preencha a avaliação! DEV302 - Como e onde devo utilizar oManagedExtensibility Framework (MEF)? Rogério Moraes de Carvalho @rogeriomc
  • 38. Título do anúncio do produto
  • 39. Template de PowerPoint Cor do Subtítulo Exemplo de slide com subcabeçalho Defina o cabeçalho do slide em "Title Case" Defina os subcabeçalhos em "sentence case" Procure definir o subcabeçalho em 36pt ou menor para que caiba em uma só linha A cor do subcabeçalho é definida para este template, mas deve ser selecionada no PowerPoint 2007, é a quinta cor de fonte da esquerda para a direita
  • 40. Exemplo de preenchimento Diretrizes para PowerPoint A fonte, o tamanho e a cor do texto foram formatados para você no Slide Mestre Use a palheta de cores exibida abaixo Cor de hyperlink:www.microsoft.com Exemplo de preenchimento Exemplo de preenchimento Exemplo de preenchimento Exemplo de preenchimento Exemplo de preenchimento
  • 41. Slide para exibir código de software Use este layout para exibir o código de software Esta fonte é Consolas, uma fonte monoespaçada O slide não possui bullets, mas os níveis podem ser recuados usando-se o ícone "Aumentar Nível de Lista" no menu de Início Para usar aspas normais " em vez de aspas inglesas ” faça o seguinte: Clique no Botão do Office no canto superior esquerdo Na parte inferior do menu, escolha as Opções do PowerPoint No painel à esquerda, selecione Revisão de Texto Clique no botão Opções de AutoCorreção Selecione a aba AutoFormatação ao Digitar, e desmarque a opção "Aspas normais" por "aspas inglesas".Em seguida clique em OK.
  • 43. Exemplo de gráfico de barras

Notes de l'éditeur

  1. Bertrand Meyer (nasceu em 1950 na França): É um acadêmico, autor e consultor no campo das linguagens de computação. Criador da linguagem de programação Eiffel. Um dos primeiros defensores da Programação Orientada a Objetos (POO). Seu livro Object-Oriented Software Construction é amplamente considerado o melhor trabalho de apresentação de casos de POO. A primeira edição foi publicada em 1988.Object-Oriented Software Construction: Livro escrito por Bertrand Meyer, amplamente considerado um texto fundamental de POO. A primeira edição foi publicada em 1988 e a segunda, extensivamente revisada e expandida (1296 páginas), em 1997. Ambas as edições foram publicadas pela editora Prentice Hall.Princípio aberto-fechado: Entidades de software devem ser abertas para extensão, mas fechadas para modificação. Ou seja, entidades devem permitir modificações em seu comportamento SEM a necessidade de alteração em seu código-fonte. Nesta ideia, a implementação de uma entidade (classe) somente pode ser modificada para corrigir erros.Princípio aberto-fechado de Meyer: A definição de Meyer recomenda a herança de implementação. A implementação pode ser reutilizada por meio de herança, mas especificações de interface não necessitam de implementação.Princípio aberto-fechado polimórfico: Durante a década de 1990, o princípio aberto/fechado foi popularmente redefinido para referenciar o uso de interfaces abstratas, onde as implementações podem ser modificadas e múltiplas implementações podem ser criadas e polimorficamente substituídas umas pelas outras.Em contraste com o uso de Meyer, esta definição recomenda a herança de classes abstratas. Especificações de interfaces podem ser reutilizadas por meio de herança, mas a implementação não precisa. A interface existente é fechada para modificações e novas implementações, no mínimo, implementam esta interface.Em 1996, Robert Cecil Martin (autor e consultor de software americano, informalmente chamado “Uncle Bob” ou “Tio Bob”) escreveu o artigo “The Open-ClosedPrinciple” que foi uma das escritas mais influentes desta abordagem.
  2. Mecanismo dos plug-insA aplicação hospedeira fornece serviços que o plug-in pode usar, incluindo uma maneira dos plug-ins se registrarem com a aplicação hospedeira e um protocolo para troca de dados com o plug-in. Plug-ins dependem dos serviços fornecidos pela aplicação hospedeira e usualmente não funcionam por si próprios. Por outro lado, a aplicação hospedeira opera de maneira independente dos plug-ins, tornando possível aos usuários finais adicionar a atualizar plug-ins dinamicamente sem a necessidade de fazer mudanças na aplicação hospedeira.ApplicationProgramming Interfaces (APIs) abertas fornecem uma interface padrão, permitindo que terceiros criem plug-ins que interagem com a aplicação hospedeira. Uma API estável permite que plug-ins de terceiros continuem a funcionar mesmo com mudanças na versão original e para estender o ciclo de vida de aplicações obsoletas. As APIs de plug-in do Adobe Photoshop e do AfterEffects se tornaram padrão e aplicações concorrentes como o Corel Paint Shop Pro as adotou.Informações complementares:http://en.wikipedia.org/wiki/Plug-in_(computing)
  3. Informações no tópico “Whatproblems does MEF solve?” da documentação: http://mef.codeplex.com/wikipage?title=Overview&amp;referringTitle=DocumentationMEF and MAFPrevious versions of the .NET Framework introduced the Managed Add-in Framework (MAF), designed to allow applications to isolate and manage extensions. The focus of MAF is slightly higher-level then MEF, concentrating on extension isolation and assembly loading and unloading, while MEF&apos;s focus is on discoverability, extensibility, and portability. The two frameworks interoperate smoothly, and a single application can take advantage of both.
  4. O MEF facilita a extensibilidade permitindo uma programação mais declarativa.Informações no tópico “WhatisMEF?” da documentação: http://mef.codeplex.com/wikipage?title=Overview&amp;referringTitle=Documentation
  5. What problems does MEF solve?MEF presents a simple solution for the runtime extensibility problem. Until now, any application that wanted to support a plugin model needed to create its own infrastructure from scratch. Those plugins would often be application-specific and could not be reused across multiple implementations.MEF provides a standard way for the host application to expose itself and consume external extensions. Extensions, by their nature, can be reused amongst different applications. However, an extension could still be implemented in a way that is application-specific. Extensions themselves can depend on one another and MEF will make sure they are wired together in the correct order (another thing you won&apos;t have to worry about). MEF offers a set of discovery approaches for your application to locate and load available extensions. MEF allows tagging extensions with additonal metadata which facilitates rich querying and filtering
  6. O núcleo do modelo de composição é o contêiner de composição, que contem todas as partes disponíveis e realiza a composição. Ou seja, ele faz a correspondência entre as importações e as exportações.Para descobrir as partes disponíveis, o contêiner de composição faz uso de um catálogo. Um catálogo é um objeto que torna disponíveis partes de alguma fonte. O MEF fornece catálogos para descobrir partes de um tipo fornecido, um assembly ou um diretório. Desenvolvedores de aplicações podem facilmente criar novos catálogos para descobrir partes de outras fontes, como um Web Service.