首页 > 其他分享 >通过Mono 在 Heroku 上运行 .NET 应用

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

时间:2022-11-28 14:04:41浏览次数:58  
标签:Mono NuGet Heroku 线程 NET 运行

英文原文:​​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 中运行,我们需要进行一些处理:

至此,我们修正了 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 运行起来。

 



标签:Mono,NuGet,Heroku,线程,NET,运行
From: https://blog.51cto.com/shanyou/5891075

相关文章

  • MonoDevelop 3.0——更好的代码完成、性能与快速修复建议
    近日,MonoDevelop3.0发布了,该版本提供了一些新特性,专注于性能、开发者生产力,特别针对C#开发者。该版本主要的变化在于MonoDevelop的解析器与代码完成现......
  • 一款免费的.NET智能持续测试运行工具——Mighty-Moose
    ​​Mighty-Moose​​是一款面向.NET的持续构建和测试运行工具,现在它免费发放了。那么Mightly-Moose到底是干什么的呢?当你每次在VisualStudio中编辑文件后点击保存时,它会自......
  • .Net Excel操作之NPOI(一)简介
    一、NPOI简介 NPOI是一个开源项目,可以读/写xls,doc,ppt文件,有着广泛的应用。 使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office97-2003的文件,支持的文件......
  • .Net Excel操作之NPOI(二)常用操作封装
    一、Excel数据导出常用操作1.指定表头和描述2.指定数据库中读出的数据集合二、ExcelExport封装///<summary>///Excel常用的表格导出逻辑封装///单表写入///</s......
  • Centos 7.9 部署Kubernetes集群 (基于containerd 运行时)
    前言当Kubernetes社区宣布1.20版本之后会逐步弃用dockershim,当时也有很多自媒体在宣传Kubernetes弃用Docker。其实,我觉得这是一种误导,也许仅仅是为了蹭热度。dockersh......
  • 此功能需要连接到internet。是否允许office连接到internet
     问题在OneNote中进行一些操作的时候提示:此功能需要连接到internet。是否允许office连接到internet  解决方法1.快捷键Win+R,打开"运行"对话框 2.输......
  • .NET 6 实现滑动验证码(二)、基本数据
    上一节,介绍了滑动验证码的基本情况,也创建了一个.NET6的工程。本节内容是创建一些基础类。目录CaptchaData.csCaptchaValidateData.csImageCaptchaInfo.csResource.csSl......
  • .Net 6 配置日志
    前言  .Net6与之前的配置有点不一样了记录下日志配置方式。当前日志以Serilog为例,.Net6的日志由内置的Logger获取,然后可以交给Serilog|NLog等框架处理,框架通过他......
  • SQL serve 安装报错,缺少.net3.5组件
    今天安装sqlserver2014,遇到服务器没有安装.net3.5,的报错,上网搜索一番,找到一篇博文(非常详细,拷贝进来以备后用)操作之后略有区别,为表尊重原文地址https://www.cnblogs.co......
  • Use Kubekey to quickly deploy Kubernetes
    IntroductionStartwritingdeploymentprofilesStartthedeploymentDeploymentcomplete,checkpodstatusIntroductionKubekeyisanopensourceKubernetes......