Que son los COM?

09/01/2004 - 17:42 por Ignacio | Informe spam
Que son los COM, para que se usan?
:$
Gracias

Preguntas similare

Leer las respuestas

#1 Juan Carlos Paramá
09/01/2004 - 18:05 | Informe spam
Hola,

COM es el modelo de objetos (Component Object Model) desarrollado por
Microsoft (y ahora siendo sustituido por el .NET) para la creación de
componentes que puedan llamarse desde cualquier lugar. Es código compilado
en vez de correr sobre una maquina virtual como hace la plataforma NET, y la
idea era muy buena, pero los programadores somos un poco chapuzas y no se
nos puede dejar hacer muchas cosas :) En cualquier caso la plataforma .NET
también es muy buena.

Para utilizar un objeto COM desde la plataforma .NET hay que crear un
Proxy que permita comunicarse con el "protocolo" de COM. Desde el Visual
Studio es tan sencillo como seleccionar la referencia. Si se hace con el SDK
hay una utilidad (AxImp.exe) que genera el código del proxy.

Si es desde otro lenguaje, pues depende, desde VB 6. Simplemente se
selecciona la referencia en el dialogo apropiado y listo. Con Delphi, más o
menos igual. Con visual C++ importar la libreria de tipos, etc. Incluso se
puede hacer "a mano" si el lenguaje lo permite (C o C++, por ejemplo) pero
hay que conocer perfectamente como trabaja COM para hacerlo.

Saludos,

Juan Carlos Paramá

"Ignacio" escribió en el mensaje
news:0cdc01c3d6cf$8a27e2f0$
Mostrar la cita
#2 Tristan
14/01/2004 - 09:28 | Informe spam
Solo añadir que a mi juicio la pega fundamental de COM,
por la que creo ha sido sustituido, es por su gran
complejidad y por que es un estandar binario. Estas dos
cosas han hecho que su migración a otras plataformas haya
sido imposible en la práctica. Por contra .net, tal como
ha quedado demostrado en poco tiempo, es mucho más
sencillo de migrar.

Aunque es cierto que funcionar sobre una máquina virtual
tiene además importantes ventajas de cara a la seguridad.
Imagino que es a lo que te refieres con las cosas que no
se nos pueden dejar hacer a los programadores.
#3 Juan Carlos Paramá
14/01/2004 - 11:57 | Informe spam
Hola,

"Tristan" escribió en el mensaje
news:06f001c3da78$5dc10f50$

Mostrar la cita
No creo que la migración haya sido la causa principal del cambio
a la plataforma NET. Opino que la razón principal para el cambio
ha sido precisamente limitar los errores que el programador puede
cometer.

Mostrar la cita
En parte. Pensaba exactamente en dejar en manos del programador
cosas como el contar las referencias, liberar la memoria y "sobre todo"
el mantener la compatibilidad binaria de los componentes. La idea de
COM en ese aspecto me parece correcta y el "Infierno de las DLLs" no
puede achacarase en ese aspecto a COM, si no a los programadores que
en vez de añadir nuevas interfaces cuando cambiaba un componente rompian
la compatibilidad binaria (muchas veces por desconocimiento de las
consecuencias
a largo plazo. En esto hay que reconocer que VB puede tener algo de culpa al
hacer
muy sencillo crear componentes COM sin saber realmente lo que se esta
haciendo).

.NET elimina este problema permitiendo multiples versiones de componentes.
Las
referencias son manejadas internamente y la recolección de memoria elimina
los
problemas de "olvidarse" de equivocarse al contar referencias y/o de
eliminar el
objeto cuando las referencias llegan a 0.

Para mi, estos tres cambios, son las razones fundamenteles del cambio.
Evidentemente,
si adicionalmente puedes expandirte a otras plataformas, bienvenido sea,
pero no creo
que fuese una razón realmente importante en la decisión. Pero claro, es solo
mi opinión.
No tengo ni idea de las decisiones que llevaron a .NET

Saludos,

Juan Carlos Paramá
#4 Tristan
14/01/2004 - 13:29 | Informe spam
En realidad he leido de fuentes próximas a MS que esas
han sido las razones. Hay que tener en cuenta que
internet ha cambiado totalmente las cosas. Ahora es mucho
más importante cumplir estandares abiertos. Es evidente,
que era una gran ventaja de Java frente a otras opciones,
y MS lo sabía perfectamente.

En realidad la solución a los problemas que nombras, no
requería una máquina virtual, ni un cambio total de
plataforma y de filosofía. Podría haberse resuelto con
muchísimo menos esfuerzo y con una cambio menos
traumático. No creo que hubiese sido imposible añadir un
recolector de basura a COM, ni solucionar de una forma
similar a como se ha hecho en .net el problema
del "infierno de las DLLs"

Realmente creo que para ver la gran ventaja de utilizar
una máquina virtual en .net, hay que pensar en la
posibilidad, teoricamente posible, de que una misma
aplicación pueda ejecutarse (algún dia) de forma directa
en cualquier plataforma. De cara al desarrollo Web es
considerable.
#5 Juan Carlos Paramá
14/01/2004 - 16:37 | Informe spam
Hola,

"Tristan" escribió en el mensaje
news:0b6801c3da9a$1a77bf60$

Mostrar la cita
Lo del "infierno de las DLLs" ya estaba medio solucionado con
la instalación by-side, pero en mi opinión esa solución es una
autentica chapuza. Un parche para algo que no estaba previsto
originalmente. Y lo del recolectgor de basura ... hombre, imposible
es mucho decir, pero no veo como puede añadirse un recolector
de basura a un sistema en el que el contar las referencias y liberar
la memoria es cosa del programador. A menos que rediseñes todo
el sistema para evitar esos dos puntos.

Mostrar la cita
Es indudable, pero tampoco parece que Microsoft este muy interesada
en introducirse en otras plataformas.

Saludos,

Juan Carlos Paramá
Ads by Google
Search Busqueda sugerida