Silverlight in MEF

Preview:

DESCRIPTION

Slidedeck from my "Silverlight and MEF" talk on NTK conference 2010. In Slovenian language.

Citation preview

Silverlight in MEF

Andrej Tozon, Microsoft MVP

ANT Andrej Tozon s.p., Ljubljana

@andrejt | andrej@tozon.info | 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

andrej@tozon.info

http://tozon.info/blog

Recommended