c# 으로 만든 dll 파일을 php 나 jsp 에서 사용 할 수 있나요..

안녕하세요!

c# 으로 만든 dll 파일을 php, jsp 또는 다른 웹 프로그램에서 사용 할 수 있는지 궁금합니다!!

3개의 좋아요

@힘내쿠우 Java에서 C# DLL을 임포트 해서 사용하는 것은 가능한 것으로 알고 있어요.

하고싶은 것을 좀 더 구체적으로 작성해서 토론 해보는 것은 어때요? 비슷한 사례를 경험한분이 계실지도 모르니까요. 저도 궁금합니다. 살을 좀 더 붙여 보시죠~

2개의 좋아요

일단 아래 답변들은 제가 알고 있는 범위 내에서 추론해본 것들이고, 실제로 동작하는지 아닌지는 확인된 부분이 아님을 말씀드립니다.

PHP

  • .NET으로 DLL을 만들었고, COM에서 쓸 수 있도록 타입 라이브러리를 제공하도록 만들었다면, IDispatch 인터페이스 (닷넷 인터페이스 아님)를 구현하도록 맞추어져 있으면 “부르는 것이 가능할 수도” 있습니다. 그러나 PHP가 이런 부분을 잘 지원해야 할 필요성이 낮기 때문에, DLL 형태로 부르는 것보다는 일반적인 실행 파일 형태로 부르도록 우회해서 설계하거나, Web API 형태로 커뮤니케이션할 수 있게 만들어 내부에서 서비스 메시를 구현하도록 하는 편이 더 관리하기 좋을 수 있습니다.
  • 이론적으로 .NET은 .NET Framework와 .NET Core 계열 모두 닷넷 환경이 아닌 곳에서 닷넷 런타임을 초기화하고 부를 수 있도록 "닷넷 호스팅 C API"를 제공합니다. 하지만 PHP에서 이런 호스팅 API를 부를 수 있는지 여부가 명확하지 않고, 부를 수 있다고 하더라도 예기치 않은 런타임 충돌이나 다른 부작용이 있을 수 있습니다. (확인이 충분히 된 부분이 아닙니다.)
  • NativeAOT를 사용해서 C 언어 수준에서 함수를 부를 수 있도록 .NET DLL을 컴파일했고, PHP의 FFI 관련 기능을 충족하도록 설계했다면 “부르는 것이 가능할 수도” 있습니다.

Java

  • Java의 경우 닷넷처럼 P/Invoke 마샬러를 직접 제공하지는 않기 때문에, 항상 JNI 규격을 맞추는 네이티브 모듈을 만들고, 이 모듈이 실제 닷넷 코드를 부르도록 만들어야 합니다.
  • 이 때, 네이티브 코드에서는 .NET 런타임을 호스팅하는 API를 쓰거나, 흔히 쓰는 Interop 코드를 부르는 방식 (COM 등을 사용)을 이용해야 할 것이라고 생각이 듭니다.
5개의 좋아요

앗…토론이라는 말이 부담스럽습니다 ㅎㅎ

1개의 좋아요