その理由は、高品質で高速な JavaScript エンジンが .net プラットフォームにないためです。エンド ユーザーがカスタマイズできるように、実行中のスクリプトで多数の .net オブジェクト (ORM モデルなど) にアクセスする機能が必要だと想像してください。
いくつかのオプションが表示されます。
- 既存の .net 実装の 1 つを使用します。驚くべきことに、実行可能な選択肢はわずかしかありません: jurassicとironjsです。Jurassic は非常に優れており、安定しており、Ecma5 をサポートしていますが、ネイティブ エンジン (mozilla、v8) に比べて遅いです。IronJS は有望ですが、正式には Ecma5 をサポートしておらず、その開発は遅れているようです。
- 混合アプリケーションでマネージ コードをネイティブ エンジンにリンクします。それは機能し、以前にmozillaエンジンで実行しました。問題は、スクリプトで表示する必要がある .net オブジェクトが多数ある場合、ネイティブ/マネージドの移行に多額の費用を支払う必要があり、パフォーマンスが低下する可能性があることです。
- ネイティブ エンジン (v8 の方が適しています) をマネージ アセンブリとしてコンパイルし、.net で直接使用します。基本的には、上記のトレードオフを解消する試みです。
私の質問は、3 番目のアプローチを試す価値があるかどうかです。すでに試した人はいますか?
ありがとう!
更新 (2012 年 7 月 2 日): 興味のある方は、mozilla jseng でこのような実験を行いました。私の同僚の 1 人は、それを機能させるために多くの時間を費やしました。最後に、すべての mozilla jseng コードがマネージドになり、ネイティブ/マネージド トランジションがコード内にほとんど表示されなくなった時点で、結果は予想外でした。パフォーマンスは同じでした。そのため、ネイティブ/マネージドの移行は主な問題ではありませんでした。