즉, .NET 프레임 워크는 결국 작업을 수행하기 위해 어딘가에서 호출을 수행합니까? 또는 Microsoft는 .NET 프레임 워크에서 win32 라이브러리의 모든 기능을 완전히 다시 작성했습니다..NET 런타임은 내부적으로 win32 함수 호출에 매핑됩니까?
감사합니다.
즉, .NET 프레임 워크는 결국 작업을 수행하기 위해 어딘가에서 호출을 수행합니까? 또는 Microsoft는 .NET 프레임 워크에서 win32 라이브러리의 모든 기능을 완전히 다시 작성했습니다..NET 런타임은 내부적으로 win32 함수 호출에 매핑됩니까?
감사합니다.
이것은 혼합입니다. winforms 같은 것들은 Win32 기능 (또는 두 가지 세계의 혼합)을 둘러싼 대부분 래퍼이지만 WPF는 실제 제어 코드 측면에서 훨씬 관리가 잘되며, Mash 메모와 같이 DirectX를 사용하여 표현). 마찬가지로, 파일/네트워크 액세스와 같은 것들은 OS 객체를 둘러싼 래퍼 (Mutex
과 같은 관리되지 않는 잠금 객체)와 비슷하지만 많은 다른 것들은 100 % 관리됩니다.
그래서 간단한 대답이 아닙니다.
(편집) 또한 - ".NET"은 매우 모호한 용어입니다. Compact Framework, Micro Framework, Silverlight 등은 win32가 아닌 다른 구현이 가능합니다.
일부 경우 (대부분, 아마 전체 프레임 워크 전체에 반영되지 않았 음) .NET Framework에서 win32를 호출합니다. 대부분의 컨트롤은 몇 가지 새로운 기능으로 래핑 된 단순한 win32 컨트롤입니다.
.NET 응용 프로그램은 다른 Win32 프로세스이므로 마술은 없으며 분명히 밑줄 운영 체제를 사용하게됩니다. .NET 라이브러리조차도 Win32를 아주 많이 사용합니다.
예는 :
메모리 관리는 관리 코드에 대한 내부 을 처리하지만, 의 과정 자체는 그냥 다른 Win32 프로세스 등이 처리됩니다.
현재 관리되는 스레드는 OS 스레드로도 구현 된 입니다.
예, 내부적으로 win32 함수를 호출합니다.
return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
을하고 결국 호출합니다 : : 예를 들어 파일 클래스의 OpenRead 방법은 포함 깊은 방법으로는 Win32 기본 기능입니다
SafeFileHandle handle = CreateFile(lpFileName, dwDesiredAccess, dwShareMode, securityAttrs, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
합니다.
모든 Windows 응용 프로그램 에서처럼 .NET API를 호출합니다. 그러나 단순한 래퍼 또는 맵 그 이상을 추상화로보다 정확하게 설명합니다.
업데이트 : 내가 틀린 질문에 대답했다는 것을 깨달았다. (당신은 클래스 라이브러리가 아닌 런타임이라고 말했다.) ... 오 잘 나는 어쨌든 아래의 guff를 유지할 것이다!
그것은 라이브러리의 부분에 따라 달라집니다
로 WS2_32.DLL를 이용한다. 분명히 COM 서버이기 때문에 Microsoft CLR은 win32에도 많이 의존합니다.
좋아요! 고맙습니다! – abatishchev
Mono는 .NET 런타임의 구현이며, 그것은 확실히 나는 귀하의 질문에 .NET 런타임의 Microsoft에서 구현을 언급 한 것 같아요
(적어도 리눅스에)는 Win32 함수 호출에 매핑되지 않습니다.
내부적으로 WPF가 더 많이 관리되는지 여부는 논쟁의 여지가 있습니다. – Mash
@Mash - 좋은 지적 –
.NET은 주로 win32를 사용하여 작업을 완료하므로 절대로 "대체"할 수 없습니다. 기본 WINAPI, 맞습니까? 아니면 최종 목표입니까? – tyler