Javascript.NET(V8Wrapper) 更新,自訂映射別名

來源:互聯網
上載者:User
曆史版本

之前的兩篇文章分別介紹了Google的V8引擎,和開源的Javascript.NET(V8的.NET的Wrapper)。我在這兩者的基礎上進行了一個高層封裝(Efreda.Script),並最佳化了部分代碼,解決了原版Wrapper的一些異常,今天主要是對Efreda.Script進行了一些更新,以便更方便的在開發當中使用。

 

自訂映射別名

有使用了這個庫的朋友向我反映,如果不加在全域程式集,則在JS當中執行個體化.NET類會相當的麻煩,例如要用到下面的代碼。

function testCreateByFullName(){var proc=$.Create("System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",null);proc.StartInfo.FileName="calc";proc.Start();}

 

每次都必須寫一長串這樣的名稱,實在是降低了開發效率。

如果在每次程式啟動去載入全域程式集,問題也比較大,因為整個.NET的程式集相當多,這樣的話,又費時間又費記憶體(大概需要5-10秒左右的時間來載入程式集,大大降低了程式的運行效率),雖然可以做一個啟動畫面來讓使用者等待,但是對於一些小程式來說,這樣的做法未免太浪費資源了。

 

之前恰好看到了一篇開源的.NET指令碼引擎,對於在指令碼當中執行個體化.NET的Class,它使用了別名的方式,於是,我也重新增加了這樣的方式,可以通過代碼來添加映射,也可以通過設定檔來添加,具體代碼如下。

通過設定檔:

 <configSections>    <section name="Script" type="Efreda.Script.ScriptSection,Efreda.Script"/>  </configSections>  <!--指令碼引擎配置-->  <!--    參數說明:    StartEngine:是否啟動指令碼引擎        RelativePath:是否為相對路徑        ScriptPath:指令碼目錄,根據RelativePath填寫相對或絕對路徑,相對路徑只需要填寫指令碼目錄名稱即可        CreateGACMapping:是否建立全域程式集映射,該操作耗時5-10秒,如果建立了映射,則可以簡單的通過限定名稱(命名空間+類名)在JS中執行個體化.NET類,而無需    指定強式名稱        CreateMappingAsyn:是否通過非同步方式建立映射,以免阻塞主線程  -->  <Script StartEngine="True" RelativePath="True" ScriptPath="Scripts" CreateGACMapping="False" CreateMappingAsyn="False">    <Map Alias="Process" Type="System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  </Script>

通過代碼:

JScriptManager.AddMap("Math", "System.Math, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

 

在JS指令碼當中執行個體化:

function testACreate(){var proc=$.ACreate("Process",null);proc.StartInfo.FileName="calc";proc.Start();}function testAStaticMethod(){var arg=new Array();arg[0]=-25;var rtv=$.AStaticMethod("Math","Abs",arg);return rtv;}

 

 

Efreda.Script 0.2.2源碼下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.