在Linux上运行ASP.Net与标准的以微软为中心的解决scheme相比如何?

我知道可以使用Mono和Apache在Linux上开发和托pipe一个ASP.Net站点,但是我想知道它的工作效果如何,值得一提吗? 我更喜欢开源,但是对于这个项目我想要最快,最简单,最可靠的解决scheme。

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

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

我知道单声道还不完整,但我希望我不需要它缺乏的function。

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

Solutions Collecting From Web of "在Linux上运行ASP.Net与标准的以微软为中心的解决scheme相比如何?"

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

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

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

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

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

  • 我比较喜欢在Linux环境下使用单声道运行的东西,因为在进行管理任务时,你不必一直点击。 壳是我统一的管理界面,可以加快事情(如果你有一些做法)。

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

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

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

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

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