使用CoreRT /另一个AOT编译.net核心应用程序

rud*_*ias 13 c# compilation .net-native .net-core corert

我正在ASP.NET CORE 1.0上构建REST API.在生产中,IMHO非常有用,不使用JIT,因为带有应用程序的docker容器正在向上和向下扩展,在CI期间反复重新部署,因此每个已部署容器的即时编译会导致可怕的滞后,LB健康检查死亡和其他痛苦.

在我阅读时,使用dotnet CLI的本机编译已停止.我尝试使用CoreRT进行构建,但没有运气(由于复杂性需求的详细信息).

由于这个问题非常抽象,我不提供示例代码或详细信息,所以一开始几乎没有问题:

  1. 我的假设是正确的 - 将提前编译解决问题,每个路径的首次执行缓慢 - 或者 - 是否还有其他任何解决方案?
  2. 如果是真的,目前可以从.NET Core构建"本机"应用程序(ubuntu x64目标)吗?
  3. 如果是的话,最佳做法是什么 - 我该怎么做?有没有人有这方面的经验?

(目标平台将是ubuntu-14.04-x64 docker镜像以及编译平台.出于开发目的,在OSX上编译它也很不错.)

先感谢您.

Mat*_*SFT 7

目前无法提前完成本机编译.这是上面链接的CoreRT项目的目标之一,但不是我称之为生产就绪的任何状态.Connect去年的演示应该是一个非常大的盐.例如,他们仍然没有反射子系统.但是,我们有几个解决方案可以大大减少需要在JIT时生成的代码量.对于.NET Core,这个工具叫做CrossGen,现在已经非常出色了.

虽然我引起了你的注意,但我还要提到我们正在研究NGEN/CrossGen格式的演变,这种格式可以减轻典型ni文件所带来的典型痛苦.那就是名称ReadyToRun

希望有所帮助.如果您有其他问题,请告诉我.

披露:我在UWP(CoreRT和LLILC等的姐妹项目)的.NET Native运行时和编译器团队工作