際際滷

際際滷Share a Scribd company logo
Managed Extensibility Framework (MEF)
Managed Extensibility Framework (MEF)




1nn0vaLab
Managed Extensibility Framework (MEF)




1nn0vaLab
Managed Extensibility Framework (MEF)




            MEF 竪 un framework che offre
            alle applicazioni la capacit di
              essere estese dinamicamente
            attraverso componenti esterni
                        noti solo a runtime




1nn0vaLab
for extension

              part / component



            for modification


1nn0vaLab
Managed Extensibility Framework (MEF)




              Export it
             Import it
            Compose it



1nn0vaLab
Managed Extensibility Framework (MEF)

                           Definiamo prima il
                           servizio (part) da esporre




               Utilizzare sempre le
               interfacce per definire i
               contratti da esportare
      Part A


1nn0vaLab
Managed Extensibility Framework (MEF)

                                  Definiamo prima il
                                  servizio (part) da esporre




 Dichiariamo
 limplementazione da
 rendere disponibile ai
 consumer




      Part A


1nn0vaLab
Managed Extensibility Framework (MEF)




     Definiamo nel
     consumer il punto
     di estensione




      Part A


1nn0vaLab
Managed Extensibility Framework (MEF)




            Dove cerca MEF le
            parti da utilizzare?        TypeCatalog
                                        AssemblyCatalog
                Catalog
                                        DirectoryCatalog

                                        AggregateCatalog



1nn0vaLab
Managed Extensibility Framework (MEF)




                                      Come risolve i collegamenti
                                      import/export?
            Dove cerca MEF le
            parti da utilizzare?

                                          Container




1nn0vaLab
Its DEMO
    time!
Managed Extensibility Framework (MEF)


 MEF architecture




1nn0vaLab
Managed Extensibility Framework (MEF)




     Part by discovery    Part by registration

                          External configuration,
     NO configuration
                          via Fluent API or XML

     Wiring in the part   Auto Wiring

     Almost pure POCO     Pure POCO


1nn0vaLab
Managed Extensibility Framework (MEF)




             Metadata support
             Be lazy
             Recomposition


1nn0vaLab
Managed Extensibility Framework (MEF)




                    Possiamo associare al servizio
            informazioni aggiuntive (metadati) in
             modo da farle leggere ai consumer ...



    ... per esempio per filtrare
    le implementazioni da
    importare

1nn0vaLab
Managed Extensibility Framework (MEF)




    ... per esempio per filtrare
    le implementazioni da
    importare

1nn0vaLab
Managed Extensibility Framework (MEF)




            Eseguire limportazione solo nel
            momento in cui viene utilizzata!



    Lazy<T,M> (con M metadata) 竪 utile
    per filtrare le importazioni in base ai
    metadati


1nn0vaLab
Managed Extensibility Framework (MEF)




                  Con MEF possiamo avere la
     ricomposizione automatica delle parti in
         caso di aggiunta di nuove estensioni
               (o rimozione di una esistente)

            [ImportMany(AllowRecomposition(true)]

                            +
               IPartImportsSatisfiedNotification

1nn0vaLab
Managed Extensibility Framework (MEF)




            Dynamically loading XAPs with MEF
            http://channel9.msdn.com/Shows/SilverlightTV/Silverlight
            -TV-11-Dynamically-Loading-XAPs-with-MEF



1nn0vaLab
Managed Extensibility Framework (MEF)


 Resources
             Project hosting on codeplex
             http://mef.codeplex.com

             Community-developed library of
             extensions
             http://mefcontrib.codeplex.com/

             Hamilton Verissimo       (the MEF man)
             http://blogs.msdn.com/b/hammett/

             Glenn Block   (the MEF maniac)
             http://codebetter.com/glennblock/


1nn0vaLab
Credits
Le immagini contenute in questa presentazione
eccetto la foto iniziale acquistata su
iStockPhoto hanno licenza Creative Commons

際際滷 2 : http://www.flickr.com/photos/69691418@N00/4368951793/
際際滷 3 : http://www.flickr.com/photos/16013376@N00/4562002778/
Thank You!   MANUEL SCAPOLAN
             website: www.manuelscapolan.it
             twitter: manuelscapolan
             e-mail: info@manuelscapolan.it




                                              23

More Related Content

What's hot (20)

Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
DotNetCampus
Actions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET loversActions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET lovers
Lorenzo Giudici
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
DomusDotNet
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
Sandro Marcon
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
DotNetCampus
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
DotNetCampus
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
Stefano Del Furia
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
Michele Aponte
際際滷 typescript - net campus
際際滷 typescript - net campus際際滷 typescript - net campus
際際滷 typescript - net campus
DotNetCampus
Wcf data services
Wcf data servicesWcf data services
Wcf data services
Salvatore Sorrentino
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
DotNetCampus
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor Model
Andrea Tosato
Async: scalabilit e responsiveness senza pari! @ CDays
Async: scalabilit e responsiveness senza pari! @ CDaysAsync: scalabilit e responsiveness senza pari! @ CDays
Async: scalabilit e responsiveness senza pari! @ CDays
Matteo Baglini
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
Antonio Liccardi
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
Andrea Balducci
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
Andrea Dottor
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
Andrea Dottor
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
DotNetCampus
Actions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET loversActions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET lovers
Lorenzo Giudici
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
DomusDotNet
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
Sandro Marcon
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
DotNetCampus
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
DotNetCampus
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
Michele Aponte
際際滷 typescript - net campus
際際滷 typescript - net campus際際滷 typescript - net campus
際際滷 typescript - net campus
DotNetCampus
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
DotNetCampus
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor Model
Andrea Tosato
Async: scalabilit e responsiveness senza pari! @ CDays
Async: scalabilit e responsiveness senza pari! @ CDaysAsync: scalabilit e responsiveness senza pari! @ CDays
Async: scalabilit e responsiveness senza pari! @ CDays
Matteo Baglini
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
Antonio Liccardi
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
Andrea Balducci
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
Andrea Dottor
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
Andrea Dottor

Viewers also liked (18)

Tutte le novit di ASP.NET MVC3
Tutte le novit di ASP.NET MVC3Tutte le novit di ASP.NET MVC3
Tutte le novit di ASP.NET MVC3
Manuel Scapolan
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
Manuel Scapolan
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#
Manuel Scapolan
NOSQL
NOSQLNOSQL
NOSQL
Manuel Scapolan
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!
Manuel Scapolan
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class Library
Manuel Scapolan
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
Manuel Scapolan
TFS and Scrum - Lessons Learned
TFS and Scrum - Lessons LearnedTFS and Scrum - Lessons Learned
TFS and Scrum - Lessons Learned
Manuel Scapolan
JavaScript
JavaScriptJavaScript
JavaScript
Manuel Scapolan
Knockout.js
Knockout.jsKnockout.js
Knockout.js
Manuel Scapolan
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
Manuel Scapolan
Stai guardando i dati sbagliati
Stai guardando i dati sbagliatiStai guardando i dati sbagliati
Stai guardando i dati sbagliati
Alberto Brandolini
Costruire l'identit digitale con il piano editoriale
Costruire l'identit digitale con il piano editorialeCostruire l'identit digitale con il piano editoriale
Costruire l'identit digitale con il piano editoriale
Federico Venturini
Liberate il kraken
Liberate il krakenLiberate il kraken
Liberate il kraken
Alberto Brandolini
OOP with C#
OOP with C#OOP with C#
OOP with C#
Manuel Scapolan
HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
Manuel Scapolan
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
Doncho Minkov
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
Alberto Brandolini
Tutte le novit di ASP.NET MVC3
Tutte le novit di ASP.NET MVC3Tutte le novit di ASP.NET MVC3
Tutte le novit di ASP.NET MVC3
Manuel Scapolan
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
Manuel Scapolan
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#
Manuel Scapolan
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!
Manuel Scapolan
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class Library
Manuel Scapolan
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
Manuel Scapolan
TFS and Scrum - Lessons Learned
TFS and Scrum - Lessons LearnedTFS and Scrum - Lessons Learned
TFS and Scrum - Lessons Learned
Manuel Scapolan
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
Manuel Scapolan
Stai guardando i dati sbagliati
Stai guardando i dati sbagliatiStai guardando i dati sbagliati
Stai guardando i dati sbagliati
Alberto Brandolini
Costruire l'identit digitale con il piano editoriale
Costruire l'identit digitale con il piano editorialeCostruire l'identit digitale con il piano editoriale
Costruire l'identit digitale con il piano editoriale
Federico Venturini
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
Doncho Minkov

Similar to Managed Extensibility Framework (MEF) (20)

Introduzione WPF
Introduzione WPFIntroduzione WPF
Introduzione WPF
Ercole Palmeri
DDive11 - xpages
DDive11 - xpagesDDive11 - xpages
DDive11 - xpages
Dominopoint - Italian Lotus User Group
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco EcmCorso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
edoardo fraioli
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Antonio Musarra
Joomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG FriuliJoomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG Friuli
ccaps
Hardware e plugin
Hardware e pluginHardware e plugin
Hardware e plugin
Gian Maria Ricci
Ug apm - introscope-isp-user group
Ug  apm - introscope-isp-user groupUg  apm - introscope-isp-user group
Ug apm - introscope-isp-user group
CA Technologies Italia
Presentazione finale dottorato 15 aprile 2011
Presentazione finale dottorato 15 aprile 2011Presentazione finale dottorato 15 aprile 2011
Presentazione finale dottorato 15 aprile 2011
steccami
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
Luca Milan
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Valerio Radice
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Nelson Firmani
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
Felice Pescatore
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
Mirco Leo
Joomla! 5.1 - Dalle novit ai prossimi passi
Joomla! 5.1 - Dalle novit ai prossimi passiJoomla! 5.1 - Dalle novit ai prossimi passi
Joomla! 5.1 - Dalle novit ai prossimi passi
Luca Racchetti
Progea - PowerHMI brochures Ita
Progea - PowerHMI brochures ItaProgea - PowerHMI brochures Ita
Progea - PowerHMI brochures Ita
PROGEA s.r.l.
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
Marco Loregian
Windows Workflow Foundation 4
Windows Workflow Foundation 4Windows Workflow Foundation 4
Windows Workflow Foundation 4
Felice Pescatore
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampania
Emanuele Garofalo
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco EcmCorso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
edoardo fraioli
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Antonio Musarra
Joomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG FriuliJoomla! 2.5 - Presentazione al PUG Friuli
Joomla! 2.5 - Presentazione al PUG Friuli
ccaps
Presentazione finale dottorato 15 aprile 2011
Presentazione finale dottorato 15 aprile 2011Presentazione finale dottorato 15 aprile 2011
Presentazione finale dottorato 15 aprile 2011
steccami
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
Luca Milan
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Valerio Radice
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Sviluppo di applicazioni in E(fx)clipse capitolo 02-rev01-20072018
Nelson Firmani
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
Mirco Leo
Joomla! 5.1 - Dalle novit ai prossimi passi
Joomla! 5.1 - Dalle novit ai prossimi passiJoomla! 5.1 - Dalle novit ai prossimi passi
Joomla! 5.1 - Dalle novit ai prossimi passi
Luca Racchetti
Progea - PowerHMI brochures Ita
Progea - PowerHMI brochures ItaProgea - PowerHMI brochures Ita
Progea - PowerHMI brochures Ita
PROGEA s.r.l.
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
Marco Loregian
Windows Workflow Foundation 4
Windows Workflow Foundation 4Windows Workflow Foundation 4
Windows Workflow Foundation 4
Felice Pescatore
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
Universal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampaniaUniversal Store Apps - Mobile day by DotNetCampania
Universal Store Apps - Mobile day by DotNetCampania
Emanuele Garofalo

Managed Extensibility Framework (MEF)

  • 4. Managed Extensibility Framework (MEF) MEF 竪 un framework che offre alle applicazioni la capacit di essere estese dinamicamente attraverso componenti esterni noti solo a runtime 1nn0vaLab
  • 5. for extension part / component for modification 1nn0vaLab
  • 6. Managed Extensibility Framework (MEF) Export it Import it Compose it 1nn0vaLab
  • 7. Managed Extensibility Framework (MEF) Definiamo prima il servizio (part) da esporre Utilizzare sempre le interfacce per definire i contratti da esportare Part A 1nn0vaLab
  • 8. Managed Extensibility Framework (MEF) Definiamo prima il servizio (part) da esporre Dichiariamo limplementazione da rendere disponibile ai consumer Part A 1nn0vaLab
  • 9. Managed Extensibility Framework (MEF) Definiamo nel consumer il punto di estensione Part A 1nn0vaLab
  • 10. Managed Extensibility Framework (MEF) Dove cerca MEF le parti da utilizzare? TypeCatalog AssemblyCatalog Catalog DirectoryCatalog AggregateCatalog 1nn0vaLab
  • 11. Managed Extensibility Framework (MEF) Come risolve i collegamenti import/export? Dove cerca MEF le parti da utilizzare? Container 1nn0vaLab
  • 12. Its DEMO time!
  • 13. Managed Extensibility Framework (MEF) MEF architecture 1nn0vaLab
  • 14. Managed Extensibility Framework (MEF) Part by discovery Part by registration External configuration, NO configuration via Fluent API or XML Wiring in the part Auto Wiring Almost pure POCO Pure POCO 1nn0vaLab
  • 15. Managed Extensibility Framework (MEF) Metadata support Be lazy Recomposition 1nn0vaLab
  • 16. Managed Extensibility Framework (MEF) Possiamo associare al servizio informazioni aggiuntive (metadati) in modo da farle leggere ai consumer ... ... per esempio per filtrare le implementazioni da importare 1nn0vaLab
  • 17. Managed Extensibility Framework (MEF) ... per esempio per filtrare le implementazioni da importare 1nn0vaLab
  • 18. Managed Extensibility Framework (MEF) Eseguire limportazione solo nel momento in cui viene utilizzata! Lazy<T,M> (con M metadata) 竪 utile per filtrare le importazioni in base ai metadati 1nn0vaLab
  • 19. Managed Extensibility Framework (MEF) Con MEF possiamo avere la ricomposizione automatica delle parti in caso di aggiunta di nuove estensioni (o rimozione di una esistente) [ImportMany(AllowRecomposition(true)] + IPartImportsSatisfiedNotification 1nn0vaLab
  • 20. Managed Extensibility Framework (MEF) Dynamically loading XAPs with MEF http://channel9.msdn.com/Shows/SilverlightTV/Silverlight -TV-11-Dynamically-Loading-XAPs-with-MEF 1nn0vaLab
  • 21. Managed Extensibility Framework (MEF) Resources Project hosting on codeplex http://mef.codeplex.com Community-developed library of extensions http://mefcontrib.codeplex.com/ Hamilton Verissimo (the MEF man) http://blogs.msdn.com/b/hammett/ Glenn Block (the MEF maniac) http://codebetter.com/glennblock/ 1nn0vaLab
  • 22. Credits Le immagini contenute in questa presentazione eccetto la foto iniziale acquistata su iStockPhoto hanno licenza Creative Commons 際際滷 2 : http://www.flickr.com/photos/69691418@N00/4368951793/ 際際滷 3 : http://www.flickr.com/photos/16013376@N00/4562002778/
  • 23. Thank You! MANUEL SCAPOLAN website: www.manuelscapolan.it twitter: manuelscapolan e-mail: info@manuelscapolan.it 23