닷넷 리모팅

닷넷 리모팅(.NET Remoting)은 닷넷 프레임워크(.NET Framework) 1.0 버전과 함께 2002년에 출시된 프로세스 간 통신을 위한 마이크로소프트 API(응용 프로그래밍 인터페이스)이다. 1990년에 16비트 윈도우 용 OLE(Object Linking and Embedding)의 첫 번째 버전으로 시작된 일련의 마이크로소프트 기술 중 하나이다. 이러한 기술 개발의 중간 단계는 1993년에 출시되고 1995년에 COM-95로 업데이트된 COM(Component Object Model), 1997년에 출시된 DCOM(Distributed Component Object Model) (그리고 Active X로 이름이 변경됨) 및 2000년에 마이크로소프트 트랜잭션 서버(MTS)와 함께 출시된 COM+였다. 이제 닷넷 프레임워크 3.0의 일부인 WCF (Windows Communication Foundation)로 대체되었다.   

CORBA(Common Object Request Broker Architecture) 및 Java의 RMI(Remote Method Invocation)와 같은 제품군 및 유사한 기술처럼 닷넷 리모팅은 복잡하지만 그 본질은 간단하다. 운영 체제 및 네트워크 에이전트의 도움으로 클라이언트 프로세스는 서버 프로세스에 메시지를 보내고 응답을 받는다.

개요 
닷넷 리모팅을 사용하면 응용 프로그램이 원격 경계에서 사용할 수 있는 개체(원격 개체라고 함)를 만들 수 있다. 여기에는 다른 응용 프로그램 도메인, 프로세스 또는 네트워크로 연결된 다른 컴퓨터도 포함된다. 닷넷 리모팅 런타임은 서버 애플리케이션의 앱도메인에 있는 객체에게 도착하는 요청을 처리하기 위한 리스너를 호스팅한다. 클라이언트 쪽에서 원격 가능 객체에 대한 모든 요청은 TCP 스트림, HTTP 스트림 및 명명된 파이프를 포함하여 실제 전송 모드를 캡슐화하는 채널 객체를 통해 닷넷 리모팅 런타임에 의해 프록시된다. 결과적으로 적절한 채널 객체를 인스턴스화하여 응용 프로그램을 다시 컴파일하지 않고도 다른 통신 프로토콜을 지원하도록 닷넷 리모팅 응용 프로그램을 만들 수 있다. 런타임 자체는 클라이언트 및 서버 앱도메인에서 객체의 직렬화 및 마샬링 작업을 관리한다. 

닷넷 리모팅은 원격 가능 객체의 참조를 클라이언트 응용 프로그램에서 사용할 수 있도록 만든 다음 원격 객체를 로컬 객체인 것처럼 인스턴스화하여 사용한다. 그러나 실제 코드 실행은 서버 측에서 이뤄진다. 원격 가능 객체는 활성화 URL로 식별되며 URL에 대한 연결로 인스턴스화된다. 객체에 대한 리스너는 서버가 원격 가능 객체에 연결하는 데 사용되는 채널을 등록할 때 원격 런타임에 의해 생성된다. 클라이언트 측에서 원격 인프라는 원격 가능 객체의 의사 인스턴스화로 사용되는 프록시를 만든다. 원격 가능 객체의 기능을 구현하지 않지만 흡사한 인터페이스를 제공한다. 따라서 원격 인프라는 원격 객체의 공용 인터페이스를 미리 알아야 한다. 메서드의 ID 및 전달된 매개 변수를 포함하여 개체에 대한 모든 메서드 호출은 바이트 스트림으로 직렬화되고 채널의 전송 통로에 써 넣음으로써 통신 프로토콜 종속 채널을 통해 서버 측의 수신자 프록시 개체로 전송된다( "마샬링 됨"). 서버 측에서 프록시는 싱크에서 스트림을 읽고 클라이언트를 대신하여 원격 객체를 호출한다. 결과는 직렬화되고 싱크를 통해 클라이언트로 전송되며, 여기서 프록시는 결과를 읽고 호출 애플리케이션에 전달한다. 원격 가능 객체가 일부 서비스에 대해 클라이언트 객체에 대한 콜백을 생성해야 하는 경우 클라이언트 애플리케이션은 이를 원격 가능으로 표시하고 원격 런타임 호스트가 이에 대한 리스너를 갖도록 해야 한다. 서버는 다른 채널을 통해 또는 기본 연결이 양방향 통신을 지원하는 경우 이미 존재하는 채널을 통해 연결할 수 있다. 채널은 서로 다른 이기종 전송을 사용하여 여러 개의 서로 다른 Channel 객체로 구성될 수 있다. 따라서 원격은 인터넷을 포함한 이기종 네트워크의 상호 연결로 분리 된 시스템에서도 작동할 수 있다. 유형 안전성은 CTS 및 닷넷 리모팅 런타임에 의해 시행된다. 원격 메서드 호출은 본질적으로 동기적이다. 스레딩 라이브러리를 사용하여 비동기 호출을 구현할 수도 있다. 사용자 지정 채널을 사용하거나 IIS에서 원격 개체를 호스팅한 다음 IIS 인증 시스템을 사용하여 클라이언트에 대한 인증 및 액세스 제어를 구현할 수 있다. 
원격 프로시저 호출
마이크로소프트 API