E N D
Microsoft.NET Alapok
„ez egy software technológiák halmaza, amely információkat, embereket, rendszereket és eszközöket kapcsol össze. Ez az új generációs technológia a Web szolgáltatásokon alapul – kis alkalmazásokon, amelyek képesek kapcsolatba lépni egymással csakúgy, mint nagyobb méretű alkalmazásokkal az Internet-en keresztül.” A dotNet egy programfejlesztési környezet, mely számtalan hasznos szolgáltatással segíti a programozók mindennapi munkáját
Mi ez??? • Amikor egy programozó egy alkalmazás fejlesztésébe kezd, sok más dolog mellett ismernie kell, • figyelembe kell vennie azt a környezetet, amelyben az alkalmazása futni fog. • A környezet egyik legfontosabb jellemzője az operációs rendszer. • A dotNet egyféle szemszögből nézve az operációs rendszert helyettesíti elrejtvén, eltakarván a tényleges operációs rendszert a fejlesztő elől.
API • Az operációs rendszert egy programozó teljesen más szempontból nézi, mint egy felhasználó • Az API – ApplicationProgrammingInterface – írja le egy adott operációs rendszer esetén, hogy melyek azok a szolgáltatások, amelyeket az operációs rendszer eleve tartalmaz, és amelyeket a programozó a fejlesztői munka során felhasználhat. • Ezen szolgáltatásokat pl. a Windows a rendszer-könyvtáraiban megtalálható DLL (Dynamic Link Library) file-okban tárolja. • Minden DLL több függvényt és eljárást tartalmaz, melyekre hivatkozhatunk a programjainkban is. • E függvények és eljárások összességét nevezzük API-nak.
A Microsoft-os világban az első ilyen API-t az első, általuk előállított operációs rendszer tartalmazta. Ez volt a DOS. Ez nem tartalmazott túl sok elérhető szolgáltatást – lévén a DOS egy egyfelhasználós, egyfeladatos operációs rendszer. • A Win16-API sokkal több szolgáltatást tartalmazott, lévén hogy az már grafikus operációs rendszerrel, a Windows 3.1-el került be a köztudatba. Ez már nem csak a grafikus felület miatt tartalmazott több felhasználható szolgáltatást, hanem mivel ez egy többfeladatos operációs rendszer – teljesen új területeket is megcélzott. • A Win32-API a fejlettebb Windows operációs rendszerekben jelent meg, mint pl. a Windows ’95. Ebben javítottak a többszálú programok kezelésén, és bevezettek bizonyos jogosultsági módszerek kezelését is (és még számtalan mást is).
.Net • A dotNet ezen szempontból egy új API-nak tekinthető. Ez olyannyira igaz, hogy egy dotNet környezetben a programozónak semmilyen más API-t (elvileg) nem kell ismernie. • A dotNet (elvileg) ma már több különböző operációs rendszeren is képes működni – de a programozónak ezt nem kell feltétlenül tudnia – hiszen ő már nem használja az adott operációs rendszer API-ját, csak a dotNet-et által definiált függvényeket és eljárásokat.
dotNet felépítése • Legalsó szinten az operációs rendszer található. • Mivel egy jól megírt, biztonságos operációs rendszer nem engedi meg, hogy a felügyelete alatt futó programok önállóan kezeljék a számítógép hardware elemeit, ezért a programok csakis az operációs rendszeren keresztül kommunikálhatnak egymással, használhatják fel az erőforrásokat (hálózat, file-rendszer, memória, …) – vagyis az operációs rendszer API-n keresztül. • Ez a réteg egy jól megírt operációs rendszer esetén nem kerülhető meg.
CLR • A következő szinten van a CommonLanguageRuntime – a közös nyelvi futtató rendszer. • Ez az egyik legérdekesebb réteg. A CLR lényegében egy processzor-emulátor, ugyanis a dotNet-es programok egy virtuális mikroprocesszor virtuális gépi kódú utasításkészletére van fordítva. • Ennek futtatását végzi a CLR. A futtatás maga interpreter módban történik, ugyanakkor a dotNet fejlett futtató rendszere a virtuális gépi kódú utasításokat futás közben az aktuális számítógép aktuális mikroprocesszorának utasításkészletére fordítja le, és hajtja végre.
CLR • Az első ilyen előny, hogy a szóban forgó virtuális gépi kódú nyelv típusos, ezért a programkód futtatása közben a memória-hozzáféréseket ellenőrizni lehet – így meggátolható a helytelen, hibás viselkedés. • Másrészt az utasítások végrehajtása előtt ellenőrizni lehet a jogosultságot is – vagyis hogy az adott felhasználó és adott program esetén szabad-e végrehajtani az adott utasítást – pl. hálózati kapcsolatot létesíteni, vagy file-ba írni. • Ugyanakkor meg kell jegyezni, hogy egy JIT Compiler (JIT=JustIn Time) gondoskodik arról, hogy a végrehajtás megfelelő hatékonysággal történjen. • Ezért egy dotNet-es program hatékonysága, futási sebessége elhanyagolhatóan kisebb, mint a natív kódú programoké.
BaseClassLibrary • A második réteg tartalmazza a dotNet API nagyobb részét. • A BaseClassLibrary tartalmazza azokat a szolgáltatásokat, amelyeket egy dotNet-es programozó felhasználhat a fejlesztés közben. • Lényeges különbség a megelőző API-kal szemben, hogy ez már nem csak eljárások és függvények halmaza, hanem struktúrált, névterekbe és osztályokba szervezett a sok ezer hívható szolgáltatás. • Ez nem csak áttekinthetőbb, de hatékonyabb felhasználhatóságot jelent egy, az objektum orientált programozásban jártas programozó számára.
Adatelérés • A következő réteg, az ADO.NET és XML a 21. századi adatelérési technológiákat tartalmazza. • Ezen technikák ma már egyre hangsúlyosabbak, mivel a mai alkalmazások egyre gyakrabban használják fel e professzionális és szabványos technikákat adatok tárolására, elérésére, módosítására. • A rétegek segítségével a programok a háttértárolókon képesek adatokat tárolni, onnan induláskor azokat visszaolvasni.
Windows vs Web • A következő réteg kétfelé válik – aszerint hogy az alkalmazás felhasználói felületét web-es, vagy hagyományos interaktív grafikus felületen valósítjuk meg. • A Windows Forms tartalmazza azon API készletet, melyek segítségével grafikus felületű ablakos, interaktív alkalmazásokat készíthetünk. • A másik lehetséges választás a WEB-es felületű, valamilyen browser-ban futó nem kifejezetten interaktív program írása. • Ezek futtatásához szükséges valamilyen web szerver, a kliens oldalon pedig valamilyen internetes tallózó program, pl. Internet Explorer vagy Mozilla.
CLS • A következő réteg – a CommonLanguageSpecification – definiálja azokat a jellemzőket, melyeket a különböző programozási nyelvek a fejlődésük során történelmi okokból különböző módon értelmeztek. • Ez a réteg írja le az alaptípusok méretét, tárolási módját - beleértve a string-eket - a tömböket. • Fontos eltérés például, hogy a C alapú nyelvekben a vektorok indexelése mindig 0-val kezdődik, míg más nyelvekben ez nem ennyire kötött. • A réteg nem kevés vita után elsimította ezeket, a különbségeket.
CLS • A CLS réteg fölött helyezkednek el a különböző programozási nyelvek és a fordítóprogramjaik. • A dotNet igazából nem kötött egyetlen programozási nyelvhez sem. • A dotNet nem épül egyetlen nyelvre sem rá, így nyelvfüggetlen. • Elvileg bármilyen programozási nyelven lehet dotNet-es programokat fejleszteni, amelyekhez létezik olyan fordítóprogram, amely ismeri a CLS követelményeit, és képes a CLR virtuális gépi kódjára fordítani a forráskódot.
CLS • A fenti két követelmény betartásának van egy nagyon érdekes következménye: • elvileg lehetőség van arra, hogy egy nagyobb projekt esetén a projekt egyik felét egyik programozási nyelven írjuk meg, a másik felét pedig egy másikon. • Mivel mindkét nyelv fordítóprogramja a közös rendszerre fordítja le a saját forráskódját – így a fordítás során az eredeti forráskód nyelvi különbségei eltűnnek, és a különböző nyelven megírt részek zökkenőmentesen tudnak egymással kommunikálni.
CLS • A Microsoft a C++, illetve a Basic nyelvekhez készítette el a dotNet-es fordítóprogramot, • valamint tervezett egy új nyelvet is, melyet C#-nak (ejtsd szí-sharp) nevezett el. • Az új nyelv sok más nyelv jó tulajdonságait ötvözi, és nem hordozza magával a kompatibilitás megőrzésének terhét. • Tiszta szintaktikájával nagyon jól használható eszköz azok számára, akik most ismerkedek a dotNet világával.
Automatikus szemétgyűjtés • Ez a szolgáltatás a memória-kezeléssel kapcsolatos, és a program által lefoglalt, de már nem használt memória felszabadítását végzi. • Ezt egy Garbage Collector nevű programrész végzi, amely folyamatosan felügyeli a futó programokat. • Ennek tudatában a programozónak csak arra kell ügyelni, hogy memóriát igényeljen, ha arra szüksége van. • A memória felszabadításáról nem kell intézkednie, az automatikusan bekövetkezik.
Előnyök • az alkalmazás operációs rendszertől független lesz • független lesz az adott számítógép hardvertől is, gondolván itt elsősorban a mikroprocesszorra • nem kell új programozási nyelvet megtanulnunk ha már ismerünk valamilyen nyelvet (valószínűleg olyan nyelven is lehet .NET-ben programozni) • kihasználhatjuk az automatikus memória-menedzselés szolgáltatásait (GarbageCollector) • felhasználhatjuk a programfejlesztéshez az eleve adott BaseClassLibrary rendkívül széles szolgáltatás-rendszerét, ami radikálisan csökkenti a fejlesztési időt
Visual Studio • A dotNet keretrendszer (Microsoft.NET Framework) jelenleg ingyenesen letölthető a Microsoft honlapjáról. • A keretrendszer részét képezi a BCL, és a CLR réteg, valamint egy parancssori C# fordító. • Ennek megfelelően a dotNet programozási környezet ingyenesen hozzáférhető minden programozást tanulni vágyó számára. • Ami nem ingyenes, az a programozási felület (IDE = Integrated Development Environment – Integrált Fejlesztői Környezet).
Visual Studio • A dotNet-bena Microsoft által fejlesztett ilyen környezetet Microsoft Visual Studio.NET-nek nevezik. • Ez nem csak egy színes szövegszerkesztő. Részét képezi egy 3 CD-t megtöltő súgó, mely tartalmazza a BCL leírását, példákkal illusztrálva. • Az IDE nem csak a forráskód gyors áttekintésében segít a színekkel történő kiemeléssel (syntaxhighlight), hanem a program írás közben már folyamatosan elemzi a forráskódot, és azonnal megjelöli a hibás sorokat benne. • Környezetérzékeny módon reagál a billentyűk leütésére, és kiegészíti ill. javítja az éppen begépelés alatt álló kulcsszót. • Ezen túl a felületből kilépés nélkül lehet a forráskódot lefordítani, és a generált programot elindítani. • A Studio kényelmes módon kezeli a több file-ból álló programokat (project), illetve a több project-ből álló programokat is (solution).