Vi y he hecho muchos productos pequeños donde un mismo programa se separa en un ejecutable y varias DLL, y esas DLL no son solo bibliotecas compartidas hechas por otra persona, sino bibliotecas que se hacen exclusivamente para este software, por el mismo equipo desarrollador. (No estoy hablando aquí de productos a gran escala que solo requieren cientos de DLL y los comparten extensivamente con otros productos).¿Por qué crear archivos DLL en lugar de compilar todo en un ejecutable grande?
Entiendo que separar el código en varias partes, cada una compilando en una DLL separada, es bueno desde el punto de vista de un desarrollador. Significa que:
- Si un desarrollador cambia un proyecto, tiene que volver a compilar solo este y los dependientes, que pueden ser mucho más rápidos.
- Un proyecto puede realizarlo un único desarrollador en un equipo, mientras que otros desarrolladores solo usarán las interfaces proporcionadas, sin entrar en el código.
- Las actualizaciones automáticas del software a veces pueden ser más rápidas, con un impacto menor en el servidor.
Pero, ¿y el usuario final? ¿No es malo entregar una pieza de software compuesta de un EXE & varias DLL, cuando todo se puede agrupar? Después de todo:
- El usuario no puede siquiera entender lo que son esos archivos y por qué se llenan de memoria en su disco duro,
- El usuario puede querer mover un programa, por ejemplo guardarla en una unidad flash USB . Tener un ejecutable grande hace las cosas más fáciles,
- La mayoría del software anti-virus comprobará cada DLL. Comprobar un ejecutable será mucho más rápido que el ejecutable más pequeño y docenas de bibliotecas.
- El uso de DLL hace que algunas cosas sean más lentas (por ejemplo, en .NET Framework, debe encontrarse una biblioteca "buena" y marcada si está firmada),
- ¿Qué ocurre si se elimina una DLL o se reemplaza por una versión incorrecta? ? ¿Cada programa maneja esto? ¿O se cuelga sin siquiera explicar lo que está mal con eso?
- Tener un ejecutable grande tiene some other advantages.
Así que ¿No es mejor, desde el punto de vista de los usuarios finales, para programas pequeños/medianos, entregar un ejecutable grande? Si es así, por qué no hay herramientas que permitan hacerlo fácilmente (por ejemplo, una herramienta mágica integrada en IDE comunes que compila toda la solución en un ejecutable, no cada vez, por supuesto, pero a pedido o durante el despliegue).
Esto es de alguna manera similar a putting all CSS or all JavaScript files into one big file para el usuario. Tener varios archivos es mucho más inteligente para el desarrollador y más fácil de mantener, pero vincular cada página de un sitio web a dos archivos en lugar de docenas optimiza el rendimiento. De la misma manera, CSS sprites son terribles para los diseñadores, ya que requieren mucho más trabajo, pero son mejores desde el punto de vista de los usuarios.
Necesita ser CW? –