webchild
22
2022-01-10 18:10:36 작성 2022-01-10 18:12:32 수정됨
5
241

nodejs에서 외부dll load 해서 사용하신분 계신가요??


nestjs로 개발된 서버에서 pass 인증을 위한 api를 만들어야하는데 해당 데이터를 주고 받는 인증데이터를 암복호화 해서 주고 받더라고요 

근데 해당 암복호화를 인증업체 dll로 해야해서 nestjs서버에서 dll를 load해서 메소드를 호출해야하는데... 해당 케이스를 겪어보신분 계시나요ㅜㅜㅜ 

nodejs에서 dll를 호출해서 사용하고 계신분도 답변해주시면 감사드리겠습니다~~
0
  • 답변 5

  • 꿈의연봉1800
    452
    2022-01-10 18:30:19

    ffi로 로드하거나 c로 래핑한뒤 napi로 연결해서 쓰는 식입니다

    문서보면 중학생도 할 수 있을정도로 쉽습니다

  • allinux
    2k
    2022-01-10 18:33:29

    node 가 동작하는 서버가 윈도우 서버죠?

    dll 은 윈도우상의 동적 라이브러리이고 당연히 윈도우에서만 사용할 수 있습니다. (유닉스, 리눅스에서 so 파일과 같습니다.) 아무래도...node 는 윈도우보단 리눅스쪽에서 많이 사용할 듯 하여 적습니다.

    사실 v8 엔진이 c++로 되어 있으니 c/c++로 확장모듈을 만들어 사용하거나 ffi 모듈을 사용해서 바로 라이브러리에서 호출하는건 어려운 일은 아닙니다.

    다만...c/c++ 지식이 있어야 하며 가비지 컬렉션 관련해서도 레퍼런스 카운팅 관리를 해야 될 수도 있습니다.

  • 구직인
    2022-01-10 18:35:37

    그 dll이 외부 모듈인건가요?

    완전한 API호출 인터페이스가 포함되어서 배포 된건가요?

    아무튼 해당 dll 을 한번 napi로 감싸서 빌드해야 합니다.

    결국 c언어 및 js를 다룰줄알아야 하죠.

    윗 분말처럼 하면 되는데, 중학생도 할 수 있을 정도로 쉽진 않습니다.

    두가지 언어에 대한 이해가 필요하고요.

    암복호화정도면 딱히 신경안써도 될것도 같기도 한데,

    nodejs가 싱글 스레드를 추구하므로 해당 c모듈에 대해 비동기 처리,

    nodejs측에서 멀티 스레드를 지원해야한다면 역시 c에서도 이 처리를 해줘야합니다.


    쉽진 않을겁니다. 언어 이해도가 없으면.

  • 구직인
    2022-01-10 18:36:18

    해당 언어 개발자가 아니라면 실무적으로 "못한다"라고 해도 무방합니다.

    전혀 다른 언어의 개발자니까요.


  • webchild
    22
    2022-01-11 10:31:20

    답변 달아주셔서 정말 감사드립니다.


    덧붙이자면 azure에 리눅스 환경 앱서비스 생성하고 nestjs서버를 docker로 이미지 만들어서 배포하고 있습니다

    해당 dll를 또 다른 .net으로 개발된 서버에서 호출해서 nestjs 서버에서 호출하는 식으로 개발했는데 굳이 dll를 호출하기 위해서 서버 구축하는게 맞는가 하는 생각에 nodejs에서 호출하는 방법이 없는지 질문했습니다


    헌데 리눅스 환경에서는 dll를 사용하는것이 불가능하니.. 기존에 개발된 구조로 .net서버를 사용하는것이 맞겠네요..


    다시 한번 답변주셔서 감사합니다~

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