You are on page 1of 32

Tnyek s

tvhitek a .NET
keretrendszer
krl
Ksztette:
Ruzsinszki Gbor
http://webmaster442.hu

Elsz
A

.NET j pr ve jelen van


A Mono Framework szintn
Open Source technolgik
A C# s a .NET technolgiailag jval
fejlettebb, mint a Java s a JDK/JRE
Ennek ellenre sokak szerint a .NET s C#
csak Windows-on hasznlhat
Sok a tves informci

Elsz
Cl:

Informcikzls, tnyek kzlse s


tvhitek cfolsa
.NET alap szoftverfejlesztssel 2008 ta
foglalkozom hobbi -s szabadsz
programozknt.

Mirl lesz sz?


.NET

rvid bemutat
Pr tvhit s tny a Mono s .NET
keretrendszerrel kapcsolatban
Nmi C# nyelvi dem

Mi az a .NET?

A keretrendszer trtnelme az 1990-es vek


vgig nylik vissza.
1998 krnykn a Microsoft ksztett egy sajt
Java implementcit, ami a Windows
platformhoz specifikus kiegsztseket
tartalmazott.
A SUN ezrt perelt, mivel szerintk ez visszals
volt a Java nvvel.
Azta nincs elteleptve a Java keretrendszer
egy Microsoft termkre sem.

Mi az a .NET?
A

cl eredetileg egy Java szer nyelv


megalkotsa volt, amely a kvetkez
genercis Windows rendszerek alapjt
kpezi majd.
Fejleszts eredmnye: C# s .NET
Nem Java msolat, mivel erteljesen
tovbbfejlesztett.
A C# nyelv a C++ tovbbfejlesztsnek
tekinthet, amire hatssal volt a Java

Mi az a .NET?
A

keretrendszer egy programknyvtr,


amiben gyrilag elg sok minden van.
A keretrendszerre fordtott programok egy
virtulis processzor utastskszletre
fordulnak -> Intermediate Language
A futtatkrnyezet a program indtsakor
JIT fordtssal fordtja le a programot a
futtat tnyleges fizikai gp
utastskszletre.

Mi az a .NET?
Ezltal

a program platformfggetlen tud

lenni.
A keretrendszer, a fordt, s a futtat
krnyezet is nylt forrskd
ISO s ECMA szabvnyok vonatkoznak a
keretrendszerre s a C# nyelvre is.
.NET hivatalosan csak Windows
rendszerekre van.

Tnyek s tvhitek

#1 llts:
A .NET nem multi-platform

#1: tvhit
Krds:

Mit rtnk azon, hogy valami


multi-platform?
Ha architektrt nznk: X86, X64, ARM,
akkor bizony multi-platform.
Ha viszont opercis rendszert, akkor a
Microsoft implementci nem az, mivel
csak Windows rendszeren fut.

#1: Tvhit
Linux

s OS-X rendszerekre: Mono


framework
Ez a .NET platform fggetlen
implementcija
Nem minden szolgltatst tmogatja a
.NET keretrendszernek.
A nem tmogatott rszek tlzottan
Windows / Microsoft specifikusak.

#1: Tvhit
Ennek

ellenre teljesen hasznlhat, ha


nincsenek irrelis elvrsok.
Van pr megkts, amit figyelembe kell
venni az alkalmazsok fejlesztsekor, hogy
mkdkpes legyen Mono alatt.
Van automatizlt teszt eszkz is a
kompatibilits tesztelsre.

#2 llts:
A C# s a .NET lass

#2: tvhit
JIT

fordtssal lesz a IL kdbl tnyleges


gpi kd
Ez idt vesz ignybe
De nem a teljes hivatkozott kdmennyisg
lesz JIT fordtva!
Gyorsts cljbl a Framework tartalmaz
egy Assembly cache-t, ami gpi kdban
trolja a Framework f komponenseit.

#2: tvhit
gy

tnyleges JIT fordtson csak a


program kd esik t.
Mono esetn lehetsg van AOT
fordtsra is, ami elre natv binrist is
generl.
Ennek ellenre 100%-ban nem jelenthet
ki, hogy nem lass, mivel ez viszonyts
krdse

#2: tvhit

Ha assembly kddal hasonltom ssze, akkor


persze, hogy lass.
Korrekt, ha a Java-hoz hasonltjuk a .NET
alkalmazsokat.
Itt is nehz mrni a tnyleges gyorsasgot,
mivel feladat -s platform fgg, hogy melyik
lesz a gyorsabb.
PC (x86 s x64) esetn a Mono s .NET
gyorsabb a Java-nl
ARM esetn a .NET gyorsabb Windows alatt.

#3 llts:
A .NET nem nylt forrskd

#3: Tny
Ha

a nylt forrskd alatt a GPL s BSD


licencek variciit rtjk, akkor valban
nem az.
MS-RSL licenc alatt van kiadva a
keretrendszer forrsa
Ez alapjn brki kszthet .NET
implementcit, viszont az eredeti kd
nem hasznlhat CTRL+C, CTRL+V alapon
A Mono viszont GPL

#3: Tny
A

helyzet vltozban van*


Idn ltrejtt a .NET alaptvny
Az alaptvny felgyelete al kerlt egy
csom kd, ami a .NET rszt kpezi.
Ezek valban nylt forrskd
komponensek
A jvben egyre tbb lesz
Hasonl a folyamat a SUN JDK nylt
forrskdv ttelhez.

#4 llts:
.NET alkalmazsokat csak
Windows alatt hasznlnak

#4: Tvhit
Mivel

a Mono nylt forrskd, szmos


helyen alkalmazott:

Lehet vele Android-ra alkalmazst


fejleszteni
Lehet vele iOS-re alkalmazst fejleszteni
A Unity jtkfejleszt rendszerben is
megtallhat, ersen pt r.

#4: Tvhit
Windows

(Phone s 8.1 is!) alkalmazsok


nagy rsze C#-ban fejlesztett
ASP.NET technolgin szmos weboldal
fut.
Szmos Mono-ra rt alkalmazs is van.
Tbbek kztt:

Banshee, F-SPOT, Beagle.

C# demk

C# demk
A

pldk leginkbb C++ s Java


felhasznlknak szlnak.
Nem felttlen kezd programozknak
lettek sznva az egyes kdrszletek
Id szke miatt nem egy teljes nyelvi
bemutat
Ennl jval tbb mindent tud s jval
tbb mindenre alkalmazhat

C# demk
Feladat:

rjunk egy olyan osztlyt, ami


felhasznlk adatait tudja trolni:
keresztnv, vezetknv, szletsi v.
public class Felhasznalo
{
public KeresztNev { get; set; }
public VezetekNev { get; set; }
public SzuletesiEv { get; set; }
}

C# demk
Adott

egy Felhasznalo objektumokbl ll


tmb. Ebbl keressk ki azon Kovcs
vezetkneveket, akik 1986 eltt szlettek.
A tallatokat szletsi v szerinti nvekv
sorrendben adjuk vissza
var q = from i in tomb where i.
VezetekNev.ToLower() == kovacs && i.
SzuletesiEv < 1986 orderby i. SzuletesiEv
ascending select i;

C# demk
Az

elz feladatban megrt kd mkdik,


viszont lass. Optimalizljuk gy, hogy
tbb processzoron fusson
var q = from i in tomb.AsParalell() where i.
VezetekNev.ToLower() == kovacs && i.
SzuletesiEv < 1986 orderby i. SzuletesiEv
ascending select i;

C# demk
A

for s foreach ciklus prhuzamosthat:


Paralell.For(0, 100, i =>
{
Console.WriteLine(i);
});
Paralell.Foreach (tomb, eleme =>
{
Console.WriteLine(i);
});

C# demk
Aszinkron

vgrehajts szlak nlkl:


public assync void NagyFeladat()
{
}

//ide valami sok ideig fut kd

Ksbb

pedig:

await NagyFeladat()

Krdsek?

Ksznm a figyelmet!