저희 회사는 Visual C++의 MFC를 UI 개발의 사실상 표준으로 사용하여 오랫동안 제품을 개발해 왔습니다. 우리 코드베이스에는 계속 작동해야 하는 레거시/아카이브 코드가 많이 포함되어 있습니다. 이 코드 중 일부는 저보다 오래되었고(원래 70년대 후반에 작성된 코드), 우리 팀원 중 일부는 여전히 Visual Studio 6을 사용하고 있습니다.
하지만 다행히도 내부적으로 우리 제품이 경쟁사에 비해 다소 구식이며 무언가 조치가 필요하다는 결론에 도달했습니다.
저는 현재 제품의 나머지 부분과는 완전히 분리된 새로운 UI 영역에서 작업하고 있습니다. 따라서 나머지 UI로 전환하는 긴 과정을 시작하기 전에 일종의 시험대로서 새로운 기술 스택을 시험해 볼 기회가 주어졌습니다.
한동안 틈틈이 C#과 Windows Forms 및 .net 프레임워크를 함께 사용해왔고 이를 즐기고 있지만, 인터롭으로 인한 골칫거리가 다소 걱정됩니다. UI의 이 특정 브랜치에는 기존 C++ 코드베이스와의 상호 운용이 많이 필요하지 않지만, 향후에는 이것이 문제가 될 것으로 예상됩니다.
대안은 MFC를 계속 사용하되 VS2008과 함께 제공된 새로운 기능 팩을 활용하는 것입니다. 이것이 가장 쉬운 옵션이라고 생각하지만, 수명이 길어지고 .net의 장점을 활용하지 못할까 걱정됩니다...
그렇다면 어떤 것을 선택해야 할까요? 저희는 소규모 팀이기 때문에 제 추천이 향후 개발 방향으로 받아들여질 가능성이 높습니다 - 제대로 하고 싶습니다.
MFC는 죽었나요? C#/Winforms가 앞으로 나아갈 길인가요? 제가 완전히 놓치고 있는 다른 것이 있나요? 도움을 주시면 대단히 감사하겠습니다!
여러 가지 방법으로 이를 수행할 수 있습니다.
Wpf 호스트입니다 내용을 MFC 뷰 (, a href = " < 지켜보리니, http://www.codeguru.com/cpp/cpp/cpp_managed/interop/article.php/c14589", > /a> here<;;)
Mfc 에 대한 새로운 애플리케이션 프레임워크 및 MDI 만드시겠습니까 윈포름스 너회의 호스트입니다 MFC MDI 뷰 (지켜보리니 <, a href = ", http://www.codeproject.com/KB/miscctrl/HostMFC.aspx", > /a> here<;;)
Mfc 의 사용자 컨트롤 호스트 윈포름스 대화상자와 뷰 (참조;;;; a href = " < http://msdn.microsoft.com/en-us/library/ahdd1h97.aspx" > /a> here<;)
문제는 또 WPF UI (옵션 1) 할 것이라는 게 모두를 한 번에 it& # 39, ll, 그렇지 않으면 재작성할 여바바 예쁜 정신분열적인.
그러나 두 번째 실용적인 접근이 매우 복잡하다.
비주얼 C++ 2008년 는 흥미로운, 나는 이 객체에는 어쨌든요 재생할지를 haven& # 39, t 기능 팩 오래된 성님예 같다 문제가 있는 것이 도움이 됩니다 만약 " ribbon"; 너무 삐걱거림 약간만이라도 사용자의 타사 MFC 및 / 또는 윈포름스 제어입니다 구입업체를 바라볼 수 있습니다.
내 전체 권장안을 에로남이네 interop + 변동분 변화는 말해둘꼐요 걸친 대변신을 것이 바람직하다.
네, 그럴 수 있는지 확인 후 후속 판독값 말해둘꼐요 생산성 향상을 위한 투자 com/go/learn_fl_cs4_learningas2_kr 레임워크 의 크게 보다 중요한 것입니다. C # 의 팀 사용해온 아니예 시작할 때 이 노력, 지금 우리는 모두 포지셔닝하십시오 거잖나.
애플리케이션과 고객이 .NET을 설치할 의향이 있는지에 따라(모두가 그런 것은 아니지만) 저는 확실히 WinForms 또는 WPF로 전환할 것입니다. C++ 코드와의 상호 운용은 (태그 선택에서 언급했듯이) C++/CLI를 사용하여 비 UI 코드를 클래스 라이브러리로 리팩터링하면 매우 간소화됩니다.
WPF의 유일한 문제점은 현재의 모양과 느낌을 유지하기가 어려울 수 있다는 것입니다. WinForms로 이동하면 현재 GUI의 모양을 유지하면서 작업할 수 있습니다. WPF는 매우 다른 모델을 사용하기 때문에 현재 레이아웃을 유지하려고 시도하는 것은 아마도 쓸데없는 일이며 WPF의 정신에 맞지 않을 것입니다. 또한 두 개 이상의 WPF 프로세스가 실행 중일 때 Vista 이전 시스템에서 WPF의 성능이 저하되는 것으로 나타났습니다.
제 제안은 고객이 무엇을 사용하고 있는지 알아보는 것입니다. 대부분이 Vista로 전환했고 팀이 많은 GUI 작업을 할 준비가 되어 있다면 WinForms를 건너뛰고 WPF로 전환하라고 말하고 싶습니다. 그렇지 않다면 WinForms를 진지하게 살펴보세요. 두 경우 모두 C++/CLI의 클래스 라이브러리가 상호 운용 문제에 대한 해답입니다.
Wpf 의 윈포름스 수 있다는 점을 더 적절하다고 주장할 수 있습니다. 너와 네 단계로 윈포름스 이동하는 것은 큰 팀이다. 아마도 그들은 더욱 편안하게 이동할 수 있는 윈포름스? # 39 의 더 나은 문서화했습니다 it& 계속 필요한 경우, 유용한 windows 2000년 지원을 위해 클라이언트 경험이 있다.
관심을 갖게 될 수 있습니다. [확장 MFC 응용프로그램을 .NET Framework] [1]
뭔가 다른 것이 는 [C++/CLI] [2] # 39, t, but I don& 경험이 있습니다.
[1]: http://www.amazon.com/extending-mfc-applications-net-framework/dp/032117352x/ref sr_1_2? 키드 = = = = = 1218715329, sr, ie 의 utf8& books& & 1-2 [2]: http://en.wikipedia.org/wiki/C% 2b% 2b/cli
자신을 단축시킵니다 응답을 주신 모든 분께 감사 드립니다 # 39 의 든든한 it& 확인하기 위해 일반적으로 생각하는 내 대사 inet6.0 공통된 의견이다. 내가 노력한 수밖에 없는 상황에서 우리 소프트웨어 역시 우리 고유의 맞춤형 실행됩니 하드웨어 () 의 방송 산업) - 정말 우리 고객이 선택할 수 있으며 따라서 OS 가 밀어나가기 빛위에. 현재 실행 중인 XP/2000 하고 있지만, 내가 볼 수 있도록 하는 이동합니까 we& # 39 최대 vistatm 곧.
그러나 또한 매우 정교한 제어할 수 있는 유지하는 데 필요한 GPU 하드웨어 가속 성능, WPF 와 자동으로 규칙요 아웃해야 같은데요? 내가 내 원래 있는 예증의표적으로 시점으로든지 post - 죄송합니다. 아마도 it& # 39 의 두 개의 gpu 사용할 수 있습니다. 그러나 that& # 39 의 또 다른 질문을 아예 바꾸기도 한다.
윈포름스 같은데, C # 할꺼이나 됐다.
WPF의 정서에 동의합니다. 태그/XML 기반 UI는 WinForms보다 이식성이 조금 더 높은 것 같습니다.
현재 C# 기술이 많지 않다면 팀도 고려해야 할 요소이지만 앞으로 MFC 개발자 시장은 줄어들고 C#이 성장하고 있습니다.
일종의 단편적인 접근 방식이 가능할까요? 저는 레거시 애플리케이션을 C#으로 코딩하는 작업을 꽤 많이 해봤는데, 특히 일부 레거시 코드를 유지하거나 팀이 C#에 익숙하지 않은 경우 예상보다 훨씬 더 오래 걸립니다.