Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Technologia.NET
19
Rysunek7.przedstawiazawartośćplikupośredniegoutworzonegopopierwszymetapie
kompilacji.Wplikutymznajdująsiętzw.metadaneorazkodMSIL.Metadanezawierają
m.in.opis:typów,składowychklas(np.właściwości,metod,pól),którychimplementację
zawierakodMSIL.SkładniajęzykaMSILjestbardzołatwadoanalizy,dlategobezwiększego
problemumożnaprzekształcićkodMSILzpowrotemnakodźródłowywjęzykuC#,akod
odzyskanyjestprawietakisamjakkodoryginalny.Abytemuzapobiec,przekształcasiękod
MSILdopostacispecjalnieutrudniającejprocesdekompilacji.Programy,któresiętymzajmu-
ją,nazywaneobfuskatorami.
Dopierodrugietapkompilacji,polegającynaskompilowaniukoduwjęzykuILdoinstrukcji
językamaszynowegodanegoprocesoragłównego(np.PentiumIV)orazwybranegosystemu
operacyjnego,pozwalanauruchomienienapisanejaplikacjiwwybranymśrodowisku.Kompilatory
uczestniczącewdrugimetapiekompilacjinazywanekompilatoramiJIT(ang.Just-in-Timeñna
danyczas,nadanymoment),gdyżgenerująonekoddlakonkretnegośrodowiska.
Rysunek7.Zawartośćplikupośredniegopopierwszymetapiekompilacji
WśrodowiskuCLRzostałzdefiniowanyWspólnySystemTypów(ang.CommonType
SystemñCTS).Jesttowspólnydlawszystkichjęzykówzarządzalnychobszernyzestawtypów,
jakiemogązostaćstandardowozaimplementowanepodczasdeklaracjimetadanychiinformacji
zapisanychwkodziepośrednimMSIL.Towłaśnietensystemsprawia,żekodMSILjest
niezależnyodjęzykaprogramowaniaaplikacji.CTSdefiniujepodzbiórCLS(ang.Common
LanguageSpecificationñWspólnaSpecyfikacjaJęzyka),któryumożliwiarozbudowębibliotek
.NETnowymitypami(np.klasami)dostarczanymiprzezposzczególnejęzykiwtakisposób,
abymogłyposzerzyćlubnadpisaćistniejącejużmetodyzaimplementowanewwybranym
językuzarządzalnym.CLSokreślam.in.niektóretypypodstawowe,np.byte,int32;reguły
nazewnictwazmiennychimetodwklasie;ustalatypywewnątrzinterfejsów,klasabstrakcyj-
nychitablic;podajekompilatorowiinterpretacjęznaczeniaizakresusłówkluczowychwystę-
pującychtylkowwybranymjęzyku,np.HandleswVB.NET;definiujenazwymetodobsłu-
gującychzdarzenie.
ZCLSnienatomiastzgodneanitypyreferencyjne,anitypyifunkcjewskaźnikowe,
którewspecjalnysposóboznaczone.Musząonezatemposiadaćzastępczetypyzgodneze
specyfikacjąCLS.
Wszystkiejęzykizarządzalnemogąstaćsiębezproblemudostawcamii/lubkon-
sumentamitypówzgodnychzCLS.Zależytotylkoodichrozbudowyonowetypy(patrzrys.
8.).Nowymitypamimogąbyćnp.klasy,typywyliczeniowe,struktury,interfejsyutworzone
wdowolnymzarządzalnymjęzykuiskompilowanedobibliotek.dllnarzeczkonkretnejaplikacji.
RozbudowaneaplikacjeWindowsForms.NET,korzystającezbazdanych,możnapo-
dzielićnatrzyniezależneodsiebiewarstwy(patrzrys9.).