„Adatvezérelt alkalmazások fejlesztése (AAF) - ZH- és vizsgajegyzetek” változatai közötti eltérés
(Új oldal, tartalma: „{{GlobalTemplate|Infoszak|AafjegyzetAdateleres}} ==Adatelérés== ADO .NET: relációs adatbázisok kezelése Adatelérési modell: * Kapcsolatalapú modell: Folyama…”) |
a (typo-k javítása) |
||
(4 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
1. sor: | 1. sor: | ||
{{ | {{Vissza|Adatvezérelt_alkalmazások_fejlesztése}} | ||
==Adatelérés== | ==Adatelérés== | ||
37. sor: | 37. sor: | ||
[[ | ==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., 07:04-kori változata
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
- DataRow állapotai:
- 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
- Fázisok:
- 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
- Numerikus adatok zajszűrése:
- Hiányzó adat kezelése
- 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
- Rekord szintű:
- 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
- Entity object leszármazott
- 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.