이 포스트를 만든 목적
- 책 보려고
이 포스트의 준비물
- 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++ 을 선택해서 사용하는게 좋겠다.
여담
- 엄청나게 졸렵다.
- 어제 정리했어야 하는건데, 피곤해서 그냥 자버렸다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 50, ECMA 표준을 익혀라 (0) | 2010.08.31 |
---|---|
item 49, C# 2.0의 주요 특징 (0) | 2010.08.31 |
item 48, 활용할 수 있는 다양한 툴과 리소스에 대해서 알아두라. (0) | 2010.08.31 |
item 47, 안전한 코드가 더 좋다. (0) | 2010.08.29 |
item 45, 견고한 예외 보증 기법이 더 좋다. (0) | 2010.08.25 |
item 44, 애플리케이션에 특화된 예외 클래스를 완벽하게 작성하라. (1) | 2010.08.23 |
item 43, reflection을 과도하게 사용하지 말라 (0) | 2010.08.19 |
item 42, reflection을 단순화하기 위해서 attribute를 사용하라 (0) | 2010.08.18 |
item 41, 새로운 구조체보다는 DataSet이 좋다. (0) | 2010.08.15 |
item 40, 적절한 collection 개체를 이용하라 (0) | 2010.08.14 |
최근댓글