能在Ubuntu + Mono上运行Ask Ubuntu吗?

受到关于这个网站的旧Hacker News对话的启发,我想知道: Ubuntu和Mono能否像Ask Ubuntu一样运行一个ASP.NET MVC网站? 这里关注的是技术而不是网站本身。你能否用免费开源技术替代IIS、ASP.NET、MVC等,而无需完全重新开发网站?

Oli的备注:关于Ask Ubuntu是否迁移到Ubuntu+Mono的“元”讨论已经移至网站元部分的单独问题


对于那些建议关闭的人,我认为这个问题的技术方面(比如“能在Mono上运行ASP.NET MVC网站吗?”)在这里是有价值的,因为我们的任务范围包括开发。我倾向于保持它的开放状态。 - Oli
我投票关闭了,因为我认为这个问题应该属于元站,因为它是关于网站本身的。 - Jorge Castro
2@Jorge,这很公平。我已经救回了技术元素,"他们是否会迁移"部分可以移到meta。 - Oli
1我支持Oli对我的问题所做的修改。谢谢。 - Dan Burton
1个回答

我没有Ask Ubuntu的代码库,所以无法确定是否有任何特定于平台的问题会导致阻塞,但是对于“你能迁移它吗”的回答可能是“是”。
你必须记住,ASP.NET网站所依赖的平台不仅仅是一个神奇的ASP.NET二进制文件。
  • ASP.NET可以在很大程度上被Mono替代。它可能不总是美观,性能也不总是出色,但是可以实现。

  • ASP.NET MVC是模板引擎。通常它是建立在ASP.NET之上的,但是它可以在Mono上运行,只需要进行一些改动。

  • IIS可以相对简单地被移除,用Apache(等其他)来替代,以支持Stack Overflow上使用的自定义处理程序。

  • 数据库从技术上来说是整个系统中最大的部分。在简单的情况下,如果你正在使用良好的代码,当然可以剥离并替换数据库。具体到这里,StackExchange网站正在运行的MSSQL服务器集群架构可能可以转移到MySQL(或其他数据库),但可能需要大量工作,因为可能有许多特定于数据库的代码隐藏在其中,无论是在数据库本身还是(较少可能)在网站本身。多亏了LINQ,绝大部分基于代码的、特定于数据库的数据处理问题已经过去,而且Mono也支持(非SQL Server数据库的)LINQ。

那绝不是一个确定的替代清单,但它们是主要项目。
你是否想要...那是一个更难回答的问题。当你浏览了几十个问题后,你可能已经到达了一个点,在这个点上,你可以用像Django这样的东西重新实现系统。当然,这取决于系统的复杂性。这就像一根绳子一样困难。

+1 很棒的信息。我猜对于“你能移植它吗”的答案总是“是的,只要付出足够的努力”,但你在这里提供了一些很好的观点,说明可能需要改变的细节。 - Dan Burton
1微软开源了ASP.NET MVC(我知道他们多么不邪恶),因此在Mono中的版本与.NET版本的代码相同。 - trampster