Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Barátok Csala Péter webfejlesztő

Hasonló előadás


Az előadások a következő témára: "Barátok Csala Péter webfejlesztő"— Előadás másolata:

1 Barátok Csala Péter webfejlesztő http://csalapeter.spaces.live.com peter.csala@student-partners.ms

2 Tartalom (Problem – Design – Solution) Hogyan kezdjünk hozzá? Adatbázis megtervezése – Hogyan érdemes implementálni a barátság modellt? – Mire ügyeljünk tervezéskor? Adatok lekérése az adatbázisból Adatok megjelenítése Adatbázis optimalizáció

3 Hogyan kezdjünk hozzá? Határozzunk meg mivel és mit szeretnénk csinálni – Ezt hívjuk modell alkotásnak – Milyen objektumokkal fogunk dolgozni Felhasználók – Milyen műveletek lesznek az objektumokhoz Barátság kérvényezés, elfogadás, felbontás Megj.: Alkalmazáshoz készítjük az adatbázist és nem fordítva!

4 Hogyan tároljuk el az információkat? A Felhasználó tábla kiegészítése – Barát1, Barát2, … Barát50, stb. Ne korlátozzuk a barátok számát! – Barátság és Felhasználó külön szedése – 2-sok kapcsolat Egy felhasználóhoz sok barátság rekord tartozhat Egy barátsághoz két ember kell Felhasználónként 1-1 barátság rekord? – Nem, elég egy fél rekord is! WTF?

5 Egy kis matek Tekintsünk a barátságra, mint egy relációra – Friends(a,b) Mit tudunk róla? – Tranzitív? Friends(a,b) + Friends(b,c) !=> Friends(a,c) Láncolás kilőve… – Kommutatív? Friends(a,b) = Friends(b,a) Két felhasználóhoz elég egy barátság rekord!

6 Barátságról információk Kik barátok √ – A 2 résztvevőre egy-egy mutató Barátság állapota – Barátságokon értelmezett műveletekhez kérvényezés, elfogadás, felbontás – Lehetséges állapotok Kérvény elküldve, de még nincs elfogadva (Waiting) Kérvény elküldve és elfogadva (Accepted) Barátság felbontása (Broken)

7 Az Adatbázisunk CREATE TABLE [dbo].[Relationships] ( Id int IDENTITY(1,1) NOT NULL PRIMARY KEY, ApplicantID int NOT NULL, PersonID int NOT NULL, Accepted smallint NULL, )

8 Mire ügyeljünk tervezéskor? Beszédes nevek választása – Angol esetén: figyeljünk az egyes és többes számra Megfelelő adattípusok használata – Mindig a legszűkebb olyan halmazt válasszuk, amibe még belefér a tárolandó adat (pl.: smallint) Minimalizáljuk a duplikált adatokat Gondoljunk a jövőre is! Okosan válasszuk meg a kulcsokat/indexeket

9 Kulcsok Két tábla összekapcsolására használjuk őket 1-sok kapcsolatnál megköveteljük az egyediséget Kulcstípusok – Természetes kulcsok (Intelligent Key) Egy vagy több mező alapján – Helyettesítő kulcsok (Surrogate Key) Rendszer által generált értékek AutoIncrement, GUID

10 Demó Barátság tábla létrehozása

11 Adatbázis elérése Linq To Sql – Adatbázis objektumokból.NET entitások – (LinqDataSource) Fölötte a DAL – Data Access Layer (Adatelérési réteg) Egyszerű statikus osztály/statikus metódusokkal Repository gyűjtemény (IRepository + SDSRepository) – Kódból is használható, illetve ObjectDataSource- szal is

12 Hogy néz ki egy Repository? CRUD műveletek vannak benne – Create, Retrieve ( = Select), Update, Delete Create pl.: NewObject(string name, …) Retrieve pl.: GetObjectById(int _id), GetAllObjects() – Filter, Query, Paging Update pl.: SaveObject(Something _s) Delete pl.: RemoveObject(Something _s) Egy interfészen keresztül definiáljuk – Könnyen cserélhető >> könnyen tesztelhető

13 Rétegek egymásra épülése

14 Demó DAL elkészítése

15 Adatmegjelenítés/Adatkötés Adatbázisbeli információk felhasználó felülethez történő kapcsolása – Pl.: Text= //one-way binding (Létezik kétirányú adatkötés is: Bind()) – Több rekord egyidejű megjelenítése esetén Visszavezetés egyszerű adatkötésre ItemTemplate (Listás ábrázolás) ColumnTemplate/FieldTemplate (Táblás reprezentáció)

16 ItemTemplate >> User Control Név: Életkor: ">Tovább... Ez is HTML kód. Csomagoljuk be egy „mini” oldalként = UserControl

17 Egyedi vezérlők UserControl/(Page fragment) (*.ascx) – Mini oldal, amely beágyazható más oldalakba – Ugyanúgy van markup és code-behind CompositeControl (*.cs >> dll) – Több vezérlő együttese – Nekünk kell megadnunk kódból a renderelt html-t CustomControl (*.cs >> dll) – Egy egyedi vezérlő – Új funkcionalitás

18 Egyedi vezérlők előnyei Újrahasznosíthatóság Kiterjeszthetőség Templatezhetőség Könnyű hordozhatóság

19 Demó Megjelenítési réteg

20 Barátságok kezelése automatával I. Friends.aspx?Mode={add|remove|accept}&Id ={1..} Kapcsolódó probléma: Barát kérvényezés gomb megjelenése, amikor nem kéne – Mi megoldásunk: Gomb megjelenik, ha már barát, akkor nem történik semmi Nem túl felhasználó barát meo.  – Javítás: Csak ott jelenjen meg a gomb, ahol kell is

21 Barátságok kezelése automatával II. – Javítás: Csak ott jelenjen meg a gomb, ahol kell is Megoldás: – ItemDataBound eseménykor kontrolláljuk a megjelenést – Lekérdezzük, hogy barátok-e, ha igen, akkor Visibilty=false – Túlságosan adatbázis igényes egyesével lekérdezgetni Megoldás javítása: – Először lekérjük az összes barátunkat – Eltároljuk egy ideiglenes tárolóban – Majd ennek segítségével hajtjuk végre a barátság vizsgálatot

22 Adatbázis optimalizáció Egy egyszerű példán keresztül – Hányan regisztráltak az oldalra? – Select Count(*) … >> költséges megoldás – Külön statisztika tábla (StatName, StatValue) SumRegUser:15670, FemaleUser:7817, (Male:rest) – 2 táblát kell most már így karbantartani Bonyolódik a DAL >> nem jó dolog  – Használjunk trigger-eket Insert, Update, Delete esetén módosítjuk a stat táblát is

23 Továbbfejlesztési lehetőségek Barát kérvényezésről értesítés Barát invitálás rendszeren kívülieknek Megismerkedési körülmények tárolása Mások barátainak megtekintése Csoport létrehozási lehetőség Nyitás a külvilág/fejlesztők felé (API) Friends.aspx?Mode=add&Id=1 cseréje Friends/add/1 (ASP.NET Routing) …

24 Elmélyülési javaslatok

25 Kérdések és válaszok 1) Mi az a Repository és mire jó? 2) Mire kell ügyelni egy adatbázis megtervezésekor? 3) Ti jöttök! 4)?

26


Letölteni ppt "Barátok Csala Péter webfejlesztő"

Hasonló előadás


Google Hirdetések