2008-11-07 3 views
6

Windows 응용 프로그램을 개발하고 싶습니다. 사용자 인터페이스에 네이티브 C++ 및 MFC를 사용하면 응용 프로그램이 매우 빠르고 작을 것입니다. 그러나 MFC를 사용하는 것은 매우 복잡합니다. 또한 C#을 사용하면 응용 프로그램이 원시 코드보다 느려질 것이고 .NET Framework가 실행될 reqiures입니다. 그러나 WinForm을 사용하여 GUI를 개발하는 것은 매우 쉽습니다. 어느 것을 더 선호 해?어떤 플랫폼을 사용해야합니까? 네이티브 C++ 또는 C#?

+1

어떤 종류의 Windows 응용 프로그램입니까? 대상 운영 체제는 무엇입니까? 대답은 당신의 목표가 무엇인지에 달려 있습니다. –

답변

19

"빠르다"와 "느리다"는 주관적입니다. 특히 오늘날의 PC에서는 주관적입니다. 나는 의도적으로 일을 천천히한다고 말하는 것이 아니지만, 거의으로 관리되는 응용 프로그램을 작성하는 데 많은 오버 헤드가 있다고 생각할 수 있습니다. JIT 등은 코드가 매우 빠르게 실행되도록 아주 잘 작동합니다. 또한 필요한 경우 추가 시동 속도를 위해 NGEN을 사용할 수도 있습니다. 당신이 그것을 배울 시간이있는 경우

사실, 당신은 오히려의 WinForm보다 WPF를 고려하는 것이 좋습니다 - 이것은 다른 스킬 설정되어 있지만 그래픽 하드웨어 등 또한

의 아주 좋은 사용을 만들 수 있습니다 - .NET 프레임 워크는 새로운 OS 설치와 함께 제공되며, 사전 운영 체제에서는 여전히 매우 일반적입니다. 그래서 제게는 C#/.NET으로 개발하는 것이 상당히 분명한 선택이 될 것입니다. 강력하고 완벽한 테스트를 거친 C++ 앱 (누수가없는 등)을 개발할 시간은 (적어도 나를 위해) C#과 같은 것보다 훨씬 큽니다.

+0

그래, C# .net은 훨씬 더 실용적인 선택 같습니다. – Kon

+0

"주관적 느림"은 더 이상 오버 헤드에 의해 결정되지는 않지만 대부분 UI의 응답성에 의해 결정됩니다. – peterchen

+0

누출이없는 앱을 만드는 것은 쉬운 일입니다 .. 구조를 만들면 수년 동안 누출이 없었습니다. 그 말은 .. 나도 C#으로 갈거야 .. 그냥 큰 시장. – baash05

1

C# 응용 프로그램은 MFC 응용 프로그램보다 시작 속도가 느리지 만 응용 프로그램이로드되면 두 응용 프로그램간에 속도 차이가 느껴지지 않을 수 있습니다.

+0

사실이지만 CLR 4 (.NET 4.0)는 .NET 응용 프로그램의 콜드 스타트 ​​시간을 크게 향상시켜야합니다. –

6

너무 일찍 최적화하지 않도록주의하십시오. 코드의 속도는 언급하지만 대부분의 Windows 사용자 인터페이스 작업에서 그리기와 디스크 액세스의 주요 병목 현상은 두 가지 접근 방식 모두 다르지 않으므로 그 차이가 눈에 띄지 않습니다.

내 사용자 인터페이스에 C# 및 WPF 또는 WinForms를 사용하는 것이 좋습니다. 속도가 느려지는 경우 프로파일 러를 사용하여 일부 비즈니스 로직을 기본 코드로 대체하는 것을 고려한 다음 장점이있는 경우에만 고려하십시오.

4

가능한 많은 Windows 응용 프로그램이 있으며 각 응용 프로그램마다 고유 한 요구 사항이 있습니다.

응용 프로그램이 빠르며 (내가하는 일이 무엇인지), 네이티브 C++가 좋은 방법입니다.

응용 프로그램이 작아야 할 경우 (느린 회선을 통한 고속 전송의 경우), 작은 응용 프로그램을 사용해야합니다.

응용 프로그램이 많이 다운로드 될 가능성이있는 경우 사용자가 아직 갖고 있지 않은 .NET의 이후 버전을 신경 써야 할 수 있습니다.

대부분의 경우와 마찬가지로 어쨌든 시스템에서 사용하기가 쉽고 빠르면 가장 빠르게 개발할 수있는 것을 사용하십시오.

거의 모든 경우에 최적화가 필요한 것은 개발자의 노력입니다. 높은 품질의 일을 가장 빠르고 잘 수행하는 것을 사용하십시오.

1

개발할 응용 프로그램에 대한 정보가 없으므로 WPF에 투표합니다.

0

언어 또는 도구의 선택은 프로젝트 및 전문 지식의 기능 및 성능 요구 사항에 따라 결정되어야합니다. C#을 C++보다 선호하는 분석을 수행 한 적이 있다면 성능에 대한 고려가 필요합니다. MFC 기반 응용 프로그램을 사용하는 것은 그리 효율적이지 않습니다. 반면에, 오버 헤드는.NET 응용 프로그램은 과장되었습니다.

성능은 실제로 코드를 얼마나 잘 작성하고 확장 성 요구 사항이 존재하는지의 함수입니다. 최대 데이터베이스 레코드가 1K 인 클라이언트 하나만 사용해야한다면 성능에 대해 이야기해서는 안됩니다.

개발 및 유지 관리가 더 쉽다면 C#이 선택 될 것입니다.

나는 이것이 귀하가 제공 한 데이터로 선택 A 또는 B의 답을 얻을 수있는 질문인지 확신 할 수 없습니다. 기능적 및 비 기능적 요구 사항 분석을 수행하고 결정해야합니다.

2

대부분의 Windows 컴퓨터에는 .NET이 이미 설치되어 있으므로 걱정할 필요가 없습니다.

또한 .NET 설치 외에 .NET 응용 프로그램은 매우 작습니다.

UI가있는 대부분의 응용 프로그램의 경우 사용자의 속도가 실제로 제한 시간 요소입니다.

1

제 생각에 요구 사항은 플랫폼 결정에 도움이됩니다. 무엇이 더 중요합니까? 쉽게 유지 보수 할 수있는 응용 프로그램이나 매우 빠르고 작아야하는 응용 프로그램이 있습니까?

요즘은 .NET 및 관리 코드를 사용하여 많은 수의 응용 프로그램을 작성할 수 있으며 일반적으로 장기적으로 개발에 도움이됩니다. 내 경험에 따르면 .NET 응용 프로그램은 일반적으로 대부분의 사용 사례에 충분히 빠르며 작성하기가 더 쉽습니다. 네이티브 C++에는 여전히 사용이 있지만, "빠르거나 작다"는 것만으로도 "충분히 빠르며 충분히 작다"면 충분합니다. 나는 C# .NET을 사용하는 경우

0

또한 다음 응용 프로그램은 네이티브 코드보다 느리게 될 것이며 그것은 실행 .NET 프레임 워크를 reqiures

하여 MFC 응용 프로그램 (그리고 아마도 VC 런타임뿐만 아니라 실행하는 MFC DLL의가 필요 !), 그래서 그들이 설치해야 할 수도 있습니다, 또는 그들이 정적으로 링크되어 있다면, 당신은 exe의 크기를 추가 할 수 있습니다.

1

네이티브 코드와 관리 코드 간의 속도 인수는이 시점에서 크게 문제가되지 않습니다. .NET Framework의 각 릴리스는 이전 버전보다 성능이 향상되었으며 .NET 개발 팀에게는 응용 프로그램 성능이 항상 최우선 과제로 남아 있습니다.

Windows Vista 및 Windows Server 2008부터는 .NET Framework가 운영 체제의 일부로 설치됩니다. 또한 Windows Update에 포함되어 거의 모든 Windows XP 시스템에도 설치됩니다. 프레임 워크가 대상 시스템에 설치되어야한다는 요구 사항이 실제로 많은 문제가되는 경우 필수 실행 시간 부분을 기본적으로 응용 프로그램에 임베드하여 단일 exe 파일을 생성하는 컴파일러가 있지만 비용이 많이들 것입니다. 정말로 비용의 가치가없는).

0

인용문

.NET 작업하기 쉽습니다. 사용자를 잃어 버리거나 코드 마이그레이션에 문제가있는 경우가 아니면 .NET을 사용해야합니다. 속도가 문제가 될 가능성은 희박합니다. 크기는별로 중요하지 않습니다.

1

MFC는 배우기가 어렵지 않지만 실제로는 매우 쉽습니다.

C#과 거의 같습니다.

+0

에 동의했습니다. 나는 쉽게 말할 것입니다. 그리고 필요하다면 더 깊이 나아갈 수 있습니다. – baash05

+2

완전히 100 % 반대, 내가 본 모든 MFC 프로젝트는 피비린내 나는 엉망이다. 이는 개발자뿐만 아니라 도구에 뭔가를 말합니다. –

0

더 잘 알고있는 기술은 무엇입니까?

귀하가 제공 한 정보에는 결정에 도움이되는 정보가 포함되어 있지 않습니다. 예, MFC 앱은 작아지는 경향이 있습니다 (장기적으로 적절한 측정 기준이 아닌 런타임 크기를 포함하는 경우). 응답 성이 높고 개발 비용이 비쌉니다. 그래서?

3

처음에는 (비록 내가 죽는 것이 어렵다. C++ 코더이지만) 나는 C#이 대부분의 경우 속도와 크기가 걱정되는 곳에서 완벽하게 괜찮다는 것을 인정해야한다. 해석 된 부분이 이미 대상 시스템에 있으므로 응용 프로그램이 더 작은 경우도 있습니다. (그 중 하나에 나를 스팸하지 말아라, dll을 가진 앱은 하나의 앱보다 작다. 윈도우는 이미 그 안에 "DLL"을 가지고있다.)

코딩에 관해서 ... 나는 솔직히 중요한 차이가 있다고 생각하지 않습니다. 나는 타이핑 코드를 많이 쓰지 않는다. 그것의 대부분은 문제를 생각하고 있습니다. 코드 부분은 아주 작습니다. 여기 저기에 몇 줄을 남겨 둬. Blahh 나에게 논쟁 거리가 아니야. 만약 내가 APL에서 일하고 싶다면. STL, MFC를 배우고 C# 라이브러리를 배우는 것만큼이나 집중적 인 학습을 할 수 있습니다. 결국 그들은 모두 같습니다.

C#에는 한 가지 일이 있습니다. 시장. 그것은 최신 "뜨거운"기술이고 그래서 그것을위한 시장입니다. 일자리를 쉽게 찾을 수 있습니다. 이제 자바가 몇 년 전에 "뜨거운"기술이었고 지금은 톰 거시기와 해리가 이력서에 가지고 있다는 것을 명심하십시오. 그것은 자신을 틈새 시장으로 만드는 것을 더 어렵게 만듭니다.

좋아 .. 모든 말 .. 사랑해. C++ .. 정말로 필요할 때 더러워지는 것 같아. MFC 라이브러리가 작업을 수행하지 않을 때, 나는 그들이 앉아있는 것을 살펴 봅니다. 등등 .. 그것은 영원한 언어입니다. 그리고 나는 아직도 세상에서 가장 많이 사용되는 언어 또는 그 근처에 있습니다. Yah C++, Yah !.

관련 문제