새로운 C ++ 프로젝트에 ATL, MFC, Win32 또는 CLR을 사용할지 여부를 어떻게 결정합니까?

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

  •  03-07-2019
  •  | 
  •  

문제

방금 첫 C ++ 프로젝트를 시작했습니다. 사용 중입니다 Visual Studio 2008. 몇 개의 데이터베이스에 액세스하고 WebSphere MQ 트랜잭션을 시작하는 단일 형태의 Windows 응용 프로그램입니다. 나는 기본적으로 ATL, MFC, Win32 (실제로는 조금 흐릿하다)와 CLR의 차이점을 이해하지만 어떻게 선택 해야하는지에 대해서는 상실하고 있습니다.

이들 중 하나 이상이 뒤로 호환성을 위해 있습니까?

CLR입니다 나쁜 생각?

모든 제안에 감사드립니다.

편집하다:게시물에 들어 가지 않은 이유로이 프로젝트에 대해 C ++를 선택했습니다.이 프로젝트는 완전히 기술적이지 않습니다. 그래서, 가정합니다 C ++는 유일한/최상의 옵션입니다. 선택해야합니까?

도움이 되었습니까?

해결책

그것은 당신의 필요에 따라 다릅니다.

CLR을 사용하면 런타임에 .NET 프레임 워크를 설치하도록 요구하고 Windows 플랫폼으로 제한하는 데 필요한 비용으로 가장 표현적인 라이브러리 세트 (전체 .NET 프레임 워크)를 제공합니다 (Windows 플랫폼으로 제한됩니다. 그러나 4 개의 나열된 기술 모두는 Windows 전용이므로 플랫폼 제한은 아마도 가장 귀찮은 일입니다).

그러나 CLR은 C ++/CLI 확장을 C ++ 언어로 사용해야하므로 본질적으로이를 사용하려면 몇 가지 추가 언어 기능을 배워야합니다. 그렇게하면 .NET 라이브러리에 대한 액세스, 전체 쓰레기 수집 등과 같은 많은 "엑스트라"가 제공됩니다.

ATL & MFC는 그 중에서 결정하기가 다소 까다로워집니다. 나는 당신을 추천합니다 선택을위한 MSDN의 페이지 그들 사이를 결정하기 위해. ATL/MFC의 좋은 점은 .NET 프레임 워크가 필요하지 않으며 배포를 위해 설치할 VC/MFC Runtimes 만 필요하지 않다는 것입니다.

Win32를 사용하면 가장 적은 종속성을 가진 가장 작은 실행 파이브를 직접 제공하지만 더 많은 작업이 작성됩니다. 도우미 라이브러리가 가장 적으므로 더 많은 코드를 작성합니다.

다른 팁

Win32는 원시적이고 베어 메탈 방식입니다. 지루하고 사용하기가 어렵고, 기억해야 할 작은 세부 사항이 많이 있습니다. 그렇지 않으면 비교적 신비한 방식으로 사물이 실패 할 것입니다.

MFC는 win32를 구축하여 객체 지향적 인 응용 프로그램 구축 방법을 제공합니다. 그것은 Win32를 대체하는 것이 아니라 오히려 향상입니다. 그것은 당신에게 많은 노력을 기울입니다.

System.Windows.forms (CLR이 의미한다고 생각하는 것)는 완전히 다르지만 기본 구조와 MFC와 큰 유사성이 있습니다. 사용하기가 가장 쉽지만 .NET 프레임 워크가 필요하며, 이는 귀하의 경우에 방해가되지 않을 수도 있습니다.

내 권장 사항 : .NET을 피해야하는 경우 MFC를 사용해야합니다. 그렇지 않으면 .NET을 사용하십시오 (실제로 작업하기가 훨씬 쉽기 때문에 C#을 사용합니다).

C ++가 진행되는 한 WTL을 사용합니다. 그것은 Lightweght이며, 당신은 (있는 경우) 의존성이 거의 없으므로 배송 및 설치가 쉽습니다. 내 앱이 대부분의 Windows 버전에서 실행되는 단일 EXE로 구성되면 매우 만족 스럽지만 이는 귀하에게 관심이 아닐 수도 있습니다.

대신 .NET으로 가기로 선택하면 C#은 거의 확실합니다.

WTL에서 더 많은 것 :

http://www.codeproject.com/kb/wtl/wtl4mfc1.aspx

나는 당신이 왜 C ++에서 이것을 할 것인지 매우 궁금 할 것입니다. 간단한 설명을 바탕으로 C#은 훨씬 더 적절한 선택처럼 들립니다.

조금 자세히 설명하기 위해 C ++ CLR을 설명한 링크를보십시오. C ++가 "커널, 게임, 고성능 및 서버 앱"에 적합하다는 최고 등급의 답변 노트 (정확히 제 생각에 정확하게).

MFC, ATL 등은 미래 버전의 Visual Studio에서 앱을 컴파일하고 향후 버전의 Windows에서 실행할 수 있다는 점에서 지원 될 것입니다. 그러나 그들은 CLR 및 C#에있는 것과 같은 방식으로 API 또는 언어에 많은 새로운 개발이 진행되고 있다는 점에서 뒷받침되지 않습니다.

CLR에는 아무런 문제가 없습니다. 다른 사람들과 마찬가지로 C#을 제안하지만 C ++를 고수 할 이유가 있으므로 .NET 프레임 워크를 사용하는 것은 ATL/MFC를 아직 익숙하지 않은 경우 (IMO)를 혼란스럽게하는 것보다 수천 배 더 쉽습니다.

C ++/CLR을 사용하는 경우 실제로 C ++를 사용하지 않는다는 점을 언급 할 가치가 있습니다. C ++/CLR은 C#과 마찬가지로 CIL에 컴파일합니다. 나는 직접 사용한 적이 없지만 그 목적은 기존 C ++ 실행 파일로 새 코드가 작동하지 않고 레거시 코드를 컴파일하고 새로운 .NET 코드에서 쉽게 사용할 수 있도록하는 것이 목적이라고 생각합니다. .NET에서 기본 코드를 호출하는 다른 방법이 있습니다. 아마도 탐색해야 할 것입니다.

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