2010-04-07 4 views
4

간에 개체를 전송하면 한 응용 프로그램에서 다른 응용 프로그램으로 개체를 전송할 수 있습니까?두 개의 독립적 인 응용 프로그램 (C#)

저는 CAD API를 사용하고 있습니다. 이 API의 초기화에는 몇 초 (10-15)가 걸립니다. App1에서 개체를 한 번만 초기화하고 필요할 때마다 App2에서 불러올 수 있다면 좋을 것입니다.

아이디어가 있으십니까? 감사!

답변

6

Serializing 개체를 사용하고 어떤 형식의 Interprocess Communication을 사용하여 데이터를 전송 한 다음 다른 쪽 끝에서 비 직렬화 할 수 있습니다.

Windows Communication Foundation은 이러한 유형의 시나리오에 특히 적합하며 대부분의 배관 작업을 처리합니다.

+0

링크 및 잘 생각한 대답은 +1 –

+0

답장을 보내 주셔서 감사합니다. – iDog

1

리드의 제안은 완벽하게 좋은 것이지만, 고려할 가치가있는 유일한 가능성은 아닙니다. 10-15 초 초기화는 꽤 오랜 시간입니다. 직렬화 및 비 직렬화에 꽤 오랜 시간이 걸릴 수있는 상당히 크고 복잡한 데이터 구조를 초기화 할 수 있습니다. 그렇다면 CAD API의 프런트 엔드 역할을하는 out-of-process COM (또는 DCOM) 서버를 만드는 등의 다른 가능성을 고려한 다음 App1과 App2가 해당 서버에서 작동하도록 할 수 있습니다. 한 곳. 이는 CAD API와주고받는 모든 데이터를 마샬링 및 언 마샬링하는 것을 의미하지만, 얼마나 많은 데이터가 관련되어 있으며 (특히) App1과 App2에서 사용되는 데이터를 전환해야하는 빈도에 따라 여전히 낮은 오버 헤드를 가질 수 있습니다.

+0

"직렬화 및 비 직렬화에 꽤 오래 걸릴 수있는 상당히 크고 복잡한 데이터 구조를 초기화 할 수 있습니다." 그래, 그게 내가 걱정하고 있었던거야. serialize 및 deserialize에는 10 초가 걸릴 수도 있습니다. 하지만 한 번 시험해 볼게. – iDog

1

제 생각에 훨씬 단순한 가능성은 공유 메모리를 사용하는 것입니다. 이것은 Windows에서의 프로세스 간 통신을위한 공통 메커니즘입니다. the linked CodeProject article을 살펴볼 수도 있습니다.

+0

링크를 가져 주셔서 감사합니다! – iDog