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

我想知道如何开发ASP.NET MVC应用程序并在Linux上部署选项的最佳实践。 如果您正在创build这些types的MVC应用程序,

  • 您定位的Linux / Mono平台是什么?
  • 你在Windows上做了多less开发,在Linux上有多less?
  • 你使用ORM来抽象数据库吗? 哪一个?
  • 你在Linux上运行一个构build引擎吗? 那么testing呢?
  • 你还使用了其他什么工具?
  • 除了Windows之外,还有多less额外的工作是针对Linux?
  • 你遇到什么丑陋的或惊喜的惊喜?

我所在公司的工作目标是Linux上的Mono作为我们的主要部署环境。 因此,没有“额外的”工作 – 我们提供从硬件到操作系统(定制和修剪)到应用程序的整个堆栈。 使用开放源代码为我们和我们的客户提供了巨大的节约(是的,我们确实回馈到我们依赖的操作系统项目)。

重要的是要不断testing使用你的实际目标(对不起,Windows上的单声道不算)。 当然,开发人员使用Visual Studio,但持续集成(使用CruiseControl.Net ,你需要在Linux上运行Mono 2.4.2)在Windows和Linux上都可以完成,testing所有我们期望使用的Mono版本最近变得更加稳定了,但是发行之间确实发生了回归)。 在一个* nix系统上运行并行单声道版本非常简单,如果您希望尽早捕获上游回归,则甚至可以包含svn快照版本。 如果你没有推出你自己的发行版,那么请记住,大多数Linux厂商都提供了自定义补丁,这给我们以前的问题带来了麻烦。 另外,许多发行版还有很多更新版本的Mono,这是一个快速推进的项目。

对于数据库层,我们大多使用“普通”的ADO.NET – Oracle(带有dotConnect for Oracle ,它们支持Mono)和SQLite(带有工作连接器的Mono)。 我还使用了官方的ADO.NET驱动程序(连接器/ NET) ,它也工作得很好。 ORM映射更棘手,但NHibernate是可用的(请记住,他们正式支持Mono)。

至于构build引擎和testing – NAnt和NUnit是众所周知的,并且经过了很好的testing。 使用最新版本的Mono xbuild(MSBuild的克隆)实际上已经可用,但是如果您决定将它用于更复杂的场景,则可以为自己做好相当多的修补准备。

写testing。 其中很多。 准备贡献补丁和bugreports,如果你使用商业组件 – 确保供应商正式支持Mono。

内森布里奇沃特的博客有一些不错的文章,其中包括:

  • 用单片机上的razor运行MVC3
  • 将ASP.NET MVC从Windows / SQL Server迁移到Linux / MySQL
  • 安装和运行MonoDevelop
  • 从源代码安装mono

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

看看Mono项目 。 听起来就是这样你正在寻找。 如果我没有记错,他们现在已经集成了ASP.NET MVC。

我从来没有与Mono合作过,但从我的理解来说,没有太多的区别。