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

2,479 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,479
On SlideShare
0
From Embeds
0
Number of Embeds
1,505
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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.
  • 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)
  • Informações no tópico “Whatproblems does MEF solve?” da documentação: http://mef.codeplex.com/wikipage?title=Overview&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's focus is on discoverability, extensibility, and portability. The two frameworks interoperate smoothly, and a single application can take advantage of both.
  • 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&referringTitle=Documentation
  • 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'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
  • 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.
  • Microsoft Tech·Ed Brasil 2010: DEV302 - Como e onde devo utilizar o Managed Extensibility Framework (MEF)

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

    ×