通过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程序,就需要对应这三要素的东西: ...
随机推荐
- 关于开启.NET在线提升教育培训的通知! - 可在此页面观看在线直播!
年前在线公开课程通知: 近期在开启VIP课程,隔天讲一次,年前其它时间插空讲公开课,主题:设计模式系列 1:培训 - 大概不会讲的内容: 1:不讲系列. 2:不讲入门. 3:不讲我不懂的! 2:培训 ...
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- shell变量
定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...
- LeetCode 7. Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have you ...
- 13、零配置Struts2开发
Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...
- 初学者看过来之JSON入门
1. 什么是JSON JSON---Javascript Object Notation,前两个单词大家应该都认识,最后一个notation,是"记号.标记法"的意思,连在一起,便 ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- cesium自定义气泡窗口infoWindow
一.自定义气泡窗口与cesium默认窗口效果对比: 1.cesium点击弹出气泡窗口显示的位置固定在地图的右上角,默认效果: 2.对于习惯arcgis或者openlayer气泡窗口样式的giser来说 ...
- git &github 快速入门
本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 1.gi ...
- HTML 学习笔记 JQuery(DOM 操作2)
接着上一节的将,这一节从复制节点讲起 复制节点 继续使用之前的例子 如果单击<li>元素后 需要在复制一个<li>元素,可以使用clone()方法完成.全部代码如下 <h ...