2010-02-04 13 views
10

De una persona que quiere saber más acerca de Windows Internals, leer el libro "Windows Internals", y querer entrar en el desarrollo de controladores, ¿está aprendiendo la programación COM una buena idea?Aprendizaje COM aún de cualquier uso?

¿Qué tan profundo debería llegar? Simplemente entienda los conceptos básicos o se debe avanzar en la comprensión, teniendo en cuenta lo anterior.

Respuesta

4

COM no se usa mucho en el desarrollo actual, pero hay una gran cantidad de software todavía usándolo. Solo entender lo básico debería ser suficiente.

+4

"COM no se usa mucho en el desarrollo actual" ... ¿en serio? Trabajo principalmente en .net, ¡pero paso mucho * * de tiempo interconectando con componentes basados ​​en COM! – Rob

+0

Interfaz con el software heredado, sí, por eso dije que debería aprender los conceptos básicos. Creando nuevos componentes COM, no tanto. – Joel

+2

Si obtiene una oferta de trabajo donde desarrollará COM, corra lo más rápido que pueda en la dirección opuesta. –

4

Los controladores de dispositivos de Windows no tienen nada que ver con COM. Puedes ignorarlo con seguridad.

+2

nota completamente cierta. hay una forma de COM utilizada por la pila de controladores multimedia. –

+2

+1 por ser la verdad, pero hay una cantidad sorprendente de API de nivel inferior con las que el póster podría encontrar una interfaz "COM-like". Me encontré con esto con la API de VSS, que tiene una implementación separada de IUnknown. Conocer COM me permitió comprender la API más rápidamente. – codekaizen

7

COM tampoco tiene mucho valor para el desarrollo del controlador de modo kernel, pero es potencialmente útil para los controladores de modo de usuario. DirectShow es COM, por ejemplo, e incluso hay un análogo COM liviano que se utiliza en los filtros DShow de modo kernel.

Hay un montón de código que es COM, y el código heredado tarda años o décadas en desaparecer. Pero lo más importante es que IMO es el hecho de que un ensamblado .NET se ve como objetos COM cuando se usa desde C/C++, así que creo que todavía hay algo de valor en saber COM si tiene la intención de seguir escribiendo el código C/C++.

Si planea cambiar a C#, Java o una de las docenas de otros idiomas sin indicadores que (a juzgar por las preguntas aquí un SO) la mayoría de los programadores han adoptado, entonces no, no vale la pena la oportunidad costo.

+4

Cuando insultas a las personas aquí, tienden a reaccionar al rechazar tus respuestas, así que las aprobaré. :RE –

1

Por un lado, COM parece ser el método preferido de Microsoft para interoperar entre código nativo y administrado (.Net). Y para ser honesto, .Net maneja bien COM.

Por otro lado, en las palabras inmortales de Lino Tadros:

COM es como fumar: Si usted no ha comenzado, usted no debe comenzar ahora, si ya lo está haciendo, es el momento de detener.

En lo personal, lo uso cuando tengo que hablar con los objetos COM existentes (como MSXML), o si es absolutamente necesario para hablar con un ensamblado de .NET de código nativo, donde algo así como las exportaciones no administrados no es una opción , pero no lo considero útil para un nuevo desarrollo.

Cuestiones relacionadas