0
点赞
收藏
分享

微信扫一扫

通过Mono 在 Heroku 上运行 .NET 应用

西特张 2022-11-28 阅读 72

英文原文:​​Running .NET on Heroku ​​

中文原文:​​在 Heroku 上运行 .NET 应用​​

自从加入了Heroku之后,我就想在这个平台上运行.NET程序。现在我很高兴向大家宣布,我们已经有了一个可用的环境​​reasonably workable Mono buildpack​​​。我的目标是能够在Windows上使用Visual Studio创建一个ASP.NET MVC解决方案去创建一个Heroku的应用程序。它能够使用git命令push Heroku,构建Heroku,应用部署在​​Mono​​​和​​XSP​​网络服务器。

​​result​​​主要是基于原先我工作的同事​​Brandur​​。

开始

为了使用这个 .NET 编译包,先创建一个 ASP.NET MVC 4  网站,然后启用 NuGet 包仓库。为了使这个解决方案能在 Mono 和 xbuild 中运行,我们需要进行一些处理:

  • ​​在Web.config中添加​​​​System.Net.Http组件的重定向。​​
  • ​​修复 NuGet.exe  全小写路径问题​​ (相信官方已经修复了,不过新版本还未发布出来)。
  • ​​删除全部 targetFramework 属性。​​
  • ​​修复 NuGet 中仓库命令的奇怪参数问题​​​ (我已经向 ​​NuGet发了补丁​​)

至此,我们修正了 Mono, NuGet 和编译包后,应该解决了那些障碍。

现在,我们将解决方案部署到 Heroku 里面去:

​$ heroku create​​​
​​​$ heroku config:add BUILDPACK_URL=https://github.com/friism/heroku-buildpack-mono/​​​  
​​​$ git push heroku master​

我已经编写了几个可以运行的例子。 ​​TestingMono​​​ 是一个相当简单的的MVC网站,有一个后台线程每秒输出一条消息。 为了运行这个后台线程,添加一个 ​​Procfile​​​ 来启动命令行线程:mono WorkerTest.exe。然后限制为1线程: heroku scale worker=1。另一个例子来自一个 AppHarbor  例子, ​​演示了 Heroku PostgreSQL 数据库的​​​ ​​的简单使用​​​。 注意: connectionstring 是 ​​从环境变量中读取的​​​, 而不是像其他.NET应用一样从 Web.config 读取。 你可以在 ​​这里​​ 看到运行的例子。

总结

能够正常运行的:

  • 在 Mono 3.0.11 和 XSP 3.0.11 中运行 ASP.NET MVC 4.
  • ​​NuGet 包仓库​​ 所以你不用手动添加你的依赖库。
  • 编译输出缓存及增量编译,包括已下载的 NuGet 包的缓存。
  • 运行 EXE文件以作为后台工作线程。

需要添加额外处理的:

  • 向 Web.config 中的 appSettings 添加配置项。
  • 使更多的 Visual Studio 模板可以使用。
  • 寻找 XSP 的替代品 (如 ​​nginx​​)。

请参考  ​​README中的​​​​TODO​​. 欢迎大家参与到这个项目中来。我计划在将来再写一篇 blog 来解析编译包如何生成依赖库 (这里的话只有 Mono and XSP)。

PS. 我正在努力使 Visual Basic 运行起来。

 



举报

相关推荐

0 条评论