.
NET Framework
Marko Petrović (
[email protected])
Beograd, 2005.
.NET
Šta je .NET ?
2
Šta je .NET ?
.NET nije operativni sistem.
.NET je softver koji povezuje informacije, ljude, sisteme i
uređaje.
3
Delovi .NET-a
.NET Vision
¾ svi urešaji su međusobno povezani na globalnoj mreži
¾ softveri kao usluge dostupni na globalnoj mreži
.NET Framework
¾ osnova za ispunjenje vizije
¾ servisi i nove tehnologije koje omogućavaju razvoj
distribuiranih aplikacija
.NET Enterprise Servers
¾ SQL Server 2000, BizTalk 2000, Commerce Server 2000, ...
¾ koriste ih .NET Framework aplikacije
4
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
Hardver
5
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
Hardver
Hardver
¾ Serveri, radne stanice, personalni računari i neračunarski uređaji kao što su
mobilni telefoni, pejdžeri, ...
6
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
Operativni sistem
¾ Windows Server 2003,Windows XP, Windows 2000, Windows CE, BSD Unix,
Linux, ...
7
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
(Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...)
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
.NET Enterprise Servers
¾ Application Center,BizTalk Server 2000, Commerce Server 2000, Exchange
Server 2000, Host Integration Server 2000, Internet Securitz and Acceleration
Server 2000, SQL Server 2000
8
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
(Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...)
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
.NET Framework
¾ nova razvojno-izvršna infrastruktura za kreiranje distribuiranih aplikacija.
9
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
(Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...)
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
.NET Building Block Services
¾ paradigma “softver kao servis”
¾ XML Web Services (Internet servisi)
• komponente koje su dostupne na Internetu i koje se mogu koristiti prilikom razvijanja
sopstvenih aplikacija
¾ .NET My Services (HailStorm)
• skup Microsoft-ovih korisnički orijentisanih Internet servisa kao što su pasoš,
podsetnik, skladište, eMail, ...
10
.NET platforma
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
(Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...)
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
Visual Studio .NET
¾ alat za razvoj softvera
¾ integrisano okruženje za kreiranje distribuiranih aplikacija (IDE for RAD)
11
Microsoft Visual Studio .NET
12
.NET platforma
Najvažniji deo .NET platforme je .NET Framework
Visual Studio .NET
.NET Building Block
.NET Enterprise Servers .NET Framework
Services
Operativni sistem
(Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...)
Hardver
(serveri, radne stanice, mobilni telefoni, ...)
13
.NET
.NET Framework
14
.NET Framework
Nova platforma za razvoj softvera.
Sistemska aplikacija koja omogućava
¾ razvoj (projektovanje, kodiranje, uklanjanje grešaka,
instalacija, održavanje) i
¾ izvršenje distribuiranih aplikacija
Obezbeđuje
¾ komponentnu infrastrukturu (Component infrastructure)
¾ integraciju programskih jezika (Language integration)
¾ internet interoperabilnost (Internet interoperability)
¾ jednostavan razvoj (Simple Development)
¾ jednostavnu instalaciju (Simple Deployment)
¾ pouzdanost (Reliability)
¾ bezbednost (Security)
15
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
Class Libraries – Data and XML classes
Base Class Libraries
Common Language Runtime - CLR
16
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
Class Libraries – Data and XML classes
Base Class Libraries
Common Language Runtime - CLR
Common Language Runtime - CLR
¾ najvažniji deo .NET Framework-a.
¾ nadležan za aktiviranje objekata, izvršavanje bezbednosnih provera nad
njima, njihovo smeštanje u memoriju, izvršavanje i uklanjanje iz memorije.
17
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
Class Libraries – Data and XML classes
Base Class Libraries
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
Base Class Libraries - BCL
¾ biblioteke tipova koje nudi .NET Framework.
¾ sastoji se iz klasa, interfejsa i vrednosnih tipova koji omogućavaju korišćenje
funkcija sistema.
18
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
Class Libraries – Data and XML classes
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
Class Libraries – Data and XML classes
¾ Specijalizovane biblioteke tipova.
¾ Zasniva se na tipovima datim u BCL-u.
19
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
Class Libraries – Data and XML classes
(ADO.NET, XML, XSLT, Xpath, ...)
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
Tehnologije za razvoj aplikacija
¾ Web Service, Web Forms, Windows Forms, Console Applications.
¾ interfejsne i neinterfejsne aplikacije.
20
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
(Web Services, Web Forms, Windows Forms, Console Applications)
Class Libraries – Data and XML classes
(ADO.NET, XML, XSLT, Xpath, ...)
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
Common Type System - CTS
¾ skup pravila koje prevodioci .NET jezika moraju da poštuju.
¾ njime su dati predefinisani tipovi podataka.
21
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
(Web Services, Web Forms, Windows Forms, Console Applications)
Class Libraries – Data and XML classes
(ADO.NET, XML, XSLT, Xpath, ...)
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
Common Language Specification - CLS
¾ specifikacija minimalnih zahteva koje svaki .NET jezik mora da podrži u cilju
postizanja integracije jezika.
22
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
(Web Services, Web Forms, Windows Forms, Console Applications)
Class Libraries – Data and XML classes
(ADO.NET, XML, XSLT, Xpath, ...)
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
.NET jezici
¾ C# (C Sharp) – nov jezik razvijen posebno za .NET Framework.
¾ postojeći jezici su ili redizajnirani ili prošireni (VB.NET, managed C++, ...)
23
Arhitektura .NET Framework-a
C#.NET VB.NET C++.NET JScript.NET ...
Common Type System - CTS Common Language Specification - CLS
Tehnologije za razvoj aplikacija
(Web Services, Web Forms, Windows Forms, Console Applications)
Class Libraries – Data and XML classes
(ADO.NET, XML, XSLT, Xpath, ...)
Base Class Libraries
(IO, string, net, security, threading, text, reflection, collection, ...)
Common Language Runtime – CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)
24
Common Language Runtime (CLR)
Common Language Runtime = .NET
najvažniji deo .NET Framework-a
predstavlja izvršno okruženje .NET Framework-a
nadležan je za aktiviranje objekata, izvršavanje bezbednosnih provera
nad njima. njihovo smeštanje u memoriju, izvršavanje i uklanjanje iz
memorije
ono što je Java Virtual Machine (JVM) za Java platformu, to CLR za .NET
Framework. I JVM i CLR omogućavaju izvršavanje aplikacija na različitim
platformama (nezavisno od hardvera i operativnog sistema)
dok JVM podržava jedino programski jezik Java, CLR podržava
¾ MS programski jezici: C#, VB.NET, C++.NET, JScript.NET
¾ programski jezici drugih proizvođača: COBOL, Eiffel, Perl, Pzthon, SmallTalk, ...
CLR podržava sve programske jezike koji se mogu prevesti u Microsoft
Intermediate Language (MSIL)
25
Common Language Runtime (CLR)
proces prevođenja izvornog u mašinski kod odvija se u dva koraka
¾ izvorni kod se prevodi u Microsoft Intermediate Language MSIL
¾ prevođenje MSIL koda u konkretan platformski kod koji izvršava CLR
izvorni kod MSIL kod mašinski kod
26
Microsoft Intermediate Language (MSIL)
jezik nižeg nivoa sa jednostavnom sintaksom, koji se vrlo brzo prevodi u
mašinski kod
podržava sve osobine objektno orijentisanih jezika uključujući apstrakciju
podataka, nasleđivanje, polimorfizam i korisne koncepte kao što su izuzeci
i događaji
uvođenjem ovog međujezika omogućena je:
¾ platformska nezavisnost
• kod napisan na bilo kom .NET jeziku može se izvršiti na bilo kojoj platformi
• Java Æ bytecode ; .NET Æ MSIL
¾ poboljšanje performansi
• dok se Java kod interpretira, MSIL se uvek prevodi (ne postoji gubitak
performansi koji je neminovan prilikom interpretacije)
• ne prevodi se cela aplikacija odjednom, već samo deo koji se pozove
• prevedeni kod se čuva sve dok se aplikacija ne završi
¾ jezička interoperabilnost
• kod dobijen prevođenjem iz jednog programskog jezika u MSIL, je
interoperabilan sa kodom koji je na isti način dobijen iz nekog sasvim drugog
programskog jezika
27
Microsoft Intermediate Language (MSIL)
osnovne karakteristike
9 objektna orijentisanost i korišćenje interfejsa
9 razlikovanje vrednosnih i referentnih tipova
9 stroga tipiziranost podataka
¾ upravljanje greškama putem izuzetaka
¾ korišćenje atributa
28
Karakteristike MSIL-a
objektna orijentisanost i korišćenje interfejsa
¾ podržava sve osobine objektno orijentisanih jezika uključujući apstrakciju
podataka, nasleđivanje, polimorfizam i korisne koncepte kao što su izuzeci i
događaji
¾ podržava jednostruko nasleđivanje klasa
¾ klase koje implementiraju dati interfejs moraju da obezbede implementaciju
metoda i svojstava naznačenih konkretnim interfejsom
29
Karakteristike MSIL-a
razlikovanje vrednosnih i referentnih tipova
¾ vrednosni tipovi
• promenljiva direktno čuva svoje podatke
• čuvaju se na steku
¾ referentni tipovi
• promenljiva sadrži adresu na kojoj se nalaze odgovarajući podaci
• čuvaju se u delu memorije koji se naziva kontrolisani hip
30
Karakteristike MSIL-a
stroga tipiziranost
¾ svaka promenljiva pripada određenom, konkretnom tipu podataka
¾ nisu dozvoljene operacije koje ostavljaju mogućnost dvosmislenog
tumačenja na koju vrstu podataka se njihov rezultat odnosi (Variant u VB-u)
¾ šta je omogućeno ?
9 jezička interoperabilnost
9 automatsko upravljanje memorijom
• bezbednost
• aplikacioni domeni
31
Jezička interoperabilnost
klase napisane u jednom jeziku mogu direktno da komuniciraju sa
klasama koje su napisane u drugom jeziku, odnosno:
¾ klasa napisana u jednom jeziku može da nasledi klasu napisanu u drugom
jeziku
¾ klasa može da sadrži primerke drugih klasa koje su realizovane korišćenjem
različitih jezika
¾ objekat može direktno da pozove metodu drugog objekta koja je napisana u
drugom jeziku
¾ objekti se mogu slobodno prenositi između metoda
• klasa “B” mora da razume sve tipove podataka koje klasa “A” koristi
A
(VB.NET)
• različiti jezici – različite ključne reči za iste tipove
• 32-bitni označeni celobrojni tip
B
(C#.NET) • u jeziku VB.NET definisan kao integer
• u jeziku C# definisan kao int
32
Common Type System
Zajednički sistem tipova definiše skup pravila, koje prevodioci .NET jezika
moraju da poštuju da bi definisali, referencirali i smestili i referentne i
vrednosne tipove.
CTS definiše predefinisane tipove podataka koji su dostupni u MSIL-u,
tako da svi jezici .NET Framework-a proizvode MSIL kod koji se zasniva
na ovim tipovima. (VB.NET – integer, C# – int, MSIL – System.int32)
CTS tipovi imaju istu semantiku, bez obzira u kojem su jeziku definisani
integer int
(VB.NET) (C#.NET)
mapiranje
int32
(MSIL)
33
Hijerarhijska struktura CTS-a
Tip
(Object)
Vrednosni Referentni
tipovi tipovi
Korisnički
Predefinisani Nabrojivi Samoopisujući Pokazivački Interfejsni
definisani
tipovi tipovi tipovi tipovi tipovi
tipovi
Klase Nizovi
Korisnički Upakovani
definisane vrednosni Delegati
klase tipovi
34
Common Language Specification - CLS
specifikacija zajedničkog jezika predstavlja skup minimalnih zahteva koje
svaki .NET jezik mora da podrži, u cilju postizanja interoperabilnosti.
jedan od zahteva koji nameće CLS je da nije dozvoljeno korišćenje
identifikatora koji se razlikuju samo po veličini slova
¾ za razliku od VB.NET-a, C# pravi razliku između velikih i malih slova
nisu sve klase .NET Frameworka u saglasnosti sa CLS-om
¾ na primer, uint je definisan u C#-u, a nije u VB.NET-u
ova specifikacija se odnosi samo na javne i zaštićene članove klasa i javne
klase (privatni delovi nisu dostupni)
35
CTS & CLS
Sistem zajedničkih tipova
CTS
...
COBOL.NET C++.NET
C# CLS VB.NET
36
Automatsko upravljanje memorijom
komponenta za sakupljanje otpadaka (garbage collector)
objekti na hipu do kojih ne vodi ni jedna referenca se automatski
oslobađaju
sprečava se curenje memorije (memory leak), a isto tako sprečavaju
situacije gde memorija ostaje zauzeta čak i posle završetka procesa
napomena: vreme kada će upotrebljena memorija biti oslobođena nije
tačno određena
¾ posledica: oslobađanje resursa ne treba da se radi u destruktoru klase
37
Sklop (assembly)
Sklop je kolekcija koja se sastoji od jedne ili više datoteka, pri čemu
jedna od njih sadrži metapodatke poznate pod nazivom manifest sklopa
manifest sklopa definiše šta sve ulazi u sastav sklopa, verzije, autora
sklopa, kakve su bezbednosne dozvole potrebne da bi sklop radio
IL kod + metapodaci kojima se opisuju tipovi i definisane metode u kodu
sklop je u potpunosti samoopisujuća logička jedinica
dve vrste
¾ privatni sklopovi
• zero impact installation
• može ih koristiti samo njihov softverski paket
¾ deljeni sklopovi
• instaliraju se u poseban direktorijum – globalni keš sklopa
• deljena biblioteka – može ih koristiti bilo koja druga aplikacija
38
Struktura sklopa
Jednostavan sklop Složen sklop
ЕХЕ / DLL ЕХЕ / DLL DLL
metapodaci sklopa metapodaci sklopa
metapodaci tipova
(manifest) (manifest)
metapodaci tipova metapodaci tipova MSIL kod
MSIL kod MSIL kod
resursi Resursi
(jpg, gif, ...)
Sklop od jedne datoteke Sklop od više datoteka
39
Izvršenje CLR aplikacija
OptIL and Base Class
Metadata Library
Back-end
Compiler
Native Code Class
and Loader
Metadata
.NET PE
Files
Verifier
Source (MSIL and
Compiler Linker
Code metadata)
MSIL and EXE or DLL
metadata JIT
Compiler
Metadata
Engine
Managed
CLR’s Virtual Execution Engine Native
Code
Execution
Compilation + Execution
40