Talk:Component Object Model

message: There's a "lighter" way of using COM too. According to the COM Specification (draft version 0.9 from October 1995, which doesn't seem to be available from Microsoft anymore, but you can get it from this archive.org page), COM objects don't need to be instances of COM classes or CoClasses (see chapter 3.6 of COM Specification). As long as an object supports at least one COM interface, it can be called a COM object. Its class doesn't have to be publicly available for instantiation. So COM interfaces can be used as an efficient means of communicating with any kind of applications or DLLs. It's object-oriented unlike plain vanilla DLL API functions. Many applications use COM interfaces internally. Did you know that Borland Delphi objects' interfaces are COM-compatible by default, even if you don't bother dealing with CoWhatever? COM interfaces are a simple but very powerful concept.
:Visual Basic does this too; it implements IDispatch-based interfaces for all your objects, even those that you don't export. Perhaps VB uses a private, internal ClassFactory for these, but it probably doesn't. Shinobu 04:26, 27 June 2007 (UTC)
replies: text: An OCX control, or OLE custom control is essentially a coclass implementing the intefaces necessary to enable applications that can embed controls via those interfaces, to embed objects of this class as a visible, interactive control. Usually their implementation is housed in a dynamic link library with the .ocx extension. Shinobu 04:26, 27 June 2007 (UTC)
thread_title:  COM lite 

message: I'm unsure whether ActiveX is a synonym of COM. Isn't it -- like DirectX -- based on COM? --GatesPlusPlus 11:26, 6 Feb 2005 (UTC)
replies: text: Yup, ActiveX is just another technology using COM, right? What redirect it here? --minghong 08:37, 13 May 2005 (UTC)
replies: text: Has since been fixed. Shinobu 08:51, 2 July 2007 (UTC)
thread_title: ActiveX

message: I read or heard somewhere that there are more bad uses of ActiveX rather than legitimate uses.  Is this true? -x42bn6 8 July 2005 04:15 (UTC)
:No. ActiveX is the same as Automation. It's a software componentry system that is used extensively by your system, and by a lot of software people use daily. ActiveX is just a specification of how software components interact with each other. This is not intrinsically good or bad. However, what is bad, is letting untrusted native software loose on your computer. So if your browser asks you to install an ActiveX control, or Firefox plugin, decline. What can be done in webpages using ActiveX controls and Firefox plugins can usually be done with Java applets, and these can be properly sandboxed, making them (barring bugs in the Java VM) completely safe. So if a website owner decided to use an ActiveX control or Firefox plugin instead, you have a very good reason to be very suspicious indeed. Only install ActiveX controls, Firefox plugins, or any software for that matter, if you fully trust the source. Shinobu 04:15, 27 June 2007 (UTC)
thread_title:  More malicious uses of ActiveX over legitimate uses? 

message: The text looks like its taken directly from MS:
----
What is Active-X
What is ActiveX?
ActiveX is a set of technologies from Microsoft that enables interactive content for the World Wide Web. Before ActiveX, Web content was static, 2-dimensional text and graphics. With ActiveX, Web sites come alive using multimedia effects, interactive objects, and sophisticated applications that create a user experience comparable to that of high-quality CD-ROM titles. ActiveX provides the glue that ties together a wide assortment of technology building blocks to enable these "active" Web sites.
What Are Its Primary Benefits?
    * Active Web Content with Impact that will attract and retain users.
    * Open, Cross-Platform Support on Macintosh®, Windows® and UNIX® operating systems.
    * Familiar Tools from a wide assortment of tools and programming language vendors, including Visual Basic®, Visual C++®, Borland® Delphi®, Borland C++, Java, and Java-enabled tools. Developers can use what they know and be productive immediately.
    * Existing Inventory of ActiveX controls available today for immediate use by Web producers.
    * Industry Standards, with built-in support for key industry and de-facto marketplace standards, including HTML, TCP/IP, Java, COM, and others.
What Are Its Elements?
ActiveX includes both client and server technologies.
    * ActiveX Controls are the interactive objects in a Web page that provide interactive and (UTC)user-controllable functions and hence enliven the experience of a Web site.
    * ActiveX Documents enable users to view non-HTML documents, such as Microsoft Excel or Word files, through a Web browser.
    * Active Scripting controls the integrated behavior of several ActiveX controls and/or Java Applets from the browser or server.
    * Java™ Virtual Machine is the code that enables any ActiveX-supported browser such as Internet Explorer 3.0 to run Java applets and to integrate Java applets with ActiveX controls.
    * ActiveX Server Framework provides a number of Web server-based functions such as security, database access, and others.
What Can It Do?
ActiveX brings innovation and interactivity to the Web. Because it is supported by many different languages and tools, it enables developers with varied backgrounds and expertise to bring their creativity to the Web. Based on a refinement of the existing COM standard already known by thousands of developers, it can leverage the knowledge and work of the development community without a steep learning curve. And because it is a third-generation technology with extensive third-party support, it provides the richest development platform for both Internet and intranet Client/Server applications available today. ActiveX takes the most creative and innovative software development efforts and enables them to work together seamlessly in a Web site. With thousands of these software components already existing, an exciting collection of interactive objects is available for immediate use by Web producers.
Why Is It Important?
ActiveX makes it fast and easy for developers and Web producers to create unique, interactive Web sites that will make the Internet fundamentally more useful and productive. Web producers don't have to start from scratch and build all the parts of their interactive Web site by hand, because there are already more than 1,000 reusable controls available in the market. And because ActiveX can be used with a wide variety of programming languages from dozens of vendors, developers and Webmasters can make use of their current expertise to more quickly create compelling content. They can also accommodate a wide range of users, as ActiveX will be supported on multiple operating system platforms.
How Does It Compare with Java?
ActiveX provides a standard mechanism to extend any programming language, including Java. ActiveX extends the capabilities of the Java language by allowing Java developers to integrate their applets with the richness of ActiveX. ActiveX ties Java applets together with objects created in other languages, so that Java programmers can link to ActiveX controls directly from their Java programs. By the same token, objects written in other programming languages from multiple vendors can link to Java applets. ActiveX is the glue that ties them all together, delivering the most powerful Web technologies in an open, integrated platform. By providing a common way to extend and link programming languages including Java, ActiveX maximizes developers' resources for interactive Web development. See ActiveX and Java for more information on extending Java with ActiveX.
Who Supports It?
Small, medium and large software companies currently create ActiveX controls, including companies such as Borland, Oracle and Sybase/Powersoft. As a result of their work, there are more than 1,000 existing ActiveX controls available for use today by Web producers. In addition, 14 companies who create Web design and development tools have built ActiveX support into their products, allowing their customers to both create and make use of ActiveX controls in their programs. Microsoft's Internet Explorer supports ActiveX, and Microsoft provides the ActiveX plug-in for Netscape® Navigator®, enabling the broadest range of Internet users to view ActiveX-enabled Web pages.
Where Does It Run?
ActiveX is currently supported on the Windows operating system. Microsoft is working with Metrowerks to support ActiveX on the Macintosh platform, and is also working with Bristol and Mainsoft to support it on UNIX platforms. Developers who write ActiveX controls and other ActiveX objects will be able to reach the widest possible user audience with this cross-platform solution.
----
so it is probably a copyvio and would need to be reworked...  --RN 07:30, 30 July 2005 (UTC)
thread_title:  ActiveX text 

message: This article may be great for what it is, (or not, I don't have the expertise to say), but isn't an encyclopedia suposed to explain things to people who don't already understand the subject matter?
I am a programmer of sorts, mostly a self-trained hack, but fairly skilled. But I come from the unix world mostly. I sure wish there were a wikipedia article that would explain some of microsoft's alphabet soup of technologies to people who don't already know most of it. I can click links all day in these wikipedia articles, from COM to OLE to WinFX to .NET, but they all seem to link back to each other and none of them explain it to non wondows-experts.
--Headybrew 11:05, 29 May 2006 (UTC)
replies: text: Hm. I think the opening sentence already describes what COM does / what it's for, and if you want technical or historical details, you can read those sections. Is there any specific part of the article that is hard to understand? Shinobu 03:53, 27 June 2007 (UTC)
replies: text:  The opening paragraph is ridiculously obtuse, with unnecessarily technical language used instead of providing a basic introduction to the article and allowing more detailed description in the body of the article 90.195.27.222 (talk) 00:41, 2 February 2010 (UTC)
thread_title:  Where's the laymen's version of this article? 

message: "Also, a COM component should theoretically always have better performance than a matching managed .NET component."
Is this actually true? In theory .NET is faster, since it doesn't require every function call to be virtual, and doesn't need to constantly AddRef/Release object references.
: It does the same and 10 times more, it's just hidden from the programmer. How the hell do you think it manages reference counting, if not with functions similar to AddRef/Release?
:: Pretty simple, it doesn't use reference counting at all, but a tracing, compacting, generational garbage collector. -- int19h 18:45, 25 May 2007 (UTC)
thread_title:  .NET performance 

message: This article needs some cleanup, especially the History section, which tends to repeat itself quite a bit. Also, I deleted the line "Also, a COM component should theoretically always have better performance than a matching managed .NET component" because it's a controversial and unsubstantiated claim. Depending on who you talk to, some people will say that JIT compiled langauges should theoretically be faster than natively compiled languages because the JIT language has the oportunity for machine-specific optimizations. Without any citation, it's just noise and doesn't really add anything to the article.12.34.246.4 22:25, 30 November 2006 (UTC)
thread_title:  Cleanup 

message: COM has a sordid history.  It has left a trail of technology that will be with us for years to come.  It all started when it was decided that it would be a good idea were it possible, for example, to embed a spreadsheet inside a word processor document such that updates to the spreadsheet would automatically update the document.  At the same time, software componentry as a solution to the code reuse problem was very promising.  Programmers were expected to master incantations of environment, instantiation, interface probing, graceful degradation of function in the event the latest object version is unavailable, reference counting, and so on and so forth.  After all those things are done, there is still the minor detail of slaying the dragon the program one is trying develop is supposed to slay.  What is missing from COM is ease of reflection that allows a programmer to make runtime decisions based on what is on offer in a COM library.  That is what the .NET Framework excels at and why COM is the past and the .NET Framework the present and future.--151.200.244.58 18:38, 2 December 2006 (UTC)
thread_title:  COM Obsolete? 

message: When visualizing COM objects, one often draws cute little diagrams like:
    ______________________
   |      ____________    |
   |     |            |   |
 O-+-----| InterfaceA |   |
   |     |____________|   |
   |    ________________  |
   |   |  ____________  | |
   |   | |            | | |
   | O-+-| InterfaceB | | |
   |   | |____________| | |
   |   |  ____________  | |
   |   | |            | | |
 O-+---+-| InterfaceC | | |
   |   | |____________| | |
   |   |________________| |
   |______________________|
Since these are so commonly used, wouldn't it make some sense to have an example in the article? Not as horrible ASCII art of course, but as SVG? Shinobu 03:47, 27 June 2007 (UTC)
thread_title:  Object diagrams 

message: Looking at the number of Wikipedia articles that can be categorized under COM, how about creating a "Component Object Model" category like .NET has?  —Preceding unsigned comment added by Xpclient (talk • contribs) 09:51, 4 February 2008 (UTC)
replies: text: Not a bad idea. Just add Category:Component Object Model to relevant pages and write a blurb for the category page. I'd do it myself, but I'm going down for maintenance. Shinobu (talk) 04:46, 6 September 2008 (UTC)
thread_title:  Separate category for COM 

message: This article completely ignores the DCE RPC layer that COM evolved from.  In particular, ignoring that omits the fact that major parts of the COM history are non-microsoft.  —Preceding unsigned comment added by 202.160.48.164 (talk) 20:21, 18 December 2008 (UTC)
thread_title:  Historical information is highly misleading 

message: I really wish the blurb on COM+ were more thorough and detailed. I just started work at a company with an enterprise app that leans on COM+ heavily, and I had hoped to come away with a better understanding of how it works and why one would want to use it.
Chrisfeohpatti (talk) 16:03, 30 March 2009 (UTC)
replies: text: Then you'd better ask the app's developers. That's be faster than crawling all the way on your own. — Vano 08:53, 21 November 2009 (UTC)
thread_title:  COM+ 

message: Although remoting/marshalling is a common problem both .NET and COM address, I don't see how COM is deprecated in favor of .NET. .NET is by no means an alternative to COM for native development, even after C++/CLI is introduced (due to the dependency on .NET Fx).  —Preceding unsigned comment added by 41.235.169.14 (talk) 23:11, 17 July 2009 (UTC)
thread_title: COM deprecation in favor of .NET

message: Is that specification available anywhere? Looks like everyone knows the details (since they write COM-compatible compilers/libraries) but no one says a thing! How disgusting... — Vano 10:30, 27 January 2010 (UTC)
thread_title:  COM Application binary interface 

message: This section starts "COM standardizes the instantiation (i.e. creation) process of COM objects by requiring the use of Class Factories".  Class Factories are absolutely NOT required for object creation.
Example 1: Many system COM objects are created with an API call (e.g. CoGetMalloc).
Example 2: In a Document Object Model implemented in COM the root object may well have a factory, but other objects are created using methods on the root.  —Preceding unsigned comment added by 86.178.56.128 (talk) 21:32, 9 March 2010 (UTC)
thread_title:  Instantiation 

message: In 1995, Bristol Technology, Inc. developed OLE1 technology for use in UNIX platforms.  However, when MS released OLE2, Microsoft raised the fees to a level that it became unaffordable for BT to continue developing OLE2.  
See related article at http://www.techlawjournal.com/courts/bristol/Default.htm
Wheger (talk) 20:27, 18 March 2010 (UTC)
thread_title:  COM from other vendors. 

message: I've always wondered how some objects are valid DCOM objects (for example objects created by VB6), and some objects can only be used by local COM (for example, all of MS Office).
If you could DCOM to DAO (a MS database object), you could set up a DAO Network Database Server: You can't do that because of some difference in the object.
But nothing here or at DCOM to explain how the interface differs.122.107.141.71 (talk) 23:52, 11 October 2010 (UTC)
thread_title:  COM and DCOM 

message: Not adding these directly to the article, because I don't have secondary sources.
* Microsoft abbreviates the neutral apartment as NA, not NTA.
* For STA, this is not correct: "Thus, the COM run-time provides automatic synchronization to ensure that each method call of an object is always executed to completion before another is invoked."  If the method in the STA calls into another apartment (except NA), then another method can be run in the STA while the first method is waiting, so the methods need to prepare for this kind of reentrancy.
* In Windows 8, there is also Application Single-Threaded Apartment (ASTA).  App threading and DirectX
85.131.104.149 (talk) 06:59, 25 June 2013 (UTC)
thread_title:  apartment types 

message: Came looking for a description of the difference between 32 bit COM and 64 bit COM, (and if COM+ thunking is possible)  — Preceding unsigned comment added by 203.206.162.148 (talk) 05:47, 24 March 2017 (UTC)
thread_title:  bittness (32 bit, 16 bit, 64 bit) 

message: Hello fellow Wikipedians,
I have just modified one external link on Component Object Model. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20090215185257/http://innovatia.com/software/papers/com.htm to http://www.innovatia.com/software/papers/com.htm
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
Cheers.—InternetArchiveBot (Report bug) 19:23, 11 August 2017 (UTC)
thread_title:  External links modified