2009-07-06 3 views
4

내 응용 프로그램은 두 섹션으로 구성됩니다. 프런트 엔드 UI 인 C# 실행 파일과 저수준 항목 인 C++ dll. 내 응용 프로그램은 모든 C++ 개체 인스턴스에 해당 C# 개체 인스턴스가있는 많은 개체 인스턴스를 만들고 관리합니다. C# 및 C++ 섹션의 개체와 해당 개체의 데이터가 런타임에 항상 동기화되도록하기 위해 어떤 기법이나 라이브러리를 사용할 수 있습니까? 하나의 객체 인스턴스에서 한 멤버의 변경은 해당 객체 인스턴스를 업데이트해야합니다.런타임시 C# 및 C++ 클래스를 동기화 상태로 유지 하시겠습니까?

감사합니다.

편집 : 나는 "동기화"의 개체를 유지하여 무슨 뜻인지 조금 명확히

+0

는 C# 개체를합니까 인스턴스는 C++ 객체 인스턴스를 캡슐화합니까? 예를 들어 C# 객체가 C++ 객체에 대한 포인터를 포함하는 경우입니까? –

+0

그들은 독립적입니다. 네트워크와 같은 중간 객체를 통해 통신합니다. – djcouchycouch

답변

1

문제가 해결 될지 확실하지 않지만 Managed C++를 고려해 보셨습니까? C + + 코드를 Managed C++로 간단하게 컴파일 한 다음 매니지드 확장을 사용하여 기본 C++ 데이터를 직접 사용하는 .NET 클래스를 만들면 성공할 수 있습니다. 그렇게하면 데이터 사본이 하나뿐입니다.

아마 모든 상황에 맞지는 않습니다. (그리고 나는 그 한계를 어떤 방법 으로든 테스트하지는 않았습니다.) 그러나 나는 꽤 시간 절약을 발견했습니다. Managed C++는 적절한 .NET 언어이기 때문에 C# 측에서 사용하는 것이 깔끔한 결과를 얻었습니다. 이런 종류의 일을 시도 할 때 일반적으로 발생하는 일이 거의 없었습니다.

(또 다른 유사한 접근 방식은 당신을 위해 래퍼를 생성 할) 꿀꺽 꿀꺽 ( http://www.swig.org/을 사용하는 것입니다. 나는 그것을 사용하기 쉽고 잘 작동 소리,하지만 내가 직접 사용하지 않았습니다.)

+0

안녕하세요! 대답 해줘서 고마워. 불행히도, 디자인은 제 손에서 벗어났습니다. 현재 디자인을 고려한 최상의 솔루션을 찾고 있습니다. – djcouchycouch

+0

그러나 나는이 솔루션을 선택했을 것입니다. – djcouchycouch

2

아마도 코드 생성이 잘 작동합니다. 예 : 한 곳에서 이러한 클래스의 속성/메서드를 정의하고 (아마도 XML 또는 무언가) C# 및 C++ 클래스를 생성합니다. 코드 생성을 위해 CodeSmith (http://www.codesmithtools.com/)와 같은 것을 사용하십시오.

+0

이렇게하면 생성하는 C# 클래스가 '부분적'인지 확인하십시오. 그렇게하면 C# 클래스에 UI 특정 코드를 추가해야 할 경우 개체를 다시 생성 할 필요가 없으며 이렇게해도 개체의 재생성을 방해하지 않습니다. – GWLlosa

+0

안녕하세요 Alex! 나는 그 객체들이 동기화 상태를 유지해야하는 방식을 정확하게 지정하지 않았 음을 알고 깨달았습니다. 내가 의미했던 것은 런타임에 인스턴스를 동기화하는 것입니다. 감사! – djcouchycouch

관련 문제