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


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

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


717
2017-09-29 13:56


origen


Respuestas:


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

Por ejemplo, en Mac OS X los marcos son solo bibliotecas, empaquetadas en un paquete. Dentro del paquete encontrará una biblioteca dinámica real (libWhatever.dylib). La diferencia entre una biblioteca desnuda y el marco en Mac es que un marco puede contener múltiples versiones diferentes de la biblioteca. Puede contener recursos adicionales (imágenes, cadenas localizadas, archivos de datos XML, objetos UI, etc.) y, a menos que el marco se publique en público, por lo general contiene los archivos .h necesarios para usar la biblioteca.

Por lo tanto, tiene todo dentro de un solo paquete que necesita para usar la biblioteca en su aplicación (una biblioteca C / C ++ / Objective-C sin archivos .h es bastante inútil, a menos que usted los escriba de acuerdo con la documentación de la biblioteca), en lugar de un montón de archivos para mover (un paquete de Mac es solo un directorio en el nivel de Unix, pero la UI 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 qué hay adentro, a menos que selecciones explícitamente para mostrar el contenido).

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

Un marco de software es reutilizable   diseño para un sistema de software (o   subsistema). Un marco de software puede   incluye programas de soporte, código   bibliotecas, un lenguaje de scripting, o   otro software para ayudar a desarrollar y   pegue los diferentes componentes   de un proyecto de software. Varias partes   del marco puede estar expuesto   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 (según su idioma) y su aplicación "enlaza" con ella y por lo tanto puede usar los objetos / funciones / métodos. Básicamente es un archivo que contiene un código reutilizable que generalmente 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 usa en el desarrollo de aplicaciones. Puede ser una biblioteca, una colección de muchas bibliotecas, una colección de scripts o cualquier pieza de software que necesite para crear su aplicación. Framework es solo un término muy vago.

Aquí hay un artículo sobre un chico con respecto al tema "Biblioteca vs. Marco"Personalmente, creo que este artículo es altamente discutible. No está mal lo que dice allí, sin embargo, él simplemente selecciona una de las múltiples definiciones de framework y compara eso con la definición clásica de biblioteca. Por ejemplo, él dice que necesitas un marco para subclasificación. ¿Realmente? 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, más bien explica cómo se usa el término framework en la actualidad. Es solo una palabra publicitada, como dije antes. Algunas compañías publican solo una biblioteca normal (en cualquier sentido de una biblioteca clásica) y la llaman "marco" porque suena más elegante.


293
2017-09-29 14:17



UN biblioteca realiza operaciones específicas y bien definidas.

UN marco de referencia es un esqueleto donde la aplicación define la "carne" de la operación completando el esqueleto. El esqueleto aún tiene código para unir 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ática. Las operaciones son autónomas.

Ejemplos de marcos: Sistema de aplicación web, administrador de plug-ins, sistema de GUI. El marco define el concepto, pero la aplicación define la funcionalidad fundamental que les importa a los usuarios finales.


432
2017-09-29 13:58



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

De acuerdo a Martin Fowler:

UN biblioteca es esencialmente un conjunto de   funciones que puede llamar, estas   días generalmente organizados en clases.   Cada llamada hace algo de trabajo y regresa   control al cliente.

UN marco de referencia encarna un poco de abstracto   diseño, con más comportamiento incorporado.   Para usarlo necesitas insertar   su comportamiento en varios lugares en   el marco ya sea por subclasificación o   conectando sus propias clases. los   el código de framework luego llama a su código   en estos puntos


243
2017-09-29 14:06



Llamas a la biblioteca.

Marco te llama.


図 書館 助 け
  足 場 が 痛 い
  多 く の 涙


193
2017-10-24 14:29



Biblioteca:

Es solo una colección de rutinas (programación funcional) o definiciones de clase(programación orientada a objetos). La razón detrás es simplemente reutilización de 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, hay algunas bibliotecas de matemáticas que pueden permitir que el desarrollador simplemente llame a la función sin rehacer la implementación de cómo funciona un algoritmo.

Marco de referencia:

En el marco, todo el flujo de control ya está allí, y hay un montón de puntos blancos predefinidos que deberíamos complete con nuestro código. Un marco es normalmente más complejo. Eso define un esqueleto donde la aplicación define sus propias características para completar el esqueleto. De esta forma, su código será llamado por el framework cuando sea apropiado. El beneficio es que los desarrolladores no necesitan preocuparse si un diseño es bueno o no, sino que simplemente implementa funciones específicas de dominio.

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

Library,Framework and your Code image relation

KeyDifference:

La diferencia clave entre una biblioteca y un marco es "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 se usa para que los programadores la usen. Para ponerlos juntos, podemos pensar en una biblioteca como una función determinada de una aplicación, un marco como el esqueleto de la aplicación, y una API es 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.


187
2018-03-24 16:23



Como siempre lo describí:

Una biblioteca es una herramienta.

Un marco es una forma de vida.

Una biblioteca puede usar cualquier parte pequeña que le ayude. Un Framework al que debe comprometer todo su proyecto.


91
2017-09-29 14:04



Me gusta la respuesta de Cohens, pero una definición más técnica es: su código llama a una biblioteca. Un framework llama a tu código. Por ejemplo, un marco de GUI llama a su código a través de controladores de eventos. Un marco web llama a su código a través de algún modelo de solicitud-respuesta.

Esto también se llama Inversión de control - De repente, el marco decide cuándo y cómo ejecutar el código en lugar de al revés, como ocurre con las bibliotecas. Esto significa que un marco también tiene un impacto mucho mayor sobre cómo debe estructurar su código.


37
2017-09-29 14:10



Desde la perspectiva del desarrollador web:

  1. La biblioteca puede ser reemplazada fácilmente por otra biblioteca. Pero el marco no puede.

    Si no le gusta la biblioteca del selector de fecha de jquery, puede reemplazarla con otro selector de fecha, como selector de fecha de arranque o pickadate.

    Si no te gusta AngularJS en el que construiste tu producto, no puedes reemplazarlo con ningún otro framework. Tienes que reescribir toda tu base de código.

  2. En su mayoría, la biblioteca requiere menos curva de aprendizaje en comparación con Frameworks. Por ejemplo: underscore.js es una biblioteca, Ember.js es un framework.


31
2017-12-23 07:45