Programovanie

Preskúmanie modulu Dynamic Language Runtime v .Net

Staticky písané jazyky sú jazyky, v ktorých by ste v čase definovania museli špecifikovať typ objektu. Medzi príklady staticky napísaných jazykov patria C #, VB a C ++. Naopak, v dynamicky písaných jazykoch sa typ objektu určuje za behu - iba v čase, keď je danému typu priradená hodnota. Príklady dynamicky písaných jazykov sú Python, Ruby a JavaScript.

DLR (Dynamic Language Runtime) beží nad CLR (Common Language Runtime) a dodáva dynamiku riadenému prostrediu .Net - môžete ho použiť na implementáciu dynamických funkcií vo vašej aplikácii. DLR v podstate umožňuje interoperabilitu medzi jazykmi so statickým a dynamickým typom v kontexte CLR. DLR môžete použiť na zdieľanie knižníc a objektov s dynamickými jazykmi. V tomto článku by som predstavil prehľad prostredia Dynamic Language Runtime v Microsoft .Net.

Verziu DLR s otvoreným zdrojovým kódom môžete získať od spoločnosti Codeplex.

Čo je DLR?

DLR je výsledkom snahy spoločnosti Microsoft dosiahnuť, aby služby bežali nad CLR a poskytovali interoperabilitu medzi staticky a dynamicky písanými jazykmi. Podporu pre prostredie Dynamic Language Runtime uľahčuje priestor názvov System.Dynamic. MSDN uvádza: "Dynamický runtime jazyk (DLR) je runtime prostredie, ktoré pridáva sadu služieb pre dynamické jazyky do spoločného jazykového modulu runtime (CLR). DLR uľahčuje vývoj dynamických jazykov pre spustenie v .Net Framework a pridať dynamické funkcie k staticky napísaným jazykom. “

Ako je to užitočné?

Medzi služby poskytované DLR patrí podpora systému dynamického typu, štandardného modelu hostingu, ako aj generovanie a odosielanie dynamického kódu. Medzi výhody, ktoré poskytuje DLR, patria:

  1. Poskytuje podporu pre dynamické funkcie v staticky napísaných jazykoch. Keď je DLR na mieste, môžete vytvárať dynamicky písané objekty a používať ich spolu so svojimi staticky napísanými objektmi vo svojej aplikácii.
  2. Umožňuje bezproblémové prenášanie dynamických jazykov do rozhrania .Net Framework. DLR umožňuje ľahký prenos dynamických jazykov do .Net Framework. Aby ste mohli využívať funkcie DLR, musíte mať všetko, čo musíte mať v dynamickom jazyku, schopnosť vytvárať výrazové stromy a pomocné rutiny za behu.
  3. Uľahčuje zdieľanie knižníc a objektov. DLR umožňuje vytvárať objekty a knižnice v jednom jazyku, ku ktorým máte prístup z iného jazyka.
  4. Poskytuje podporu pre odosielanie a vyvolanie dynamických metód. DLR poskytuje podporu pre vyvolanie a odoslanie dynamických metód pomocou pokročilého polymorfného ukladania do pamäte cache.

Subsystém dynamického jazyka za behu

Subsystém DLR je v zásade zložený z troch vrstiev. Medzi ne patria:

  1. Stromy výrazov - DLR využíva stromy výrazov na vyjadrenie sémantiky jazyka.
  2. Ukladanie do pamäte cache stránok - volania metód pomocou dynamických objektov sa ukladajú do pamäte, takže DLR môže použiť históriu pamäte cache pre následné volania tej istej metódy na rýchlejšie odoslanie.
  3. Interoperabilita dynamických objektov - DLR umožňuje interoperabilitu medzi staticky a dynamicky písanými jazykmi. DLR obsahuje kolekciu typov - tried a rozhraní v mennom priestore System.Dynamic. Na vytvorenie dynamických rámcov môžete využiť rozhranie IDynamicMetaObjectProvider a triedy DynamicMetaObject, DynamicObject a ExpandoObject.

Jazykové viazače

Jazykové spojivá v DLR mu pomáhajú rozprávať s inými jazykmi. Takže pre každý dynamický jazyk by ste zvyčajne mali spojivo, ktoré s ním môže interagovať. Ako príklad uvádzame bežne používané spojivá v DLR.

  • .Net Binder - slúži na komunikáciu s objektmi .Net
  • JavaScript Binder - používa sa na komunikáciu s objektmi vytvorenými v objektoch JavaScript
  • IronRuby Binder - umožňuje DLR hovoriť s objektmi IronRuby
  • IronPython Binder - pomáha DLR hovoriť s objektmi IronPython
  • COM Binder - pomáha DLR hovoriť s objektmi COM

„Dynamické“ kľúčové slovo

Kľúčové slovo dynamické môžete využiť na prístup k dynamickému objektu. Dynamické kľúčové slovo bolo prvýkrát predstavené v .Net Framework 4. Umožňuje vašej aplikácii spolupracovať s dynamickými typmi. Kľúčové slovo dynamic teda môžete použiť na prístup k objektu COM alebo k objektu vytvorenému v dynamických jazykoch, ako sú Python, Ruby alebo JavaScript.

Tu je útržok kódu, ktorý ilustruje, ako sa dá použiť dynamické kľúčové slovo.

pomocou System.Dynamic;

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

Na prístup k objektom COM už nemusíme používať reflexiu - váš kód je oveľa čistý bez reflexného kódu, ktorý by ste inak museli napísať bez dynamického kľúčového slova.

Navrhované hodnoty

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

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