// getFile 함수
// 파일을 읽어 파일 내용을 '문자열(string)'로 반환한다.
// @param url string - 파일의 경로
// @return string '파일 내용' / bool false
function getFile(url)
{
// 인터넷 익스플로어러가 아닌 경우 XMLHttpRequest COM 객체를 호출
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
// 인터넷 익스플로어러인 경우 Microsoft.XMLHTTP 객체를 ActiveX로 호출
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
// XMLHttpRequest 객체를 생성 했으면
if (AJAX) {
// GET 방식으로 입력받은 'url'으로 stream을 연다.
AJAX.open("GET", url, false);
// 스트림에 값을 전송한다.
AJAX.send(null);
// 스트림에서 내용을 받아와서 결과 값으로 반환해준다.
return AJAX.responseText;
} else {
// XMLHttpRequest에 실패했다.
return false;
}
}
// 위에서 작성된 함수를 가지고 'http:// ... .. ' 위치에서 파일의 내용을 읽어와 변수에 할당
var fileFromServer = getFile('http://somedomain.com/somefile.txt');
// fileFromServer 변수 안에는 txt파일의 내용이 들어있다.
'Program'에 해당되는 글 105건
- 2007.04.02 레이아웃 프로젝트
- 2007.04.01 프로젝트 문서 압축
- 2007.03.30 레이아웃_시나리오_PPT 1
- 2007.03.30 레이아웃_시나리오_마스터 1
- 2007.03.30 동기 JavaScript 원격지 호출 1
- 2007.03.29 .NET Remoting - HTTP, TCP 2개의 체널을 통한 Remoting 예제 1
- 2007.03.29 초기 기획 PPT / 시나리오 종합
- 2007.03.29 Remoting - 활성화와 프록시 객체의 개요
- 2007.03.28 전체적인 시나리오 요약
- 2007.03.28 협의에 필요한 것들
먼저 리모팅(Remoting)을 이용하기 위해
1. 원격 객체를 작성한다.
2. 원격 객체를 Remoting 서비스할 Tcp, Http 채널을 각각 열어주는 서버를 제작한다.
3. 원격 객체를 다루게 될 Client를 Tcp, Http로 각각 작성한다.
위와 같은 순서로 프로젝트 4개를 작성하고 서로 원격 객체를 참조하고 리모팅 어셈블리를 참조해서 구현하게 됩니다.
TCP, HTTP 각각 체널에서 원격 프록시 객체(Remoting Proxy)를 생성하는 방법은 SAO 방법중 Activator.GetObject()를 사용하였다.
위의 예제 코드는 첨부 파일에 포함되어있습니다.
활성화와 프록시 객체의 개요
-
원격 객체 활성화 방법
-
서버 활성화 객체(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;
서버 활성화 객체로 프록시 객체 생성
- 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;