Silverlight基于.NET/CLR的osx数值计算

Jon*_*ore 1 silverlight mono f# cross-platform

我有兴趣使用F#进行数值工作,但我的平台不是基于Windows的.对于生成大量短期对象的程序(对于函数式语言来说是典型的),Mono仍然会有显着的性能损失.

Silverlight可在OSX上使用.我看到一些引用表明以常规方式编译的程序集无法引用,但在细节上并不清楚.我对UI不感兴趣,但想知道是否可以有效地使用捆绑了silverlight的VM来执行?

我希望能够引用我在java中已经拥有的大型数值模型库(通过IKVM交叉编译到.NET程序集)和用F#编写的新代码库.我希望OSX上的Silverlight VM具有良好的性能,并且可以引用外部程序集和本机库.

这可行吗?

Tom*_*cek 5

从技术上讲,Silverlight程序集与普通CLR程序集类似,不同之处在于它们引用了不同版本的运行时(以及不同版本的系统库mscorlib).Silverlight只能运行Silverlight程序集,因此如果您正在编译F#代码,则需要指示F#编译器引用Silverlight(这里是Luke Hoban的Visual Studio模板,这里是Brian McNamara在F#中的最新示例Silverlight应用程序).

现在,关于非F#组件,我担心这可能是一个问题.原则上,您不需要重新编译它们 - 有一些工具可以更改版本(将CLR程序集转换为Silverlight程序集).例如,参见本文.在实践中,Silverlight有许多限制(缺少许多方法,出于安全原因,不允许你做一些反射技巧等).所以,我担心如果你只是将程序集转换为Silverlight,它就不会真正起作用,但你仍然可以尝试......(但要小心 - 如果缺少引用的方法,你就不会发现这个直到Silverlight尝试在运行时调用它.

最后,与Silverlight中运行的应用程序进行通信也存在问题,因为Silverlight应用程序的功能非常有限.但是,Silverlight 4 RC应允许您在浏览器外模式下运行时读取/写入本地文件(这可能已经足够了).

总之,我认为有很多问题可能导致无法使用Silverlight.我可能会考虑在Mono上做更多的测试并向他们发送反馈(如果你发现某些情况下性能显然很差) - 根据我的经验,他们可以非常有效地回应用户的反馈并且我有感觉对于Mono团队来说,F#可能是非常有趣的事情.