2007. 3. 29. 11:47
활성화와 프록시 객체의 개요
-
원격 객체 활성화 방법
-
서버 활성화 객체(SAO: Server Activated Object) - Well Known 객체라고도 함
-
SingleCall 방식
-
함수 호출 요청이 있을 때마다 객체 생성
-
-
Singleton 방식
-
클라이언트 함수 호출 요청이 있을 때 단 하나의 객체를 생성한 후 하나의 객체를 공유
-
-
-
클라이언트 활성화 객체(CAO: Client Activated Object)
-
-
서버 활성화와 클라이언트 활성화
-
서버에 의해서 원격 객체가 자동으로 만들어지면 서버 활성화 기법이라고 한다.
-
클라이언트에서 프록시 객체를 만들 때 원격 객체가 만들어지면 클라이언트 활성화 기법이라고 한다.
-
-
클라이언트의 프록시
-
클라이언트에서는 원격 객체를 참조하기 위한 가상의 객체를 만들게 되는데 이 객체를 프록시 객체라고 한다.
-
이 프록시 객체를 이용해서 클라이언트는 원격 객체를 핸들할 수 있다.
-
-
프록시 객체를 생성하는 방법
-
new를 사용하는 방법 : 서버 활성화, 클라이언트 활성화에서 사용
-
Activator.GetObject() 함수를 사용하는 방법 : 서버 활성화에서 사용
-
Activator.CreateInstance () 함수를 사용하는 방법 : 클라이언트 활성화에서 사용
-
클라이언트 활성화 객체로 프록시 객체 생성
클라이언트 활성화 객체 방식으로 프록시 객체를 생성하는 방법에는 new와 Activator.CreateInstance() 두가지 방법을 사용할 수 있다.
다음은 그 예를 보여준다.
// 1. new 키워드로 생성
RemotingConfiguration.RegisterActivatedClientType(
typeof(CaoHello.CaoHello)
, "tcp://localhost:9009/"
);CaoHello.CaoHello h = new CaoHello.CaoHello(pars[0].ToString());
// 2. CreateInstance로 클라이언트 생성
object obj = Activator.CreateInstance(typeof(CaoHello.CaoHello), pars, attrs);
CaoHello.CaoHello h = (CaoHello.CaoHello)obj;
서버 활성화 객체로 프록시 객체 생성
- new를 사용하는 방법 : 서버 활성화
- Activator.GetObject() 함수를 사용하는 방법
- RemotingService.Connect()를 이용한 프록시 생성
- Activator.GetObject() 함수를 사용하는 방법
- RemotingService.Connect()를 이용한 프록시 생성
// 1. Activator.GetObject() 를 이용한 SAO
object obj = Activator.GetObject(
typeof(SaoHello.SaoHello)
, "tcp://localhost:9099/BaboSaoHello"
);
SaoHello.SaoHello h = (SaoHello.SaoHello)obj;
// 2. New를 이용한 SAO
WellKnownClientTypeEntry entry = new WellKnownClientTypeEntry(
typeof(SaoHello.SaoHello)
, "tcp://localhost:9099/BaboSaoHello"
);
RemotingConfiguration.RegisterWellKnownClientType(entry);SaoHello.SaoHello h = new SaoHello.SaoHello();
// 3. RemotingServices.Connect()를 이용한 SAO
object obj = RemotingServices.Connect(
typeof(SaoHello.SaoHello)
, "tcp://localhost:9099/BaboSaoHello"
);SaoHello.SaoHello h = (SaoHello.SaoHello)obj;