wcf ria services - jaoo.dkjaoo.dk/dl/2010/geeknight_slides/niels ladegaard beck_wcf ria... · hvad...

34
WCF RIA Services 26/1-2010 Niels Ladegaard Beck Software Pilot, Trifork [email protected]

Upload: vuongthuan

Post on 08-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

WCF RIA Services

26/1-2010

Niels Ladegaard Beck Software Pilot, Trifork

[email protected]

Page 2: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 3: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Hvad er WCF RIA Services?

Rich Internet Applications

– Webapplikationer, der deler karakteristika

med desktopapplikationer

Kommunikation mellem Sliverlight-klient

og server

Page 4: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Hvad er WCF RIA Services? (2)

Simplificering af N-tier mønsteret

– "Sammensmeltning" af ASP.NET og Silverlight

– Applikationslogik skrives i BL-laget – men kan

benyttes direkte i Silverlight

Kommunikation foregår asynkront

"Tillader fokusering på kernen i

forretningslogikken ved brug af et fælles

sæt entitetsklasser, valideringsregler og

operationer på tværs af lag"

Page 5: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

De første skridt

WCF RIA Services understøtter:

– LINQ to SQL (LinqToSqlDomainService<DomainContext>)

– LINQ to Entities (LinqToEntitiesDomainService<ObjectContext>)

– Egne domæneklasser (DomainService)

Annoter klassen med [EnableClientAccess]

Så er du flyvende!

Page 6: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 7: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

DomainService DomainContext

DomainContext

– Oprettes ved simpel kodegenerering

– Kald af operationer i tilhørende DomainService

– Objektidentitet og change tracking

– Caching

Foreach (Assembly either built or referenced)

Foreach (DomainService marked with [EnableClientAccess])

Generate a DomainContext class on the Silverlight client

Foreach (Entity exposed by DomainService)

Generate entity proxy class on the Silverlight client

Page 8: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

DomainContext-klassen

Samme namespace som DomainService

Forespørgselsmetoder fra tilhørende

DomainService har suffikset Query, hvis

resultat kan gives til DomainContext.Load()

for at udføre forespørgslen på serveren

Insert, update og delete metoder defineret i

tilhørende DomainService stilles til rådighed

Egne metoder defineret i tilhørende

DomainService stilles til rådighed

Page 9: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Brugen af DomainContext

Programmatisk – dataGrid.ItemsSource = DomainContext.Employees;

DomainContext.Load(DomainContext.GetEmployeeQuery());

Deklarativt – <riaControls:DomainDataSource x:Name="EmployeeDS"

QueryName="GetEmployeeQuery"> <riaControls:DomainDataSource.DomainContext> <ds:DomainContext /> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource> <data:DataGrid x:Name="EmployeeDataGrid" Height="Auto" ItemsSource="{Binding Data, ElementName=EmployeeDS}" />

Page 10: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Genererede entiteter

Genererede proxy-entiteter...

– ...har samme namespace som på serveren

– ...har samme navn

– ...har samme public properties

– ...understøtter INotifyPropertyChanged i setters

– ...understøtter attributbaseret validering for setters samt den samlede entitet

– ...understøtter brugen af egne validerings-attributter

Page 11: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 12: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Indsættelse af nye data

Markeret med [Insert] eller

Præfikset med Insert, Add eller Create

Eksempel: public void InsertEmployee(Employee newEmployee) {...}

Page 13: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Forespørgsler

Annoteret med [Query] eller

Returnerer T, IEnumerable<T> eller IQueryable<T> hvor T er en entitet

– En entitet er en public, ikke-generisk, konkret type med en nøgle ([Key])

Tager 0 eller flere parametre

Ingen understøttelse af overloading!

Metode i DomainContext'en suffikset Query, der returnerer EntityQuery<T>

Page 14: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Udførelse af forespørgsler

Query-metoden kaldes EntityQuery<T>

EntityQuery<T> understøtter brugen af – Where

– OrderBy / ThenBy

– Skip / Take

EntityQuery<T> gives til DomainContext.Load() LoadOperation<T>

LoadOperation<T>.Entities indeholder de

returnerede entiteter

Page 15: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Opdatering af data

Annoteret med [Update] eller

Præfikset med Update, Change eller Modify

Eksempel: public void UpdateEmployee(Employee changedEmployee) {...}

Hint: original-entiteter kan findes

således: ChangeSet.GetOriginal(T)

Page 16: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Opdatering af data (2)

Annoteret med [Update(UsingCustomMethod=true)] eller

Returnerer void, tager en entitet som første parameter og er ikke en query/insert/update/ delete-metode

Kan kaldes på DomainContext'en eller direkte på T – DomainContext.DoStuff(T, newValue)

– T.DoStuff(newValue)

Udføres ved kald til SubmitChanges()

Page 17: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Sletning af data

Annoteret med [Delete] eller

Præfikset med Delete eller Remove

Eksempel: public void DeleteEmployee(Employee employee) {...}

Page 18: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Invoke operationer

Annoteret med [Invoke] eller

Har kun understøttede typer i signaturen og er ikke en query/insert/update/delete/ custom-metode

Ingen change tracking eller deferred execution

Asynkront kald – Returværdien kan hentes fra

• InvokeOperation.Value

• Callback function

• Completed-event på InvokeOperation

Page 19: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Ignorering af metoder

Konventionsbaseret udeladelse af

metode

– Marker med [IgnoreOperation]

Page 20: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Metadata

Kan tilknyttes uden ændring af entiteten

selv

Klassen dekoreres med [MetadataType(typeof(X))]

Metadataklassen

– Valideringsattributter tilknyttes variable af

samme navn validering foregår både på

klient/server

– Klassen eksisterer kun på serveren

Page 21: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Deling af logik

Foregår typisk ved delt projekt

– Svært at undgå cirkulære projektreferencer

WCF RIA Services tillader deling af

server-logik

– Filer med endelsen .shared.cs kopieres til

klienten

Page 22: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 23: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Understøttede typer

Simple typer – Primitive typer i .NET

• Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Char, Double, Single

– String, Decimal, DateTime, TimeSpan, Guid, Uri, XElement

Komplekse typer – Byte[], System.Data.Linq.Binary, arrays af de simple

typer

– IEnumerable<T> og Nullable<T> hvor T er en af de simple typer

– Typer, der implementerer IList og har en tom konstruktør

Page 24: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Change Sets (Unit of Work)

Operationer samles i en unit of work

– Insert, update og delete

– Egne domæneoperationer

– Ikke invokeoperationer ([InvokeOperation])

Ændringer trackes af EntityContainer (DomainContext.EntityContainer)

Ændringer sendes samlet med SubmitChanges

– Alt går godt – eller fejler samlet • Kræver at datalaget benytter transactions

Page 25: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Asynkrone operationer

DomainContext'ens domæneoperationer

– Query LoadOperation

– Submit SubmitOperation

– Invoke InvokeOperation

...Operation nedarver fra OperationBase

– Implementerer INotifyPropertyChanged

– IsComplete, Completed-event, UserState, CanCancel, Cancel(), IsCanceled, HasError, Error, IsErrorHandled, MarkErrorAsHandled()

Page 26: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Concurrency håndtering

Annoteret med [Resolve] eller

Resolve-præfiks, bool-returværdi og

følgende fire inputparametre:

bool ResolveProduct<T>(T current, T original,

T store, bool isDelete)

Page 27: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Sikkerhed

Implementer AuthenticationBase<IUser> og annoter med [EnableClientAccess]

– Benytter standard ASP.NET authentication • Benyt IAuthentication<T> for egen logik

Marker metoder/klasse med – [RequiresAuthentication]

– [RequiresRole("Administrator")]

– Nedarv fra AuthorizationAttribute og overskriv Authorize(IPrincipal)

Følsomme oplysninger skjules let – [EnableClientAccess(RequiresSecureEndpoint = true)]

Page 28: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Configuration/konvention

Motivation for konventionsbaseret design

– Mindre arbejde for udvikleren

– Mere konsistent og æstetisk kodeoplevelse

Page 29: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 31: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika

Dagens program

Hvad er WCF RIA Services

Generering af klasser på klienten

CRUD m.m.

Diverse

Links

Spørgsmål

Page 32: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika
Page 33: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika
Page 34: WCF RIA Services - jaoo.dkjaoo.dk/dl/2010/GeekNight_Slides/Niels Ladegaard Beck_WCF RIA... · Hvad er WCF RIA Services? Rich Internet Applications –Webapplikationer, der deler karakteristika