Programmēšana

Dinamiskās valodas izpildlaika izpēte .net

Statiski ierakstītas valodas ir tās, kurās jums jādefinē objekta tips brīdī, kad to definējat. Statiski ierakstītu valodu piemēri ir C #, VB un C ++. Tieši pretēji, dinamiski drukātās valodās objekta tips tiek noteikts izpildlaika laikā - tikai brīdī, kad tipam tiek piešķirta vērtība. Python, Ruby un JavaScript ir dinamiski ievadītu valodu piemēri.

DLR (Dynamic Language Runtime) darbojas virs CLR (Common Language Runtime) un pievieno dinamiku pārvaldītajai .Net videi - to varat izmantot, lai savā lietojumprogrammā ieviestu dinamiskās funkcijas. Būtībā DLR nodrošina savstarpēju savietojamību starp statiski un dinamiski ierakstītām valodām CLR kontekstā. DLR var izmantot, lai koplietotu bibliotēkas un objektus ar dinamiskām valodām. Šajā rakstā es sniegšu pārskatu par Dynamic Language Runtime vidi Microsoft .Net.

DLR atvērtā koda versiju varat iegūt vietnē Codeplex.

Kas ir DLR?

DLR ir rezultāts Microsoft centieniem panākt, lai pakalpojumi darbotos virs CLR un nodrošinātu sadarbspēju starp statiski un dinamiski drukātām valodām. Dinamiskās valodas izpildlaika vides atbalstu atvieglo System.Dynamic nosaukumvieta. MSDN norāda: "Dinamiskā valodas izpildlaiks (DLR) ir izpildlaika vide, kas kopējo valodu izpildlaika (CLR) pakalpojumiem pievieno dinamisko valodu pakalpojumu kopu. DLR atvieglo dinamisko valodu izstrādi, lai palaistu .Net Framework un pievienot dinamiskas funkcijas statiski ierakstītām valodām. "

Cik tas ir noderīgi?

DLR sniegtie pakalpojumi ietver atbalstu dinamiskā tipa sistēmai, standarta mitināšanas modelim, kā arī dinamisku kodu ģenerēšanu un nosūtīšanu. Ātri skatoties, DLR sniegtie ieguvumi ietver:

  1. Nodrošina dinamisko funkciju atbalstu statiski ierakstītās valodās. Ievietojot DLR, jūs varat izveidot dinamiski ierakstītus objektus un lietot tos kopā ar statiski ierakstītiem objektiem savā lietojumprogrammā.
  2. Ļauj vienmērīgi pārvietot dinamiskās valodas uz .Net Framework. DLR ļauj viegli pārvietot dinamiskās valodas .Net Framework. Lai izmantotu DLR funkcijas, viss, kas jums jādara, ir spēja radīt izteiksmes kokus un izpildlaika palīgprogrammas.
  3. Atvieglo bibliotēku un objektu koplietošanu. DLR ļauj jums izveidot objektus un bibliotēkas vienā valodā, kurai var piekļūt no citas valodas.
  4. Nodrošina atbalstu dinamiskās metodes nosūtīšanai un izsaukšanai. DLR nodrošina atbalstu dinamiskai metožu izsaukšanai un nosūtīšanai, izmantojot uzlabotas polimorfās kešatmiņas.

Dinamiskās valodas izpildlaika apakšsistēma

DLR apakšsistēmu pamatā veido trīs slāņi. Tie ietver sekojošo:

  1. Izteiksmes koki - DLR izmanto izteiksmes kokus, lai attēlotu valodas semantiku.
  2. Zvanu vietnes kešatmiņa - metodes zvani, izmantojot dinamiskos objektus, tiek saglabāti kešatmiņā atmiņā, lai DLR varētu izmantot kešatmiņas vēsturi nākamajiem zvaniem uz to pašu metodi ātrākai nosūtīšanai.
  3. Dinamiskā objekta savietojamība - DLR nodrošina sadarbspēju starp statiski un dinamiski ievadītām valodām. DLR ietver sistēmu - klases un saskarņu kolekciju. Dinamiskā nosaukumvieta. Varat izmantot IDynamicMetaObjectProvider saskarni un klases DynamicMetaObject, DynamicObject un ExpandoObject, lai izveidotu dinamiskas ietvarstruktūras.

Valodas saistītāji

Valodas saistītāji DLR palīdz sarunāties ar citām valodām. Tātad katrai dinamiskai valodai parasti ir saistviela, kas var ar to mijiedarboties. Kā piemēru var minēt DLR parasti izmantotās saistvielas.

  • .Net Binder - tas tiek izmantots, lai sarunātos ar .Net objektiem
  • JavaScript Binder - tas tiek izmantots, lai sarunātos ar objektiem, kas izveidoti JavaScript objektos
  • IronRuby Binder - ļauj DLR sarunāties ar IronRuby objektiem
  • IronPython Binder - palīdz DLR sarunāties ar IronPython objektiem
  • COM saistviela - tas palīdz DLR sarunāties ar COM objektiem

Dinamiskais atslēgvārds

Lai piekļūtu dinamiskam objektam, varat izmantot dinamiskā atslēgvārda priekšrocības. Dinamiskais atslēgvārds pirmo reizi tika ieviests .Net Framework 4. Tas ļauj jūsu lietojumprogrammai sadarboties ar dinamiskajiem tipiem. Tātad, jūs varat izmantot dinamisko atslēgvārdu, lai piekļūtu COM objektam vai objektam, kas izveidots tādās dinamiskās valodās kā Python, Ruby vai JavaScript.

Šis ir koda fragments, kas parāda, kā dinamisko atslēgvārdu var izmantot.

izmantojot System.Dynamic;

dinamiskais excelObj = System.Runtime.InteropServices.Marshal.GetActiveObject ("Excel.Application");

Mums vairs nav jāizmanto refleksija, lai piekļūtu COM objektiem - jūsu kods ir daudz tīrs bez refleksijas koda, kas jums citādi būtu bijis jāraksta bez dinamiskā atslēgvārda.

Ieteiktie lasījumi

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