SETEMBRO, 2010 | SÃO PAULO
Rogério Moraes de CarvalhoConsultor e Instrutor de TIVITA Informática
@rogeriomc
Como e onde devo utilizar o Managed Extensibility Framework (MEF)?NÍVEL TÉCNICO: 300
CÓDIGO DA SESSÃO: DEV302
4
AgendaManaged Extensibility Framework (MEF)
ObjetivosPrincípio aberto-fechadoPlug-insProblemas de extensibilidadeO Managed Extensibility Framework (MEF)O MEF como facilitador da extensibilidadeDiagrama de extensibilidade com MEFFuncionamento do MEFExportação e importação no MEFComposição no MEF
5
AgendaManaged Extensibility Framework (MEF)
Demo 1: Fundamentos do MEFCriação tardia de instânciaDemo 2: Criação tardia de instânciaTempo de vida das partesDemo 3: Tempo de vida das partesMEF Contrib
6
ObjetivosPrincipais assuntos a serem abordados
Exposição da importância da extensibilidade no desenvolvimento de software
Introdução à nova biblioteca MEFIncorporada ao .NET Framework 4 e ao Silverlight 4
Apresentação de quando e como o MEF deve ser usado
7
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-Closed Principle”
Entidades de software devem serabertas para extensão,mas fechadas para modificação
Entidade
8
Plug-insConceito e vantagens de uso
O que é um plug-in?Componente de software para acrescentar funcionalidades específicas a uma aplicação maior
Vantagens de uso de plug-insExtensão de aplicações com novas funcionalidades desenvolvidas por terceirosFacilita o acréscimo de novas funcionalidadesReduz o tamanho de uma aplicaçãoSeparação de código-fonte numa aplicação devido a incompatibilidades em licenças de software
Plug-inAplicação
hospedeira
Gerenciadorde plug-ins
Serviços
9
Problemas de extensibilidadeDificuldades mais comuns
É comum que aplicações hospedeiras criem uma infraestrutura própria para permitirem extensão
Sem reuso em outras implementaçõesAlguns frameworks .NET de extensão
Managed Add-In Framework (MAF)Projetado no .NET Framework para gerenciar extensões
Plux.NEThttp://ase.jku.at/plux/
Mono.Addinshttp://monoaddins.codeplex.com/
Compact Plugs & Compact Injectionhttp://compactplugs.codeplex.com/
10
O Managed Extensibility 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
11
O MEF como facilitador da extensibilidadeSolução de problemas de extensibilidade
Padrão para exposição e consumo de extensõesFacilita o reuso de extensões em várias aplicações
Diversas abordagens possíveis de descobertaFacilita a localização e o carregamento de extensõesDispensa a necessidade do registro explícito das extensões disponíveis
Metadados permitem marcar extensõesFacilita a consulta e filtragem de extensões
12
Diagrama de extensibilidade com MEFRelacionamento entre os componentes do MEF
13
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õesContê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ênciasExportações (Exports)
Especificação declarativa de suas capacidades
14
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 contratosContratos são as pontes entre exportações e importações
15
Exportação e importação no MEFCapacidades e dependências de partes de composição
Exportação
Importação
Composição
Eu tenho Eu preciso
16
Composição no MEFCatálogo
O catálogo fornece as partes
Catálogo
17
Composição no MEFContêiner de composição
O contêiner faz as combinações
Catálogo
18
Composição no MEFCombinações das partes de composição dos catálogos
O contêiner faz as combinações
Catálogo
TypeCatalog
AssemblyCatalog
DirectoryCatalog
AggregatingCatalog
19
Precisa de um IContrato[Import]Tem um
IContrato[Export]
Composição no MEFEsquema de composição
Aplicação hospedeira
Extensão AContêiner de composição
Parte
Parte
20
Fundamentos do MEF
21
Criação tardia de instância
Parte A Parte B
22
Criação tardia de instância
Parte A Lazy<B>
23
Criação tardia de instância
24
Tempo de vida das partes
ContêinerContêiner
Parte A Parte B Parte B Parte B
Parte compartilhada(Shared)
Parte não compartilhada(Non-Shared)
25
Tempo de vida das partes
26
MEF ContribExtensões ao MEF
O que é o MEF Contrib?Biblioteca de extensões ao Managed Extensibility Framework (MEF) desenvolvida pela comunidade
RecursosExtensões
Catálogo genéricoIntegração
Integração com UnityModelos de programação
Modelo de ProviderModelo de convenções
27
28
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)
29
Conteúdo relacionadoSites e livros indicados
MEF Community Site (Hospedado no CodePlex)http://mef.codeplex.com/
MEF Contrib (Hospedado no CodePlex)http://mefcontrib.codeplex.com/
Object-Oriented Software Construction, 2nd EditionAutor: Bertrand Meyer - Editora: Prentice Hall
Clean Code: A Handbook of Agile Software CraftsmanshipAutor: Robert C. Martin - Editora: Prentice Hall
© 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.
Por favor,preencha a avaliação!DEV302 - Como e onde devo utilizar o
Managed Extensibility Framework (MEF)?Rogério Moraes de Carvalho@rogeriomc