際際滷

際際滷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

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