在 Linux 上部署 ASP.NET MVC:最佳实践、工具和惊喜

Posted

技术标签:

【中文标题】在 Linux 上部署 ASP.NET MVC:最佳实践、工具和惊喜【英文标题】:Deploy ASP.NET MVC on Linux: Best Practices, Tools & Surprises 【发布时间】:2010-11-13 10:23:16 【问题描述】:

我想知道开发 ASP.NET MVC 应用程序的最佳实践,可以选择在 Linux 上部署。如果您正在创建这些类型的 MVC 应用程序,

您的目标是什么 Linux/Mono 平台? 您在 Windows 上做了多少开发,在 Linux 上做了多少? 您是否使用 ORM 来抽象数据库?哪一个? 您是否在 Linux 上运行构建引擎?测试呢? 您还使用了哪些其他工具? 除了 Windows 之外,针对 Linux 还做了多少额外的工作? 您遇到过哪些丑陋或惊喜?

【问题讨论】:

听起来这个问题应该是一个社区维基。不会有一个正确的答案。 同意,可能没有一个正确的答案,但由于部署到 Linux 需要我们在非本地环境中组装更多组件,因此值得听取那些实际做过或正在做的开发人员的意见在做的过程中。 我很想说“惊喜!这行不通!”但我只是在实施一个更大的项目时遇到了自己的问题。 Mono 真的很壮观。只是认为这会让那些仍在试图理解 Mono 有时会抛出的神秘错误的人轻笑 :) 【参考方案1】:

Nathan Bridgewater 的博客有一些不错的文章,其中包括:

在单声道上使用剃刀运行 MVC3 将 ASP.NET MVC 从 Windows/SQL Server 迁移到 Linux/mysql 安装和运行 MonoDevelop 从源安装单声道

http://iws.io/get-mvc3-razor-running-on-mono/

【讨论】:

【参考方案2】:

我工作的公司将 Linux 上的 Mono 作为我们的主要部署环境。因此没有“额外的”工作——我们提供整个堆栈,从硬件到操作系统(定制和修整)再到应用程序。使用开源为我们和我们的客户节省了大量资金(是的,我们确实为我们所依赖的操作系统项目做出了贡献)。

重要的是不断使用您的实际目标进行测试(抱歉,Windows 上的 Mono 不算在内)。当然,开发人员使用 Visual Studio,但持续集成(使用 CruiseControl.Net,您需要 Mono 2.4.2 才能在 Linux 上运行)是在 Windows 和 Linux 上完成的,测试我们期望使用的所有 Mono 版本(它最近变得更加稳定,但仍然会在版本之间发生回归)。在一个 *nix 系统上运行 parallel Mono versions 非常容易,如果您希望尽早捕获上游回归,您甚至可以包含一个 svn 快照构建。如果您不推出自己的发行版,请记住大多数 Linux 供应商在发布 Mono 时都带有自定义补丁——这曾经给我们带来过问题。此外,许多发行版在更新 Mono 时有很多滞后,这是一个快速推进的项目。

对于数据库层,我们主要使用“普通”ADO.NET - Oracle(带有dotConnect for Oracle,它们支持 Mono)和 SQLite(Mono 附带一个工作连接器)。我也用过官方的ADO.NET Driver for MySQL (Connector/NET),它也很好用。 ORM 映射比较棘手,但 NHibernate 是可用的(请记住,它们 不正式支持 Mono)。

至于构建引擎和测试 - NAnt 和 NUnit 是众所周知的并且经过充分测试。最新版本的 Mono xbuild(MSBuild 的克隆)实际上已经可用,但如果您决定将其用于更复杂的场景,请准备好为自己贡献大量补丁。

编写测试。其中很多。准备好提供补丁和错误报告,如果您使用商业组件 - 请确保供应商正式支持 Mono。

【讨论】:

感谢您的精彩回答。您的数据库和数据访问软件是什么? 感谢您的信息。你还在这样工作吗?如果是这样,您是否已更新到较新版本的 .NET 和 MVC?另外,您是否成功使用了任何 ORM 软件,例如 Entity Framework?距离您的回答已经有几年了,所以我想知道您现在对技术堆栈的看法仍然和那时一样积极。你还会推荐 CC.NET、NAnt、NUnit 等吗?谢谢:) MVC 应该很好用——它现在是开源的,MS 正在从 Mono 那里获取补丁!我现在会选择 MSBuild 而不是 NAnt,但 NUnit 仍然是一个不错的选择。 CC.NET Mono 支持有点被忽视,在即将发布的 1.7 版本之后应该会很快改进。不幸的是,我没有在 Mono 上使用 ORM 的经验 - 但关于该主题还有其他关于 SO 的答案。 英孚怎么样? 、开源以及微软产品【参考方案3】:

看看Mono project。听起来这就是你要找的东西。如果我没记错的话,他们现在已经集成了 ASP.NET MVC。

我从未使用过 Mono,但据我了解并没有太多差异。

【讨论】:

以上是关于在 Linux 上部署 ASP.NET MVC:最佳实践、工具和惊喜的主要内容,如果未能解决你的问题,请参考以下文章

关于Asp.net mvc的诡异问题

在ASP.NET MVC部署AngularJs

在 IIS Express 或其他 WebServer 上部署 ASP.NET MVC 应用程序?

ASP.NET MVC EF 代码先部署 GoDaddy

Asp.net mvc和asp.net有啥区别?

部署 ASP.NET MVC 项目