Sparkie의 대답에 따라 조금 보완하겠습니다.
".NET is cross platform"은 원래 만들어진 프레임 워크와 세계가 변화하고 진화했기 때문에 너무 모호한 진술입니다.
짧은 대답은 다음과 같습니다.
.NET 및 그 파생물 인 Common Language Infrastructure Standard를 지원하는 기본 엔진은 크로스 플랫폼이며 코드를 여러 플랫폼으로 이동시키려는 경우 올바른 플랫폼에서 올바른 API를 사용하여 제공하도록 계획해야 합니다. 각 플랫폼에서 최고의 경험.
CLI 제품군은 전화기와 메인 프레임의 차이가 너무 커서 "Write Once, Run Anywhere"접근 방식을 시도하지 않았습니다. 대신 플랫폼별로 고유 한 API 및 런타임 기능이 개발자에게 각 플랫폼에서 훌륭한 경험 을 제공 할 수있는 적절한 도구를 제공하기 위해 등장했습니다 .
프로그래머는 더 이상 Windows PC 또는 Unix 서버를 대상으로하지 않습니다. PC, 게임 콘솔, 강력한 전화, 셋톱 박스, 대형 서버 및 분산 시스템 클러스터에 이르기까지 매혹적인 플랫폼이 전 세계에 퍼져 있습니다. 모든 플랫폼에 딱 맞는 크기는 작은 장치에서 부풀어 오르고 큰 시스템에서는 성능이 저하 된 느낌 일뿐 입니다.
Microsoft의 .NET Framework 제품은 크로스 플랫폼이 아니며 Windows에서만 실행됩니다. Windows Phone 7, XBox360 및 Silverlight를 통한 브라우저와 같은 다른 시스템에서 실행되는 Microsoft의 .NET Framework 변형이 있지만 모두 약간 다릅니다.
오늘날 .NET 기반 기술로 모든 주요 주류 OS, 전화, 모바일 장치, 임베디드 시스템 및 서버를 대상으로 할 수 있습니다. 다음은 각 경우에 사용할 CLI 구현을 보여주는 목록입니다 (이 목록은 포괄적이지 않지만 경우의 99 %를 차지해야 함).
- x86 및 x86-64 기반 PC 컴퓨터 :
- Windows 실행-> 일반적으로 .NET 또는 Silverlight를 실행하지만 여기에서 전체 Mono를 사용할 수도 있습니다.
- Linux, BSD 또는 Solaris 실행-> 전체 Mono 또는 Silverlight를 실행
- MacOS X 실행-> 전체 모노 또는 실버 라이트 실행
- Android 실행-> Mono / Android 하위 세트를 실행합니다.
- ARM 컴퓨터 :
- Windows Phone 7 실행 : Compact Framework 2010을 실행합니다.
- Windows 6.5 및 이전 버전 실행 : 이전 Compact Framework를 실행
- Android 기기 : Mono / Android를 실행합니다
- PowerPC 컴퓨터 :
- 전체 Linux, BSD 또는 Unix 운영 체제에 대해 전체 Mono를 실행합니다.
- PS3, Wii 또는 기타 임베디드 시스템 용 내장 모노를 실행합니다.
- XBox360에서 CompactFramework를 실행합니다.
- S390, S390x, Itanium, SPARC 컴퓨터 :
- 다른 임베디드 운영 체제 :
- 모바일 프로파일로 .NET MicroFramework 또는 Mono를 실행합니다.
귀하의 요구에 따라 위의 내용이 충분하거나 그렇지 않을 수 있습니다. 모든 곳에서 동일한 소스 코드를 실행할 수는 없습니다. 예를 들어 XNA 코드는 모든 데스크톱에서 실행되지 않지만 .NET 데스크톱 소프트웨어는 XNA 또는 전화에서 실행되지 않습니다. 일반적으로 .NET Framework의 다른 프로필에서 실행하려면 코드를 변경해야합니다. 내가 알고있는 프로필은 다음과 같습니다.
- .NET 4.0 프로필
- Silverlight 프로필
- Windows Phone 7 프로필
- XBox360 프로필
- 모노 코어 프로파일-.NET 프로파일을 따르며 Linux, MacOS X, Solaris, Windows 및 BSD에서 사용할 수 있습니다.
- .NET 마이크로 프레임 워크
- iPhone 프로필의 모노
- 안드로이드 프로파일의 모노
- PS3 프로필의 모노
- Wii 프로필의 모노
- 달빛 프로필 (Silverlight와 호환 가능)
- Moonlight 확장 프로파일 (Silverlight + 전체 .NET 4 API 액세스)
따라서 이들 프로파일 각각은 실제로 약간 씩 다르며 이는 나쁘지 않습니다. 각 프로파일은 호스트 플랫폼에 맞도록 설계되었으며 의미가있는 API를 노출하고 의미가없는 API를 제거합니다.
예를 들어 호스트 브라우저를 제어하는 Silverlight의 API는 전화에 적합하지 않습니다. 그리고 XNA의 쉐이더는 PC 하드웨어에서 이에 대한 지원이 부족한 경우에는 의미가 없습니다.
.NET이 하드웨어 및 기본 플랫폼의 기본 기능에서 개발자를 격리하는 솔루션이 아니라는 사실을 빨리 알면 더 나아질 것입니다.
우선 일부 API와 스택은 여러 플랫폼에서 사용할 수 있습니다. 예를 들어 ASP.NET은 Windows, Linux, Solaris, MacOS X에서 사용할 수 있습니다. API는 .NET과 Mono에 모두 존재하기 때문입니다. ASP.NET은 XBox 또는 Windows Phone 7과 같은 일부 Microsoft 지원 플랫폼에서는 사용할 수 없으며 Mono가 Wii 또는 iPhone과 같이 지원하는 다른 플랫폼에서는 지원되지 않습니다.
다음 정보는 11 월 21 일 기준으로 정확하며, 모노 세계의 많은 것들이 변경 될 것입니다.
동일한 스택을 다른 스택에도 적용 할 수 있습니다. 전체 목록에는 적절한 테이블이 필요합니다. 여기에는 어떤 방법을 제시해야할지 모르지만 특정 플랫폼에는 없을 수있는 기술 목록이 있습니다. 여기에 나열되지 않은 내용을 사용할 수 있다고 가정 할 수 있습니다.
[핵심 런타임 엔진]
- Reflection.Emit 지원 [WP7, CF, Xbox, MonoTouch, PS3를 제외한 모든 곳]
- CPU SIMD 지원 [Linux, BSD, Solaris, MacOS X; 곧 PS3, MonoTouch 및 MonoDroid]
- 계속-Mono.Tasklets [Linux, BSD, Solaris, MacOS, PS3, Wii]
- 어셈블리 언로드 [Windows 만 해당]
- VM 인젝션 [Linux, BSD, MacOS X, Solaris]
- DLR [Windows, Linux, MacOS X, Solaris, MonoDroid]
- 일반 사항 [PS3 및 iPhone의 일부 제한 사항].
언어
- C # 4 [모든 곳에서]
- 서비스로서의 C # 컴파일러 (Linux, MacOS, Solaris, BSD, Android)
- IronRuby [모든 곳, WP7, CF, Xbox, MonoTouch, PS3 제외]
- IronPython [모든 곳, WP7, CF, Xbox, MonoTouch, PS3 제외]
- F # [모든 곳, WP7, CF, Xbox, MonoTouch, PS3 제외]
서버 스택
- ASP.NET [Windows, Linux, MacOS, BSD, Solaris]
- ADO.NET [모든 곳]
- LINQ to SQL [모든 곳]
- 엔터티 프레임 워크 [모든 곳]
- [핵심 XML 스택]
- XML 직렬화 (WP7, CF, Xbox를 제외한 모든 곳)
- LINQ to XML (모든 곳에서)
- System.Json [Silverlight, Linux, MacOS, MonoTouch, MonoDroid]
- System.Messaging [Windows; Linux, MacOS 및 Solaris에서는 RabbitMQ가 필요합니다.]
- .NET 1 엔터프라이즈 서비스 [Windows 만 해당]
- WCF [Windows에서 완료; Silverlight, Solaris, MacOS, Linux, MonoTouch, MonoDroid의 작은 하위 집합]
- Windows 워크 플로 [Windows 만 해당]
- 카드 공간 ID [Windows 만 해당]
GUI 스택
- Silverlight (Windows, Mac, Linux-달빛 포함)
- WPF (Windows 만 해당)
- Gtk # (Windows, Mac, Linux, BSD)
- Windows.Forms (Windows, Mac, Linux, BSD)
- MonoMac-기본 Mac 통합 (Mac 만 해당)
- MonoTouch-기본 iPhone 통합 (iPhone / iPad 만 해당)
- MonoDroid-기본 Android 통합 (Android 만 해당)
- Media Center API-Windows 전용
- 클러 터 (Windows 및 Linux)
그래픽 라이브러리
- GDI + (Windows, Linux, BSD, MacOS)
- 쿼츠 (MacOS X, iPhone, iPad)
- 카이로 (Windows, Linux, BSD, MacOS, iPhone, iPad, MacOS X, PS3, Wii)
모노 라이브러리-크로스 플랫폼, .NET에서 사용할 수 있지만 수동으로 빌드해야 함
- 서비스로서의 C # 4 컴파일러
- Cecil-CIL 조작, 워크 플로우, CIL 계측, 링커
- RelaxNG 라이브러리
- Mono.Data. * 데이터베이스 제공자
- 전체 System.Xaml (.NET이 스택을 제공하지 않는 설정에 사용)
MonoTouch는 iPhone에서 모노를 실행하는 것을 의미합니다. MonoDroid는 Android에서 실행되는 Mono를 의미합니다. PS3 및 Wii 포트는 Sony 및 Nintendo 인증 개발자 만 사용할 수 있습니다.
형식이 결여되어 죄송합니다.