Programavimas

„Dynamic Language Runtime“ naršymas „.Net“

Statiškai įvestos kalbos yra tos, kuriomis apibrėžiant reikia nurodyti objekto tipą. Statiškai įvestų kalbų pavyzdžiai yra C #, VB ir C ++. Priešingai, dinamiškai spausdintomis kalbomis objekto tipas nustatomas vykdymo metu - tik tuo metu, kai tipui priskiriama reikšmė. „Python“, „Ruby“ ir „JavaScript“ yra dinamiškai įvestų kalbų pavyzdžiai.

DLR („Dynamic Language Runtime“) veikia virš CLR („Common Language Runtime“) ir prideda dinamiškumo valdomoje .Net aplinkoje - galite ją naudoti, kad įdiegtumėte dinamines funkcijas savo programoje. Iš esmės DLR suteikia galimybę sąveikauti tarp statiškai ir dinamiškai įvestų kalbų CLR kontekste. DLR galite naudoti norėdami bendrinti bibliotekas ir objektus dinaminėmis kalbomis. Šiame straipsnyje pateikčiau „Dynamic Language Runtime“ aplinkos apžvalgą „Microsoft .Net“.

DLR atvirojo kodo versiją galite gauti iš „Codeplex“.

Kas yra DLR?

DLR yra „Microsoft“ pastangų, kad paslaugos veiktų virš CLR, rezultatas ir užtikrintų sąveikumą tarp statiškai ir dinamiškai įvestų kalbų. „Dynamic Language Runtime“ aplinkos palaikymą palengvina „System.Dynamic“ vardų sritis. MSDN teigia: "Dinaminė kalbos vykdymo trukmė (DLR) yra vykdymo trukmės aplinka, kuri prideda dinaminių kalbų paslaugų rinkinį prie bendrinės kalbos vykdymo laiko (CLR). DLR palengvina dinaminių kalbų kūrimą, kad būtų galima paleisti .Net Framework. ir pridėti dinamiškų funkcijų prie statiškai įvestų kalbų. "

Kuo tai naudinga?

DLR teikiamos paslaugos apima dinaminio tipo sistemos palaikymą, standartinį prieglobos modelį, taip pat dinamišką kodų generavimą ir išsiuntimą. Trumpai žvelgiant, DLR teikiama nauda apima:

  1. Teikia dinaminių funkcijų palaikymą statiškai įvestomis kalbomis. Įdiegę DLR, galite kurti dinamiškai surinktus objektus ir naudoti juos kartu su savo statiškai įvestais objektais savo programoje.
  2. Įgalina sklandų dinaminių kalbų perkėlimą į .Net Framework. DLR leidžia lengvai perkelti dinamines kalbas į .Net Framework. Norint pasinaudoti DLR funkcijomis, jums tereikia turėti dinamišką kalbą - tai galimybė kurti išraiškos medžius ir vykdymo laiko pagalbines procedūras.
  3. Palengvina dalijimąsi bibliotekomis ir objektais. DLR leidžia jums sukurti objektus ir bibliotekas viena kalba, kad būtų galima pasiekti iš kitos kalbos.
  4. Teikia dinaminio metodo siuntimo ir iškvietimo palaikymą. DLR palaiko dinaminį metodų iškvietimą ir siuntimą naudojant pažangią polimorfinę talpyklą.

Dinaminis kalbos vykdymo laiko posistemis

DLR posistemį iš esmės sudaro trys sluoksniai. Tai apima:

  1. Išraiškos medžiai - DLR naudoja išraiškos medžius kalbos semantikai reprezentuoti.
  2. Skambučių talpinimas talpykloje - metodo skambučiai, naudojant dinaminius objektus, talpinami atmintyje, kad DLR galėtų naudoti talpyklos istoriją tolesniems skambučiams tuo pačiu metodu, kad būtų greičiau išsiųsta.
  3. Dinaminė objektų sąveika - DLR suteikia galimybę sąveikauti tarp statiškai ir dinamiškai įvestų kalbų. DLR sistemoje yra tipų - klasių ir sąsajų - rinkinys. Dinaminė vardų sritis. Galite naudoti „IDynamicMetaObjectProvider“ sąsają ir „DynamicMetaObject“, „DynamicObject“ ir „ExpandoObject“ klases, kad sukurtumėte dinamines sistemas.

Kalbos rišikliai

DLR kalbos rišikliai padeda kalbėti su kitomis kalbomis. Taigi kiekvienai dinaminei kalbai paprastai turite rišiklį, kuris gali su ja bendrauti. Toliau pateikiami dažniausiai naudojami rišikliai DLR.

  • .Net Binder - tai naudojama kalbant su .Net objektais
  • „JavaScript Binder“ - tai naudojama norint kalbėtis su „JavaScript“ objektuose sukurtais objektais
  • „IronRuby Binder“ - įgalina DLR kalbėtis su „IronRuby“ objektais
  • „IronPython Binder“ - padeda DLR susikalbėti su „IronPython“ objektais
  • COM segtuvas - tai padeda DLR kalbėtis su COM objektais

„Dinamiškas“ raktinis žodis

Norėdami pasinaudoti dinaminiu objektu, galite pasinaudoti dinaminio raktinio žodžio pranašumais. Dinaminis raktinis žodis pirmą kartą buvo pristatytas „.Net Framework 4“. Tai leidžia jūsų programai sąveikauti su dinaminiais tipais. Taigi, naudodami dinaminį raktinį žodį galite pasiekti COM objektą arba objektą, sukurtą tokiomis dinamiškomis kalbomis kaip „Python“, „Ruby“ ar „JavaScript“.

Štai kodo fragmentas, parodantis, kaip galima naudoti dinaminį raktinį žodį.

naudojant „System.Dynamic“;

dinaminis excelObj = System.Runtime.InteropServices.Marshal.GetActiveObject („Excel.Application“);

Mums nebereikia naudoti atspindžio norint pasiekti COM objektus - jūsų kodas yra daug švarus be atspindžio kodo, kurį priešingu atveju būtumėte turėję rašyti be dinaminio raktinio žodžio.

Siūlomi skaitiniai

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