반응형

위치 독립성이라 함은 COM 서비스를 사용하는 코드가

COM 서비스를 가진 코드가 위치한 곳을 알지 못해도...

또한 COM서비스를 구현한 방식이 어떤 방식인지(in-proc...등등) 알지 못해도...

동일한 방식으로 COM 서비스를 사용할수 있게 해주는 것을 말한다.


이전에 Core COM에서 설명한 적이 있었던 걸로 기억된다.


다시한번 위치 독립성을 살펴보기 위해 COM의 세가지 방식을 알아보자.


첫째는 In- Proc Server방식이다.

COM 서버는 DLL,OCX등의 형태로 제공되어 COM을 사용하는 클라이언트의 프로세스에

살며시 녹아들어간다. COM을 사용하는 클라이언트는 COM을 포인터와 같은 직접적인

메모리 주소로 액세스하게 되어, 빠른 속도의 액세스와 응답을 가질수 있는 반면...

COM 서버자체에 문제가 있을때도, COM 서버를 사용한 클라이언트의 메모리까지 영향을

받는다는 문제가 있고, 공간적인 제약으로써는 같은 PC에 존재하여야 하는 단점을 갖는다.


두번쨰는 Out-Proc Server방식이다.

이 방식에서 COM 서버는 exe형태의 스스로 실행될수 있는 상태의 코드로 존재한다.

COM서버를 사용하는 클라이언트가 서비스를 요청하면, Windows는 등록된 COM exe 서버를

자동으로 동작시키고, 더이상 필요하지 않다면 COM Server 스스로 자신을 종료한다.

이 방식에서는 COM Server가 독립된 프로세스를 가지며, 클라이언트의 요청에 응답한다.

그리고, 클라이언트와 서버의 통신은 COM에서 제공하는 특별한 프로토콜로 인해 이루어진다.

이 방식은 다른 프로세스를 가지고 있기 떄문에 COM Server의 문제가 직접적으로 클라이언트에게

영향을 주지 않는다는 장점과 첫째방식인 In-Proc방식보다는 느린 응답, 세번쨰 방식보다는 빠른 응답속도를 갖는다.


세번째는 DCOM이라고 불리는 방식이다.

이 방식에서 COM은 다른 머신에 위치해 있을수도 있다. Windows의 도움으로 다른 머신에

있는 COM서버를 이용할수 있게 되므로, 흔히 말하는 분산 컴퓨팅 환경의 장점과 단점을 가진다.

다른 머신에 있는 COM 서버의 사용으로 인해 CPU등 컴퓨팅 리소스의 분산 활용이 가능해지며,

대신 전체적인 네트웍의 부하증가를 가져올수 있다.


COM의 위치 독립성이란,


COM을 사용하는 입장에서는 위의 세가지 방식중에 어떤 방식이라도 똑같은 코드로 구현된다는

것이다.

COM을 사용하는 사람은 COM이 자기 프로세스에 들어오는지, 다른 프로세스로 존재하는지,

심지어는 다른 머신에 존재하는 COM인지를 고려하지 않고 동일한 방법으로 코드를

작성할수 있다.


이제 그 구조를 파보려고 한다.


이와 관련된 기술이름들은 Proxy, Stub, Marshaling등이다.


Proxy는 클라이언트의 요청을 수집하여 정리하고 이를 COM 서비스에

전달하는(Stub에게 전달) 일을 하는 것을 말하며,

Stub은 Proxy가 보내온 정보를 해석하여 이를 실제 서비스에게 전달하고,

그 응답을 다시 Proxy에게 보내는 일에 관여하는 것을 말한다.

그리고 이 일련의 과정을 Marshaling이라고 한다.

반응형

+ Recent posts