将ASP.NET应用程序移植到Linux下的Mono/Apache

8

我有一个使用C# 4.0编写的相对较小的ASP.NET项目。

我想知道是否有人成功将这样的项目移植到Linux上运行的Web服务器,最新的信息似乎只支持ASP.Net 2.0 - 在Linux计算机上配置和运行Mono ASP.NET 3.5(AJAX.NET)

该项目将LINQ-to-SQL用于整个数据访问层,我知道Mono本身支持LINQ,因此我认为它应该可以工作。

我只是想知道在开始之前是否完全浪费时间。

谢谢。


4
您尝试在Apache/Mono下运行您的程序集了吗?最好的方法就是尝试执行并查看哪些部分出现问题,或使用Mono迁移分析器http://mono-framework.com/MoMA。 - M.Babcock
有很大的机会它会运行得非常好。像上面那样试一试吧。 - IanNorton
2个回答

7
我在Suse Linux上使用mono运行一个ASP.NET 4.0应用程序。我的经验是mono工作得很好。我的应用程序有大约15,000行代码,使用了第三方组件,如mongo-csharp-driver、lucene.net、elmah、munq和sphorium.webdavserver。
在开发过程中,我几乎没有遇到任何兼容性问题,即使我遇到的问题也很容易解决(例如sphorium访问注册表,在Linux/Mono上显然工作方式不同)。我甚至开始使用Visual Studio而非MonoDevelop进行开发,且无需Mono插件,因为Visual Studio是更好的IDE,并且当我在Linux上编译并在Apache上部署我的Web应用程序时,它也可以正常工作(尽管我是在Windows上使用.NET进行开发)。
我写了一篇关于如何开始设置的简短博客文章:(点击此处查看)

3
这绝对不是浪费时间。我所在的公司将我们的VB.Net应用程序转换为C#,以便它可以在mono下运行。这个应用程序有超过200k行代码。现在我们正在Amazon ec2上使用Ubuntu/Apache/Mono/Postgresql运行。
唯一需要关注的问题就是你的数据库。如果它是MS SQL,那么你需要考虑迁移到MySQL或Postgresql。同样,我们在300多个表和900个存储过程上进行了此操作。从长远来看,这确实是值得的。
我认为开始最好的方法是设置一个本地环境,比如运行Ubuntu。你可以从这里的存储库中获取接近最新版本的mono,或者如果你愿意,你也可以从这里维护的构建脚本中获取最新版本。在Linux上用mono安装monodevelop并构建你的代码。从经验来看,C#的mono基本上是.NET框架的完整实现。如果你的应用程序中还有什么东西尚未在mono中实现,我会感到惊讶的。
我在这里有一个答案,展示了你的应用程序在apache下的简单配置。我在Ubuntu上运行mono应用程序时使用此配置。

我唯一担心的是你们的数据库。我们的数据库服务器是MS SQL,但它与我想在其上运行此项目的机器不同。我能否在Apache下使用ASP.NET项目,并使用MSSQL的SQL数据提供程序连接到我们的数据库服务器上的数据库? - Ryan Weir
1
是的,您将能够做到这一点。 - startupsmith
@lanks,我可以问一个略微偏题的问题吗?你使用了哪个ORM(如果有的话)?提前谢谢。 - greenoldman
嗨,Macias。我们没有使用ORM。但是我用过ServiceStack和PostgreSQL完成了另一个项目。ServiceStack使用OrmLite https://github.com/ServiceStack/ServiceStack.OrmLite。另一个ORM是Dapper https://github.com/SamSaffron/dapper-dot-net,虽然我没有用过,但听说很不错。这两个都是非常轻量级的ORM。 - startupsmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接