通过Mono 在 Heroku 上运行 .NET 应用
中文原文:在 Heroku 上运行 .NET 应用
自从加入了Heroku之后,我就想在这个平台上运行.NET程序。现在我很高兴向大家宣布,我们已经有了一个可用的环境reasonably workable Mono buildpack。我的目标是能够在Windows上使用Visual Studio创建一个ASP.NET MVC解决方案去创建一个Heroku的应用程序。它能够使用git命令push Heroku,构建Heroku,应用部署在Mono和XSP网络服务器。
开始
为了使用这个 .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 运行起来。
相关文章:
How to deploy Mono projects with Heroku
Heroku .NET buildpack update to Mono 3.2 and more
在Heroku上部署Java应用三步曲
通过Mono 在 Heroku 上运行 .NET 应用的更多相关文章
- RazorEngine 3.3 在Mono 3.2上正常运行
RazorEngine 是一个简化的模板引擎基于微软新的Razor 解析引擎, Razor是在 ASP.NET MVC3 和 Web Pages中引入的.RazorEngine 提供了一个外包装和额外 ...
- Flask 教程 第十八章:Heroku上的部署
本文翻译自The Flask Mega-Tutorial Part XVIII: Deployment on Heroku 这是Flask Mega-Tutorial系列的第十八部分,我将在其中部署M ...
- CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...
- Mono 4.0 Mac上运行asp.net mvc 5.2.3
Mono 4.0 已经发布,二进制包已经准备好,具体的发布说明参见:http://www.mono-project.com/docs/about-mono/releases/4.0.0/. 今天在Ma ...
- 不装mono,你的.NET程序照样可以在Linux上运行!
让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序. 这种运行.net程序的办法有两个弱点,一个是需要客户机安装 ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- Linux上运行NET
今天尝试了下Ubuntu上运行NET程序,按照 https://github.com/aspnet/Home 的指引,一步一步来: 1.安装DNVM(原名KVM) Linux控制台下输入 curl - ...
- [译]在Mac上运行ASP.NET 5
原文:http://stephenwalther.com/archive/2015/02/03/asp-net-5-and-angularjs-part-7-running-on-a-mac 这篇文章 ...
- 简单理解在Mac OS X上运行ASP.NET程序
运行ASP.NET程序的三要素: 1) CLR(.NET运行时) 2) KRE(ASP.NET运行时) 3) Web服务器 所以在Mac OS X上运行ASP.NET程序,就需要对应这三要素的东西: ...
随机推荐
- Hawk 7. 常见问题
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- vue.js初探
前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...
- 开源 iOS 项目分类索引大全 - 待整理
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...
- git远程库GitHub
首先,注册一个GitHub(github.com)帐号,免费获得Git远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用 ...
- VMware安装CentOS
centos镜像地址:https://www.centos.org/download/ VMware版本:12.5.2 build-4638234 创建新的虚拟机 直接默认下一步 稍后安装操作系统-& ...
- AutoMapper使用中的问题
指定值只会执行一次 public class MomanBaseProfile : Profile { public MomanBaseProfile() { CreateMap<Request ...
- ASP.NET 中的 Async/Await 简介
本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...
- Underscore.js
概述 Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库 ...