Programiranje

Raziskovanje dinamičnega izvajanja jezika v .Net

Statično natipkani jeziki so tisti, v katerih bi morali določiti vrsto predmeta v času, ko ga definirate. Primeri statično natipkanih jezikov vključujejo C #, VB in C ++. Nasprotno, v dinamično natipkanih jezikih se vrsta predmeta določi med izvajanjem - samo v času, ko je tipu dodeljena vrednost. Python, Ruby in JavaScript so primeri dinamično tipkanih jezikov.

DLR (Dynamic Language Runtime) deluje nad CLR (Common Language Runtime) in doda dinamičnost upravljanemu okolju .Net - z njim lahko uporabite dinamične funkcije v svoji aplikaciji. DLR v bistvu omogoča interoperabilnost med statično in dinamično natipkanimi jeziki znotraj konteksta CLR. DLR lahko uporabite za skupno rabo knjižnic in predmetov z dinamičnimi jeziki. V tem članku bi predstavil pregled okolja za dinamično izvajanje jezikov v Microsoftu .Net.

Odprtokodno različico DLR lahko dobite pri Codeplexu.

Kaj je DLR?

DLR je rezultat Microsoftovih prizadevanj, da bi se storitve izvajale nad CLR in zagotavljale interoperabilnost med statično in dinamično natipkanimi jeziki. Podporo okolju Dynamic Language Runtime olajša imenski prostor System.Dynamic. MSDN navaja: "Dinamično izvajalno okolje (DLR) je izvajalno okolje, ki skupnemu izvajalnemu okolju (CLR) doda nabor storitev za dinamične jezike. DLR olajša razvijanje dinamičnih jezikov za izvajanje na .Net Framework in dodati dinamične funkcije statično natipkanim jezikom. "

Kako je to koristno?

Storitve, ki jih ponuja DLR, vključujejo podporo za sistem dinamičnega tipa, standardni model gostovanja ter dinamično generiranje in odpošiljanje kode. Na hitro prednosti DLR vključujejo:

  1. Ponuja podporo za dinamične funkcije v statično natipkanih jezikih. Z nameščenim DLR lahko v svoji aplikaciji ustvarite dinamično tipkane predmete in jih uporabite skupaj s statično tipkanimi predmeti.
  2. Omogoča nemoteno prenašanje dinamičnih jezikov v .Net Framework. DLR vam omogoča enostavno prenašanje dinamičnih jezikov v .Net Framework. Če želite izkoristiti funkcije DLR, mora vse, kar morate imeti v svojem dinamičnem jeziku, sposobnost ustvarjanja dreves izrazov in pomožnih rutin med izvajanjem.
  3. Olajša skupno rabo knjižnic in predmetov. DLR vam omogoča ustvarjanje predmetov in knjižnic v enem jeziku, do katerih lahko dostopate iz drugega jezika.
  4. Ponuja podporo za dinamično pošiljanje in priklic metode. DLR nudi podporo za priklic in odpošiljanje dinamične metode z uporabo naprednega polimorfnega predpomnjenja.

Podsistem dinamičnega izvajanja jezika

Podsistem DLR je v osnovi sestavljen iz treh slojev. Sem spadajo naslednje:

  1. Drevesa izrazov - DLR uporablja drevesa izrazov za predstavitev jezikovne semantike.
  2. Predpomnjenje klicnih mest - klici metode z uporabo dinamičnih predmetov se shranijo v pomnilnik, tako da lahko DLR uporabi zgodovino predpomnilnika za nadaljnje klice iste metode za hitrejšo odpremo.
  3. Dinamična interoperabilnost objektov - DLR omogoča interoperabilnost med statično in dinamično tipkanimi jeziki. DLR vključuje zbirko tipov - razredov in vmesnikov v imenskem prostoru System.Dynamic. Za ustvarjanje dinamičnih okvirov lahko uporabite vmesnik IDynamicMetaObjectProvider in razrede DynamicMetaObject, DynamicObject in ExpandoObject.

Jezikovna veziva

Jezikovna veziva v DLR mu pomagajo pri pogovoru z drugimi jeziki. Torej, za vsak dinamični jezik bi običajno imeli vezivo, ki bi lahko komuniciralo z njim. Kot primer so spodaj navedena pogosto uporabljena veziva v DLR.

  • .Net Binder - uporablja se za pogovor s predmeti .Net
  • JavaScript Binder - uporablja se za pogovor s predmeti, ustvarjenimi v objektih JavaScript
  • IronRuby Binder - DLR-ju omogoča pogovor s predmeti IronRuby
  • IronPython Binder - pomaga DLR, da se pogovarja s predmeti IronPython
  • COM Binder - to pomaga DLR-ju, da govori s predmeti COM

Ključna beseda "dinamična"

Ključno besedo Dynamic lahko izkoristite za dostop do dinamičnega predmeta. Dinamična ključna beseda je bila prvič predstavljena v .Net Framework 4. Omogoča, da vaša aplikacija sodeluje z dinamičnimi vrstami. Torej lahko z dinamično ključno besedo dostopate do predmeta COM ali predmeta, ustvarjenega v dinamičnih jezikih, kot so Python, Ruby ali JavaScript.

Tu je delček kode, ki prikazuje, kako je mogoče uporabiti dinamično ključno besedo.

z uporabo System.Dynamic;

dinamični excelObj = System.Runtime.InteropServices.Marshal.GetActiveObject ("Excel.Application");

Za dostop do predmetov COM nam ni več treba uporabiti odseva - vaša koda je precej čista brez odbojne kode, ki bi jo sicer morali napisati brez dinamične ključne besede.

Predlagani odčitki

//msdn.microsoft.com/en-us/library/dd233052(v=vs.110).aspx

$config[zx-auto] not found$config[zx-overlay] not found