8

由於服務器端(ASP.NET Futures)和客戶端(Silverlight)的MS appears to have killed Managed JavaScript in the latest DLR,任何人都可以成功地使用非過時的API來允許使用JScript.NET腳本化他們的應用程序對象和/或可以解釋如何這樣做? Mono/JScript解決方案如果穩定且符合以下要求,也可能是可以接受的。是否可以使用JScript.NET來編寫.NET應用程序的腳本?

我們有興趣將使用Microsoft JScript引擎和ActiveScript API的腳本宿主升級爲具有更高性能和更易擴展性的東西。我們有超過16,000個服務器端腳本,超過42MB的源代碼,因此重寫到另一種腳本語言是不可能的。

我們的具體要求是:

  • 比微軟的JScript(ActiveScript)發動機
    • 更好的運行時性能和/或
    • 保留預先分析和編譯腳本的Noteably更好的性能(唐每次運行都不重複)
    • 內存消耗較低或相等
  • 全ECMA-262的ECMAScript兼容性
    • 有點移植是可以容忍的自定義對象的
  • 注入腳本命名空間
    • .NET對象(不是硬性要求)
    • 包裝在COM對象或COM對象中。COM的NET
  • 實例化從腳本 對象
    • 點菜 「新的ActiveXObject(進程id)」
    • 低優先級考慮到前述
  • 包含文件
    • 預將「助手腳本」加載到腳本執行上下文中
    • 的「包括」功能或聲明(易於創建,給出了上述)在全球範圍
  • 支持代碼
    • 執行的代碼在全球範圍
    • 保留值中的全局初始化範圍
    • 在全球範圍內
    • 提取從全球範圍
    • 注入和替換值的值
  • 呼叫腳本定義的函數
    • 與參數
    • ,並獲得了先前初始化全球範圍內
  • 源代碼級調試
  • 商業或開源支持
  • 非過時的API
+1

微軟是否仍然支持Silverlight中的託管JScript? – Nosredna 2009-06-02 00:55:30

+1

不是,從Silverlight也沒了。看到這個答案:http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 – 2009-06-02 03:51:30

+1

這非常令人震驚。 – Nosredna 2009-06-02 03:54:30

回答

2

遲早,我想象有人會寫一個DLR Javascript。我知道這對你來說不是很方便,但也許你可以開始這個項目。我懷疑使用JScript.NET會有更好的成本/收益分析。

1

如果移動從.NET和Microsoft走是確定適合你,那麼你應該嘗試Mozilla的Rhino。它是完全用Java編寫的JavaScript的開源實現。現代服務器端js庫很多都是針對這個平臺的。

0

使用COM互操作意味着你被限制到MS解決方案Java和開源要儘量少用它做。

我沒有看到任何支持所有需求的解決方案,要麼丟棄所有COM/.NET的東西,而要使用Java(Rhino)/ Linux/Open源代碼,或者在JavaScript中使用Javascript作爲服務器語言如果我們不能運行Java,我們會在服務器上使用更多的PHP/Python/Ruby。由於語言是主要障礙,所以您不會看到Java腳本的巨大性能提升。

我不會指望編寫新的DLR作爲服務器的人Java腳本正快速死去。

考慮到你想要的性能,怎麼樣F#,微軟將繼續支持至少5年給你的時間在F#中創建新的東西,而你慢慢遷移代碼JScript引擎。

1

我已經使用了CSScript.net,因爲它可以讓你運行C#作爲腳本平臺。從該網站:

CS-腳本結合了力量和豐富 C#和FCL與 靈活性腳本系統。 CS-Script可用於系統和 網絡管理員,開發人員和 測試人員。對於任何需要 自動化的人來解決各種 編程任務。

CS腳本可以滿足您制定的所有條件。我用它作爲Boo的替代品,它的表現非常好。你可以在行動here看到它。

3

我回答了類似的問題here。看看IronJS,這是在DLR上運行的F#中的JavaScript實現。

0

Jurrassic - 發動機是活蹦亂跳。

從他們的CodePlex網站:

  • 支持所有的ECMAScript 3和ECMAScript 5功能,包括ES5嚴格模式
  • 很好的測試 - 經過五千年的單元測試(超過三萬斷言)
  • 簡單而強大的API
  • 將JavaScript編譯爲.NET字節碼(CIL);不解釋器
  • 部署爲單個.NET組件(沒有本機代碼)
  • 爲Visual Studio中集成調試基本支持
  • 使用重量輕的代碼生成,所以生成的代碼是完全垃圾回收
  • 測試在.NET 3.5,.NET 4和Silverlight上
相關問題