对于具有Java背景的开发人员,我也有兴趣使用ASP.NET工具/平台探索软件开发。
Java Web应用程序(.jsp和servlets)可以在许多服务器平台上运行。
问题:.NET Web应用程序是否能够在基于Linux的服务器上运行?考虑到无法使用Windows服务器托管Web应用程序的情况。
答案 0 :(得分:83)
所以我知道这是一个较老的问题,但我认为这可能是一个更新的答案。
微软已正式发布asp.net vnext及其开放源代码,可部署到Linux和Mac。它仍然很新,但依赖于最新版本的单声道,因此目前需要你编译mono-framework
,但我及时怀疑它将更容易访问,因为各种Linux发行版发布更新版本的单声道。 This is a how to setup guide
此信息可能有点不稳定,更新是由于更改。
答案 1 :(得分:66)
这取决于您使用的特定.NET技术。 Mono Project为运行ASP.NET站点提供了一个Apache模块(mod_mono),从我收集的内容中它运行良好。
但是,Mono并不支持所有的.NET API - 特别是WPF(也可能是WCF,我不记得了) - 但它确实为框架的其他部分提供了很好的支持。如果您从头开始并且特别想要定位非Windows服务器,那么确保您的项目与Mono一起工作将是一个很好的目标。但是,如果您需要Mono不支持的特定API或语言功能,则需要使用Windows服务器进行部署。这是一个设计时/建筑选择应该在前面。
答案 2 :(得分:22)
您可能需要考虑本指南,以帮助Windows开发人员将其代码移植到Mono / Linux:
答案 3 :(得分:12)
我可以从经验中说出来。即使您的ASP.net网站仅使用Mono支持的.NET库,如果它超出Hello World,您将很难运行它。
您不必重写大量代码,但是您将花费数小时/数天/周来处理mod_mono / xsp / apache配置和文件权限以及错误处理和所有小问题的小问题网站。 (准备花很多时间在serverfault上问问题:))
问题是很多人不使用Mono用于ASP.net网站,所以没有多少人报告错误,所以很多小错误的东西长时间都没有修复。
答案 4 :(得分:10)
现在,您可以使用Visual Studio将ASP.NET 5应用程序发布到Linux上的Docker。请参阅Scott Haselman的以下文章
http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx
答案 5 :(得分:10)
由于技术发展并且这个问题在谷歌排名第一,我们需要在mono新的asp.net核心之外加入,这是对asp.net to run for production in Linux and Windows and for development for Linux, Windows and Mac的完全重写:
您可以跨平台开发和运行ASP.NET核心应用程序 Windows,Mac和Linux。 ASP.NET Core是GitHub的开源软件。
答案 6 :(得分:5)
是的,我们可以。熟悉Mono Project并阅读this article即可开始使用。
答案 7 :(得分:4)
对于Linux上的ASP.NET,请查看Mono。
也就是说,数千个站点在Windows Server上运行没有任何问题。配置不当的服务器与任何操作系统都将容易受到攻击; Linux不会让你从一个糟糕的管理员那里救出来。
所以我认为我的“最佳实践”用于部署ASP.NET应用程序将使用Windows Server 2008(可能是Web版本)。聘请一位优秀的管理员。
答案 8 :(得分:4)
您可以使用Mono在Apache / Linux上运行ASP.NET应用程序,但是它在Windows下的功能有限。至于“他们”说Windows更容易受到攻击 - 事实并非如此。 IIS在过去几年中遇到的安全问题较少,但在任何一种情况下都归结为盒子的管理 - 两种操作系统都可以轻松保护。目前,攻击点不是操作系统或Web服务器软件,而是应用程序本身。
答案 9 :(得分:3)
dotnet是GitHub上.NET的官方主页。从Microsoft和社区中找到许多.NET OSS项目是一个很好的起点,包括许多属于.NET Foundation的项目。
这可能是支持Linux的良好开端。
答案 10 :(得分:2)
现在很多天.Net在多个平台上运行,如linux,Mac OS等。 但是mono不是完全独立于平台的,因为要在另一个操作系统中部署.NET 第三方软件。所以它不像java平台独立。
Mono在不同的平台上运行,因为JIT存在于不同的操作系统中。
Mono在月光下并不完全成功(.NET中的银光)。不仅仅是研究正在进行中。
Mono使用XSP2服务器或apache。一些大公司正在使用这个项目,一些机器人项目也在单声道上运行。
答案 11 :(得分:1)
Novell的Mono项目允许您在Apache上运行ASP.Net。
答案 12 :(得分:1)
Mono项目是您的最佳选择。然而,它有很多陷阱(例如某些领域的API支持不完整),并且它在法律上是灰色的(像Richard Stallman这样的人嘲笑使用Mono,因为微软可能会通过使用其专利权来降低Mono,但是那是另一个故事。)
无论如何,Apache通过一个模块支持.NET / Mono,但是上次我检查Debian提供的版本时,它只提供了Perl语言支持;我不能说它是否已经改变,也许其他人可以在那里纠正我。