WPF 는 RPC 를 이용 하여 다른 프로 세 스 를 호출 하 는 방법 에 대해 자세히 설명 합 니 다.
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 프로그램 에서 다른 플랫폼 의 라 이브 러 리 를 호출 할 수 있 습 니 다.프로 세 스 가 실행 하 는 플랫폼 은 다 르 지만 통신 은 같 습 니 다.
다른 기능 은 제 가 사용 하지 않 았 습 니 다.저 는 서 비 스 를 열 고 그의 함 수 를 호출 할 것 입 니 다.그래서 여러분 이 문제 가 생기 면 저 에 게 묻 지 마 세 요.만약 나의 코드 로 실행 할 수 없다 면,나 에 게 메 일 을 보 내 도 된다.나 는 소스 코드 를 너 에 게 줄 것 이다.
코드 다운로드:바 이 두
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WPF RelativeSources 2022에 대한 간단한 가이드 | 아이포 테크노랩WPF RelativeSource는 해당 관계를 사용하여 요소의 데이터를 다른 소스 요소와 바인딩하는 데 도움이 되는 마크업 확장입니다. 다른 객체의 속성이나 상대 부모에 대한 모든 객체의 Bindings 속성과 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.