쟌와
70
2021-11-12 11:17:10
4
120

C#의 COM과 GAC의 차이는 무엇인가요?


안녕하세요. JAVA에서 C#의 함수를 사용하기 위해서 C++를 이용하여 두 언어를 연결하는 중에 있는 사람입니다. 

C++에서 C#의 DLL파일을 이용하기 위해서 C#에서 COM이나 GAC를 등록? 이용? 해주는 것 같습니다.


"C#에서 COM과 GAC의 역할의 차이는 무엇인가요?"


처음 접하다 보니 자료를 읽어도 조금 어려운 부분이 있어서 이렇게 질문을 남깁니다.

답변해주시면 감사하겠습니다.

0
  • 답변 4

  • allinux
    2k
    2021-11-12 11:41:30

    JNI 을 이용해서 COM 을 호출하는 방법을 고민하는 것 같습니다.

    c#과 COM 은 서로 큰 관계가 있는 기술이 아닙니다. 비주얼 스튜디오에서 닷넷 어셈블리를 COM 과 통신 할 수 있게끄름 interop 레이어를 추가해줍니다. 그렇게 등록된 닷넷 어셈블리는 COM으로 호출이 가능해지니 여러 언어로 사용할 수 있게 되는 겁니다.

    즉 닷넷으로 만든 dll 을 COM 으로 등록하여 COM 을 호출 할 수 있는 언어에서 사용하자는 컨셉입니다.

    GAC 는 닷넷 어셈블리를 캐시로 등록해서 닷넷 어플리케이션에서만 사용하자는 겁니다. 

  • 쟌와
    70
    2021-11-12 13:54:30

    답변 감사합니다!


    추가적인 질문이 생겨서 죄송하지만 한 가지 더 여쭤봅니다.

    GAC 부분을 COM으로 대체해도 괜찮을까요?


    제가 참고하고 있는 repo는 https://blog.naver.com/estern/220705777919 이것인데, GAC를 사용하고 있습니다.

  • allinux
    2k
    2021-11-12 14:55:10

    COM 과 GAC 는 서로 관계가 없으므로 대체되거나 할 수 있는 것이 아닙니다.

    닷넷 어셈블리를 COM interop 을 체크후 빌드하면 해당 어셈블리를 COM 서버에 등록할 수 있습니다.

    그렇게 등록되면 해당 닷넷 어셈블리를 COM 객체를 사용(OLE automation 사용)하듯이 사용할 수 있게 됩니다.

    COM 은 언어에 독립적이므로 자바로도 호출할 수 있게 됩니다. 하지만 GAC 에 등록된 닷넷 어셈블리는 자바로 바로 호출할 수가 없습니다.

    COM, OLE 등의 용어 및 기술을 이해해야 합니다. GAC 하고는 관계가 없는 오래된 기술이긴하나 현재도 윈도우 플랫폼상에선 아주 많이 사용되는 기술입니다.

  • 쟌와
    70
    2021-11-12 15:48:21

    답변 진심으로 감사드립니다.

    좀 더 깊은 공부가 필요할 것 같네요ㅠㅠ.

  • 로그인을 하시면 답변을 등록할 수 있습니다.