어떤 장점이 있습을 개발 Win32 응용 프로그램에서는 C++를 통해.인터넷 응용 프로그램에서는 C#?

StackOverflow https://stackoverflow.com/questions/562620

문제

나는 배운 윈도우 프로그램을 사용하여 Visual C++,Win32API.요즘 대부분의 애플리케이션은 개발되고 있습니다.NET 를 사용하여 C#.내가 이해하는 대부분의 시간이 없는 많은 성과의 차이는 기본 코드 관리 코드입니다.그래서 나는지 궁금하면 쓰기 시작하는 새로운 데스크탑,오늘 응용 프로그램이 어떤 이유 있(다른 것보다는 사실 나는 더 익숙한 C++)가 쓰고 싶은 그것에서 비 managed C++입니다.NET?은 여전히 몇 가지 이점을 사용하여 C++코드 및 네이티브 코드?또는 있는 방법을 더 많은 정도의 차이는 있지만 교체했다.NET 윈도우 플랫폼에서?

물론 내가 알고 있는 사람들이 누가 쓰고 있는 낮은 수준의 장치 드라이버와 유사한 프로그램지 않습니다.NET.나는 참조하여 일반적인 클라이언트는 데 도움이 될 수 있는 응용 프로그램을 만들지 않 직접 하드웨어를 호출합니다.

도움이 되었습니까?

해결책

  • 성능 (그래픽과 같은 특정 상황)
  • 메모리 풋 프린트 (Mancuso가 말했듯이)
  • 기존 라이브러리 사용
  • 런타임이 필요하지 않습니다
  • 더 미세한 제어

몇 가지를 나열합니다.

그러나 반대 각도에서 질문을보고 사용할 언어를 공정하게 평가할 수도 있습니다.

또한 C ++/CLI를 사용하여 기본 및 .NET 코드를 모두 통합 할 수 있습니다.

다른 팁

소규모 다운로드 가능한 응용 프로그램에 가장 중요한 IMO는 기본 코드에 .NET 런타임이 필요하지 않다는 것입니다. 광대역이 점점 더 일반화되지만 거의 모든 사람이 아직 가지고있는 것은 아닙니다.

어떤 사람들은 2MB 애플리케이션이 실제로 20MB의 프레임 워크 다운로드와 귀찮은 설치 프로세스가 필요하다는 것을보고 실망 할 수 있습니다. 그들이 처음에 당신의 응용 프로그램이 실제로 필요한지 확실하지 않은 경우, 경쟁 제품을 시도하고 경쟁하는 제품을 제공하기 전에 삭제할 수 있습니다.

설치없이 응용 프로그램을 실행할 수 있어야하는 경우 (예 : .NET Framework 설치와 같은 것을 할 수 없거나 할 수없는 경우) Windows 시스템 (Pre-Vista에 .NET가있는 것을 포함 할 수 없습니다. ). 많은 유틸리티 애플리케이션 이이 범주에 속할 수 있습니다.

추천합니다 모든 데스크탑 응용 프로그램을 작성합니다 관리 코드. .NET/C#은 그렇게하기에 좋은 플랫폼입니다.

내 이유 :

  1. 성과 페널티는 무시할 수 있습니다. 내 말을받지 않으면 벤치 마크를위한 Google. 더 중요한 것은 코드 자체입니다. C ++ 또는 .NET/C#에 O (N^M) 알고리즘을 쓸 수 있습니다. 요즘 JIT 엔진은 매우 성숙합니다.
  2. 관리되지 않는 C ++는 단위 테스트, 조롱 및 리팩토링. 매우 번거롭고 융통성이 없습니다. 반사를 통해 관리되는 코드는 그러한 것들을 매우 편리하게 만들 수 있습니다.
  3. 배포는 작은 문제입니다. 그러나 필요한 .NET 전제 조건을 확인하고 자동으로 설치하는 설정을 작성하는 것은 쉬운 일이 아닙니다.
  4. 편집은 더 빠르고 링커가 없습니다! 코드를 편집 할 때도 백그라운드에서 발생합니다.
  5. .그물 도서관 지원 STL, MFC 및 BOOST보다 훨씬 우수하고 깨끗합니다.
  6. 헤더 파일과 매크로가 없습니다. 그들은 단지 오류가 발생하기 쉽습니다.
  7. 보안! 좋은 Bye 버퍼 오버플로, 나쁜 포인터, 초기화되지 않은 변수 ...
  8. 예외. .NET의 명확한 예외 계층. C ++ 예외가 엉망이됩니다.

메모리 발자국. 그러나 심하게 장애인 메모리를 위해 개발하지 않는 한, 대부분의 응용 프로그램에 문제가되지 않아야합니다.

스택에 대한 의존성을 감당할 수 있다면 .net 현대적이고 우아하고 강력하며 결과적으로 훨씬 빠르게 개발하십시오.

그러나 당신이 당신이 앱을 징수한다는 것을 깨달으십시오 - 언어와 프레임 워크, 당신이 이것을 피하고 싶은 미래를 예견한다면 두 번 더 잘 생각하십시오.

Win32는 오래되고 어리석지 만 추가 종속성이없는 거의 모든 Windows 버전에서 작동하며 코드는 일반적이고 휴대용 C/C ++ 일 수 있습니다.

+1 을 하지 않아요.NET 패키지하는 기계(s).이것은 여전히 큰 문제입니다.

면 모든 시스템은 모노이나 NET 지 않을 것 같은 큰 문제입니다.

내가 생각할 수있는 두 가지.

  1. 지적 재산의 보호. 누군가가 관리되지 않는 C ++ 앱을 리버스 엔지니어링하는 것은 무한히 더 어렵습니다. 관리되는 .NET 또는 Java 앱을 쉽게 고환 할 수 있습니다. 관리되지 않은 C ++의 경우에는 해당되지 않습니다.

  2. 속도. C ++는 하드웨어에 더 가깝고 다른 의견과 같이 더 작은 메모리 발자국이 있습니다. 이것이 대부분의 비디오 게임이 C ++ 및 인라인 어셈블리로 계속 작성되는 이유입니다.

.NET 프로그램은 또한 원주민이 실제로하지 않는 수명을 지원합니다. 네이티브는 업데이트없이 다른 OS에서 수년 동안 실행됩니다.

.NET 프로그램은 잘못된 .NET 구성에 의해 호스를 일으킬 수 있으며, 네이티브는 계속 실행 중이며 OS 업데이트에 의해 거의 영향을받지 않습니다.

.NET 프로그램 스타트 업이 느리고 느리게 느껴지고, 기본은 빠르게 시작하고 빠르게 실행됩니다.

.NET은 가장 낮은 공통 분모 (대부분의 분산 프레임 워크 버전)로 코딩되어야하며, 기본은 모든 코드를 응용 프로그램으로 컴파일하므로 원하는 것을 사용하십시오.

C ++가 아닌 네이티브에는 Delphi를 사용하십시오. .NET은 부분적으로 Delphi Rad 및 Java 백엔드를 기반으로합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top