microsoft tech·ed brasil 2010: dev302 - como e onde devo utilizar o managed extensibility framework...

30
SETEMBRO, 2010 | SÃO PAULO

Upload: rogerio-moraes-de-carvalho

Post on 24-May-2015

2.226 views

Category:

Technology


0 download

DESCRIPTION

O Managed Extensibility Framework (MEF) é uma nova biblioteca no Microsoft. NET Framework 4 que resolve problemas de software monolítico, simplificando o design de extensões de aplicações e componentes. Nesta sessão, você aprenderá o básico do MEF e verá o MEF sendo utilizado em um uma variedade de aplicações criadas no .NET Framework.

TRANSCRIPT

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

SETEMBRO, 2010 | SÃO PAULO

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

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

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

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

Page 4: Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (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

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

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

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

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

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

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

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

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/

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

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

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

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

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

12

Diagrama de extensibilidade com MEFRelacionamento entre os componentes do MEF

Page 12: Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (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

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

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

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

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

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

16

Composição no MEFCatálogo

O catálogo fornece as partes

Catálogo

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

17

Composição no MEFContêiner de composição

O contêiner faz as combinações

Catálogo

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

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

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

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

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

20

Fundamentos do MEF

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

21

Criação tardia de instância

Parte A Parte B

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

22

Criação tardia de instância

Parte A Lazy<B>

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

23

Criação tardia de instância

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

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)

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

25

Tempo de vida das partes

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

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

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

27

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

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)

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

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

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

© 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.

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

Por favor,preencha a avaliação!DEV302 - Como e onde devo utilizar o

Managed Extensibility Framework (MEF)?Rogério Moraes de Carvalho@rogeriomc