silverlight in mef
DESCRIPTION
Slidedeck from my "Silverlight and MEF" talk on NTK conference 2010. In Slovenian language.TRANSCRIPT
Silverlight in MEF
Andrej Tozon, Microsoft MVP
ANT Andrej Tozon s.p., Ljubljana
@andrejt | [email protected] | http://tozon.info/blog/
F
R
A
M
E
W
O
R
K
E
X
T
E
N
S
I B I L I T Y
NET Framework 4 Silverlight 4 .NET 3.5 SP1, Silverlight 3
[http://mef.codeplex.com]
F
R
A
M
E
W
O
R
K
E
X
T
E
N
S
I B I L I T Y
Scenarij 1: Razširitve / vtiči
Scenarij 2: Dostopnost
Scenarij 3: Omejevanje funkcionalnosti
Osnove MEF
Izvoz / Export
Pogodba / Contract
Uvoz / ImportDel / Part
Sestava / Composition
Osnove MEF: uvoz, izvoz, sestava
MEF – Pogodba
[Export]public class FlickrPhotoProvider{…}
[Export(typeof(FlickrPhotoProvider))]public class FlickrPhotoProvider{…}
[Export(@"Ant.Demo.Silverlight.FlickrPhotoProvider")]
public class FlickrPhotoProvider{…}
[Export("Flickr")]public class FlickrPhotoProvider{…}
[Import]public FlickrPhotoProvider
PhotoProvider { get; set; }
[Import(typeof(FlickrPhotoProvider))]public FlickrPhotoProvider
PhotoProvider { get; set; }
[Import(@"Ant.Demo.Silverlight.FlickrPhotoProvider")]
public FlickrPhotoProviderPhotoProvider { get; set; }
[Import("Flickr")]public FlickrPhotoProvider
PhotoProvider { get; set; }
MEF – Pogodba
FlickrPhotoProvider LocalPhotoProvider
[Import]public FlickrPhotoProvider FlickrPhotoProvider { get; set; }
[Import]public LocalPhotoProvider LocalPhotoProvider { get; set; }
MEF – Pogodba
FlickrPhotoProvider LocalPhotoProvider
[ImportMany]public IEnumerable<IPhotoProvider> PhotoProviders { get; set; }
IPhotoProvider
Uvoz več istovrstnih delov
MEF – Pogodba
[ImportMany]public IEnumerable<Lazy<IPhotoProvider>> PhotoProviders { get; set; }
Podprimo lenobo
• Lazy<T>
• Lazy<T>
• [PartCreationPolicy]
– Any
– Shared
– NonShared
• Lahko se določi na uvozu ali izvozu
• ExportFactory<T>
Nadzorovanje ţivljenske dobe objektovMEF – Pogodba
MEF – PogodbaMetapodatki
• Lazy<T>
• Lazy<T, M>
– Izvoz je lahko opremljen z metapodatki…
– … ki se ocenjujejo ob uvozu
• Zavračanje neustreznih delov
• Filtriranje
Pregledovalnik slik - nadgradnja
• Ţelja
– čim hitrejše začetno nalaganje
• Način za uresničitev ţelje
– Delitev aplikacije na dele
– Začetni paket (XAP) je čim manjši
– Ostale funkcionalnosti se naloţijo kasneje
MEF – PogodbaManjkajoči uvozi in ponovna sestava
(Import(AllowDefault = true, AllowRecomposition = true)]public IPhotoProvider PhotoProvider { get; set; }
• TypeCatalog
• AssemblyCatalog
• DirectoryCatalog (WPF)
• AggregateCatalog
• DeploymentCatalog
• [FilteredCatalog]
• Po meri…
KatalogiOdkrivanje delov
DeploymentCatalog in ponovna sestava
• Uvoz, izvoz, sestava
• Šibka sklopljenost delov
– Deli so na voljo od vsepovsod
– Nič več cirkularnih odvisnosti
• Zadovoljuje osnovne potrebe po DI/IoC
• Razširljiv
– Metapodatki
– Katalogi po meri, itd.
Povzetek
• MEF: Pregled [MSDN]
– http://tinyurl.com/MEFoverview
• MEF [CodePlex, .NET 3.5, SL3]
– http://mef.codeplex.com
• MEF Contrib
– http://mefcontrib.com
Viri
Vprašanja?
• Po predavanju boste na vaš elektronski naslov
prejeli vprašalnik o predavanju, ki ste ga ravnokar
poslušali.
• Vprašalniki bodo dostopni tudi preko profila na
spletnem portalu konference.
• Z izpolnjevanjem le tega pripomorete k izboljšanju
konference. Hvala!
Andrej Tozon
ANT Andrej Tozon s.p.
@andrejt
http://tozon.info/blog