1. COM? ¶
{{|Component Object Model, or COM, is a Microsoft technology for software componentry. It is used to enable cross-software communication and dynamic object creation in many of Microsoft's programming languages. Although it has been implemented on several platforms, it is primarily used with Microsoft Windows. COM is expected to be replaced to at least some extent by the Microsoft .NET framework. COM has been around since 1993 - however, Microsoft only really started emphasizing the name around 1997.
|}}
COM은 소프트웨어 컴포넌트를 위해 만들어진 Microsoft 사의 기술이다. 이는 수많은 MS사의 프로그래밍 언어에서 소프트웨어간 통신과 동적 객체생성을 가능케한다. 비록 이 기술이 다수의 플랫폼상에서 구현이 되기는 하였지만 MS Windows 운영체제에 주로 이용된다. 사람들은 .Net 프레임워크가 COM을 어느정도까지는 대체하리라고 기대한다. COM 은 1993년에 소개되고 1997즈음해서 MS가 강조한 기술이다.
90년대 마이크로소프트가 내놓은 가장 핵심적인 기술로 차후 ActiveX 를 이루는 기반기술이 된다. COM은 언어가 아니라 객체지향을 지향하는 바이너리를 만들어 내는 표준을 지정해놓은 것이다. 따라서 어떤 언어이던지 COM 표준에 부합하는 바이너리 형태를 생성할 수 있다면 그 언어로 작성한 바이너리는 언어 독립적으로 COM을 지워하는 곳에서 컴포넌트로서 사용이 가능하다. 고질적으로 진입장벽이 업청나게 높은 기술로 유명하지만... -_-; .NET 이 나오면서 어떻게 쓰이게 될런지는 미지수가 되어버린 기술이다. Vista 가 나오면 완전히 legacy 로 취급되게 될 것인지... -_-;; 이제 MFC는 사장의 길로 걸어가는 것 같고... 당장이야 워낙에 기반이 이 기술이다보니 어쩔 수 없겠지만 .net 사용이 궤도에 오르면 아마도 COM 도 머지않아 그렇게 되지 않을까 싶다.
|}}
COM은 소프트웨어 컴포넌트를 위해 만들어진 Microsoft 사의 기술이다. 이는 수많은 MS사의 프로그래밍 언어에서 소프트웨어간 통신과 동적 객체생성을 가능케한다. 비록 이 기술이 다수의 플랫폼상에서 구현이 되기는 하였지만 MS Windows 운영체제에 주로 이용된다. 사람들은 .Net 프레임워크가 COM을 어느정도까지는 대체하리라고 기대한다. COM 은 1993년에 소개되고 1997즈음해서 MS가 강조한 기술이다.
2. Migration from COM to .NET ¶
{{|
The COM platform has largely been superseded by the Microsoft .NET initiative and Microsoft now focuses its marketing efforts on .NET. To some extent, COM is now deprecated in favour of .NET.
Despite this, COM remains a viable technology with an important software base – for example the popular DirectX 3D rendering SDK is based on COM. Microsoft has no plans for discontinuing COM or support for COM.
There exists a limited backward compatibility in that a COM object may be used in .NET by implementing a runtime callable wrapper (RCW), and .NET objects may be used in COM objects by calling a COM callable wrapper. Additionally, several of the services that COM+ provides, such as transactions and queued components, are still important for enterprise .NET applications.
|}}
COM 플랫폼은 Microsoft .NET프레임웍이 나오면서 많은 부분 대체되었다. 또한 Microsoft 사는 이제 .NET에 대한 마케팅을 하는데 노력한다. 약간 더 나아가 생각해보면 .NET을 선호하는 환경에서 이제 사양의 길로 접어들었다.
그렇지만 COM은 여전히 소프트웨어의 중요한 기반들과 함께 실용적인 기술이다. 예를 들자면 DirectX 3D의 레더링 SDK 는 COM에 기반하고 있다. Microsoft 는 COM를 계속 개발할 계획도, 지원할 계획도 가지고 있지 않다.
RCW를 구현하고 있는 .Net 하에서는 COM 객체는 아마도 제한적으로 호환성의 측면에서 사용될 것이다. 또한 .NET 객체들은 아마도 COM callable wrapper를 호출하는 것 때문에 COM 객체들안에서 사용될 것이다. 덧붙여서 COM+가 제공하는 일부분의 서비스들(transaction, queued components)은 여전히 .NET 응용프로그램에서도 중요한 부분이다.
Microsoft COM Page
The COM platform has largely been superseded by the Microsoft .NET initiative and Microsoft now focuses its marketing efforts on .NET. To some extent, COM is now deprecated in favour of .NET.
Despite this, COM remains a viable technology with an important software base – for example the popular DirectX 3D rendering SDK is based on COM. Microsoft has no plans for discontinuing COM or support for COM.
There exists a limited backward compatibility in that a COM object may be used in .NET by implementing a runtime callable wrapper (RCW), and .NET objects may be used in COM objects by calling a COM callable wrapper. Additionally, several of the services that COM+ provides, such as transactions and queued components, are still important for enterprise .NET applications.
|}}
COM 플랫폼은 Microsoft .NET프레임웍이 나오면서 많은 부분 대체되었다. 또한 Microsoft 사는 이제 .NET에 대한 마케팅을 하는데 노력한다. 약간 더 나아가 생각해보면 .NET을 선호하는 환경에서 이제 사양의 길로 접어들었다.
그렇지만 COM은 여전히 소프트웨어의 중요한 기반들과 함께 실용적인 기술이다. 예를 들자면 DirectX 3D의 레더링 SDK 는 COM에 기반하고 있다. Microsoft 는 COM를 계속 개발할 계획도, 지원할 계획도 가지고 있지 않다.
RCW를 구현하고 있는 .Net 하에서는 COM 객체는 아마도 제한적으로 호환성의 측면에서 사용될 것이다. 또한 .NET 객체들은 아마도 COM callable wrapper를 호출하는 것 때문에 COM 객체들안에서 사용될 것이다. 덧붙여서 COM+가 제공하는 일부분의 서비스들(transaction, queued components)은 여전히 .NET 응용프로그램에서도 중요한 부분이다.
Microsoft COM Page
Is COM still supported? Is it going away? COM is a feature of Windows. Each version of Windows has a support policy described in the Windows Product Lifecycle. COM continues to be supported as part of Windows. COM is a planned feature of the coming version of Windows, code-named "Longhorn".
4. Thread ¶
COM 은 '언어'가 아닌 '기술'이다. 이는 ASP 가 VBScript 언어를 의미하지 않는 것과 같다.
예전에 COM 프로그래밍을 하다가 Java 에서의 결과물들을 보면서 'COM 은 OS 플랫폼/C & C++ 한계 내에서의 컴포넌트 모델이라면, Java 에서의 Component (Beans) 는 VM 위에서의 자유로운 컴포넌트 모델이구나' 라는 생각이 들기도. .NET 플랫폼 이후에 COM 이 사라지게 되는건 어쩌면 당연한 수순일 것이다.
COM 을 처음 공부하고 직접 구현할때에는 모든 것들이 신기해보인다. 팩토리네 스마트 포인터네 스텁-스켈레톤이네 인터페이스네 구현상속과 인터페이스상속은 다르네 등등. 하지만, 동급에 해당되어보이는 Java 플랫폼 내에서의 솔루션들을 보면 너무나 당연한건데 대단하게 표현되어있다거나 (예를 들면 '인터페이스 상속'. COM 책에서는 이걸 왜 무언가 새로운 대단한 기술인 양 서술했을까?) 아에 필요가 없는 기술일 수도 있다. (스마트 포인터 : VM 지원을 받는 플랫폼에선 전혀 필요가 없다.) (물론, 이건 COM 을 설명하던 책들중에 C++ 로 COM 을 구현을 설명하는 책들에 한함)
COM 을 공부하던 당시 들던 생각 : 무언가 특정 기술에 대해서 공부를 할때 너무나 생소한 용어들이 많이 나와서 '대단해보이는' 혹은 '무언가 있어보이는' 녀석들이 있곤 하다. 그 경우, 동급의 더 나은 기술들이 해당 문제들을 어떻게 해결하는지에 대한 관찰이 필요하다.
--1002
----
COM MFC/ObjectLinkingEmbedding
COM MFC/ObjectLinkingEmbedding