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

¿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 centran en la solución de un problema en 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.

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 un diseño reutilizable para un sistema de software (o subsistema). Un marco de software puede incluir progtwigs de soporte, bibliotecas de códigos, un lenguaje de scripting u otro software para ayudar a desarrollar y unir los diferentes componentes de un proyecto de software. Varias partes del marco pueden estar expuestas 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 está diciendo allí, sin embargo, él solo está escogiendo una de las múltiples definiciones de marco y lo compara con la definición clásica de biblioteca. Por ejemplo, dice que necesita un marco para la subclasificación. De Verdad? 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, él más bien explica cómo se usa el término marco en la actualidad. Es solo una palabra publicitada, como dije antes. Algunas compañías lanzan solo una biblioteca normal (en cualquier sentido de una biblioteca clásica) y lo llaman un “marco” porque suena más elegante.

Una biblioteca realiza operaciones específicas y bien definidas.

Un marco es un esqueleto donde la aplicación define la “carne” de la operación rellenando 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 frameworks: sistema de aplicación web, administrador de plug-ins, sistema GUI. El marco define el concepto, pero la aplicación define la funcionalidad fundamental que les importa a los usuarios finales.

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

De acuerdo con Martin Fowler :

Una biblioteca es esencialmente un conjunto de funciones que usted puede llamar, en estos días generalmente organizadas en clases. Cada llamada hace algo de trabajo y devuelve el control al cliente.

Un marco incorpora algún diseño abstracto, con más comportamiento incorporado. Para usarlo, debe insertar su comportamiento en varios lugares del marco, ya sea mediante subclases o conectando sus propias clases. El código del marco luego llama a su código en estos puntos.

Llamas a la biblioteca.

Marco te llama.


図 書館 書館 書館 助 涙 涙 涙 涙

Biblioteca:

Es solo una colección de rutinas (progtwigción funcional) o definiciones de clase (progtwigció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, 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 debemos completar con nuestro código . Un marco es normalmente más complejo. 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:

Biblioteca, Marco y su relación de imagen de Código

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 progtwigdores 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.

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.

Me gusta la respuesta de Cohens, pero una definición más técnica es: su código llama a una biblioteca. Un marco 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, y no 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.

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.

Olvidé dónde vi esta definición, pero creo que es bastante agradable.

Una biblioteca es un módulo al que usted llama desde su código, y un marco es un módulo que llama a su código.

Así es como lo pienso (y lo he visto racionalizado por otros):

Una biblioteca es algo contenido dentro de tu código. Y un marco es un contenedor para su aplicación.

aquí está vinculado un artículo amargo de Joel Spolsky , pero contiene una buena distinción entre cajas de herramientas, bibliotecas, marcos y tal

Un marco se puede hacer de diferentes bibliotecas. Tomemos un ejemplo.

Digamos que quieres cocinar un pescado al curry. Entonces necesitas ingredientes como aceite , especias y otras utilidades . También necesita pescado, que es su base para preparar su plato (Estos son datos de su aplicación). todos los ingredientes juntos llamados un marco . Ahora los usarás uno por uno o en combinación para preparar tu pescado al curry, que es tu producto final . Compare eso con un marco web que está hecho de underscore.js , bootstrap.css , bootstrap.js , fontawesome , AngularJS , etc. Por ejemplo, Twitter Bootstrap v.35 .

Ahora, si considera solo un ingrediente, como decir aceite . No puedes usar el aceite que quieras porque arruinará tus peces (datos). Solo puedes usar aceite de oliva Compare eso con underscore.js . Ahora, ¿qué marca de aceite quieres usar depende de ti? Algunos platos se hicieron con aceite de oliva americano (underscore.js) o aceite de oliva de la India (lodash.js). Esto solo cambiará el sabor de su aplicación. Como tienen casi el mismo propósito, su uso depende de las preferencias del desarrollador y son fácilmente reemplazables.

enter image description here


Framework : una colección de bibliotecas que proporcionan propiedades y comportamientos únicos a su aplicación. (Todos los ingredientes)

Biblioteca : un conjunto bien definido de instrucciones que proporcionan propiedades y comportamiento únicos a sus datos. (Petróleo en el pescado)

Complemento : una comstackción de utilidad para una biblioteca (ui-router -> AngularJS) o muchas bibliotecas en combinación (selector de fecha -> bootstrap.css + jQuery) sin las cuales su complemento podría funcionar ahora como se esperaba.


PS AngularJS es un framework MVC pero una biblioteca de JavaScript. Porque creo que Library amplía el comportamiento predeterminado de la tecnología nativa (JavaScript en este caso).

Una biblioteca implementa la funcionalidad para un propósito de scope limitado, mientras que un marco tiende a ser una colección de bibliotecas que brindan soporte para una gama más amplia de características. Por ejemplo, la biblioteca System.Drawing.dll maneja la funcionalidad del dibujo, pero es solo una parte del framework .NET en general.

Biblioteca: cualquier conjunto de clases o componentes que se pueden usar según el cliente lo considere apropiado para realizar una determinada tarea.
Marco: exige ciertas pautas para que pueda “conectar” algo más grande que usted. Usted simplemente proporciona las piezas específicas para su aplicación / requisitos de una manera requerida por la publicación, de modo que “el trabajo físico puede hacer su vida más fácil”.

Las bibliotecas son de fácil uso y eficiencia. Puede decir, por ejemplo, que la biblioteca Zend nos ayuda a realizar diferentes tareas con sus clases y funciones bien definidas. Mientras que un marco es algo que generalmente obliga a una cierta forma de implementar una solución, como MVC (Modelo -view-controller) (referencia) . Es un sistema bien definido para la distribución de tareas como en MVC. El modelo contiene el lado de la base de datos, las Vistas son para la interfaz de la interfaz de usuario y los controladores son para la lógica empresarial.

La inversión del control es una parte clave de lo que hace que un marco sea diferente a una biblioteca. Una biblioteca es esencialmente un conjunto de funciones que usted puede llamar, en estos días generalmente organizadas en clases. Cada llamada hace algo de trabajo y devuelve el control al cliente.

Un marco incorpora algún diseño abstracto, con más comportamiento incorporado. Para usarlo, debe insertar su comportamiento en varios lugares del marco, ya sea subclasificando o conectando sus propias clases. El código del marco luego llama a su código en estos puntos.

Creo que definiste bastante bien la diferencia: el marco proporciona un marco en el que hacemos nuestro trabajo … De alguna manera, es más “restrictivo” que una simple biblioteca.
El marco también debe agregar consistencia a un conjunto de bibliotecas.

Creo que la biblioteca es un conjunto de utilidades para alcanzar un objective (por ejemplo, sockets, criptografía, etc.). Framework es library + RUNTIME EINVIRONNEMENT. Por ejemplo, ASP.NET es un marco: acepta solicitudes HTTP, crea objetos de página, invoca eventos de ciclo, etc. Framework hace todo esto, escribes un código que se ejecutará en un momento específico del ciclo de vida de solicitud actual!

De todos modos, pregunta muy interestante!

No recuerdo la fuente de esta respuesta (creo que la encontré en .ppt en Internet), pero la respuesta es bastante simple.

Una biblioteca y un marco son un conjunto de clases, módulos y / o códigos (dependiendo del lenguaje de progtwigción) que se pueden usar en sus aplicaciones y lo ayudan a resolver un “problema” específico.

Ese problema puede ser información de registro o depuración en una aplicación, dibujar gráficos, crear un formato de archivo específico (html, pdf, xls), conectarse a una base de datos, crear una parte de una aplicación o una aplicación completa o un código aplicado a una Patrón de diseño .

Puedes tener un Framework o una Biblioteca para resolver todos estos problemas y muchos más, normalmente los frameworks te ayudan a resolver problemas más complejos o más grandes, pero eso es una consecuencia de su principal diferencia, no una definición principal para ambos.

La principal diferencia entre una Biblioteca y un Framework es la dependencia entre su propio código, en palabras para usar un Framework necesita usar casi todas las clases, módulos o códigos en el FW, pero para usar una Biblioteca puede usar uno o pocas clases, módulos o códigos en la lib en su propia aplicación

Esto significa que si un Framework tiene, por ejemplo, 50 clases para usar el framework en una aplicación que necesita usar, deje dicho, 10-15 o más clases en su código, porque así es como está diseñado un Framework, algunos las clases (objetos de esas clases) son entradas / parámetros para los métodos en otras clases en el marco. Vea el framework .NET, Spring o cualquier framework MVC.

Pero, por ejemplo, una biblioteca de registro, puede simplemente usar una clase Log en su código y ayudarle a resolver el “problema de registro”, eso no significa que la biblioteca de registro no tenga más clases en su código, como las clases manejar archivos, manejar salidas de pantalla, o incluso bases de datos, pero nunca toca / usa esas clases en su código, y esa es la razón de por qué es una biblioteca y no un marco.

Y también hay más categorías que Frameworks y Libraries, pero eso está fuera de tema.

Su interpretación me parece muy buena … Una biblioteca puede ser cualquier cosa comstackda y autónoma para su reutilización en otro código, literalmente no hay restricciones en su contenido.

Por otro lado, se espera que un marco tenga una gama de instalaciones para usar en algún campo específico de desarrollo de aplicaciones, tal como su ejemplo, MVC.