310 likes | 549 Views
Pohjustus. Esitys on kehitt?j?lt? kehitt?j?lleSis?lt?? pieni? osia, ei tilaa yleiselle kuvaukselleAsiakokonaisuus helppo omaksua, vaikka tekniikka ei olisikaan tuttu. Pohjustus. LINQ to SQL on "kuollut"Toki, jos ei aio tehd? tuotantokamaa vuoteenT4 generoinnilla joustava vaihtaa esim. EF:?
E N D
1. ADO.NET DataServices Olio-relaatiorakenne HTTP(S):n yli palveltuna Kalle Launiala ProtonIT Oy
2. Pohjustus
Esitys on kehittjlt kehittjlle
Sislt pieni osia, ei tilaa yleiselle kuvaukselle
Asiakokonaisuus helppo omaksua, vaikka tekniikka ei olisikaan tuttu
3. Pohjustus
LINQ to SQL on kuollut
Toki, jos ei aio tehd tuotantokamaa vuoteen
T4 generoinnilla joustava vaihtaa esim. EF:n
LINQ to SQL tarjoaa helpon generointikohteen lhte liikkeelle
Loogisen ratkaisun konkretisointi LINQ to SQL:n avulla
4. ADO.NET DataServices
Yleiskuva ADO.NET DataServicesist
Kyttjkohtainen data
Toteutus
Client demo (Silverlight 2)
5. Yleiskuva
ADO.NET DataServices palvelee DataContextin HTTP palveluna
LINQ to SQL
Entity Framework
Mik tahansa IQueryable<T> palauttava luokka
IEnumerable on castattavissa
Normaali array mist tahansa luokasta
6. Server
Palvelinpss rajallinen DataContext logiikka
Table (IQueryable) haut/pivitykset
Operaatiot
IUpdateService rajapintatoteutus pivityksi varten
EF:ss providerissa, LINQ to SQL:ss lytyy webist default toteutus
7. Client
Service proxy (ei DataService spesifinen)
1:1 oliorakenne
Ei logiikkaa
Paitsi custom generoinnissa
Ei luottamusta
8. Kontrollointikeinot
Oikeustasot kaikki lukee/kirjoittaa
Entitykohtainen IDataServiceConfiguration.SetEntitySetAccessRule("*", EntitySetRights.All);
Query request kohtaiset QueryInterceptorit
[QueryInterceptor("TestClasses")]
public Expression<Func<TestClass, bool>> FilterTCs() {
return tc => tc.TestClassID == 2;
}
9. ADO.NET DataServices
Yleiskuva ADO.NET DataServicesist
Kyttjkohtainen data
Toteutus
Client demo (Silverlight 2)
Yhteenveto
10. Account
Mahdollisuus usealle accountille (julkiset osuudet, account kohtaiset, sisaraccountit...)
Oikeudet eri accounttikohtaisten roolien mukaan
Pkyttjll kaikki oikeudet omaan dataan, mutta jakokohtaiset oikeudet muiden accounttien dataan
Mahdollisuus jakaa dataa hallitusti mys kyttjien toimesta
11. Kyttjkohtainen data Datarakenne kyttj/account kohtainen
12. Kyttskenaariot
Kaikki online/SaaS palvelut
Enterprise palvelut
Kyttjryhmkohtainen data
Roolikohtaiset oikeustasot samaan dataan
Tyls tehd kantatasolla (= jtetn usein toteuttamatta)
Rivikohtainen / liitoslogiikka viel tylmp
13. ADO.NET DataServices
Yleiskuva ADO.NET DataServicesist
Kyttjkohtainen data
Toteutus
Client demo (Silverlight 2)
Yhteenveto
14. Kyttjntunnistus
Autentikointi requestitasolla
Global.asax : AuthenticateRequest
Liitos datarakenteen user / account tietoon
CurrentUser / ActiveAccount cacheen HttpContext.Current.Items
15. Rajoituskerrokset
QueryInterceptorit
True/false expression yksittiselle itemille
IUpdateServicen toteutuskerros
Yksittisille riippumattomille objekteille
Viittauksia vaativat osuudet oliorakenteeseen
16. Oliomallin vaatimukset
Muutosten liitos vaatii yhteisen DataContextin
Requestikohtainen globaali DataContext
Samalla tasolla CurrentUser/ActiveAccount
Toteutus olioiden haun/validoinnin hookeissa
17. Oliomallissa
OnLoaded = Lukuoikeudet
Dynaamiset viittaukset / laskennat
OnValidate = Kirjoitusoikeudet
SubmitChanges yliajo
Propagoivat muutokset PreValidate
Denormalisointi / viittaukset
Sek luku- ett kirjoitusoperaatioita
18. DataContextissa
IUpdateable toteutus
Jtetn huomiotta autogeneroitava data (esim. Created/modified/ID)
Ei luoteta clientin dataan
Joskus ID relaatioissa / Data Uploadissa joudutaan luottamaan clientin ID:hen
19. Toteutuksen haaste
Haaste saada keskitettyj perittyj piirteit ilman perint
Entity mritykset accountin osalta samanlaiset objektikohtaisesti
Oliomalliin ja QueryInterceptoreihin toisiinsa liittyvt toteutukset
20. T4 Templatet
T4 = Text Template Transformation Toolkit
Vakiona mukana Visual Studio 2008:ssa
.tt tiedostopte
Koodiohjattu vapaamuotoinen generaattori
21. T4 Templatet
demo
22. T4 kytt Hallittu generointi sek oliomalliin, ett Data Serviceen:n
Oliomallin partial hookit
ADS:n QueryInterceptorit, IUpdateService, Proxyluokat
23. T4 joustavuus Mahdollistaa vaihtoehtoisen rakenteen toteutuksen O/R mappaukselle
Memberwise copy suoran DataContext entityn ja proxy entityn vlill
Useampi partial class joustavuus
Vakiotoiminto (esim LINQ to SQL)
Plle ratkaisu/asiakascustomoinnit
24. T4 not official
LINQ to SQL
Entity Framework
Service proxy luokat (mm. Data Services)
25. ADO.NET DataServices
Yleiskuva ADO.NET DataServicesist
Kyttjkohtainen data
Toteutus
Client demo (Silverlight 2)
26. Silverlight 2 Client
Normaali vakio VS generoima service proxy
Voisi olla mys T4 customoitava
Huomioitavaa; proxy generoitaessa hetkeksi autentikointi pois
27. Silverlight 2 Client Huom; partial classien kanssa typot hukkaa toiminnallisuutta
Erityisesti namespace erot sotkevat ikvsti
AutoSet ignore ID:n osalta voi sotkea samassa insertiss menevt linkatut entityt
28. Esimerkkidata Client Demon datarakenne
29. Datan sisllst Live ID autentikointi
Kaksi tunnusta; yritys ja kyttj
Kyttjll lukuoikeudet yrityksen accountiin tietoihin
Kategoriat yleisi; kyttjll voi olla yrityksen kategoriassa omia tuotteitaan
30. Silverlight Client
demo
31. Selain access demo
demo
32. Listietoa Clarius T4 Editor
http://www.visualt4.com/
LINQ to SQL T4
http://damieng.com/
Entity Framework T4
http://blogs.msdn.com/dsimmons/archive/2008/10/27/using-t4-templates-to-generate-ef-classes.aspx
ADO.NET DataService Proxy T4
http://www.silverlightshow.net/items/ADO.NET-Data-Services-Advanced-Topics-Custom-proxy-based-on-T4-templates.aspx