La DLL tiene muchos usos en Windows. Muchos tipos de códigos de biblioteca se almacenan en DLL. Uno de estos, por ejemplo, es ensamblados .net, que es una bestia diferente.
DLL COM no es mejor que "DLL Binary PE simple" porque COM DLL es también DLL.Lo que hace DLL DLL COM está exponiendo, posiblemente además de otras cosas, ciertas exportaciones que coinciden con un determinado contrato (firma) [búsqueda de entrada IUnknown], o incluso varios tipos de interfaces canonizadas [búsqueda de entrada 'dual interface'] que no permiten solo creación de instancias de objetos específicos dentro de la DLL pero también descubrimiento automatizado de servicios, incluidos nombres de funciones y tipos de parámetros.
Las interfaces duales hacen que sea muy útil para vincular a los lenguajes de scripting (utilizados en web, scripts de shell, programas educativos, etc.) porque a los programadores de scripts no les importa el tipeo estricto. Una interfaz dual expuesta por COM DLL permite al scripting runtime consultar exactamente qué tipos espera y hacer los lanzamientos adecuados, sin interrupciones para el usuario.
Esta flexibilidad permite la construcción de una gigantesca infraestructura COM, que incluye el registro de componentes, DCOM (invocación a través de la red), etc. Hace más conveniente proporcionar interfaces COM en componentes de Windows (WMI, por ejemplo) y oficina componentes. Se implementaron muchas otras interfaces populares por encima de COM, como ADO.
Todo esto es bueno, pero COM no "prevalece" en ningún sentido. Las DLL COM son una minoría de DLL. Los archivos DLL simples y .NET son muy populares. Microsoft considera que las interfaces .net son superiores a COM. Muchos fanáticos de Unix y otros consideran que las DLL son una mala idea, ya que no ofrecen servicios de vinculación en tiempo de ejecución en el mismo sentido que los objetos compartidos de Unix. A pesar de ser un desarrollador de Windows, también creo que los SO brindan una alternativa superior, y espero tenerlos una vez.
¿Qué te hace pensar que COM prevalece? No me sorprendería si más DLL fueran clásicas DLL 'c' que COM DLL's. –
Gracias por su comentario. Tal vez yo estoy equivocado. Pero parece que muchas características de Windows se basan en COM, como ActiveX, OLE, incluso .NET está construido como una colección de servidor COM. Entonces llegué a esa conclusión. – smwikipedia