Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modularizar Los Programas

Iniciado por shephiroth, 06 de Octubre de 2004, 09:31:06 PM

« anterior - próximo »

shephiroth

 Muy buenas.

Lo primero explicaré el titulo. Yo tengo un pograma dispuesto en modulos. Demomento cada modulo lo estaba "codeando" en un .c y .h diferentes. El programa se va a ir haciendo bastante grande y me gustaría separar los modulos cada uno en su proyecto.

Habia pensado crear una dll por cada modulo, y el programa principal que fuese el que gestionase todo....en principio todo bien. Tras hacer un backup para no perder datos me meto al .net, creo un proyecto "Biblioteca de clases c++ administrada" (Biblioteca de clases que utiliza Extensiones administradas para C++.) que creo q es el que necesito, configuro todos los proyectos para que crees las dll en la misma carpeta y creo q el exe para que llame a las dll........ejecuto y funciona todo perfecto, exactamente igual q si no existieran dichas dll.....el problema vino por otra parte......el ejecutable anterior ocupaba unos 100 Kb en Release.......y cada uno de los dll ocupan 64Kb.......no me puedo permitir que el proyecto salte de 100 Kb a 400Kb si no me ofrece mas ventajas que inconvenientes........

Ahora la pregunta es..........crar dll ofrece ventajas que demomento no se ven, pero conforme aumente el proyecto se harán visibles?? Hay alguna otra manera de modularizar el programa que desconozca??

Hay otra que aunque no tiene q ver con el proyecto, tiene mucho que ver con el tema en sí. Hace un tiempo lei que los archivos .dll eran muy poco seguros, que era mejor crear archivos .ocx (creo q asi eran).........no le di mucha importancia, pero ahora me salta la duda.......que sabeis del tema?? es un bulo?? no compensa??

GRACIAS

Zaelsius

 Las DLL's, o Librerías de Enlace Dinámico, tienen la ventaja de que sólo se cargan en memoria cuando una aplicación las necesita. Además, una sóla instancia de la DLL es guardada en memoria, siendo compartida por todas las aplicaciones que la utilicen.

¿Cúando utilizar DLL's?

- Cuando varias aplicaciones van a requerir de las mismas funcionalidades.

- Cuando una aplicación sólo va a requerir de los servicios de la DLL a veces(por ejemplo, una DLL para un driver D3D y otro para GL).

- Para distribuir librerías de funciones(a terceros), de manera que la aplicación cliente no necesite enlazar estáticamente las funciones necesarias. Así se mantiene una separación lógica y física, que permite actualizar sólo la DLL de la libreria en caso de que aparezca una nueva versión(no siempre es así).

Si lo que necesitas es tener mejor organizada la estructura interna de tu aplicación, pues aprende un poco más sobre programación orientada a objetos(Usas C o C++¿?).

Lo que no se puede hacer es liarse a crear DLL's para cada 3 o 4 clases, si no se va a cumplir ninguna de las condiciones anteriores(seguro que me he dejado algun caso, o he metido la pata en alguno.. corregidme!  ;)  )

Edit:

El tema de las DLL's y OCX.

Yo por lo que sé, los OCX son componentes Activex/controles de VB. Si dicen que son más seguros quizá sea porque pueden estar(o no) firmados digitalmente. Las DLL's de C++ sólo contienen al fin y al cabo código máquina, con lo cual pueden ser reventadas o crackeadas igual que otro programa.

No sé si vá por ahí a lo que te estabas refiriendo..  :huh:  

[EX3]

 
Cita de: "ZaelSiuS"(...) Yo por lo que sé, los OCX son componentes Activex/controles de VB. (...)
Una duda que me viene a la cabeza, que yo sepa en C++ (y Delphi incluso) se pueden utilizar tb controles ActiveX tales como OCX, eske recuerdo haberlos usado (y creado) en VC++ 6 cuando hice el master de programacion hace algun tiempo. Es correcto o me falla la memoria?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

sés

 Creo que son objetos COM, por lo que pueden ser utilizados por cualquier lenguaje.
Soy indeciso... ¿o no?

synchrnzr

 (¿Esto no debería ir en el foro de programación?) :)

sync

_Grey

 No estoy seguro de que lo que necesites sean DLL's.

Quiza te seria mas util, que esos modulos, en lugar de compilarse en DLL's, lo hiciesen en un .lib, y despues el proyecto principal enlaze con estos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.