WPF 는 RPC 를 이용 하여 다른 프로 세 스 를 호출 하 는 방법 에 대해 자세히 설명 합 니 다.

3934 단어 wpfrpc프로 세 스
머리말
WPF 에서 다 중 프로 세 스 통신 이 필요 하 다 면 WCF 는 RPC 로 계산 되 기 때문에 추천 하 는 방법 은 WCF 입 니 다.먼저 RPC(Remote Procedure Call)원 격 프로 세 스 호출 은 tcp,http 등 특정 프로 토 콜 을 통 해 다른 프로 세 스 를 호출 하 는 기술 입 니 다.자세히 보 세 요.
이제 WCF 를 어떻게 사용 하 는 지 알려 주지 않 겠 습 니 다.다음은 reoting 을 사용 하 는 방법 입 니 다.dotnet remoting 은 이미 시대 에 뒤떨어 진 기술 임 을 알 아야 합 니 다.wcf 를 사용 하 는 것 을 권장 하지만 wcf 배치 난이도 가 높 습 니 다.성능 에 대한 요구 가 높 거나 빠르게 사용 하려 면 remoting 을 사용 하 는 것 을 권장 합 니 다.사용법 이 간단 하 다
먼저 세 개의 프로젝트 를 만 들 고 한 프로젝트 는 다른 두 개의 사용 해 야 할 라 이브 러 리 를 놓 습 니 다.하 나 는 서버 이 고 하 나 는 클 라 이언 트 입 니 다.그 중에서 클 라 이언 트 는 서버 를 호출 할 수 있 습 니 다.클 라 이언 트 와 서버 는 서로 다른 프로 세 스 이기 때문에 프로 세 스 를 뛰 어 넘 을 수 있 습 니 다.
방법 은 다음 과 같다.
간단 한 프로젝트 를 만 듭 니 다.라 이브 러 리 프로젝트 RemoteObject 는 클래스 가 하나 밖 에 없습니다.

 public class RemoteCalculator : MarshalByRefObject
 {
  public const int Port = 13570;

  public int Add(int a, int b)
  {
   return a + b;
  }
 }
이 종 류 는 Marshalby RefObject 를 계승 해 야 합 니 다.이 종 류 는 두 프로 세 스 에서 참조 되 고 클 라 이언 트 가 이 종 류 를 실현 하지 않 기 때문에 클 라 이언 트 가 이 인 터 페 이 스 를 사용 해도 됩 니 다.이 종 류 를 구체 적 으로 호출 하 는 방법 은 서버 에서 실 행 됩 니 다.결 과 는 tcp 나 http 를 통 해 되 돌 아 옵 니 다.
클 라 이언 트 의 주요 코드 는 서버 를 연결 한 다음 에 라 이브 러 리 에 접근 하 는 add 함수 입 니 다.그러나 이 함 수 는 클 라 이언 트 에서 실행 되 지 않 습 니 다.tcp 를 통 해 서버 를 호출 하여 실행 시 킵 니 다.

  private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
  {
   if (_channel == null)
   {
    Process.Start("CalcnsMnlhzydYeuiitcCddhxvlhm.exe");
    _channel = new TcpChannel();
    ChannelServices.RegisterChannel(_channel, true);
   }
   var calculator = (RemoteCalculator) Activator.GetObject(typeof(RemoteCalculator),
    "tcp://" + "127.0.0.1" + ":" + RemoteCalculator.Port + "/RemoteCalculator");
   Console.WriteLine(calculator.Add(1, 2));
  }
서버 이름 은 CalcnsMnlhzyd YeuiitcCddhxvlhm 입 니 다.주로 연결 을 열 고 클 라 이언 트 가 보 낸 함 수 를 실행 합 니 다.

  static void Main(string[] args)
  {
   new Thread(() =>
   {
    _channel = new TcpChannel(RemoteCalculator.Port);

    ChannelServices.RegisterChannel(_channel, true);
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteCalculator), "RemoteCalculator", WellKnownObjectMode.Singleton);
   }).Start();
   while (true)
   {
    Console.ReadKey();
   }
  }
  private static TcpChannel _channel;
클 라 이언 트 가 단 추 를 누 르 면 서버 를 먼저 열 고 이 코드 Process.Start("CalcnsMnlhzydYeuiitcCddhxvlhm.exe")를 사용 해 야 합 니 다.그리고 tcp 를 만들어 서 tcp 와 서버 를 통 해 연결 하 라 고 알려 줍 니 다.그 다음 에 서버 에서 calculator 라 는 종 류 를 얻 었 습 니 다.실제 이 종 류 는 현재 실현 되 지 않 았 습 니 다.호출 함 수 는 서버 에 보 내야 합 니 다.
서버 에서 TcpChannel 을 열 어야 합 니 다.이 때 호출 된 클래스 를 정의 해 야 합 니 다RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteCalculator), "RemoteCalculator", WellKnownObjectMode.Singleton);이 함수 의 매개 변 수 는 등 록 된 클래스 입 니 다.두 번 째 함 수 는 호출 된 클래스 가 어떤 이름 을 사용 하 는 지 입 니 다.보통 클래스 의 이름 을 사용 합 니 다.마지막 매개 변 수 는 하나의 인 스 턴 스 에 연결 할 수 있 습 니 다.그래서 라 이브 러 리 에 있 는 클래스 는 구조 함수 에 들 어 갈 수 없습니다.
클 라 이언 트 가 호출 한"tcp:/"+"127.0.0.1"+":"+RemoteCalculator.Port+"/RemoteCalculator"의 마지막 RemoteCalculator 는 서버 에 등 록 된 두 번 째 함수 입 니 다.
그러면 이 기능 의 역할 은 무엇 입 니까?x64 프로그램 이 x86 라 이브 러 리 를 호출 할 수 없 기 때문에 이 방법 으로 x64 프로그램 에서 다른 플랫폼 의 라 이브 러 리 를 호출 할 수 있 습 니 다.프로 세 스 가 실행 하 는 플랫폼 은 다 르 지만 통신 은 같 습 니 다.
다른 기능 은 제 가 사용 하지 않 았 습 니 다.저 는 서 비 스 를 열 고 그의 함 수 를 호출 할 것 입 니 다.그래서 여러분 이 문제 가 생기 면 저 에 게 묻 지 마 세 요.만약 나의 코드 로 실행 할 수 없다 면,나 에 게 메 일 을 보 내 도 된다.나 는 소스 코드 를 너 에 게 줄 것 이다.
코드 다운로드:바 이 두
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기