【问题标题】:How does running ASP.Net on Linux compare to the standard Microsoft-centric solution?在 Linux 上运行 ASP.Net 与以 Microsoft 为中心的标准解决方案相比如何?
【发布时间】:2011-01-19 16:55:58
【问题描述】:

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

我将要构建的站点将是一个相当基本的 ASP.Net 站点,使用 MySQL

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

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

这个问题可能有点“两极分化”。大多数类似的问题似乎都得到了非常支持微软或支持 Linux 的人的回答。我希望得到一些公正的回应,最好是来自有使用这两种方法经验的人。

【问题讨论】:

  • 这真的取决于您所说的简单 asp.net 站点的含义。你自己托管吗
  • 为什么不根据您的要求使用更可取的东西?例如。红宝石/PHP?特别是如果它将成为一个相当基本的网站(如您所说)。
  • 这个网站是为一家屋面公司设计的,用来帮助他们计算估算值。我会尽量让它看起来相当有吸引力,但功能是主要目标。
  • 至于托管,我正在考虑使用 Amazon EC2 实例。由于每天的点击次数可能会非常低,我想我可以使用微实例,但如有必要,可以将其提高到一个小实例。
  • 我已经使用 Linux(主要是 Ubuntu)好几年了,但这主要是一种爱好。我在职业方面所做的大部分开发都是以 Microsoft 为中心的,所以这就是我想坚持使用 ASP.Net 的原因,因为这是我最熟悉的。我只是希望能在这个项目中“将两者结合”。 --另外,Linux Amazon EC2 实例更便宜。

标签: asp.net .net linux mono


【解决方案1】:

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

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

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

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

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

  • 与 MS 相比,我最喜欢在 Linux 环境中运行 mono 的地方在于,您在执行管理任务时不必一直点击。 Shell 对我来说是统一的管理界面,可以加快速度(如果你有一些实践的话)。

【讨论】:

  • 我很好奇,从 Microsoft 切换到 Linux 时,您是否注意到站点响应速度有任何差异?还是几乎一模一样?
  • 我会说它是相同的,但我还没有机会用更大的流量对其进行测试。但是,当您想要(或需要)扩展您的系统时,这是一个很大的区别,如果您使用 MS 解决方案,这可能会严重损害您的财务状况。此外,我不喜欢受到来自 MS 的操作系统许可证类型的 CPU 内核数量或 RAM 数量的限制,因此基于 Linux(或开源)的系统在这方面非常优越。
  • +1 jimbo - 财务限制可能是个问题。但是,如果您的站点开始带来更多 $$,您可以在基本负载平衡设置 (F5) 中将 Win2008 服务器添加到 Web 集群......即使使用 MySql 集群也是如此。我唯一的问题是 RavenDB 在 Linux 上的生产环境中运行不佳:(
【解决方案2】:

根据我的经验,在单声道上托管 ASP.NET 非常简单快捷。我已经使用 MySQL 和 PostgreSQL 使用 Mono ASP.NET MVC 1 / 2 托管了我的多个项目,由 Apache mod_mono 提供服务。

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

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

  • 安装 mercurial,并配置 mod_wsgi、hgweb.wsgi 和 hgwerb.config
  • 初始化 VS repo 并在 hgweb.config 发布并配置钩子以更新和调用 xbuild 以在您推送时自动构建
  • 在 mod_mono.conf 中将 repo(Web 部件)作为单声道应用程序发布
  • 所以您只需在 Visual Studio 中编写代码,使用 tortoiseHg 提交并推送您的更改,无需事件登录到服务器(在您的 repo hgrc 中设置 repo url、用户和密码)

【讨论】:

  • 我的建议是,如果您使用 Amazon EC2 使用的是使用susestudio.com 轻松生成的 openSuSe 图像,因为 openSuSe 对单声道恕我直言的支持非常好
  • 谢谢。我一直在考虑使用 susestudio,虽然我之前从未使用过 openSuSe。
  • 我最初认为 susestudio 是免费的,但显然不是。出于好奇,它要花多少钱?
  • 据我所知,susestudio 服务是免费的 [FAQ |en.opensuse.org/… 无需创建新用户即可使用,只需使用您的 openid 提供商帐户,例如 gmail 和 yahoo
【解决方案3】:

请注意,尽管您可以通过 Mono 之类的工具在 Linux 上部署 ASP,但如果您使用 Microsoft ide(例如 Visual Studio、Webmatrix 或 Visual Web Developer),您的许可证仅允许您将这些部署在 Microsoft 服务器上!

【讨论】:

  • Microsoft EULA 没有设置这样的限制。请重新审核。
猜你喜欢
  • 2022-12-16
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多