내 응용 프로그램이 관리되지 않습니다.나는 어디로 시작을 소개합 관리 코드가?

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

문제

내 전체 응용 프로그램(는 오히려 큰,20MB 실행 파일)에 서면에서 관리되지 않는 C++.나 때문에 명확하게 볼 수 있는 장점에서 관리되는 코드를 사용하여,내가 원하는 시작을 소개합 관리 코드 내에서 응용 프로그램,하지만 어디서부터 시작해야 하나요?

할 수 있습니다 쉽게 시작을 사용하여 C++/CLI 와 링크에 그것의 나머지 부분입니까?(지만 C++/CLI 구문을 것 같다는 오히려'이국적인').

나 그것은 더 나은로 이동하는 C#지만,가장 좋은 방법은 무엇입하'link'이와 함께 내는 관리되지 않는 C++코드?

그것은 의미를 컴파일하는 모든 내 C++코드/clr 옵션?이것이 가능합니까?

나는에 대해 걱정 마샬링?이게 오버헤드 또는 간에 전환할 수 있 관리되고 관리되지 않는 없는 성능(내가 그랬던 것처럼 20 년 전에 혼합하는 경우 fortran C).성능이 정말 중요한 내 응용 프로그램에서이기 때문에 과학적인 응용 프로그램 때로는 프로세스를 여러 가지 기가바이트 메모리이다.

또는 그것만 이해를 재설계의 사용자 인터페이스,오직 이것을 쓰 C#에서의 나머지 부분을 유지하는 내 응용 프로그램(계산 논리,비즈니스 논리,데이터베이스 인터페이스,...)에서 관리되지 않는 C++?

이후 응용 프로그램은 때때로 요구를 처리하는 여러 기가바이트,메모리의 나는 64 비트 변형이 있습니다.그것은 쉽게 관리되는 64 비트입니까?Woudl 쓰레기 수집가 여전히 효율적이는 경우는 많은 메모리를 사용합니까?

단순히 상태:어디서부터 시작해야 하나요?

Patrick

도움이 되었습니까?

해결책 3

현재이 질문을 마감하는 것을 고려하십시오.

답은 C ++와 C#을 혼합하는 것이 아니라 처음부터 아키텍처를 얻는다는 것을 깨달았습니다.

아키텍처가 정확하고 분리되어야하는 곳에서 분리 된 경우 다른 모듈 (외부, 다른 언어 등)에 의한 응용 프로그램의 일부를 변경하는 것이 더 쉬워야합니다.

마샬링 중 성능 문제와 관련하여 .NET이 더 성숙해질 때까지 기다려야합니다.

다른 팁

프로필 응용,결정에서 무엇을 통합할 수 있습니다 포인트 스 C#라인의 논리로 C++and vice versa.이러한 준비로 계획을 외관 디자인 패턴 이동이 시스템을 통해 점차적으로 교체하는 C++C#.의 주요 관심사입의 CPU 및 메모리 요환 결정할 때 언어서 각 후보관/인터페이스입니다.

를 원할 것입을 통합할 수 있도록 편집할 수 있는 최고의 하나의 소스 코드를 설정하고 소스 코드 저장소에 대한 원래는 C++코드와 다른 설정 및 저장소에 대한 외관 plus C#.

다음으로 개선/유지 보수 작업에서 트레이 적용을 모두 코드 기지,그리고 당신은지 확인 하려고 외관 이동이 시스템을 통해 시작으로드 가능성을 변경하에서 개선 또는 유지 보수를 최소화하는 두 배로의 변경 작동합니다.

또한 이상적으로 구조할 수 있도록 작 rollback 외관을 돌을 100%C++에서 드롭다운 모자의 경우에 장애가 있습니다.

지 여부를 테스트하는 몇 특히 헤아릴 C++모듈으로 구분할 수 있습니다 C++조각 C#한 조각,그들을 실행에 두 개의 서로 다른 Win32C++프로세스 통신을 사용하는 파이프 또는 소켓에.는 방법 당신은 당신을 얻을 것이 더 좋은 아이디어가 있는지 여부의 문제는 메모리 관리나 성능에는 고정이 필요할 수 있습니다 전에 분할화 체인에서는 점이다.

우리가 정확히 무엇을 설명에 중요 업무용 응용 프로그램에서 사용하는 수천 명의 사용자.기본적으로,우리는 유지되는 기존 응용 프로그램입니다,그래서 파일은 아직도 100%가 관리되지 않는 실행(C++/CLI).우리는 다음을 넣어 우리의 모든 새로운 C#드습니다.NET dll 으로 구성되어의 사업체,사용자 정의 컨트롤과 gui 코드,etc.....

기본적으로,모든 새로운드 C#으로 작성되어 있습니다.우리는 1dll 는 C++/CLI 는 접착제입니다.이렇게 우리들이 쉽게 interop 간의 관리되고 관리되지 않는 코드를하지 않고도 기존 C++코드 clr.이의 양을 제한 C++코드를 작성해야.기본 코드에 말하는 혼합 모드 코드를 할 수 있는 얘기되는 코드를 생성할 수 있습니다.혼합 모드 dll 릴 수 있는 이벤트에 대 C#클래스 C#코드를 불 수 있는 이벤트를 통하여 C++/CLI(수 있는 이야기를 기본 코드).

우리는 또한 호스트.NET UserControls 에서 기존의 C++응용 프로그램(WinForms 은 그냥 주위에서 래퍼 WINAPI 어쨌든,그래서 그것은 꽤 잘 작동하).

이것은 매우 잘 작동할 수 있습 유지하는 기존의 코드하지 않고 다시 쓰기 전체 GUI C#.

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