¿Cuál es la diferencia entre un marco y una biblioteca? [cerrado]

Resuelto anbanm asked hace 16 años • 22 respuestas

¿ Cuál es la diferencia entre un marco y una biblioteca ?

Siempre pensé en una biblioteca como un conjunto de objetos y funciones que se enfocan en resolver un problema particular o un área específica de desarrollo de aplicaciones (es decir, acceso a bases de datos); y un marco, por otro lado, como una colección de bibliotecas centradas en una metodología particular (es decir, MVC) y que cubre todas las áreas del desarrollo de aplicaciones.

anbanm avatar Sep 29 '08 20:09 anbanm
Aceptado

Una biblioteca realiza operaciones específicas y bien definidas.

Un marco es un esqueleto donde la aplicación define el "meollo" de la operación al completar el esqueleto. El esqueleto todavía tiene código para vincular las partes, pero el trabajo más importante lo realiza la aplicación.

Ejemplos de bibliotecas: protocolos de red, compresión, manipulación de imágenes, utilidades de cadenas, evaluación de expresiones regulares, matemáticas. Las operaciones son autónomas.

Ejemplos de marcos: sistema de aplicaciones web, administrador de complementos, sistema GUI. El marco define el concepto, pero la aplicación define la funcionalidad fundamental que interesa a los usuarios finales.

Jason Cohen avatar Sep 29 '2008 13:09 Jason Cohen

En realidad, estos términos pueden significar muchas cosas diferentes según el contexto en el que se utilicen.

Por ejemplo, en Mac OS X, los frameworks son solo bibliotecas empaquetadas en un paquete. Dentro del paquete encontrará una biblioteca dinámica real (libWhatever.dylib). La diferencia entre una biblioteca básica y el marco en Mac es que un marco puede contener varias versiones diferentes de la biblioteca. Puede contener recursos adicionales (imágenes, cadenas localizadas, archivos de datos XML, objetos de interfaz de usuario, etc.) y, a menos que el marco se haga público, generalmente contiene los archivos .h necesarios para usar la biblioteca.

Por lo tanto, tiene todo lo que necesita en un solo paquete para usar la biblioteca en su aplicación (una biblioteca C/C++/Objective-C sin archivos .h es bastante inútil, a menos que los escriba usted mismo de acuerdo con alguna documentación de la biblioteca), en lugar de un un montón de archivos para mover (un paquete de Mac es solo un directorio en el nivel Unix, pero la interfaz de usuario lo trata como un solo archivo, más o menos como si tuviera archivos JAR en Java y cuando hace clic en él, generalmente no ve lo que hay dentro, a menos que seleccione explícitamente mostrar el contenido).

Wikipedia llama marco una "palabra de moda". Define un marco de software como

Un marco de software es un diseño reutilizable para un sistema (o subsistema) de software. Un marco de software puede incluir programas de soporte, bibliotecas de códigos, un lenguaje de programación u otro software para ayudar a desarrollar y unir los diferentes componentes de un proyecto de software. Varias partes del marco pueden exponerse a través de una API.

Entonces yo diría que una biblioteca es solo eso, "una biblioteca". Es una colección de objetos/funciones/métodos (dependiendo de su idioma) y su aplicación se "enlaza" con ella y, por lo tanto, puede usar los objetos/funciones/métodos. Básicamente es un archivo que contiene código reutilizable que normalmente se puede compartir entre varias aplicaciones (no es necesario escribir el mismo código una y otra vez).

Un marco puede ser todo lo que utilice en el desarrollo de aplicaciones. Puede ser una biblioteca, una colección de muchas bibliotecas, una colección de scripts o cualquier software que necesite para crear su aplicación. Marco es sólo un término muy vago.

Aquí hay un artículo sobre un tipo sobre el tema " Biblioteca vs. Marco ". Personalmente creo que este artículo es muy discutible. No está mal lo que dice allí, sin embargo, simplemente elige una de las múltiples definiciones de marco y la compara con la definición clásica de biblioteca. Por ejemplo, dice que necesita un marco para subclasificar. ¿En realidad? Puedo tener un objeto definido en una biblioteca, puedo vincularlo y subclasificarlo en mi código. No veo cómo necesito un "marco" para eso. De alguna manera explica cómo se utiliza hoy en día el término marco. Es sólo una palabra publicitada, como dije antes. Algunas empresas lanzan simplemente una biblioteca normal (en cualquier sentido de biblioteca clásica) y la llaman "marco" porque suena más elegante.

Mecki avatar Sep 29 '2008 14:09 Mecki

Creo que la principal diferencia es que los marcos siguen el " principio de Hollywood ", es decir, "no nos llames, nosotros te llamaremos".

Según Martín Fowler :

Una biblioteca es esencialmente un conjunto de funciones a las que puedes llamar, actualmente generalmente organizadas en clases. Cada llamada realiza algo de trabajo y devuelve el control al cliente.

Un marco incorpora un diseño abstracto, con más comportamiento incorporado. Para usarlo necesita insertar su comportamiento en varios lugares del marco, ya sea mediante subclases o conectando sus propias clases. Luego, el código del marco llama a su código en estos puntos.

Panos avatar Sep 29 '2008 14:09 Panos

Biblioteca:

Es solo una colección de rutinas (programación funcional) o definiciones de clases (programación orientada a objetos). La razón detrás es simplemente la reutilización del código , es decir, obtener el código que ya ha sido escrito por otros desarrolladores. Las clases o rutinas normalmente definen operaciones específicas en un área específica de dominio . Por ejemplo, existen algunas bibliotecas de matemáticas que pueden permitir al desarrollador simplemente llamar a la función sin rehacer la implementación de cómo funciona un algoritmo.

Estructura:

En el marco, todo el flujo de control ya está ahí y hay un montón de puntos blancos predefinidos que debemos completar con nuestro código . Un marco suele ser más complejo. Define un esqueleto donde la aplicación define sus propias características para completar el esqueleto. De esta manera, el marco llamará a su código cuando sea apropiado. El beneficio es que los desarrolladores no necesitan preocuparse por si un diseño es bueno o no, sino solo por implementar funciones específicas del dominio.

Biblioteca, marco y representación de la imagen de su código:

Biblioteca, marco y su relación de imagen de código

Diferencia clave:

La diferencia clave entre una biblioteca y un marco es la "inversión de control" . Cuando llamas a un método desde una biblioteca, tienes el control. Pero con un marco, el control se invierte: el marco te llama . Fuente.

Relación:

Ambos definieron API, que es utilizada por los programadores. Para unirlos, podemos pensar en una biblioteca como una determinada función de una aplicación, un marco como el esqueleto de la aplicación y una API como un conector para unirlos. Un proceso de desarrollo típico normalmente comienza con un marco y completa funciones definidas en bibliotecas a través de API.

Durai Amuthan.H avatar Mar 24 '2013 16:03 Durai Amuthan.H