Vállalati adatok megnyitása a külvilág felé Árvai Zoltán Oktató, webfejlesztő Számalk Zrt
Bevezetés a Kánaánba Az előadás célja Útravalók Vállalati adatok kinyitása a világ felé, oly módon, hogy tetszőleges platform számára elérhető és értelmezhető legyen Ne fájjon Útravalók Használjunk Entity Framework-öt adatmodellként, az egyszerű adatkezelés érdekében ADO.NET Data Services-zel publikáljuk az adatainkat AtomPub formátumban, hogy mindenki értse
Gyakori ”szolgátatás-központú” szituációk HTML + JavaScript Data (XML, stb) DLL + XAML Data (XML, stb) Data (XML, stb) Mashup UI Data Feed AJAX alkalmazások Silverlight alkalmazások Online Szolgáltatások Mashup-ok
Hogy néz ki a klasszikus módszer? 4-4-2017 Hogy néz ki a klasszikus módszer? using (SqlConnection c = new SqlConnection(…)) { c.Open(); string sql = "SELECT c.Name, c.Phone, c.CreationDate " + "FROM Customers c " + "WHERE c.City= @p0" SqlCommand cmd = new SqlCommand(sql, c); cmd.Parameters.AddWithValue("@p0", "London"); SqlDataReader dr = c.ExecuteReader(cmd); while(dr.Read()) { string name = dr.GetString(0); string phone = dr.GetString(1); DateTime date = dr.GetDateTime(2); … } Lerkédezés stringként Muszáj paraméterezni Az elem típusáról nincs infó Ha elszáll, futásidőben teszi Nincs IntelliSense sem
Ez így fáj….
ADO.NET Entity Framework v1 4-4-2017 ADO.NET Entity Framework v1 ORM eszköz .NET osztályokat SQL adatokhoz köt Linq-es lekérdezéseket átalakítja SQL lekérdezéssé ADO.NET fölött csücsül Kiterejedt támogatást nyújt változáskövetésre (teljes CRUD), tranzakciókat, konkurrencia problémákat hatékonyan képes kezelni. De Mitől más?
Entity Data Model - EDMX 4-4-2017 Entity Data Model - EDMX • CSDL – Hogy néz ki egy entitás? • SSDL – Mi van az adatbázisban? • MSL – Hogy kapcsolódnak össze? Conceptual Model Map Storage/Logical Model Entity Data Model Schema Datastore Objects Schema *.CSDL *.MSL *.SSDL OO osztály (Property + Metódus RDBMS (tábla, nézet, SP-k, Fv-k)
LINQ to Entity Framework 4-4-2017 from c in db.Customers where c.City =="London” select c.CompanyName Application db.AddToCustomer(c1); c2.City = ”Boston"; db.DeleteObject(c3); IQueryable<T> Objects SaveChanges() LINQ to EF (ObjectContext) SQL Query or SProc Resultset DML vagy SProcs INSERT INTO Customer … UPDATE Customer … DELETE FROM Customer … SELECT CompanyName FROM Customer WHERE City ==‘London' RDBMS
Northwind adatmodell elkészítése Demó Northwind adatmodell elkészítése Semmi extra, csak az EF adatmodellt elkészítjük, picit megnézzük hogy a designer mit mutat, meg belenézünk, hogy mit generált. (extrán lightosan)
Web szolgáltatások (ASMX, WCF) 1) GetCustomer(int id) 2) GetCustomers() 3) GetCustomers(string orderBy) 4) GetCustomers(string orderBy, string sortDirection) 5) GetCustomers(string orderBy, string sortDirection, int offset, int count) 6) GetCustomers(string orderBy, string sortDirection, int offset, int count, string filter, string filterValue)
Ez így fáj…
Elvárások egy adatcentrikus szolgáltatás felé CRUD Lapozás Rendezés Szűrés RESTful Kiterjeszthető
ADO.NET Data Service (IQueryable) WCF Service DataService<T> Entity Data Model CLR Model (IQueryable) LINQ To SQL Model Custom Model
Hogyan fogunk tudni lekérdezni bármit is?
Címzés Resource URI Szolgáltatás AdventureWorks.svc Entitás halmaz AdventureWorks.svc/Customers Entitás AdventureWorks.svc/Customers(1) Reláció AdventureWorks.svc/Customers(1)/Address Property AdventureWorks.svc/Customers(1)/Address/City AdventureWorks.svc/Customers(1)/FirstName
Adatok publikálása ADO.NET Data Services segítségével Demó Adatok publikálása ADO.NET Data Services segítségével ADO.NET DS réteg elkészítése, access rule-ok. Lekérdezések url szintaktával. (ha idő engedi, service operation is írható....)
Query operátorok Rendezés Lapozás Szűrés Mohó kiértékelés $orderby [asc | desc] Lapozás $skip $top Szűrés $filter Mohó kiértékelés $expand
Összetett lekérdezések futtatása Demó Összetett lekérdezések futtatása Lekérdezés, ahol szűrünk, rendezezük, top, skip stb...
Kliensek Data Service
Mit tud a kliens proxy? OO hozzáférés az adatokhoz Változás követés Konkurrencia kezelés Kötegelt művelet végrehajtás
AJAX kliens készítése ADO.NET Data Services-hez Demó AJAX kliens készítése ADO.NET Data Services-hez AJAXos klienst írunk, ahol egy táblába töltünk adatokat (kódbehúz legalább az onSuccess-nél)
IE8 Developer Tools ”Live Edit” Stílusok követése JS Debugging CallStack JS Console JS Profiling
AJAX kliensünk teljesítményének elemzése IE8 Developer Tools-szal Demó AJAX kliensünk teljesítményének elemzése IE8 Developer Tools-szal Megnézzük, hogy hogyan navigálhatók a hívásaink (call stack)... Hogyan lehet megnézni, mi mennyi ideig tart (módosítunk is a lekérdezés, emiatt) Majd ha ezt kivégeztük, megnézzük a live edit, debugging funckiókat, hogyan kezeli a css-t stb...
Összegzés Az előadás célja Útravalók Vállalati adatok kinyitása a világ felé, oly módon, hogy tetszőleges platform számára elérhető és értelmezhető legyen Útravalók Használjunk Entity Framework-öt adatmodellként, az egyszerű adatkezelés érdekében ADO.NET Data Services-zel publikáljuk az adatainkat AtomPub formátumban, hogy mindenki értse
És a legfontosabb… NEM FÁJT!