대개 일반적으로 서버 - 클라이언트의 프로그램을 작성한다 이를 투티어(Two-tier) 응용프로그램이다.
이외에 다 계층 프로그램을 작성시
Business 티어에서 사용하는 방법 중의 하나가
.Net 리모팅이다.
이전에 웹 서비스도 마찬가지로 다계층 방식으로 응용 프로그램 작성시
Business 티어 에서 사용하는 한 방법일 뿐이다.
그럼 리모팅이 무엇인지 알아보자.
서로 다른 어플리케이션 간에 객체나 메소드에 접근하는 분산 객체 기술이다.
다은음 기본적인 동작을 흐름도로 표시했다.
-마샬링
a에서 b로 객체의 메소드 호출시
메소드 호출에 필요한 전달 인수와, 또는 반대로 결과값 등을 묶어서
전달하는 것을 마샬링이라한다.
-참조에 의한 마샬링은 두 응용프로그램이 같은 도메인 즉 같은 컴에
존재하는 경우
-값에 의한 마샬링 두 응용 프로그래이 서로 다른 도메인에 있는 경우
사용되며, 객체의 직력화가 필요하다.
포매터
두 응용프로그램 간에(도메인) 마샬링된 값이 전달될때
마샬링된 값은 메세지로 변환되어 전송이 되는대
이 메세지로 변환하는 작업을 하는것이 포매터이다.
포매터에는 SOAP 포매터와 바이너리 포매터가 있다.
채널
위 포매터에 의해서 생서된 메세지가 전달되는 통로를
채널이라하면 HTTP 채널과 TCP 채널이 있다.
포매터를 지정하지 않으면
HTTP 채널에는 SOAP 포매터가 사용되며
TCP 채널에는 바이너리 포매터가 사용된다.
-프록시
-메시지 싱크(언마샬링)
-호스팅 어플리케이션
원격 객체는 객체이기 때문에 클라이언트의 요청을 받아 원격 객체의 소멸과 생성을 하는 대리인이
필요한대 이것을 해주는 것이 호스팅 어플리케이션이다.
여기서는 채널,포매터,원격 객체의 활성화 모드를 설정한다.
정리하면 리모팅은
서버 ----------- 호스팅 어플리케이션 ---------- 클라이언트라고 보면 된다.
나머지 내용들은 내부적으로 처리되는 내용들이다.
활성화란 원격 객체가 생성되어 원격 호출을 받을 준비가 된 상태를 말하며
여기에는 서버 활성화와 클라이언트 활성화가 있다.
서버 활성화에는 또다시 SingleCall과 SingleTon이 있다.
서버 활성화는 원격 객체의 생성과 소멸을 시점을 결정한다.
SingleCall은 같은 클래스 원격 호출이 이루어질때마다 객체가 따로 생성이된다.
즉, 클라이언트 메소드가 호출될 때마다 원격 개체가 생성이되며,
객체의 상태가. 유지 되지 않는다.
SingleTon은 같은 클래스 하나의 객체만 생성이되고, 원격 호출을 모두 이 객체가 처리한다.
즉, 서버에는 오로지 하나만의 객체가 생성이 되며 이 소멸은 서버가 저하며, 클라이언트가 얼마가 되었든
그것과 무관하게 서버의 하나의 클래스에는 하나의 개체만 생성이 된다. 따라서 각 클라이언트는 같은 객체를
공유하게 된다.
다음 이미지는 SingelTone과 SingeCall의 차이이다.
전자는 Singlecall이고 후자는 SingleTone이다.
클라이언트 활성화는 원격 객체의 활성화를 클라이언트가 결정한다,
즉 클라이언트에서 객체를 생성하면 바로 원격 객체하나가 생성되고,클라이언트에서 참조가 끝나면
바로 원격 객체가 소멸된다. CAO(Client Activeate Object) 모드라고 한다.
서버 활성화 방법
-원격 개체
원격 개체는 새 프로젝트에서 클래스 라이브러리(DLL) 선택하여 프로젝트를 생성한다.
원격 개체의 클래스는 System.MarshalByRefObject를 상속받아야만 한다.
- 호스팅 프로그램
참조에서 원격 개체 프로젝트를 추가한다.
System.Runtime.Remoting을 추가한다.
'닷넷(.NET)' 카테고리의 다른 글
URL 인코딩,디코딩 클래스 (0) | 2012.08.23 |
---|---|
Visual Studio 2010 VB.Net에서 비동기 웹 서비스 호출 (0) | 2012.07.19 |
visual Studion 2010의 vb.net에서 웹서비스 사용하기 (0) | 2012.07.19 |
웹서비스란?, vb.net 2010에서 웹서비스 만들기 (0) | 2012.07.19 |
전용 어셈블리, 공유 어셈블리 (0) | 2012.07.06 |