문제

.net이 아닌 Windows 환경에서 원격 프로시저 호출을 수행하는 좋은 방법을 아는 사람이 있습니까?

이를 수행하는 방법에 대한 많은 정보를 찾을 수 없으며 msdn에는 .net 버전만 있습니다.

.

편집하다:

지금까지 답변해 주셔서 감사합니다.내가 필요한 것은 진행 보고서를 "클라이언트"로 다시 보내는 동일한 컴퓨터의 서비스와 통신하는 것입니다.내가 rpc에 개입한 이유는 uac의 전망과 서비스가 rpc나 파이프를 사용하지 않는 한 일반 앱과 대화할 수 없기 때문입니다.파이프를 살펴보면 완전히 텍스트 기반인 것으로 보이며 rpc가 강력한 형식의 값을 전달할 수 있다는 인상을 받았습니다.

DCOM도 살펴보겠습니다.

도움이 되었습니까?

해결책

같은 기계의 프로세스 간에만 대화하는 데 관심이있는 경우 부스트 :: 간호사 그들이 대화 할 수있는 채널을 얻는 멋진 방법입니다.

더 많은 Windows 특정 솔루션입니다 공유 메모리 매핑 파일 및 시스템 글로벌 뮤텍스/신호 또는 명명 된 파이프.

부스트 :: 직렬화 그리고 구글 프로토콜 버퍼 프로세스간에 보내는 데이터를 구조 포장에 덜 의존하는 바이너리 문자열로 보내는 데이터와 다른 실행 파이브간에 다른 것들을 변환하는 방법입니다.

Boost :: Interscrocess, Boost :: Serialize 및 프로토콜 버퍼는 플랫폼 독립이어야하므로 기술적으로 Linux/Mac에서도 작동 할 수 있습니다!

다른 팁

DCOM IS에는 DCE RPC를 기반으로 원격 절차 호출 메커니즘이 있습니다. 시스템을 COM 구성 요소로 빌드하거나 API에 COM 래퍼를 넣는 경우 노출하려는 API를 사용하면 사용할 수 있습니다. 그 외에도 문제의 세부 사항에 대한 더 많은 통찰력으로 질문을 확장하고 싶을 수도 있습니다. 문제에 DCOM 사용을 배제 할 수있는 측면이 있는지에 대한 손잡이가 없습니다.

대안적인 접근 방식은 응용 프로그램 주위에 웹 서비스 래퍼를 배치하는 것입니다. 웹 서비스 (확실히 SOAP 또는 XML-RPC 기반)는 실제로 HTTP를 전송 프로토콜로 사용하는 RPC 메커니즘 일뿐입니다.

여기에는 더 많은 정보가 있습니다.
"Windows Server 용 Microsoft Platform SDK를위한 Microsoft Platform SDK", 폴더에서 샘플을 설치 한 후 ... 샘플 netds rpc
sdk_netds_rpc.exe - 소스 샘플soapsdk.exe - MS 샘플
더 많은 링크 :
추적 RPC 호출 및 프로그램에 COM+ 이벤트를 알립니다.
fastpc
보안 RPC
XML 및 HTTP를 기반으로 한 가벼운 RPC 라이브러리.
오래된 도움이지만 유용합니다 rpc.hlp
MS-RPCE] : 원격 절차 호출 프로토콜 확장
MS-RPCH] : HTTP 프로토콜 사양에 대한 원격 절차 호출
MS-COM] : 구성 요소 객체 모델 Plus (COM+) 프로토콜 사양 DCOM

수백 가지 방식으로 Windows에서 원격 코드를 호출 할 수 있습니다. 소켓, DCOM 등 ... 한 단계의 Microsoft는 원격 API 호출을 정의 할 수있게 해주 며 컴파일러가 접착제 코드를 작성할 수있게 해주는 RPCGEN (DCE RPC 기반)을 지원합니다. 이것은 DCOM의 기본 층이었습니다.

사용하기 쉬운 UNIX ONC-RPC와 호환되지 않으며 더 넓은 표준입니다. 당신은보고 싶을 수도 있습니다 ONC_RPC 툴킷 중 하나입니다 DCOM과 같은 약간의 문제가 당신을위한 것이 아니라면.

토니

예, Isalamon에 동의합니다. 이미 Midl과 함께 내장 된 실제 RPC를 사용하십시오. DCE RPC에 대한 O'Reilly 책을 얻을 수 있습니다. 같은 기계에있는 경우 NCALRPC의 바인딩 호스트를 사용하십시오.

여기 1996 년 Cheyenne Software에서 Inoculan Antivirus의 Win NT에서 사용해 온 것입니다. 이것은 순수한 RPC이며 OO 층이 없습니다. 새로운 창에서 여전히 사용할 수 있기를 바랍니다.

글쎄, 복잡성, 오버헤드 및 역방향 속도에 따라 정렬하면 다음과 같은 가능성이 떠오릅니다.

  • SOAP(이미 제외함)
  • 코르바
  • DCOM (DCE)
  • XML 메시지 교환
  • ONC-RPC(SunRPC)
  • HTTP와 유사한 메시지 교환
  • 텔넷과 유사한 메시지 교환(회선 지향)

결국, 라이브러리, 패키지 등을 어느 정도 사용할 수 있는(절망할 준비가 된) 상태가 될 것입니다.오픈 소스로.

위 내용 중 일부는 이상하게 들릴 수도 있지만 실제로 우리는 RPC에 HTTP나 Telnet을 자주 사용합니다.그 이유는 테스트를 위해 화려한 환경이 필요하지 않으며 대부분의 외계 소프트웨어가 쉽게 적응할 수 있기 때문입니다.이는 또한 WebBrowser, 텔넷 세션 또는 단순히 소켓을 열고 요청을 보내는 다른 프로그램에서 프로그램의 서비스를 쉽게 사용할 수 있도록 합니다.예를 들어, 대부분의 프로그램에는 --scripting 명령줄 인수가 포함되어 있습니다. 이 인수는 JavaScript와 같은 언어를 통해 전체 응용 프로그램 개체 모델에 대한 액세스를 보낼 수 있는 텔넷 포트를 엽니다.또한 어떤 노력 없이도 모든 앱을 매우 쉽게 원격 제어하는 ​​데 사용할 수 있습니다.이러한 프레임워크를 한 번 작성했다면 모든 새 앱에 재사용할 수 있습니다(어떻게 보이는지 확인하세요). 여기)

내 모든 앱은 위의 모든 항목이 이미 포함되어 있고 클라이언트와 서버로 사용할 준비가 되어 있는 환경에서 작성되었다는 점을 인정해야 합니다.

요약:가장 간단한 것을 사용하십시오. 그것이 작업을 수행합니다.앱을 해당 인프라에 통합해야 하는 경우가 아니면 Corba 또는 SOAP가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top