Pregunta novato .NET Platform (COM, API, DLL)

24/11/2006 - 00:02 por Camilo | Informe spam
Saludos a todos los miembros de este grupo!

Estoy estudiando para obtener la certificación 70-305 (Desarrollar
aplicaciones web con .NET) y tengo algunas dudas conceptuales que
seguramente le serán muy fáciles de resolver a quienes tienen bastante
experiencia; mi problema es el siguiente: Cuando se habla de la plataforma
.NET, se habla de código administrado (managed code) a través del CLR. Sin
embargo, estoy estudiando que .NET provee algunas clases para interoperar
con COM y con EXE's y APISs, DLL's heredadas. La pregunta es: Que es
exactamente (en palabras cortas) cada una de estas cosas (COM, EXE's, API's
DLL's), y en especial, enque se diferencia COM de las DLL's o API´s
heredadas? Yo entiendo que una DLL es una librería, y un EXE es un
ejecutable, pero no entiendo que hay detrás de esto. Tampoco de COM (que no
corresponde con un tipo de archivos; lo que he leido hablan de un modelo de
programación, pero no logro aterrizar la idea).

Por otro lado, en uno de los ejemplos que he mirado ilustran como llamar al
procedimiento GetSystemInfo de la API "kernel32.dll". Por lo que veo, uno
debe conocer la DLL para poder saber que métodos invocar y qué parametros
proporcionar. Como sabe uno eso? Hay un mapa o algo donde uno sepa cada DLL
que "tiene por dentro"?

Mis dudas son simplemente conceptuales, y como soy nuevo en el mundo de la
programación no me interesa (por ahora al menos) conocer en detalle esto del
COM y amigos; simplemente quiero poder entender conceptualmente para cuando
se presente la necesidad de integrar una aplicación o utilizar una DLL o un
componente viejo.

Muchas gracias por la ayuda,


Camilo Arango
 

Leer las respuestas

#1 RFOG
24/11/2006 - 09:20 | Informe spam
En pocas palabras, todo lo que comentas es lo que, desde el mundo .NET se ha
dado en llamar código antiguo u obsoleto, que realmente no lo es y todavía
siguen haciéndose miles y miles de programas bajo esas tecnologías.

Un API es un Application Program Interface, o sea, un Interfaz para
Programación de Aplicaciones, o sea una serie de "cosas" disponibles para
construir programas.

Win32 es el API nativo u original de Windows. Son miles y miles de funciones
disponibles para que el programador las use y construya sus programas. Están
escritas en C y C++ y son el núcleo y centro de todos los Windows, incluso
el Vista. Esas funciones se agrupan en diferentes ficheros, conocidos como
DLLs y ejecutables.

Una DLL es un fichero que contiene un grupo de funciones o clases
empaquetados convenientemente. Digamos que es el concepto anterior a
ensamblado.

Un exe es un programa ejecutable -aunque no siempre, podría ser sólo una DLL
u otra cosa-.

Generalmente una aplicación "obsoleta" es un conjunto de DLLs, ficheros
varios y uno o más ejecutables. Es la forma tradicional de trabajar en
cualquier sistema operativo desde el principio de los tiempos (de hecho el
propio sistema operativo no es más que eso). Aplicaciones "obsoletas"
escritas con DLLs y EXEs son el Word, el PowerPoint, el Autocad, el Outlook
(el del Office y el Express), el Explorador de Windows, el bloc de notas, el
Visual Studio...

El "GetSystemInfo" que nombras es una función disponible en el API Win32,
igual que hay unos cuantos miles de ellas más y que ofrece Windows a los
programadores para que las llamen. Todo eso está documentado en la MSDN que
acompaña a tu Visual Studio y en la versión OnLine:
http://msdn2.microsoft.com/en-us/li...fault.aspx

La descripción de la función está aquí:
http://msdn2.microsoft.com/en-gb/li...4381.aspx, y verás que al final
te dice en qué fichero .H se ecuentra su definición y en qué DLL está
alojada.

COM es un modelo de compomentes o de programación, igual que el NET pero
algo más antigua; la idea es tener componentes y juntarlos de forma que
todos ellos formen una aplicación. Trabajar con COM de forma nativa es
enormemente complejo, y bajo .NET se ha simplificado bastante. Parecido a
juntar DLLs con EXEs y obtener una aplicación, pero los elementos COM son
"inteligentes" en el sentido de que se autodescriben y ofrecen interfaces
para su uso, digamos que es el origen de la reflexión en NET.

Y no pienses que el NET es la panacea de todas las panaceas, no es más que
una máquina virtual que ejecuta una serie de bibliotectas de igual forma que
el Java, y tampoco se trata de una biblioteca completa, si no no haría falta
utilizar código legado.

No dudes en preguntar más si no lo tienes claro.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programaci?n: http://geeks.ms/blogs/rfog
Libros, ciencia ficcion y programacion
Hombre invisible busca mujer transparente para hacer lo nunca visto.

"Camilo" wrote in message
news:
Saludos a todos los miembros de este grupo!

Estoy estudiando para obtener la certificación 70-305 (Desarrollar
aplicaciones web con .NET) y tengo algunas dudas conceptuales que
seguramente le serán muy fáciles de resolver a quienes tienen bastante
experiencia; mi problema es el siguiente: Cuando se habla de la plataforma
.NET, se habla de código administrado (managed code) a través del CLR. Sin
embargo, estoy estudiando que .NET provee algunas clases para interoperar
con COM y con EXE's y APISs, DLL's heredadas. La pregunta es: Que es
exactamente (en palabras cortas) cada una de estas cosas (COM, EXE's,
API's DLL's), y en especial, enque se diferencia COM de las DLL's o API´s
heredadas? Yo entiendo que una DLL es una librería, y un EXE es un
ejecutable, pero no entiendo que hay detrás de esto. Tampoco de COM (que
no corresponde con un tipo de archivos; lo que he leido hablan de un
modelo de programación, pero no logro aterrizar la idea).

Por otro lado, en uno de los ejemplos que he mirado ilustran como llamar
al procedimiento GetSystemInfo de la API "kernel32.dll". Por lo que veo,
uno debe conocer la DLL para poder saber que métodos invocar y qué
parametros proporcionar. Como sabe uno eso? Hay un mapa o algo donde uno
sepa cada DLL que "tiene por dentro"?

Mis dudas son simplemente conceptuales, y como soy nuevo en el mundo de la
programación no me interesa (por ahora al menos) conocer en detalle esto
del COM y amigos; simplemente quiero poder entender conceptualmente para
cuando se presente la necesidad de integrar una aplicación o utilizar una
DLL o un componente viejo.

Muchas gracias por la ayuda,


Camilo Arango

Preguntas similares