Ohjelmointi

Dynaamisen kielen ajonaikaisen sisällön tutkiminen .Netissä

Staattisesti kirjoitetut kielet ovat niitä, joissa sinun on määritettävä objektityyppi määritettäessä sitä. Esimerkkejä staattisesti kirjoitetuista kielistä ovat C #, VB ja C ++. Päinvastoin, dynaamisesti kirjoitetuilla kielillä objektin tyyppi määritetään ajon aikana - vain silloin, kun tyypille on määritetty arvo. Python, Ruby ja JavaScript ovat esimerkkejä dynaamisesti kirjoitetuista kielistä.

DLR (Dynamic Language Runtime) toimii CLR: n (Common Language Runtime) päällä ja lisää dynaamisuutta .Net-järjestelmän hallittuun ympäristöön - voit käyttää sitä dynaamisten ominaisuuksien toteuttamiseen sovelluksessasi. Pohjimmiltaan DLR mahdollistaa yhteentoimivuuden staattisesti ja dynaamisesti kirjoitettujen kielten välillä CLR: n yhteydessä. DLR: n avulla voit jakaa kirjastoja ja objekteja dynaamisilla kielillä. Tässä artikkelissa esitän yleiskatsauksen Dynamic Language Runtime -ympäristöstä Microsoft .Netissä.

Voit saada avoimen lähdekoodin version DLR: stä Codeplexiltä.

Mikä on DLR?

DLR on tulos Microsoftin pyrkimyksistä saada palvelut toimimaan CLR: n päälle ja tarjoamaan yhteentoimivuus staattisesti ja dynaamisesti kirjoitettujen kielten välillä. Dynamic Language Runtime -ympäristön tukea helpottaa System.Dynamic-nimitila. MSDN toteaa: "Dynaaminen kielen ajonaikainen (DLR) on ajonaikainen ympäristö, joka lisää joukon palveluita dynaamisille kielille yleisen kielen ajonaikaan (CLR). DLR helpottaa dynaamisten kielten kehittämistä toimimaan .Net Frameworkissa ja lisätä dynaamisia ominaisuuksia staattisesti kirjoitettuihin kieliin. "

Kuinka siitä on hyötyä?

DLR: n tarjoamat palvelut sisältävät tuen dynaamiselle tyyppiselle järjestelmälle, tavalliselle isännöintimallille sekä dynaamisen koodin generoinnin ja lähettämisen. Nopealla silmäyksellä DLR: n tarjoamia etuja ovat:

  1. Tarjoaa tukea dynaamisille ominaisuuksille staattisesti kirjoitetuilla kielillä. Kun DLR on paikallaan, voit luoda dynaamisesti kirjoitettuja objekteja ja käyttää niitä yhdessä staattisesti kirjoitettujen objektien kanssa sovelluksessasi.
  2. Mahdollistaa dynaamisten kielten saumattoman siirtämisen .Net Frameworkiin. DLR: n avulla voit helposti siirtää dynaamisia kieliä .Net Frameworkiin. DLR-ominaisuuksien hyödyntämiseksi dynaamisella kielelläsi on oltava vain kyky tuottaa lausekepuita ja ajonaikaisia ​​auttajarutiineja.
  3. Helpottaa kirjastojen ja esineiden jakamista. DLR: n avulla voit luoda esineitä ja kirjastoja yhdellä kielellä, jota voidaan käyttää toisella kielellä.
  4. Tarjoaa tukea dynaamiseen menetelmien lähettämiseen ja kutsumiseen. DLR tarjoaa tukea dynaamiseen menetelmän kutsumiseen ja lähettämiseen käyttämällä edistynyttä polymorfista välimuistia.

Dynaaminen kielen ajonaikainen alijärjestelmä

DLR-alijärjestelmä koostuu periaatteessa kolmesta kerroksesta. Näitä ovat seuraavat:

  1. Lausekepuut - DLR käyttää lausekepuuta edustamaan kielisemantiikkaa.
  2. Soitussivuston välimuisti - dynaamisia objekteja käyttävät menetelmäpuhelut tallennetaan välimuistiin, jotta DLR voi käyttää välimuistihistoriaa myöhempiin puheluihin samaan menetelmään lähetyksen nopeuttamiseksi.
  3. Dynaaminen kohteiden yhteentoimivuus - DLR mahdollistaa yhteentoimivuuden staattisesti ja dynaamisesti kirjoitettujen kielten välillä. DLR sisältää kokoelman tyyppejä - luokkia ja rajapintoja System.Dynamic-nimiavaruudessa. Voit hyödyntää IDynamicMetaObjectProvider-rajapintaa ja DynamicMetaObject-, DynamicObject- ja ExpandoObject-luokkia luodaksesi dynaamisia kehyksiä.

Kielen sideaineet

DLR-kielen sideaineet auttavat sitä puhumaan muille kielille. Joten jokaisella dynaamisella kielellä olisi tyypillisesti sideaine, joka voi olla vuorovaikutuksessa sen kanssa. Seuraavat esimerkit ovat yleisesti käytettyjä sideaineita DLR: ssä.

  • .Net Binder - tätä käytetään puhumaan .Net-objektien kanssa
  • JavaScript Binder - tätä käytetään puhumaan JavaScript-objekteissa luotujen objektien kanssa
  • IronRuby Binder - mahdollistaa DLR: n puhumisen IronRuby-objektien kanssa
  • IronPython Binder - auttaa DLR: ää puhumaan IronPython-objektien kanssa
  • COM-sideaine - tämä auttaa DLR: ää puhumaan COM-objektien kanssa

Dynaaminen avainsana

Voit käyttää dynaamista avainsanaa dynaamisen objektin käyttämiseen. Dynaaminen avainsana esiteltiin ensimmäisen kerran .Net Framework 4: ssä. Sen avulla sovelluksesi voi toimia yhdessä dynaamisten tyyppien kanssa. Joten voit käyttää dynaamista avainsanaa päästäksesi COM-objektiin tai dynaamisilla kielillä luotuun objektiin, kuten Python, Ruby tai JavaScript.

Tässä on koodinpätkä, joka kuvaa, kuinka dynaamista avainsanaa voidaan käyttää.

käyttämällä System.Dynamic;

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

Meidän ei enää tarvitse käyttää heijastusta COM-objektien käyttämiseen - koodisi on paljon puhdas ilman heijastuskoodia, jonka muuten sinun olisi pitänyt kirjoittaa dynaamisen avainsanan ulkopuolella.

Ehdotetut lukemat

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

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