Java 배경 지식이있는 개발자의 경우 ASP.NET 도구 / 플랫폼을 사용하여 소프트웨어 개발을 탐색하는 데 관심이 있습니다.
Java 웹 애플리케이션 (.jsp 및 서블릿)은 여러 서버 플랫폼에서 실행할 수 있습니다.
질문 : .NET 웹 애플리케이션이 Linux 기반 서버에서 실행될 수 있습니까? 웹앱 호스팅에 Windows 서버를 사용할 수없는 시나리오를 고려합니다.
답변:
사용중인 특정 .NET 기술에 따라 다릅니다. 모노 프로젝트 ASP.NET 사이트를 실행하기위한 아파치 모듈 (mod_mono)를 제공하고, 내가 수집 무엇에서 잘 작동합니다.
Mono는 모든 .NET API를 지원하지는 않습니다. 특히 WPF (그리고 아마도 WCF도 기억할 수 없습니다.)는 프레임 워크의 다른 많은 부분을 잘 지원합니다.
처음부터 시작하고 특히 Windows가 아닌 서버를 대상으로하려는 경우 프로젝트가 Mono에서 작동하는지 확인하는 것이 목표로하는 좋은 목표가 될 것입니다. 그러나 Mono에서 지원하지 않는 특정 API 또는 언어 기능이 필요한 경우 배포를 위해 Windows 서버를 사용해야합니다. 디자인 타임 / 아키텍처 선택은 우선해야합니다.
그래서 나는 이것이 오래된 질문이라는 것을 알고 있지만 업데이트 된 답변을 견딜 수 있다고 생각합니다.
마이크로 소프트는 공식적으로 asp.net vnext 와 오픈 소스를 출시 했으며 Linux와 Mac 모두에 배포 할 수 있습니다. 그것의 전부는 여전히 꽤 새롭지 만 모노의 최신 빌드에 의존하므로 현재는 컴파일이 필요 mono-framework
하지만 시간이 지나면 다양한 리눅스 배포판이 모노의 업데이트 버전을 출시함에 따라 액세스하기가 더 쉬울 것이라고 생각합니다. 설정 방법 안내입니다.
이 정보는 다소 변동이있을 수 있으며 업데이트시 변경 될 수 있습니다.
Windows 개발자가 코드를 Mono / Linux로 이식하는 데 도움이되는이 가이드를 고려할 수 있습니다.
나는 경험으로 말할 수있다. ASP.net 웹 사이트가 Mono에서 지원하는 .NET 라이브러리 만 사용하더라도 Hello World를 넘어선 경우 실행하는 데 어려움을 겪을 것입니다.
많은 코드를 다시 작성할 필요는 없지만 mod_mono / xsp / apache 구성, 파일 권한 및 오류 처리 및 대규모 웹 사이트에 들어가는 모든 사소한 문제를 처리하는 데 몇 시간 / 일 / 주를 소비하게됩니다. (serverfault에 대해 질문하는 데 많은 시간을 할애 할 준비를하십시오. :))
문제는 많은 사람들이 ASP.net 웹 사이트에 Mono를 사용하지 않기 때문에 버그를보고하는 사람이 많지 않아 사소한 버그 인 많은 것들이 오랫동안 수정되지 않은 상태가된다는 것입니다.
이제 Visual Studio를 사용하여 Linux의 Docker에 ASP.NET 5 앱을 게시 할 수 있습니다. Scott Haselman의 아래 게시물을 참조하십시오.
http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx
기술이 발전하고이 질문이 Google에서 최상위 순위에 있기 때문에 Linux 및 Windows에서 프로덕션 및 Linux 용 개발을 위해 실행하기 위해 asp.net을 완전히 재 작성한 새로운 asp.net 코어를 모노를 넘어 포함해야합니다. , Windows 및 Mac :
Windows, Mac 및 Linux에서 플랫폼 간 ASP.NET Core 앱을 개발하고 실행할 수 있습니다. ASP.NET Core는 GitHub의 오픈 소스입니다.
Linux의 ASP.NET의 경우 Mono를 확인하십시오 .
즉, 수천 개의 사이트가 문제없이 Windows Server에서 실행됩니다. 모든 OS에서 잘못 구성된 서버는 취약합니다. Linux는 열악한 관리자로부터 당신을 구할 수 없습니다.
따라서 ASP.NET 앱을 개발하는 "모범 사례"는 Windows Server 2008 (예 : 웹 버전)을 사용하는 것입니다. 그리고 훌륭한 관리자를 고용하십시오.
Mono 를 사용 하여 Apache / Linux에서 ASP.NET 응용 프로그램을 실행할 수 있지만 Windows에서 수행 할 수있는 작업의 하위 집합이 제한되어 있습니다. Windows가 공격에 더 취약하다고 말하는 "그들"은 사실이 아닙니다. IIS는 아파치보다 지난 몇 년 동안 보안 문제가 적었지만, 두 가지 OS 모두 쉽게 보안을 유지할 수 있습니다. 요즘 공격 지점은 OS 나 웹 서버 소프트웨어가 아니라 애플리케이션 자체입니다.
이제 .Net은 Linux, Mac OS 등과 같은 여러 플랫폼에서 실행되지만 Mono는 완전히 플랫폼 독립적이지 않습니다. .NET을 다른 OS에 배포하려면 타사 소프트웨어가 필요하므로 Java 플랫폼과는 다릅니다.
Mono는 JIT가 다른 OS에 있기 때문에 다른 플랫폼에서 실행됩니다.
모노는 달빛 (.NET의 은빛)에서 완전히 성공하지 못합니다.
Mono는 XSP2 서버 또는 아파치를 사용합니다. 일부 대기업은이 프로젝트를 사용하고 있으며 로봇 프로젝트 중 일부는 모노로도 실행되고 있습니다.
자세한 내용은 http://www.mono-project.com/Main_Page .
Apache에서 ASP.Net을 실행할 수있는 Novell의 Mono 프로젝트가 있습니다.
Mono 프로젝트가 최선의 선택입니다. 그러나 (일부 영역에서 불완전한 API 지원과 같은) 많은 함정이 있으며 법적으로 회색입니다 (Richard Stallman과 같은 사람들은 Microsoft가 특허권을 사용하여 Mono를 사용할 가능성이 있기 때문에 Mono 사용을 조롱했지만 그것은 또 다른 이야기입니다).
어쨌든 아파치는 모듈을 통해 .NET / Mono를 지원하지만, 마지막으로 데비안과 함께 제공되는 버전을 확인했을 때 Perl 언어 만 지원했습니다. 다른 사람이 나를 고칠 수 있기 때문에 변경되었는지 말할 수 없습니다.