DCOM 을 활용할 경우가 어떤것이있나요?
글쓴이: jw8704 / 작성시간: 토, 2010/08/07 - 3:24오전
안녕하세요
COM/DCOM 관련 책을 보고있는데요
DCOM 을 활용할만한 경우가 어떤것이있나요? 만약 꼭 DCOM 기술을 사용해야지만 실현될수있는 응용프로그램이라면 이해하기 더 쉽겠지만..
그렇지않다면 DCOM 을 썼을때 더 효율적으로 될수있는 경우라도 있다면 알고싶어서요..
뭐가있을까요??..
제가 생각해본건 컴포넌트제작자가 클라이언트에 컴포넌트를 설치하지않아도된다??..
소켓관련한 루틴을 어쩌면 작성하지않아도된다??(아직 DCOM 을 해보지않아서 잘 모르지만..)
사실 DCOM 으로 할수있는건 소켓으로 클라이언트 프로그램짜고 서버프로그램 짜면 다 될것같기도합니다.
그건 DCOM 이 소켓프로그래밍의 응용분야에 속하기도 하기 때문이겠죠..(제생각 ㅡㅡ)
아마 DCOM 으로 할수있는걸 socket 으로 못할건 없다고 생각하구요..
그러다보니 아! DCOM 이 이런걸 이렇게 가능하게 해주는구나.. 하고 이해가 잘안되는것같습니다.
만약 꼭 DCOM 이어야하는게있다면 이해하기쉬울것같은데..
그게아니어도 DCOM 을 활용하는 경우에 대한 다른분들의 의견을 들어보고싶습니다.
안녕히계세요.
ps.아, 참고로 제가 말하고있는 내용중에 전제하고있는 전제조건이 잘못되었다던가(즉 제가 기본적으로 이해하고있는것)
또 내용이 잘못된게있다면 알려주시면 정말 감사하겠습니다.
Forums:
분산객체
"그러다보니 아! DCOM 이 이런걸 이렇게 가능하게 해주는구나.. 하고 이해가 잘안되는것같습니다.
만약 꼭 DCOM 이어야하는게있다면 이해하기쉬울것같은데. "
밥벌이하는 개발자라 깊은 이해는 없습니다만 저도 이런 근본적인 의문(?)에 관심이 많습니다.
용어가 너무 어려워서 그렇지 결국 기술은 필요에의해서 생겨납니다.
대규모 시스템에서-꼭 그럴 필요는 없지만-A,B,C 등등의 서비스들이 있습니다.
혹은 대큐모 시스템에서 어떤 개발 관점이든 쪼개서 개발을 합니다. 분할하여 정복하는 거지요.
결국 단위 시스템들은 효율적으로 통합되어 하나의 시스템을 이루어야 합니다.
통합을 위해서든 연계를 위해서든 다른 구성요소(컴포넌트 들)간의 연계(인터페이스)가 필요하게 됩니다.
그리고 이게 훨씬 더 효율적이게 설계를 합니다.
그럼 통합할 필요가 생겼습니다.
이를 가능하게 하는 하나의 기술 중 하나가 분산객체를 활용하는 것이 됩니다.
물론 따로 따로 개발하고 Web Service를 이용하거나 XML로 주고 받거나 RPC를 하나 정해서 쓰거나 같은 것이 실현이 됩니다.
또 이를 효율적으로 하기위해 ESB라는 것도 있고 EAI, SOA 등등 결국은 관점의 차이인데 좀 어렵죠.
따로 따로 개발할 수 밖에 없거나 다른 기관간의 연계, 혹은 다른 솔루션과의 연계에서는 이런 개념이 필수적입니다.
분산객체 역시 COM/DCOM도 있지만 JAVA RMI, CORBA, EJB 다양한 것들이 존재 합니다.
소켓이나 기타 네트워크를 통해서 연계하는 것 보다는 하나의 표준으로 연계하는 것이 훨씬 편한 것은 자명한 일이죠.
그래서 각자 다른 구성요소(컨포넌트 들)간의 연계(인터페이스)를 위해 프레임웤을 DCOM이나 EJB등으로 제공한 것이죠.
이런 방법들이 생겨나니 결국 설계 시에 너무 잘게 쪼개는 문제도 발생합니다.
그래서 쓸데 없는 DCOM이 난립한다거나 인터페이스가 인터페이스가 아닌게 된다거나
때문에 DCOM을 관리하는데 더 많은 노력이 든다거나 등의 문제요.
물론 너무 크게 쪼개면(컴포넌트화 하면) 역시 그 안에서는 이미 소프트웨어 개발의 복잡도로 인해 생기는 문제가
마구 발생합니다.
자 이상 제가 아는 걸 설명 드렸구요.
결론만 쉽게 말씀드리면 Socket으로 짜도 안될 건 없지만 분산객체 기술을 쓰는게 더 나으니까 쓰는 거죠.
(속도, 안정성, scalability, 안정적 설계 등등)
그리고 빠르고 안정적이고 기타 강점이 많으면 분산객체를 쓰는게 당연하겠죠.
머 web server에 php를 쓰는 이유는 c++로 html을 만들어서 내려보내는 서버 소켓 어플리케이션을 만드는 것 보다
더 나으니까 겠죠.
"그렇지않다면 DCOM 을 썼을때 더 효율적으로 될수있는 경우라도 있다면 알고싶어서요.."
답을 쓰다 보니 이 답변을 쓰는게 핵심인거 같네요.
소프트웨어를 개발하다 보니 커지면 커질 수록 개발이 어려워지고 그래서 CBD라는 개념을 생각해 냈습니다.
CBD로 하다 보내 Component들 간의 인터페이스 문제가 있고 이를 분산해야 할 필요도 생겼습니다.
그래서 CORBA니 JAVA RMI 등등을 내세웠습니다. 이걸로 하면 분산객체가 편해(저도 이게 엄청 안편하다는 경험을 가지고 있기는 합니다-_-)
MS는 COM개념에 플러스 알파 DCOM으로 대응한 것이 되지 않을까요 ?
답이 되었는지는 잘 모르겠습니다.
저도 공부 좀 하다 몇 일 있다 삭제 하겠습니다. 자신이 없네요
답변 감사합니다.
감사합니다, 도움이 되었습니다.
그런데 왜 지우시나요?? 지우지마세요.
그냥.
이미 답을 찾으신거 같아서... 그냥 지나가다가 덧붙입니다.
개인적인 궁금증은 '왜 DCOM책을 보고 계시느냐' 입니다.
거진 10년이 되었고, 지금은 사장기술이 아닌가 하거든요.
굳이, java 진영과 비교하자면,
DCOM은 EJB 정도에 해당하는 기술입니다.
물론, 정확히 말하면, EJB에 해당하는 MS의 CBD로는
DCOM보다는 COM+가 정확하겠지만요.
MS가 OLE기술을 ActiveX component라는 이름으로 확장시키면서
이 기술을 사용하면, local 뿐만 아니라 remote의 component도
동일 방법으로 사용 가능하다면서 이를 이름붙인 것이 DCOM이라고 기억합니다.
n-tier 모델링이 시장의 관심사가 되면서,
component server 같은게 필요해졌고,
DCOM보다는 MTS를 사용하는 방법을 사용하게 되었고요.
DCOM은 그다지 잘 사용하지 않았던걸로 기억합니다.
가끔..
"왜 그것을 공부하냐.." 하는 말을 들을 때가있죠..
하지만 전 그것에 대해 후회해본적이 단 한번도 없습니다.
덧붙여서 말씀드리자면..
그것이 사장기술이든.. 다른사람들의 관심분야가 아니든.. 오래된기술이든..
그어떤것도 상관없습니다.
단지 알고싶고 공부하고싶으면 하는겁니다.
좋은 태도지만 최신기술과 연계시켜 공부하세요
소켓으로 다 되는데 DCOM을 왜 쓰느냐...
이런 질문은 어셈으로 다 되는데 C언어같은게 왜 필요하느냔 질문과 비슷합니다.
원격 호출을 소켓레벨로 구현하자면 그만큼 많은 삽질이 필요하기 땜에 DCOM같은게 필요했던거죠.
지금은 사장기술이라도 어차피 RPC라는 기본 뼈대가 오늘날 여기저기 쓰이고 있기 때문에
공부해두시면 좋습니다.
다만 최신 기술과 같이 연계하실 필요가 있습니다.
전통적인 RPC랑 맥락은 좀 달라도 웹서비스에 이용되는 다양한 프로토콜들이 있습니다.
그런것들과 같이 곁들여(?) 공부해보세요. 그렇게 해 두면 개별 기술을 넘어 기술들의 전체적인 지형도가
그려질겁니다.
참고로, 안드로이드에는 Binder라는 놈도 있습니다. 이게 분산객체 기술과도 비슷(?)하거든요.
실 프로젝트 수행하시면서 이런 기술들을 전체적인 맥락을 파악해보세요.
DCOM같은 특정한 기술만 봐서는 제대로 공부가 안될거예요. 연계되어 있는 다양한 기술들을 같이 공부하세요.
감사합니다.
좋은 답변 감사드립니다.
DCOM 아직도 쓰나요? 마이크로소프트에서도 이미
DCOM 아직도 쓰나요?
마이크로소프트에서도 이미 포기한 기술인거로 압니다만..
닷넷 시대에 왠 구석기 시대 기술을...
COM쪽보다는...
web service 를 한번 찾아보시는걸 일단 추천드리구요.
web service라는게 뭐 간단히 말하자면... 웹으로 DCOM을 하자. 뭐 이런거라서요 ㅎㅎ
그리고 DCOM은 뭐...거의 사장됐지요. (내부적으로 윈도는 여전히 수많은 COM+객체지만요)
여튼 XML-RPC나 web service를 공부하시는걸 다시한번 추천!!
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/