我想知道开发ASP.NET MVC应用程序以及可以在Linux上部署的选项的最佳实践。如果您要创建这类MVC应用,
我工作的公司将Linux上的Mono作为我们的主要部署环境。因此,没有“额外的”工作- 我们提供从硬件到操作系统(自定义和调整)到应用程序的整个堆栈。使用开源可以为我们和我们的客户节省大量资金(是的,我们确实为我们依赖的OS项目做出了贡献)。
重要的是要不断使用您的实际目标进行测试(对不起,Windows上的Mono不计算在内)。当然,开发人员使用Visual Studio,但是在Windows和Linux上都完成了持续集成(使用CruiseControl.Net,您需要在Mono 2.4.2上运行它才能在Linux上运行),并测试我们希望使用的所有Mono版本。在最近变得更加稳定,但仍然会在版本之间进行回归。运行并行的Mono版本非常容易在一个* nix系统上,如果您更喜欢早点捕获上游回归,甚至可以包括svn快照构建。如果您不发布自己的发行版,请记住大多数Linux供应商都在Mono附带自定义补丁程序- 这以前给我们造成了麻烦。此外,许多发行版在更新Mono方面存在很多滞后,这是一个快速发展的项目。
对于数据库层,我们主要使用“普通”的ADO.NET- Oracle(带有适用于Oracle的dotConnect,它们支持Mono)和SQLite(Mono附带有效的连接器)。我还使用了用于MySQL(连接器/ NET)的官方ADO.NET驱动程序,它也运行良好。ORM映射比较棘手,但是NHibernate可用(请记住,它们 不 正式支持Mono)。
至于构建引擎和测试-NAnt和NUnit是众所周知的,并且已经过测试。在最新版本的Mono xbuild(MSBuild的克隆)中,实际上可以使用,但是如果您决定将其用于更复杂的场景,请做好准备贡献很多补丁的准备。
编写测试。其中很多。准备贡献补丁和错误报告,如果您使用商业组件,请确保供应商正式支持Mono。