对于具有Java背景的开发人员,我也有兴趣探索使用ASP.NET工具/平台进行软件开发。
Java Web应用程序(.jsp和servlet)可以在许多服务器平台上运行。
问题:.NET Web应用程序能否在基于Linux的服务器上运行?考虑到无法使用Windows服务器托管Web应用程序的情况。
Answers:
这取决于您使用的是哪种特定的.NET技术。该Mono项目提供运行ASP.NET网站的Apache模块(是mod_mono),并从我收集它工作得很好。
但是,Mono不支持所有.NET API-特别是WPF(我可能还记得WPF),但它确实为框架的其他许多方面提供了良好的支持。
如果您是从头开始并且特别想针对非Windows服务器,那么确保您的项目与Mono一起工作将是一个不错的目标。但是,如果需要Mono不支持的特定API或语言功能,则需要使用Windows服务器进行部署。这是设计时/架构选择应首先解决的问题。
所以我知道这是一个较旧的问题,但我认为它可以得到更新的答案。
微软已经正式发布了asp.net vnext及其开放源代码,并且可以部署到Linux和Mac。它的一切仍然很新,但是确实依赖于最新版本的mono,因此当前需要您进行编译,mono-framework
但是随着时间的推移,我怀疑由于各种Linux发行版发布了更新版本的Mono,它会更易于访问。这是一个设置指南
该信息可能有些不稳定,并且更新是由于更改。
您可能需要考虑该指南,该指南可帮助Windows开发人员将其代码移植到Mono / Linux:
我可以根据经验说话。即使您的ASP.net网站仅使用Mono支持的.NET库,如果它的运行范围超出Hello World,您将很难运行它。
您无需重新编写太多代码,但是您将花费数小时/天/周来处理与mod_mono / xsp / apache配置和文件权限以及错误处理有关的小问题,以及进入大型网站的所有小问题。(准备花很多时间问关于serverfault的问题:))
问题在于,很多人没有在ASP.net网站上使用Mono,因此报告错误的人不多,因此很多作为次要错误的东西很长时间都无法修复。
现在,您可以使用Visual Studio将ASP.NET 5应用发布到Linux上的Docker。请参阅以下Scott Scottelman的文章
http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx
由于技术不断发展,并且这个问题在Google中排名最高,因此我们需要在mono之外包括新的asp.net核心,它是对asp.net的完全重写,可以在Linux和Windows上进行生产,并在Linux上进行开发,Windows和Mac:
您可以在Windows,Mac和Linux上跨平台开发和运行ASP.NET Core应用程序。ASP.NET Core在GitHub是开源的。
对于Linux上的ASP.NET,请查看Mono。。
也就是说,成千上万的站点可以在Windows Server上运行而没有任何问题。任何操作系统的配置不当的服务器将很容易受到攻击;Linux不会使您摆脱管理员的困境。
因此,我猜想我使用ASP.NET应用程序的“最佳实践”是使用Windows Server 2008(可能是Web版本)。并聘请好的管理员。
您可以使用Mono在Apache / Linux上运行ASP.NET应用程序,但是在Windows下它的功能有限。至于“他们”所说的Windows更容易受到攻击-这是不正确的。在过去的两年中,IIS的安全性问题比Apache少,但无论哪种情况,都取决于机器的管理-可以轻松保护两个OS。如今,攻击点不是操作系统或Web服务器软件,而是应用程序本身。
现在,.NET在多个平台上运行,例如linux,Mac os等,但是mono并非完全独立于平台,因为要在另一个OS中部署.NET所需的第三方软件。因此,它不像Java平台独立。
Mono在不同的平台上运行,因为JIT在不同的操作系统中。
在月光下(.NET中的银色光),单声道并不是完全成功。不仅研究还在进行。
Mono使用XSP2服务器或apache。一些大公司正在使用这个项目,一些机器人项目也在单声道上运行。
有关更多详细信息,请 访问http://www.mono-project.com/Main_Page。
Novell提供了Mono项目,您可以在Apache上运行ASP.Net。