310 likes | 559 Vues
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