如何在Linux上运行ASP.Net与标准的以Microsoft为中心的解决方案相比?

时间:2011-01-19 16:55:58

标签: asp.net .net linux mono

我知道可以使用MonoApache在Linux上开发和托管ASP.Net网站,但我想知道它有多好用,是否值得麻烦?我更喜欢开源,但对于这个项目,我想要最快,最简单,最可靠的解决方案。

我将建立的网站将是一个使用MySQL的相当基本的ASP.Net网站。

我想知道是否有其他人在像我这样的情况下使用Mono的经验以及项目的进展情况。它与使用以微软为中心的解决方案相比如何?

我知道Mono仍然有些不完整,但我希望我不需要它缺少的功能。

这个问题可能有点“两极分化”。大多数类似的问题似乎得到了非常亲微软或亲Linux的回复。我希望能有一些不偏不倚的回应,最好是有经验的人使用。

3 个答案:

答案 0 :(得分:10)

我在大约一年半前从以MS为中心的解决方案切换到现在我在Linux / Mono / Apache / MySQL的虚拟服务器上托管我的所有网站和Web项目(我最初使用的是nginx而不是apache ,但mono-fastcgi-server随机导致thrashing,因此我选择apache作为Web服务器)。我可以将这种配置的(主观)经验总结为几点:

  • 可能需要一些时间来习惯基于Linux和MS的环境之间的区别(如果您以前从未使用过Linux),但我不会后悔这个决定。对我来说很有帮助的是为特定技术创建安装和配置程序(例如单声道并行环境,apache虚拟主机配置,处理某些问题),这些程序通常是可重复的并且可以自动化。

  • 您仍然可以使用Visual Studio开发应用程序,然后在Linux计算机上部署它们。如果您使用这种方法,那么定期在单声道上测试您的应用程序是否存在可能的不兼容性是一个好习惯。

  • 我通过FTP部署Web应用程序,这可能是最简单的方法(也许WinSCP更容易,因为您不必设置FTP服务器,但这取决于您的偏好)。 / p>

  • 到目前为止,我遇到过2个使用Mono / Apache的情况,其中内存泄漏导致网站无法使用。这可能是由我在旧单声道安装时使用的Boehm垃圾收集器造成的。在最新版本的mono上,我没有遇到类似的新sgen GC问题。

  • 与MS相比,我在Linux环境中运行单声道操作时最喜欢的是,在执行管理任务时,您无需一直点击。 Shell是我的统一管理界面,可以加快速度(如果你有一些练习)。

答案 1 :(得分:4)

从我的经验中托管单声道的ASP.NET非常简单快捷。我使用MySQL和PostgreSQL使用Mono ASP.NET MVC 1/2进行我的多个项目,由Apache mod_mono提供。

与Windows Server上的部署相比。当使用现代Linux发行版已经提供了部署单声道ASP.NET的所有包时,它相当狭窄。唯一的缺点是你必须确保你的Web应用程序在IO访问方面足够便携,并且只需要非常短的学习曲线和调试和发布项目所需的经验。

在Linux中部署我们的项目。如果您完全控制服务器,可以轻松使用Mercurial或Git等版本控制(VS)。如果U有更多使用持续集成的经验则更好。我主要使用mercurial所以下面的步骤是我经常做的步骤,但我认为它几乎与Git类似:

  • 安装mercurial,并配置mod_wsgi,hgweb.wsgi和hgwerb.config
  • 初始化VS repo并在hgweb.config发布并配置hook以更新并调用xbuild以在你推送时自动构建
  • 在mod_mono.conf
  • 上将repo(web部分)发布为单声道应用程序
  • 所以你只需要在visual studio上编码,使用tortoiseHg提交并推送你的更改,而无需事件登录到服务器(在你的repo hgrc设置repo url,用户和密码)

答案 2 :(得分:-2)

请注意,虽然您可以通过Mono之类的东西在Linux上部署ASP,但如果您使用Microsoft ide,如Visual studio,webmatrix或Visual Web开发人员,您的许可证只允许您在Microsoft服务器上部署这些!