Bevezetés a Visual Studio .NET használatába Micskei Zoltán Microsoft Referencia Iskola
FELADAT Áttérés VB 6.0-ról Upgrade Wizard – egy VB 6.0-ás projektet megnyitva automatikusan elindul. (csak a VS.NET bizonyos verzióiban) A Helpben részletes leírások: ms-help://MS.VSCC/MS.MSDNVS/vbcon/html/vboriUpgradingFromVisualBasic60.htm FELADAT
FELADAT A VS.NET felülete Start Page Dokkolható munkaablakok Auto Hide funkció, animáció kikapcsolása Solution, Properties, Server Explorer … Help index, szövegkörnyezet érzékeny súgó FELADAT
FELADAT Hello VB.NET! Új WindowsForm projekt Gomb, aminek hatására megjelenik egy cimkében a „Hello VB.NET!” szöveg Vezérlő színének, betűtípusának, elhelyezkedésének módosítása IntelliSense (CTRL + Space), F1 Help Kód fordítása, futtatása, Debug mód FELADAT
Generált fájlok sln: Solution (megoldás), több projektet fog össze vbproj: VB Projekt fájl, megmondja, hogy milyen egyéb fájlok tartoznak hozzá vb: VB forrás (bármi lehet: form, modul..) resx: formon lévő erőforrások (kép, ikon) \bin: lefordított fájlok
A VB.NET nyelvi újdonságai
Legfontosabb újdonságok Valódi objektum orientáltság Egyszerűsített, konzisztensebb programozási nyelv Többszálas programozás Teljes kompatibilitás a .NET-es környezettel
OO alapok Objektum: a rendszer egyedi szereplője, ami a külső világ felé a viselkedésével, szerkezetével és állapotával adható meg. Osztály: ugyanolyan tulajdonságú objektumok közös leírása
Példányosítás Az osztály szerkezetét definiáljuk, és utána, ha egy olyan típusú objektumra van szükségünk, akkor létrehozunk belőle egy konkrétat, példányosítunk. Pl. : Dim al As ArrayList al = New ArrayList(3)
Osztály elemei Tulajdonságok: „az objektum lokális változói”. Az objektum valamilyen jellemző adata. Metódus: Az objektum tulajdonságait módosító eljárások. Esemény: Külső beavatkozás, pl. rákattintás az objektumra, amire az reagál. Az eseményeket a .NET futtatókörnyezet juttatja el a programunkhoz.
Konstruktor Egy minden osztálynál megtalálható metódus. Az objektum létrehozásakor lefutó függvényt hívják konstruktornak, az inicializáló kódok kerülnek ide. Neve: New()
Polimorfizmus (Overloading) Egy osztálynak lehet több ugyanolyan nevű metódusa, amiknek más a paraméterezése. A Visual Studio ilyenkor egy nyilak segítségével görgethető listát jelenít meg, amiben az összes ilyen nevűt felsorolja.
Strukturált hibakezelés A hasznos műveletek, és a hibakezelés szétválasztható. Először megpróbálunk végrehajtani valamit, majd utána nézzük sorra a hibalehetőségeket. Try ‘muveletek Catch ‘hibakezeles End Try
Eddigi függvények A VB 6.0-ból megszokott függvények (pl. Cint, Left…) továbbra is használhatóak. A Microsoft.VisualBasic névtérben találhatóak. (De: mindegyik funkciója megoldató a .NET FrameWork (System névtér) valamelyik részével is.)
Bevezetés a .NET világba Micskei Zoltán
A cél A Microsoft „víziója”, hogy a felhasználók az Őket érdeklő információt bármikor, bármilyen eszközön elérjék.
A „.NET világ”
.NET FrameWork Az új futtatókörnyezet, a .NET lelke Egy egységes felület az összes, eddig külön-külön létezett technológia (ASP, MFC, VB Forms) „egyesítésével”. Az alapvető szolgáltatásokat egy közös, platformtól, programozási nyelvtől, eszköztől független, osztálykönyvtár segítségével érhetjük el.
A FrameWork felépítése VB C++ C# JScript … Visual Studio.NET Common Language Specification ASP.NET Windows Forms Data and XML Base Class Library Common Language Runtime Windows COM+ Services
CLR Futtatókörnyezet: a szabványos köztes kódról (InterMediate Language) natív, gépi kódra fordít futási időben (Just-In-Time), vagy ha kérjük, már telepítéskor. Futás közben ellenőriz is, pl. típusosságot, memóriában arra a helyre elfér-e. „Menedzselt” környezet (managed), pl. biztonság, szemétgyűjtés stb.
Class Library A fejlesztéskor szükséges funkciók nagy részét biztosító osztályok (listák, rendezésektől kezdve hálózati kapcsolatok kezelésén keresztül távoli eljáráshívásig szinte minden). Az igazi feladat ennek a megismerése.
Data and XML Adatelérés: - relációs adatok: a teljesen újraírt ADO.NET (pl. connected és disconnected mód, DataSet) - XML kezelés (az összes X-s W3C szabvány:) a kettő közötti átjárás biztosítva van természetes.
Megjelenítés Web és Windows Forms: a szétválasztás csak itt a felső rétegben van, így sokkal könnyebb pl. lecserélni a felületet. Tucatnyi új vezérlő elemmel bővült mindkettő (pl. DataList, Validator) „VB-t a webre!”
CLS .NET fejlesztéskor használhatunk bármilyen nyelvet (akár többet is egy projektben), ami teljesíti a CLS-t. A fordítók köztes nyelvre fordítanak, majd a CLR alakítja ezt végrehajtható gépi utasításra. Microsoft: VB, C#, JScript, J#, C++ Külső fejlesztők: több mint 20 másik nyelv
Végrehajtási modell Common Language Runtime VB C# ... Script IL Fordítás: IL Futtatás: Common Language Runtime Standard JIT Compiler Natív kód
Az osztálykönyvtár System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Design ADO SQLTypes SQL XPath XSLT Runtime InteropServices Remoting Serialization SessionState Caching Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Printing System.WinForms ComponentModel
Szemétgyűjtés Változás: nem a programozónak kell a lefoglalt memóriát felszabadítani (mert úgyis elfelejti), hanem egy központi folyamat „eltakarítja”, amikre már nem hivatkoznak. Memória-elszivárgástól (memory leak) végre megszabadultunk.
Assembly Alapegység a fordításnál Automatikus verziókövetés (DLL Hell) Biztonság (eredetiség igazolása strong key, futási jogok assembly szinten) Meta-adatok segítenek leírni: önleíró szerkezet
Szeparálás Logikailag: osztályok hierarchikus névterekbe szervezhetőek Fizikailag: teljesen különválasztva a logikaitól (egy fájlban több osztály, nem kell könyvtárstruktúrának a névtereket követni, több forrásfájl csomagolható egy assemblybe)
.NET más platformokon 2002 december: megjelent a CLI és C# ISO szabvány Rotor: osztott forráskódú implementáció oktatási és kutatási célokra (kb 2 millió sor kész már:) (pl. Distributed GC) Mono: .NET Framework Linuxra, open source, kb. 50% kész, nem csak az alap névterek (pl. ADO.NET is)
.Net Framework SDK .NET-es fejlesztéshez nem szükséges a Visual Studio.NET! Tartalmazza a fejlesztéshez, fordításhoz szükséges segédprogramokat Teljes dokumentáció, példák, tutorialok Ingyenes Kb 200 MB helyet foglal
Tanács Ha a parancssort használjuk, kapcsoljuk be az automatikus kiegészítést, így egy gomb lenyomásával kiegészíti a file és könyvtárneveket. (WinXP-ben már be van kapcsolva) A Q310530 knowledge base cikk leírja pontosan mit kell tennünk.
FELADAT Hello Console! Hello World feladat paracssori eszközökkel Notepadben írjuk meg: HelloConsole.vb Írjuk le mindig a lezáró részt egyből \WINDOWS\Microsoft.NET\Framework\v<verzio> könyvtárban vannak a fordítók Fordítás: vbc HelloConsole.vb FELADAT
Sub Main(ByVal CmdArgs() As String) Csiszoljuk egy kicsit! Option utasítások: szigorúbb ellenőrzések Imports: ne kelljen olyan sokat gépelni Paraméter átadás: Sub Main(ByVal CmdArgs() As String) FELADAT
Még lehet mit csiszolni Ellenőrizzük, hogy kaptunk-e paramétert Használjunk osztályt a modul helyett! A Shared kulcsszó jelöli, hogy a metódus közös, az osztályhoz tartozik és nem az objektumhoz, az osztály nevét kell eléírni meghíváskor. FELADAT
Adatelérés – ADO.NET
FELADAT Egyszerű adatelérés Visual Studio grafikus eszközeivel Fogd és vidd módszer Access fájlból adatok olvasása, majd módosítások visszamentése DataAdapter Fill és Update metódusa FELADAT
Mi is az az ADO.NET? Interfészek és absztrakt osztályok gyűjteménye Relációs adatbázisok elérésére Adatbázis független Egységes, adatbázis független kódolást tesz lehetővé
ADO.NET implementációk A framework részeként OleDb Microsoft SQL Server Egyéb implementációk a Microsoft-tól ODBC Oracle Más cégek implementációi Pl: MySQL
Az Adatbázis interfészek fejlődése Alapvetően kurzoros megoldás Első generáció Csak olvasható Egyirányú Második generáció Kétirányú Harmadik generáció Írható is
A kapcsolat alapú modell Előnyök Egyszerűbb a konkurencia kezelése Az adatok mindenhol a legfrissebbek Hátrányok Folyamatos hálózati kapcsolat Skálázhatóság
A kapcsolat nélküli modell Előnyök Nem szükséges folyamatos hálózati kapcsolat Skálázhatóság Hátrányok Az adatok nem mindig a legfrissebbek Ütközések lehetségesek
DataReader kontra DataSet Egyirányú, csak olvasható Ha az adatokat azonnal feldolgozzuk DataSet Lokális adat cache Ha az adatok közt navigálni is akarunk Ha az adatokat módosítjuk is
Adatbázis kezelés DataReader-el SqlDataReader Lépések Kapcsolat megnyitása Parancs futtatása Eredmény feldolgozása Reader lezárása Kapcsolat lezárása SqlCommand SqlConnection SQL Server
Az adatbázis kapcsolat felépítése ConnectionString megadása: ″server=(local);database=db;Integrated Security=SSPI″ Tanácsok Minél később megnyitni a kapcsolatot Minél előbb lezárni A kapcsolatokat a FrameWork újra felhasználja a teljesítmény növelése érdekében (pooling)
Az adatbázis parancs használata IDbCommand interfész Megadja, hogy mit is akarunk csinálni 3 különböző típus (CommandType) Tárolt eljárás Tábla teljes tartalma SQL query A parancs szövege (CommandText) Az adatbázis kapcsolat (Connection)
A lekérdezés eredménye ExecuteReader() Több rekord lekérdezése (kurzor) ExecuteScalar() Egy érték lekérdezése ExecuteNonQuery() Nincs visszatérési érték (Pl: INSERT esetén)
Gyakorlati tanácsok Ha lekérdezést adunk meg, használjunk paramétereket! Speciális karakterek nem okoznak gondot Biztonságos De inkább használjunk tárolt eljárásokat! Gyorsabb, hálózati forgalom spórolható meg Biztos, hogy csak azt csinálnak majd az adatokkal, amit mi terveztünk.
Hibakezelés A fontos hibák kivételeket okoznak A reader-t, és a kapcsolatot le kell zárni! Megoldás kivétel kezeléssel Lezárások a finally blokkban
Adatbázis kezelés DataSet-el Adatbázis a memóriában Tartalma Táblák, mezők, sorok Nézetek, kényszerek Kapcsolatok (szülő-gyermek) Lehetőségei Feltöltése (alapállapot) Visszatöltése (minden, ami változott)
Többformos mintapélda
Házhozszállítási Díj Számoló 1.0 Bekérjük a címét, és megadjuk az összeget A címet külön formon kérjük be, részekre szétszedve A számolás „bonyolult”, ezért külön projketben lévő osztály végzi Csináljunk menüt is az alkalmazásnak FELADAT