책 정리/Effective C#
item 46, Interop를 최소화하라
최익필
2010. 8. 27. 02:49
이 포스트를 만든 목적
- 책 보려고
이 포스트의 준비물
- gVim 7.3
참고 서적
- 소설같은 C# 3판
- Effective C#
참조 링크
내용
Interop은 무엇인가?
- 다른 언어로 개발된 어셈블리(DLL 등)를 특정 환경에서 사용할 수 있게 하는 기술을 뜻한다.
C# Interop은 무엇인가?
- CLR을 사용하지 않는 어셈블리(DLL 등)을 CLR 에서 사용 될 수 있게 하는 기술을 뜻한다.
왜 Interop을 최소화 해야 하는가?
- 비용의 문제 때문에
예) managed 힙과 unmanaged 힙 사이를 오고가는 marshalling 비용
- managed 와 unmanaged 를 오고가는 코드 작성 비용 때문에
그럼에도 불과하고, C# Interop을 사용해야 한다면, 다음의 3가지 방법을 선택하면 된다.
- COM Interop
- 써본적이 없어서 모르겠다.
- Platform Invoke(P/Invoke)
- DllImport 를 사용하는 방법이다.
장점 : 간단하다.
단점 : 함수의 갯수가 많아질 수록 함수를 맞쳐주는 작업이 힘들다.
- Managed C++ (C++/CLI)
- C++/CLI 로 Native 코드들을 포장하는 방법
장점 : 코드를 완전히 제어 할 수 있다.
단점 : 지루한 포장 작업을 일일이 해야 한다.
책에는 없지만, P/Invoke를 특화시킨 방법이 있다.
- SWIG
- C/C++ 로 개발된 코드를 지원하는 언어로 포장된 코드를 만들어 주는 프로그램이다.
장점 : 손쉽다.
단점 : 새기술을 익혀야 한다.
결론
- SWIG를 우선 써보고, 불가능한 것들은 PInvoke나 Managed C++ 을 선택해서 사용하는게 좋겠다.
여담
- 엄청나게 졸렵다.
- 어제 정리했어야 하는건데, 피곤해서 그냥 자버렸다.