„Adatvezérelt alkalmazások fejlesztése (AAF) - ZH- és vizsgajegyzetek” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
a (Harapeti átnevezte a(z) AafjegyzetAdateleres lapot a következő névre: Adatvezérelt alkalmazások fejlesztése (AAF) - ZH- és vizsgajegyzetek: Feleslegesek a külön-külön jegyzetlapok, egybe fogom ömleszteni őket, így könnyebben olv…)
a (typo-k javítása)
 
(3 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Infoszak|AafjegyzetAdateleres}}
+
{{Vissza|Adatvezérelt_alkalmazások_fejlesztése}}
  
 
==Adatelérés==
 
==Adatelérés==
37. sor: 37. sor:
  
  
[[Category:Infoszak]]
+
==LINQ to SQL==
 +
 
 +
Leképzés: Meta adatokkal
 +
 
 +
DataContext: Ezen keresztül csinálunk mindent
 +
 
 +
Lekérdezések:
 +
* IQueryable interface:
 +
** Expression tulajdonság
 +
** Execute() fv
 +
* Késleltetett lekérdezés
 +
* A végrehajtás során egy megfelelő provider lefordítja T-SQL-é
 +
 
 +
Relációk kezelése:
 +
* EntityRef, EntitySet: Késleltetett betöltés bejárás esetén is
 +
** Távoli lekérdezés: Szerveren fut(alapértelmezett)
 +
** Hely lekérdezés: Betöltjük előre
 +
 
 +
Join: Olyan táblák összekapcsolására, melyek között nincs kapcsolat
 +
 
 +
Névtelen típus: Olyan típus, melyet a fordító hoz létre, egyébként nem létezik
 +
* select new {Név=érték,..}
 +
* Nincs változáskövetés, mentés
 +
 
 +
Objektumok egyedisége: Ha két különböző helyen olvassuk be az adatot, akkor ugyanazt az objektumot kapjuk vissza
 +
* Identitás táblába kerül, ahol mindig a legelőször felolvasott objektumok vannak(tehát ha felolvassa, és már létezik, akkor a felolvasottat eldobja)
 +
* ObjectTrackingEnabled: kikapcsolható, de akkor read-only lesz
 +
* DataContext TableAttach: Olyan objektumokat is kezel, melyeket nem ő hozott létre
 +
 
 +
Öröklés:
 +
* Single Table Mapping(csak ezt támogatja):
 +
** Discriminator oszlop: [Column( IsDiscriminator = true )]
 +
** Táblához hozzá kell venni, hogy milyen értékei lehetnek a discriminatornak:
 +
<pre>
 +
[Table]
 +
[InheritanceMapping( Code = "C", Type = typeof( Customer ) )]
 +
[InheritanceMapping( Code = "E", Type = typeof( Employee ) )]
 +
[InheritanceMapping( Code = "P", Type = typeof( PartTimeEmployee ) )]
 +
[InheritanceMapping( Code = "X", Type = typeof( Contact ), IsDefault = true )]
 +
class Contact
 +
</pre>
 +
 
 +
Módosítás:
 +
* Change Tacking Service: Figyeli a módosításokat
 +
* DataContext.SubmitChanges(): menti a módosításokat, egyetlen tranzakcióban
 +
* Változások követése:
 +
** Eredeti értékeket is tároljuk: overhead
 +
** INotifyPropertyChanging: Ha változott, szól
 +
* Ha mentéskor látszik, hogy módosult a rekord:
 +
** Verziószámnak tekinthető oszlop címkézése: [Column (UpdateCheck=Always|Never||WhenChanged, IsVersion=TrueFalse)]
 +
** ConflictMode: Beállíthatjuk, hogy az első hibánál legyen kivétel, vagy próbálja meg mindet
 +
* Elosztott tranzakciót is készíthetünk
 +
 
 +
Tárolt eljárások:
 +
* [StoredProcedure(..)], [Function(..)] jelölést kap az egyik metódus, [Parameter(..)]-rel paraméterezhető
 +
* Erősen típusos visszatérési érték
 +
 
 +
Adatbázis létrehozása:
 +
* DataContext.DatabaseExists()
 +
* DataContext.DeleteDatabase()
 +
* DataContext.CreateDatabase()
 +
 
 +
-- [[SallaiTamas|sashee]] - 2009.06.03.
 +
 
 +
==WPF==
 +
 
 +
Tulajdonságai:
 +
* Teljeskörű integráció: 2D,3D, beszédfelismerés,...
 +
* Felbontás független: Nincs pixel
 +
* Hardveres gyorsítás: D3D-re épülve harveresen gyorsított, ami nem, az szoftveresen
 +
* Deklaratív szemlélet: XAML
 +
* Testreszabhatóság: Nem csak szöveg, hanem bármilyen Control lehet egy gombban pl,template, skin
 +
* Egyszerű telepítés: Hagyományos, böngészőben
 +
 
 +
Architektúra:
 +
* milcore: DirectX támogatás
 +
* Presentation Core
 +
* Presentation Framework
 +
 
 +
Főbb osztályok:
 +
* System.Threading.DispatcherObject: UI objektumokat csak a létrehozó szálból lehet módosítani, ezért egy dispatcher szükséges, aminek üzeneteket lehet küldeni, ami módosítja az objektumot
 +
* System.Windows.DependencyObject: Propertyben változás esetén másik property is változik. Lehet validálni is közben.
 +
* System.Windows.Media.Visual: Pixelek megjelenítése a képernyőn. A Visual tree-t tartja fent, kirajzolásnál ezt járja be.
 +
* System.Windows.UIElement: LayoutManagerek használata.
 +
** Fázisok:
 +
*** Mesaure: Mérés, a konténer megkérdezi a komponenstől, hogy mennyi helyet fog foglalni
 +
*** Arrange: Elrendezi a gyerekeket
 +
** Input szignál:
 +
*** Tunneling(preview fázis): Tartalmazási hierarhia csúcsától a célobjektumig
 +
*** Bubbling(tényleges fázis): Célobjektumtól felfele, ameddig nem kezelik
 +
* System.Windows.FrameworkElement: Stílusok használata
 +
** Explicit: Pontosan megmondjuk, hogy melyik objektumon akarjuk alkalmazni
 +
** Implicit: Adott osztály összes példányán alkalmazzuk
 +
* System.Windows.Control.Control: Vezérlők Visual tree-jét lehet vele átírni
 +
 
 +
XAML:
 +
* XML leírás, deklaratív
 +
* Tag-ek: példányosítás, attribútum: property beállítása
 +
* Default konstruktor hívódik mindig
 +
* Eseménykezelés: code behind
 +
* Összetett típusú property: XML gyerek, ahol oszály.propertynév alakban lesz beállítva
 +
* Típus konverterek: Ha nem megfelelő a típus, akkor keres egy megfelelőt, és azzal konvertál
 +
* Markup extensions: {} jelek között, x:Null ; x:Static ; x:Binding lehet. ...=... nevesített, e nélkül nm nevesített
 +
* Objektumok gyerekei:
 +
** Content property: Osztályok kijelölnek egy propertyt, amelyet az XML tag gyereke fog állítani
 +
** Kollekció elemei:
 +
*** Lista: IList-et implementálja.
 +
*** Dictionary: IDictionary-t implementálja. x:Key=... attribútuma kell legyen az elemeknek
 +
** Típus konverzió: Content property típuskonvertere, absztakt osztály típuskonvertere
 +
* Feldolgozása:
 +
** Futás idejű betöltés: XamlReader.load(..), majd FindName-vel lehet gyerekeket(x:Name)
 +
** Partial class: c:Class
 +
** BAML: bináris
 +
** .g.cs: osztály, betölti a BAML-t, elvégzi az összerendeléseket, feliratkozik az eseményekre
 +
** Procedurális kód XAML-ben: kerüljük
 +
** .NET osztály elérése XAML-ből
 +
 
 +
WPF belülről:
 +
* Logikai és vizuális fa
 +
* Dependencz property
 +
** Változás értesítés
 +
** Érték öröklés
 +
* Attached property: Gyerekelemek property-jeinek a beállítása
 +
* Routed events: Felefele áramlanak az események, amíg el nem kapjuk
 +
* Attached event: Olyan eseményekre is felírhatjuk az elemet, amelyet nem dobhat, de akkor az összes gyere által dobott adott eseményt megkapja
 +
 
 +
WPF controllok:
 +
* Content control: Egyetlen gyerekük lehet
 +
** Button, RepeatButton, ToggleButton, CheckBox, RadioButton
 +
** Label, Tooltip, Frame
 +
** GroupBox, Expander
 +
* Items Control: Tetszőleges mennyiségű gyerekük lehet
 +
* Range Control: Előre megadott számérték közötti számértéket jelenítenek meg
 +
* Text Control: TextBox, RichTextbox, PasswordBox
 +
 
 +
Méretezés, pozícionálás, transzformálás:
 +
* Méret:
 +
** Width, Height
 +
** Margin, Padding
 +
** Visibility
 +
* Pozicionálás:
 +
** Alignment
 +
** Content alignment
 +
* Transzformációk:
 +
** LayoutTransform: Elrendezés meghatározása előtt
 +
** RenderTransform: Után
 +
 
 +
Elrendezések Panelek segítségével:
 +
* Canvas: Abszolút pozicionálás
 +
* StackPanel: Függőlegesen/vízszintesen folytonosan
 +
* WrapPanel: Ha sok, akkor következő sor
 +
* DockPanel: Egyes oldalakhoz köthetjük
 +
* Grid: Táblázatos
 +
 
 +
Adatkötés: Két property értékének az összekötése
 +
* {Binding ElementName=.. Path=}
 +
** {Binding RelativeSource={RelativeSource Self}}
 +
** {Binding RelativeSource={RelativeSource TemplatedParent}}
 +
** {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type
 +
desiredType}}}
 +
** {Binding RelativeSource={RelativeSource AncestorType={x:Type desiredType}}}
 +
** {Binding RelativeSource={RelativeSource PreviousData}}
 +
* Kötés kollekcióhoz
 +
* Adat konvertálás
 +
 
 +
Erőforrások
 +
* Bináris erőforrások
 +
* Logikai erőforrások
 +
 
 +
Style, Control Template:
 +
* Style: propertyket összefog, hogy később együtt tudjuk beállítani őket
 +
* Control template: Control Visual tree-jének beállítása
 +
 
 +
-- [[SallaiTamas|sashee]] - 2009.06.01.
 +
 
 +
 
 +
==Adattárházak==
 +
 
 +
Alaptulajdonságok:
 +
* Időfüggő: Megállapítható, mely időponthoz van az adat kötve
 +
* Változatlan: Nincs update
 +
* Tematikus: Nem tartalmazzák az összes adatot, csak amelyikre szükség van
 +
* Integrált: Központian tárol
 +
 
 +
OLTP és adattárház összehasonlítása:
 +
* Elsődleges cél:
 +
** Aktuális adatok feldolgozása
 +
** Döntéstámogatás
 +
* Felhasználók:
 +
** Ügyintézők
 +
** Menedzsment
 +
* Terhelés jellege:
 +
** Egyszerű lekérdezés, adatmódosítás
 +
** Összetett lekérdezés
 +
* Jellemző mérőszám:
 +
** Feldolgozott tranzakciók száma
 +
** Lekérdezésre adott válasz ideje
 +
 
 +
Architektúrák:
 +
* Kétrétegű: A felhasználók közvetlenül az adattárházhoz kapcsolódnak, ami az OLTP-ből nyeri az adatokat
 +
* Háromrétegű: A felhasználók adatpiacokhoz(data mart) férnek hozzá, ahol tematikusan kiválasztott részek és származtatott adatok vannak
 +
 
 +
Adattárház építésének lépései:
 +
* Adatok kinyerése: Milyen adatokra van szükség, hogyan érjük el(ha pl. nem relációs)
 +
* Tisztítása:
 +
** Hiányzó adat kezelése
 +
*** Teljes rekord elvetése
 +
*** A hiányzó adat bekérése.
 +
*** A hiányzó adat helyettesítése
 +
**** Konstans értékkel
 +
**** Átlagértékkel
 +
**** Csoportra jellemző átlagértékkel
 +
**** Legvalószínűbb értékkel
 +
** Zajszűrés:
 +
*** Numerikus adatok zajszűrése:
 +
**** Binning: minden k számú elemcsoportot helyettesít az átlagával
 +
**** Csoportképzés: Több attribútum együttes előfordulását vizsgálják, majd az egymás közelében elhelyezkedő adatokat a csoportot jellemző adatokkal helyettesítjük (csoport súlypontjával)
 +
**** Regresszió: Ebben az esetben is több attribútum együttes előfordulását vizsgáljuk, az egyes attribútumok közt valamilyen függvénykapcsolatot keresünk (általában lineárisat), majd az egyes értékeket a regressziós függvény értékeivel helyettesítjük.
 +
*** Szöveges adatok:
 +
**** Szótár alapú
 +
**** Klaszterező: Hash fv-vel számokká képezzük le
 +
* Transzformálása: Az adatok az adattárház egységes sémájára történő leképzés
 +
** Rekord szintű:
 +
*** Kiválasztás
 +
*** Összekapcsolás
 +
** Mező szintű: Típuskonverzió
 +
*** Algoritmikus
 +
*** Lekérdezéssel
 +
* Betöltése és indexelése: Pillanatkép és histórikus adatok
 +
 
 +
Multidimenzionális adatmodell:
 +
* Alapelemei:
 +
** Dimenziós adatok: Ezen adatok mentén történik az elemzések végrehajtása
 +
** Hierarchiaszintek: Felbontás
 +
** Tényadatok: Amit elemzünk
 +
* Sémák:
 +
** Csillag: A tényadatokat tartalmazó táblához idegen kulcsokkal csatlakoznak a dimenziós tánlák
 +
** Hópehely: A tényadatokhoz csak a legalacsonyabb hierarchiaszint van csatolva, és ahhoz van a többi, így joinolni kell.
 +
 
 +
OLAP(Online Analytical Processing) rendszerek:
 +
* FASMI(Fast Analysis of Shared Multidimensional Information) teszt:
 +
** Fast: Gyors
 +
** Analysis: A felhasználó számára szükséges üzleti és statisztikai elemzések elkészítésére alkalmas.
 +
** Shared: Megosztott
 +
** Multidimensional
 +
** Information: Összes adat és származtatott adat elérhető
 +
 
 +
OLAP kocka:
 +
* Dimenzió: A kocka élei
 +
* Hierarchia: Elvégezhető elemzések mélysége
 +
* Aggregátum: Származtatott mennyiségek
 +
 
 +
OLAP kocka műveletek:
 +
* Szeletelés: 1 érték rögzítése, a diemnziószám csökken
 +
* Részkocka kiválasztása: Értékek megkötése
 +
* Lefúrás: Hierarchiaszint csökkentése
 +
* Felfelé görgetés: hierarchiaszint növelése
 +
* Forgatás: A megjelenített eredményt elforgatja
 +
 
 +
OLAP kocka tárolása:
 +
* ROLAP: Relációs
 +
* MOLAP: Saját, multidimenziós
 +
* HOLAP: Hibrid
 +
 
 +
Előkalkuláció mértéke: Ne legyen túl nagy, se túl kicsi
 +
 
 +
-- [[SallaiTamas|sashee]] - 2009.06.02.
 +
 
 +
==Entity Framework==
 +
 
 +
''EDM (Entity Data Modell):''
 +
* Conceptual Schema Definition Language (CSDL)
 +
* Store Schema Definition Language (SSDL)
 +
* Mapping Specification Language (MSL)
 +
* Működés
 +
** ObjectContext
 +
** Adattár -> Store Providers -> Entity Provider -> Object Services
 +
 
 +
''Lekérdezési lehetőségek:''
 +
* Entity SQL + Object Services
 +
** Ha LINQ-nél nagyobb kifejezőerőre van szükség
 +
** Ha dinamikusan összeállított lekérdezésekre van szükség
 +
** Ha a teljesítmény nagyon fontos
 +
* Entity SQL + Entity Client
 +
** Az adatokat sorban (streamelve) szeretnénk lekérdezni
 +
** Meglévő alkalmazások átírásakor
 +
* LINQ to Entities
 +
** Minden más esetben
 +
 
 +
''ORM leképezési lehetőségek EF-ben:''
 +
* TPH (Table Per Hierarchy)
 +
** Minden osztály egy táblába
 +
** EDM designer támogatja
 +
* TPT (Table Per Type)
 +
** Minden osztály külön táblába (az absztraktak is)
 +
** EDM designer támogatja
 +
* TPC (Table Per Class)
 +
** Minden valós osztály külön táblába (az absztraktak nem)
 +
** EDM designer '''nem''' támogatja
 +
 
 +
''Egyéb szolgáltatások:''
 +
* Komplex típusok használata
 +
* DefiningQuery
 +
* Lazy loading
 +
* Tárolt eljárások hívása
 +
 
 +
''Asszociáció típusok:''
 +
* Külső kulcsos asszociáció
 +
* Független asszociácó
 +
** A több-több kapcsolatat mindig ezzel valósítjuk meg
 +
** Mindig van navigation property
 +
 
 +
''Változáskövetés:''
 +
* Eredeményhalmazok összefűzése
 +
** NoTracking
 +
** AppendOnly
 +
** OverwriteChanges
 +
** PreserveChanges
 +
* EntityState
 +
** Detached
 +
** Unchanged
 +
** Added
 +
** Deleted
 +
** Modified
 +
* Entitás típusok
 +
** Entity object leszármazott
 +
*** Automatikus változáskövetés
 +
*** Lazy loading támogatás
 +
*** Hátránya, hogy nem tudunk csak az EntityObjectből származtatni
 +
** POCO
 +
*** Nincs automatikus változáskövetés, a DetectChanges metódust kell hívni
 +
*** Nincs lazy loading támogatás
 +
** POCO proxy
 +
*** Automatikus változáskövetés
 +
*** Lazy loading támogatás
 +
*** Futási időben leszármaztat az osztályunkból, így tudja biztosítani a fenti szolgáltatásokat, ezért speciális követelmények vonatkoznak a POCO osztályunkra
 +
** Self-Tracking Entities
 +
*** nem függ az EF-től
 +
*** Tulajdonképpen ez egy csináld magad megoldás, ugyanazt implementáljuk, mint amit az EF tud
 +
* SaveChanges
 +
 
 +
''Két és többrétegű alkalmazások:''
 +
* Kétrétegű
 +
** Az entitások nem hagyják el az OC alkalmazástartományát (nincs sorosítás)
 +
** Az állapotkezelést az OC megoldja ha a funkciók kompaktak (például egy dialógus ablak)
 +
* Többrétegű alkalmazás
 +
** Az entitás kikerül az OC alkalmazástartományából
 +
** Az állapotkövetés nem bízható az OC-ra
 +
** A változásokat az OC tudomására kell hozni
 +
 
 +
-- [[KoviBalu]] - 2011.06.04.
 +
 
 +
[[Kategória:Mérnök informatikus]]

A lap jelenlegi, 2014. június 12., 05:04-kori változata

← Vissza az előző oldalra – Adatvezérelt_alkalmazások_fejlesztése

Adatelérés

ADO .NET: relációs adatbázisok kezelése

Adatelérési modell:

  • Kapcsolatalapú modell: Folyamatosan fenntartunk egy kapcsolatot egy DataReader segítségével
  • Kapcsolatnélküli modell: Kiolvassuk, lezárjuk a kapcsoltatot, módosítunk, visszaírjuk. DataSet segítségével
    • DataAdapter: Kezeli a Connection-t, olvas, ír az adatbázisból/ba
    • DataSet: Mini adatbázis, a nagytestvér másolata, amíg nincs kapcsolat
    • Teljesítmény: Legkevesebb kapcsolódás

ADO .NET a gyakorlatban:

  • Connection String: Az adatbázishoz csatlakozás minden információját tárolja
  • ConnectionStringBuilder: Felépíti a ConnectionString-et, így nehezebb támadni
  • Kapcsolódás: Connection.open();
  • Command: utasítások végrehajtása
  • DataReader: Csak olvasható adatlekérés
  • DataAdapter: Adapter.Fill-el lehet DataSet-et feltölteni
    • DataRow állapotai:
      • Unchanged: változatlan
      • Added: újonnan lett létrehozva
      • Deleted: törlődött
      • Modified: módosult
      • Detached: a sor nem része egy DataRowCollection-nek
    • Adat sorok verziói:
      • Original: a kiindulási érték
      • Current: aktuális érték
      • Default: DataRowState-től függ
      • Proposed: szerkesztés alatt álló érték
  • Tranzakciók: Connection.beginTransaction-nel visszakapunk egy Tranzakciót, ezt kell a Command-okhoz rendelni, végül commit vagy rollback
  • DataSet, típusos DataSet
  • DataView: DataSet-ből nézet, mely folyamatosan változik a DataSet-tel

-- sashee - 2009.06.01.


LINQ to SQL

Leképzés: Meta adatokkal

DataContext: Ezen keresztül csinálunk mindent

Lekérdezések:

  • IQueryable interface:
    • Expression tulajdonság
    • Execute() fv
  • Késleltetett lekérdezés
  • A végrehajtás során egy megfelelő provider lefordítja T-SQL-é

Relációk kezelése:

  • EntityRef, EntitySet: Késleltetett betöltés bejárás esetén is
    • Távoli lekérdezés: Szerveren fut(alapértelmezett)
    • Hely lekérdezés: Betöltjük előre

Join: Olyan táblák összekapcsolására, melyek között nincs kapcsolat

Névtelen típus: Olyan típus, melyet a fordító hoz létre, egyébként nem létezik

  • select new {Név=érték,..}
  • Nincs változáskövetés, mentés

Objektumok egyedisége: Ha két különböző helyen olvassuk be az adatot, akkor ugyanazt az objektumot kapjuk vissza

  • Identitás táblába kerül, ahol mindig a legelőször felolvasott objektumok vannak(tehát ha felolvassa, és már létezik, akkor a felolvasottat eldobja)
  • ObjectTrackingEnabled: kikapcsolható, de akkor read-only lesz
  • DataContext TableAttach: Olyan objektumokat is kezel, melyeket nem ő hozott létre

Öröklés:

  • Single Table Mapping(csak ezt támogatja):
    • Discriminator oszlop: [Column( IsDiscriminator = true )]
    • Táblához hozzá kell venni, hogy milyen értékei lehetnek a discriminatornak:
[Table]
[InheritanceMapping( Code = "C", Type = typeof( Customer ) )]
[InheritanceMapping( Code = "E", Type = typeof( Employee ) )]
[InheritanceMapping( Code = "P", Type = typeof( PartTimeEmployee ) )]
[InheritanceMapping( Code = "X", Type = typeof( Contact ), IsDefault = true )]
class Contact

Módosítás:

  • Change Tacking Service: Figyeli a módosításokat
  • DataContext.SubmitChanges(): menti a módosításokat, egyetlen tranzakcióban
  • Változások követése:
    • Eredeti értékeket is tároljuk: overhead
    • INotifyPropertyChanging: Ha változott, szól
  • Ha mentéskor látszik, hogy módosult a rekord:
    • Verziószámnak tekinthető oszlop címkézése: [Column (UpdateCheck=Always|Never||WhenChanged, IsVersion=TrueFalse)]
    • ConflictMode: Beállíthatjuk, hogy az első hibánál legyen kivétel, vagy próbálja meg mindet
  • Elosztott tranzakciót is készíthetünk

Tárolt eljárások:

  • [StoredProcedure(..)], [Function(..)] jelölést kap az egyik metódus, [Parameter(..)]-rel paraméterezhető
  • Erősen típusos visszatérési érték

Adatbázis létrehozása:

  • DataContext.DatabaseExists()
  • DataContext.DeleteDatabase()
  • DataContext.CreateDatabase()

-- sashee - 2009.06.03.

WPF

Tulajdonságai:

  • Teljeskörű integráció: 2D,3D, beszédfelismerés,...
  • Felbontás független: Nincs pixel
  • Hardveres gyorsítás: D3D-re épülve harveresen gyorsított, ami nem, az szoftveresen
  • Deklaratív szemlélet: XAML
  • Testreszabhatóság: Nem csak szöveg, hanem bármilyen Control lehet egy gombban pl,template, skin
  • Egyszerű telepítés: Hagyományos, böngészőben

Architektúra:

  • milcore: DirectX támogatás
  • Presentation Core
  • Presentation Framework

Főbb osztályok:

  • System.Threading.DispatcherObject: UI objektumokat csak a létrehozó szálból lehet módosítani, ezért egy dispatcher szükséges, aminek üzeneteket lehet küldeni, ami módosítja az objektumot
  • System.Windows.DependencyObject: Propertyben változás esetén másik property is változik. Lehet validálni is közben.
  • System.Windows.Media.Visual: Pixelek megjelenítése a képernyőn. A Visual tree-t tartja fent, kirajzolásnál ezt járja be.
  • System.Windows.UIElement: LayoutManagerek használata.
    • Fázisok:
      • Mesaure: Mérés, a konténer megkérdezi a komponenstől, hogy mennyi helyet fog foglalni
      • Arrange: Elrendezi a gyerekeket
    • Input szignál:
      • Tunneling(preview fázis): Tartalmazási hierarhia csúcsától a célobjektumig
      • Bubbling(tényleges fázis): Célobjektumtól felfele, ameddig nem kezelik
  • System.Windows.FrameworkElement: Stílusok használata
    • Explicit: Pontosan megmondjuk, hogy melyik objektumon akarjuk alkalmazni
    • Implicit: Adott osztály összes példányán alkalmazzuk
  • System.Windows.Control.Control: Vezérlők Visual tree-jét lehet vele átírni

XAML:

  • XML leírás, deklaratív
  • Tag-ek: példányosítás, attribútum: property beállítása
  • Default konstruktor hívódik mindig
  • Eseménykezelés: code behind
  • Összetett típusú property: XML gyerek, ahol oszály.propertynév alakban lesz beállítva
  • Típus konverterek: Ha nem megfelelő a típus, akkor keres egy megfelelőt, és azzal konvertál
  • Markup extensions: {} jelek között, x:Null ; x:Static ; x:Binding lehet. ...=... nevesített, e nélkül nm nevesített
  • Objektumok gyerekei:
    • Content property: Osztályok kijelölnek egy propertyt, amelyet az XML tag gyereke fog állítani
    • Kollekció elemei:
      • Lista: IList-et implementálja.
      • Dictionary: IDictionary-t implementálja. x:Key=... attribútuma kell legyen az elemeknek
    • Típus konverzió: Content property típuskonvertere, absztakt osztály típuskonvertere
  • Feldolgozása:
    • Futás idejű betöltés: XamlReader.load(..), majd FindName-vel lehet gyerekeket(x:Name)
    • Partial class: c:Class
    • BAML: bináris
    • .g.cs: osztály, betölti a BAML-t, elvégzi az összerendeléseket, feliratkozik az eseményekre
    • Procedurális kód XAML-ben: kerüljük
    • .NET osztály elérése XAML-ből

WPF belülről:

  • Logikai és vizuális fa
  • Dependencz property
    • Változás értesítés
    • Érték öröklés
  • Attached property: Gyerekelemek property-jeinek a beállítása
  • Routed events: Felefele áramlanak az események, amíg el nem kapjuk
  • Attached event: Olyan eseményekre is felírhatjuk az elemet, amelyet nem dobhat, de akkor az összes gyere által dobott adott eseményt megkapja

WPF controllok:

  • Content control: Egyetlen gyerekük lehet
    • Button, RepeatButton, ToggleButton, CheckBox, RadioButton
    • Label, Tooltip, Frame
    • GroupBox, Expander
  • Items Control: Tetszőleges mennyiségű gyerekük lehet
  • Range Control: Előre megadott számérték közötti számértéket jelenítenek meg
  • Text Control: TextBox, RichTextbox, PasswordBox

Méretezés, pozícionálás, transzformálás:

  • Méret:
    • Width, Height
    • Margin, Padding
    • Visibility
  • Pozicionálás:
    • Alignment
    • Content alignment
  • Transzformációk:
    • LayoutTransform: Elrendezés meghatározása előtt
    • RenderTransform: Után

Elrendezések Panelek segítségével:

  • Canvas: Abszolút pozicionálás
  • StackPanel: Függőlegesen/vízszintesen folytonosan
  • WrapPanel: Ha sok, akkor következő sor
  • DockPanel: Egyes oldalakhoz köthetjük
  • Grid: Táblázatos

Adatkötés: Két property értékének az összekötése

  • {Binding ElementName=.. Path=}
    • {Binding RelativeSource={RelativeSource Self}}
    • {Binding RelativeSource={RelativeSource TemplatedParent}}
    • {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type

desiredType}}}

    • {Binding RelativeSource={RelativeSource AncestorType={x:Type desiredType}}}
    • {Binding RelativeSource={RelativeSource PreviousData}}
  • Kötés kollekcióhoz
  • Adat konvertálás

Erőforrások

  • Bináris erőforrások
  • Logikai erőforrások

Style, Control Template:

  • Style: propertyket összefog, hogy később együtt tudjuk beállítani őket
  • Control template: Control Visual tree-jének beállítása

-- sashee - 2009.06.01.


Adattárházak

Alaptulajdonságok:

  • Időfüggő: Megállapítható, mely időponthoz van az adat kötve
  • Változatlan: Nincs update
  • Tematikus: Nem tartalmazzák az összes adatot, csak amelyikre szükség van
  • Integrált: Központian tárol

OLTP és adattárház összehasonlítása:

  • Elsődleges cél:
    • Aktuális adatok feldolgozása
    • Döntéstámogatás
  • Felhasználók:
    • Ügyintézők
    • Menedzsment
  • Terhelés jellege:
    • Egyszerű lekérdezés, adatmódosítás
    • Összetett lekérdezés
  • Jellemző mérőszám:
    • Feldolgozott tranzakciók száma
    • Lekérdezésre adott válasz ideje

Architektúrák:

  • Kétrétegű: A felhasználók közvetlenül az adattárházhoz kapcsolódnak, ami az OLTP-ből nyeri az adatokat
  • Háromrétegű: A felhasználók adatpiacokhoz(data mart) férnek hozzá, ahol tematikusan kiválasztott részek és származtatott adatok vannak

Adattárház építésének lépései:

  • Adatok kinyerése: Milyen adatokra van szükség, hogyan érjük el(ha pl. nem relációs)
  • Tisztítása:
    • Hiányzó adat kezelése
      • Teljes rekord elvetése
      • A hiányzó adat bekérése.
      • A hiányzó adat helyettesítése
        • Konstans értékkel
        • Átlagértékkel
        • Csoportra jellemző átlagértékkel
        • Legvalószínűbb értékkel
    • Zajszűrés:
      • Numerikus adatok zajszűrése:
        • Binning: minden k számú elemcsoportot helyettesít az átlagával
        • Csoportképzés: Több attribútum együttes előfordulását vizsgálják, majd az egymás közelében elhelyezkedő adatokat a csoportot jellemző adatokkal helyettesítjük (csoport súlypontjával)
        • Regresszió: Ebben az esetben is több attribútum együttes előfordulását vizsgáljuk, az egyes attribútumok közt valamilyen függvénykapcsolatot keresünk (általában lineárisat), majd az egyes értékeket a regressziós függvény értékeivel helyettesítjük.
      • Szöveges adatok:
        • Szótár alapú
        • Klaszterező: Hash fv-vel számokká képezzük le
  • Transzformálása: Az adatok az adattárház egységes sémájára történő leképzés
    • Rekord szintű:
      • Kiválasztás
      • Összekapcsolás
    • Mező szintű: Típuskonverzió
      • Algoritmikus
      • Lekérdezéssel
  • Betöltése és indexelése: Pillanatkép és histórikus adatok

Multidimenzionális adatmodell:

  • Alapelemei:
    • Dimenziós adatok: Ezen adatok mentén történik az elemzések végrehajtása
    • Hierarchiaszintek: Felbontás
    • Tényadatok: Amit elemzünk
  • Sémák:
    • Csillag: A tényadatokat tartalmazó táblához idegen kulcsokkal csatlakoznak a dimenziós tánlák
    • Hópehely: A tényadatokhoz csak a legalacsonyabb hierarchiaszint van csatolva, és ahhoz van a többi, így joinolni kell.

OLAP(Online Analytical Processing) rendszerek:

  • FASMI(Fast Analysis of Shared Multidimensional Information) teszt:
    • Fast: Gyors
    • Analysis: A felhasználó számára szükséges üzleti és statisztikai elemzések elkészítésére alkalmas.
    • Shared: Megosztott
    • Multidimensional
    • Information: Összes adat és származtatott adat elérhető

OLAP kocka:

  • Dimenzió: A kocka élei
  • Hierarchia: Elvégezhető elemzések mélysége
  • Aggregátum: Származtatott mennyiségek

OLAP kocka műveletek:

  • Szeletelés: 1 érték rögzítése, a diemnziószám csökken
  • Részkocka kiválasztása: Értékek megkötése
  • Lefúrás: Hierarchiaszint csökkentése
  • Felfelé görgetés: hierarchiaszint növelése
  • Forgatás: A megjelenített eredményt elforgatja

OLAP kocka tárolása:

  • ROLAP: Relációs
  • MOLAP: Saját, multidimenziós
  • HOLAP: Hibrid

Előkalkuláció mértéke: Ne legyen túl nagy, se túl kicsi

-- sashee - 2009.06.02.

Entity Framework

EDM (Entity Data Modell):

  • Conceptual Schema Definition Language (CSDL)
  • Store Schema Definition Language (SSDL)
  • Mapping Specification Language (MSL)
  • Működés
    • ObjectContext
    • Adattár -> Store Providers -> Entity Provider -> Object Services

Lekérdezési lehetőségek:

  • Entity SQL + Object Services
    • Ha LINQ-nél nagyobb kifejezőerőre van szükség
    • Ha dinamikusan összeállított lekérdezésekre van szükség
    • Ha a teljesítmény nagyon fontos
  • Entity SQL + Entity Client
    • Az adatokat sorban (streamelve) szeretnénk lekérdezni
    • Meglévő alkalmazások átírásakor
  • LINQ to Entities
    • Minden más esetben

ORM leképezési lehetőségek EF-ben:

  • TPH (Table Per Hierarchy)
    • Minden osztály egy táblába
    • EDM designer támogatja
  • TPT (Table Per Type)
    • Minden osztály külön táblába (az absztraktak is)
    • EDM designer támogatja
  • TPC (Table Per Class)
    • Minden valós osztály külön táblába (az absztraktak nem)
    • EDM designer nem támogatja

Egyéb szolgáltatások:

  • Komplex típusok használata
  • DefiningQuery
  • Lazy loading
  • Tárolt eljárások hívása

Asszociáció típusok:

  • Külső kulcsos asszociáció
  • Független asszociácó
    • A több-több kapcsolatat mindig ezzel valósítjuk meg
    • Mindig van navigation property

Változáskövetés:

  • Eredeményhalmazok összefűzése
    • NoTracking
    • AppendOnly
    • OverwriteChanges
    • PreserveChanges
  • EntityState
    • Detached
    • Unchanged
    • Added
    • Deleted
    • Modified
  • Entitás típusok
    • Entity object leszármazott
      • Automatikus változáskövetés
      • Lazy loading támogatás
      • Hátránya, hogy nem tudunk csak az EntityObjectből származtatni
    • POCO
      • Nincs automatikus változáskövetés, a DetectChanges metódust kell hívni
      • Nincs lazy loading támogatás
    • POCO proxy
      • Automatikus változáskövetés
      • Lazy loading támogatás
      • Futási időben leszármaztat az osztályunkból, így tudja biztosítani a fenti szolgáltatásokat, ezért speciális követelmények vonatkoznak a POCO osztályunkra
    • Self-Tracking Entities
      • nem függ az EF-től
      • Tulajdonképpen ez egy csináld magad megoldás, ugyanazt implementáljuk, mint amit az EF tud
  • SaveChanges

Két és többrétegű alkalmazások:

  • Kétrétegű
    • Az entitások nem hagyják el az OC alkalmazástartományát (nincs sorosítás)
    • Az állapotkezelést az OC megoldja ha a funkciók kompaktak (például egy dialógus ablak)
  • Többrétegű alkalmazás
    • Az entitás kikerül az OC alkalmazástartományából
    • Az állapotkövetés nem bízható az OC-ra
    • A változásokat az OC tudomására kell hozni

-- KoviBalu - 2011.06.04.