원격 서비스 의 버전 정보 
 . NET Framework 고급 개발 . NET Remoting . NET Framework Remoting 개요 
 . NET Framework Remoting 개요 원격 서비스 의 버전 정보 
 기본 . NET Framework Remoting 응용 프로그램 빌드 
 . NET Framework Remoting 아키텍처 
 개체 를 원격 으로 사용 가능 하 도록 설정 
 개체 활성 화 및 수명 
 원격 응용 프로그램 구성 
 . NET Framework Remoting 에서 IPv 6 사용 
 원격 서비스 의 보안 
 비동기 원격 서비스 
 방법 : 비동기 적 으로 원격 개체 메 서드 호출 
 원격 개체 메 서드 비동기 호출 과 관련 된 문제 
 CallContexts 및 직접 원격 서비스 
 원격 서비스 는 강력 한 이름 의 어셈블리 작업 을 위해 디자인 되 었 습니다 . 원격 서비스 에 강력 한 이름 을 사용 하 는 경우 다음 과 같 은 기본 규칙 이 적용 됩니다 . 
 IMethodCallMessage 인터페이스 구현 의 TypeName 속성 에 항상 버전 이 포함 됩니다 . 
 IConstructionCallMessage 인터페이스 구현 의 ActivationTypeName 속성 에 항상 버전 이 포함 됩니다 . 
 ObjRef 개체 에 저장 된 TypeInfo 속성 에 항상 버전 이 포함 됩니다 . 
 원격 서비스 의 다른 모든 버전 은 사용 중 인 포맷 터 의 includeVersions 속성 에 의해 결정 됩니다 . 기본 적 으로 BinaryFormatter 개체 는 버전 정보 를 생성 하 지만 SoapFormatter 개체 는 생성 하 지 않 습니다 . 이 속성 은 채널 을 만들 때 프로그래밍 방식 으로 변경 하 거나 원격 구성 파일 을 통해 설정 할 수 있 습니다 . 
 이 섹션 에서 는 이러 한 규칙 이 개체 참조 에 미치 는 영향 과 원격 서비스 에서 여러 활성 화 모델 이 일반 적 으로 사용 되 는 방법 에 대해 설명 합니다 . 
 서버 가 활성 화 한 개체 
 서버 는 클라이언트 에서 서버 가 활성 화 한 ( 또는 < wellknown >) 개체 에 연결 할 때 활성 화 되 는 형식 의 버전 을 제어 합니다 . 서비스 를 구성 할 때 버전 정보 를 제공 하 지 않 으면 개체 를 활성 화 할 때 어셈블리 의 가장 최근 버전 이 사용 됩니다 . 예 를 들 어 두 개 의 어셈블리 MyHello 버전 1 . 0 . 0 . 0 과 MyHello 버전 2 . 0 . 0 . 0 이 있 는 경우 버전 정보 를 제공 하 지 않 으면 버전 2 . 0 을 사용 하 여 잘 알려진 개체 가 활성 화 됩니다 . 이 버전 은 클라이언트 를 빌 드 할 때 참조 된 버전 에 관계없이 사용 됩니다 . 
 특정 버전 의 어셈블리 를 사용 하 도록 서비스 를 구성 할 수 있 습니다 . 예 를 들 어 다음 구성 파일 에서 는 버전 지정 방법 을 보여 줍니다 . 어셈블리 가 전역 어셈블리 캐시 에 있 는 경우 culture 정보 와 공개 키 를 비롯 한 모든 형식 정보 를 지정 해야 합니다 . 다음 구성 예제 에서 는 문자열 이름 정보 를 생략 하 여 버전 지정 에 중점 을 둡니다 . 
 이 파일 에서 는 MyHello 어셈블리 의 버전 1 . 0 . 0 . 0 을 사용 하 여 클라이언트 에 대한 개체 를 만들 도록 지정 합니다 . 끝점 에서 동일 한 개체 의 버전 을 두 개 이상 지정 하 면 개체 를 활성 화 할 때 마지막 으로 지정 된 버전 이 사용 됩니다 . 동일 한 개체 의 버전 간 에 주요 변경 내용 이 있 는 경우 클라이언트 에 부정 적 인 영향 을 줄 수 있 습니다 . 버전 간 에 메 서드 매개 변수 를 추가 하 거나 수정 한 경우 버전 1 . 0 에 대해 컴파일 된 클라이언트 를 버전 2 . 0 에 사용 하 면 예외 가 throw 됩니다 . 따라서 버전 간 에 주요 변경 내용 이 있 는 경우 개체 의 새 버전 을 다른 끝점 에서 호스팅 하 는 것 이 좋 습니다 . 
 클라이언트 가 활성 화 한 개체 
 클라이언트 에서 클라이언트 가 활성 화 한 ( 즉 , < activated >) 개체 를 활성 화 하 면 네트워크 호출 이 서버 로 전송 되 며 , 여기 서 요청 된 개체 가 활성 화 되 고 개체 에 대한 개체 참조 가 클라이언트 로 반환 됩니다 . 클라이언트 에서 개체 활성 화 를 지정 하 기 때문 에 활성 화 할 개체 의 버전 도 선택 합니다 . 예 를 들 어 클라이언트 가 개체 의 버전 1 . 0 에 대해 빌드 된 경우 서버 에서 HelloService 버전 1 . 0 이 활성 화 되 고 클라이언트 가 버전 2 . 0 에 대해 빌드 된 경우 서버 에서 HelloService 버전 2 . 0 이 활성 화 됩니다 . 
 서비스 를 구성 할 때 클라이언트 가 활성 화 한 형식 의 버전 번호 를 지정 할 수 는 없 습니다 . 또한 서버 가 활성 화 한 형식 에 대해 제공 된 모든 버전 정보 는 두 형식 이 동일 한 어셈블리 에 있 는 경우 에 도 클라이언트 가 활성 화 한 개체 에 영향 을 주 지 않 습니다 . 
 예 를 들 어 클라이언트 가 활성 화 한 형식 과 서버 가 활성 화 한 형식 이 동일 한 어셈블리 에 있 고 버전 1 . 0 에 대해 client 1 을 빌 드 하 고 버전 2 . 0 에 대해 client 2 를 빌 드 합니다 . 서버 가 활성 화 한 개체 에 대해 버전 정보 를 지정 하 지 않 으면 client 1 은 서버 가 활성 화 한 개체 의 버전 2 . 0 과 클라이언트 가 활성 화 한 개체 의 버전 1 . 0 을 받 습니다 . Client 2 는 잘 알려진 형식 과 활성 화 된 형식 에 대해 모두 버전 2 . 0 을 받 습니다 . 
 잘 알려진 개체 에 대해 어셈블리 버전 1 . 0 을 사용 하 도록 서비스 를 구성 하 면 두 클라이언트 가 모두 잘 알려진 개체 의 버전 1 . 0 을 받 지만 client 1 은 활성 화 된 형식 의 버전 1 . 0 을 받 고 client 2 는 활성 화 된 형식 의 버전 2 . 0 을 받 습니다 . 
 클라이언트 에 대해 활성 화 된 버전 은 구성 할 수 없 습니다 . 클라이언트 빌드 시 사용 된 버전 이 항상 사용 됩니다 . 
 개체 참조 
 서버 가 활성 화 한 형식 및 클라이언트 가 활성 화 한 형식 에 적용 되 는 동일 한 규칙 이 개체 참조 에 도 적용 됩니다 . 예 를 들 어 클라이언트 가 활성 화 한 형식 의 프록시 가 매개 변수 로 한 클라이언트 에서 다른 클라이언트 로 또는 클라이언트 에서 서버 로 전달 되 는 경우 개체 참조 에 포함 된 버전 정보 도 함께 전달 됩니다 . 수신자 가 개체 참조 에서 생성 된 프록시 에서 메 서 드 를 호출 하 려고 하 면 개체 참조 에 포함 된 버전 이 클라이언트 빌드 시 사용 된 버전 보다 우선 합니다 . 서버 가 활성 화 한 개체 의 경우 서버 가 사용 되 는 버전 을 제어 하 고 개체 참조 를 매개 변수 로 받 는 모든 클라이언트 는 서비스 를 구성 할 때 지정 된 버전 과 통신 합니다 . 버전 이 없 을 경우 서버 의 최신 버전 이 활성 화 됩니다 . 
 값 에 의한 마샬 링 개체 
 MBV ( 값 에 의한 마샬 링 ) 개체 를 응용 프로그램 도메인 간 에 전달 하 는 경우 사용 되 는 포맷 터 에 따라 버전 정보 의 포함 여부 가 결정 됩니다 . BinaryFormatter 개체 는 항상 버전 을 포함 하 고 SoapFormatter 개체 는 버전 정보 를 무시 합니다 . 두 포맷 터 에 대해 모두 이 옵션 을 활성 화 하 거나 비활성 화 할 수 있 습니다 . 예 를 들 어 구성 파일 에 다음 줄 을 추가 하 면 SoapFormatter 가 개체 를 serialize 할 때 버전 정보 를 추가 합니다 .