2012-04-03 4 views
1

저는 C# 개발자입니다. Windows 개발에서 WinAPI의 역할이 무엇인지 파악하려고합니다. 제 인식은 이것이 커널 자체의 유일한 설명이며 .NET 이전에는 "Windows 개발"자체 (Microsoft 이외의 기술을 제외하고는)이기도하지만 이러한 진술 중 어느 것도 확실하지는 않습니다 . 또한 WinAPI와 .NET 프레임 워크의 관계가 무엇인지 확신 할 수 없습니다. 그래서 몇 가지 질문이 있습니다.WinAPI와 .NET의 관계는 무엇입니까?

  • 전체 .NET 런타임은 WinAPI 위에 구축되어 있습니까? 그렇다면 WinAPI는 실제로 Windows에서 개발할 수있는 가장 낮은 수준의 인터페이스입니까?
  • 요즘 Windows 개발 (웹, 비즈니스, 소프트웨어 제품 등 모든 영역에서)의 역할은 무엇입니까?
  • 현재 .NET 개발자보다 WinAPI (C/C++) 개발자가 더 많습니까?
  • WinRT는 어디에서 입력합니까?

답변

5

Windows API는 .NET의 기초가되는 기판입니다 (예 : 다소).

아니요, Windows에서 가장 낮은 개발 수준이 아닙니다. Windows NT는 원래 Win32가 여러 하위 시스템 중 하나로서 실행되는 Microkernel의 일종이었습니다. 이러한 하위 시스템은 Windows NT "원시 API"를 사용하여 마이크로 커널과 통신합니다. 네이티브 API를 직접 사용하는 다른 코드를 작성할 수도 있습니다.

"아래"는 아마도 장치 드라이버 코드 일 것이지만 실제로 중요한지 여부는 질문하기에 충분합니다. 일반적으로 응용 프로그램을 작성하는 데 응용 프로그램을 사용하지는 않지만 (분명히 충분한) 장치 드라이버를 사용합니다.

WinRT는 기본적으로 기존 Windows API와 나란히 배치되며 COM 인터페이스를 통해 서비스를 제공하는 새로운 API입니다.

역할 및/또는 개발자 수에 대해서는 다루지 않겠습니다. 역할을 결정하는 것은 주관적이며, 특정 유형의 작업을 수행하는 개발자의 정확한 수를 실제로 알고있는 사람이 있는지 의심 스럽습니다.

+0

동의 함. Winapi는 모든 응용 프로그램에 사용할 수 있으며 .net은 속도와 자원 소비에 대한 요구 사항이 낮은 최종 사용자 응용 프로그램 용입니다. – crea7or

+0

Win32는 다른 사용 가능한 하위 시스템 (Interix였던 것을 포함하여 현재 무료로 제공되고있는 것을 포함하여)과 비교하여 서브 시스템으로 권한있는 위치를 유지하고 있음을 추가해야합니다. 예를 들어, Win32 서브 시스템 만이 모든 그래픽 하드웨어를 사용할 수있는 것 같습니다. 여전히 +1, 좋은 요약. – 0xC0000022L

+0

NT 아키텍처에 대한 리소스에 대한 권장 사항이 있습니까?.NET의 구현은 어떻습니까? (그 "다소"가 전체를 알고 자하는 충동을 얻었습니다.) – Raphael

2

WinAPI는 네이티브 Windows API 맨 위에있는 계층으로, 문서화되지 않은 계층입니다. 이전에는 Posi와 OS/2라는 두 개의 다른 API 계층이 있었지만 사용하지 못했습니다. .NET 프레임 워크는 API 계층이기도합니다. Windows에서는 실제로 핵심 OS 서비스를 위해 winapi 계층을 사용합니다. 하지만 독점적이지는 않습니다. 예를 들어 Mono는 Linux와 OSX를 기반으로 실행할 수 있습니다.

네이티브 사용자 모드 Windows 개발의 경우 WinAPI는 실제로 사용하는 핵심 API 레이어입니다. 확실히 그것을 사용하는 프로그래머는 여전히 많습니다. 그러나 대부분의 프로그래머는 .NET, Java 또는 Javascript 또는 PHP와 같은 웹 호스팅 언어를 사용합니다.

WinAPI의 경우 WinRT는 대체입니다. WinAPI의 C 기반 인터페이스가 아니라 COM 기반입니다. 개발 도구에는 그다지 눈에 띄지 않지만 각각의 런타임에는 WinRT의 "투사"가 있으므로 COM 코드를 직접 작성할 필요가 없습니다. 그래서 여전히 C# 코드를 작성할 수 있습니다. 다른 기본 클래스 만 있으면됩니다.

관련 문제