Question Quelle est la différence entre un framework et une bibliothèque? [fermé]


Quelle est la différence entre un cadre et un bibliothèque?

J'ai toujours considéré une bibliothèque comme un ensemble d'objets et de fonctions axés sur la résolution d'un problème particulier ou autour d'un domaine spécifique de développement d'application (c'est-à-dire l'accès à la base de données); un cadre d'une part est une collection de bibliothèques centrée autour d'une méthodologie particulière (c.-à-MVC) et couvre tous les domaines de développement d'applications.


717
2017-09-29 13:56


origine


Réponses:


En fait, ces termes peuvent signifier beaucoup de choses différentes selon le contexte dans lequel ils sont utilisés.

Par exemple, sur Mac OS X, les frameworks ne sont que des bibliothèques, regroupées dans un bundle. Dans le bundle, vous trouverez une bibliothèque dynamique réelle (libWhatever.dylib). La différence entre une bibliothèque vide et le framework sur Mac est qu'un framework peut contenir plusieurs versions différentes de la bibliothèque. Il peut contenir des ressources supplémentaires (images, chaînes localisées, fichiers de données XML, objets d'interface utilisateur, etc.) et, sauf si le framework est publié, il contient généralement les fichiers .h nécessaires à l'utilisation de la bibliothèque.

Vous avez donc tout ce dont vous avez besoin pour utiliser la bibliothèque dans votre application (une bibliothèque C / C ++ / Objective-C sans fichiers .h est inutile, sauf si vous les écrivez vous-même selon la documentation de la bibliothèque), au lieu d'une tas de fichiers à déplacer (un ensemble Mac est juste un répertoire au niveau Unix, mais l'interface utilisateur le traite comme un seul fichier, à peu près comme vous avez des fichiers JAR en Java et lorsque vous cliquez dessus, vous ne voyez généralement pas à l'intérieur, sauf si vous choisissez explicitement d'afficher le contenu).

Wikipedia appelle le framework un "mot à la mode". Il définit un cadre logiciel comme

Un framework logiciel est réutilisable   conception pour un système logiciel (ou   sous-système). Un cadre logiciel peut   inclure des programmes de support, code   bibliothèques, un langage de script, ou   d'autres logiciels pour aider à développer et   coller ensemble les différents composants   d'un projet logiciel. Diverses pièces   du cadre peut être exposé   à travers une API ..

Donc je dirais qu'une bibliothèque est juste cela, "une bibliothèque". C'est une collection d'objets / fonctions / méthodes (en fonction de votre langue) et de vos applications "liens" contre elle et donc peut utiliser les objets / fonctions / méthodes. Il s'agit essentiellement d'un fichier contenant du code réutilisable qui peut généralement être partagé entre plusieurs applications (vous n'avez pas besoin d'écrire le même code encore et encore).

Un framework peut être tout ce que vous utilisez dans le développement d'applications. Il peut s'agir d'une bibliothèque, d'une collection de nombreuses bibliothèques, d'une collection de scripts ou de tout logiciel dont vous avez besoin pour créer votre application. Le cadre est juste un terme très vague.

Voici un article sur un gars concernant le sujet "Bibliothèque vs cadre"Je pense personnellement que cet article est très discutable.Il n'est pas faux ce qu'il dit là, cependant, il est juste en train de choisir l'une des multiples définitions de cadre et compare cela à la définition classique de bibliothèque.Par exemple, il dit que vous avez besoin d'un cadre pour En fait, je peux avoir un objet défini dans une bibliothèque, je peux le lier et le sous-classer dans mon code, je ne vois pas comment j'ai besoin d'un "framework" pour ça. Comme je l'ai déjà dit, certaines entreprises ne publient qu'une bibliothèque normale (dans n'importe quel sens d'une bibliothèque classique) et l'appellent un «cadre» parce que cela semble plus sophistiqué.


293
2017-09-29 14:17



UNE bibliothèque effectue des opérations spécifiques et bien définies.

UNE cadre est un squelette où l'application définit la "viande" de l'opération en remplissant le squelette. Le squelette a encore du code pour relier les pièces mais le travail le plus important est fait par l'application.

Exemples de bibliothèques: Protocoles réseau, compression, manipulation d'images, utilitaires de chaînes de caractères, évaluation d'expressions régulières, mathématiques. Les opérations sont autonomes.

Exemples de cadres: Système d'application Web, gestionnaire de plug-in, système d'interface graphique. Le cadre définit le concept, mais l'application définit la fonctionnalité fondamentale dont les utilisateurs finaux se soucient.


432
2017-09-29 13:58



Je pense que la principale différence est que les cadres suivent le "Principe d'Hollywood", c'est-à-dire" ne nous appelle pas, nous vous appellerons. "

Selon Martin Fowler:

UNE bibliothèque est essentiellement un ensemble de   fonctions que vous pouvez appeler, ceux-ci   jours habituellement organisés en classes.   Chaque appel fait un peu de travail et retourne   contrôle au client.

UNE cadre incarne un résumé   conception, avec plus de comportement intégré.   Pour l'utiliser, vous devez insérer   votre comportement dans divers endroits dans   le cadre soit en sous-classe ou   en branchant vos propres classes. le   le code de l'infrastructure appelle ensuite votre code   à ces points.


243
2017-09-29 14:06



Vous appelez la bibliothèque.

Framework vous appelle.


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


193
2017-10-24 14:29



Bibliothèque:

C'est juste un collection de routines (programmation fonctionnelle) ou définitions de classe(programmation orientée objet). La raison derrière est simplement réutilisation du code, c'est-à-dire obtenir le code qui a déjà été écrit par d'autres développeurs. Les classes ou routines définissent normalement opérations spécifiques dans une zone spécifique à un domaine. Par exemple, il existe des bibliothèques de mathématiques qui permettent aux développeurs d'appeler la fonction sans refaire l'implémentation du fonctionnement d'un algorithme.

Cadre:

Dans le cadre, tous les flux de contrôle est déjà là, et il y a un tas de taches blanches prédéfinies que nous devrions remplir avec notre code. Un cadre est normalement plus complexe. Il définit un squelette où l'application définit ses propres fonctionnalités pour remplir le squelette. De cette façon, votre code sera appelé par le framework lorsque cela est approprié. L'avantage est que les développeurs n'ont pas besoin de s'inquiéter si une conception est bonne ou non, mais seulement de mettre en œuvre des fonctions spécifiques au domaine.

Bibliothèque, Framework et la représentation de votre image de code:

Library,Framework and your Code image relation

KeyDifference:

La principale différence entre une bibliothèque et un framework est "Inversion de contrôle". Lorsque vous appelez une méthode d'une bibliothèque, vous avez le contrôle. Mais avec un framework, le contrôle est inversé: le cadre vous appelle. La source.

Relation:

Les deux ont défini l'API, utilisée par les programmeurs. Pour les mettre ensemble, nous pouvons considérer une bibliothèque comme une certaine fonction d'une application, une structure comme le squelette de l'application, et une API est un connecteur pour les assembler. Un processus de développement typique commence normalement avec un framework et remplit les fonctions définies dans les bibliothèques via l'API.


187
2018-03-24 16:23



Comme je l'ai toujours décrit:

Une bibliothèque est un outil.

Un cadre est un mode de vie.

Une bibliothèque que vous pouvez utiliser quelle que soit la petite partie vous aide. Un Framework vous devez valider votre projet entier.


91
2017-09-29 14:04



J'aime la réponse de Cohen, mais une définition plus technique est: Votre code appelle une bibliothèque. Un framework appelle votre code. Par exemple, un framework GUI appelle votre code via des gestionnaires d'événements. Un framework web appelle votre code via un modèle de requête-réponse.

Ceci est également appelé inversion de contrôle - soudainement le framework décide quand et comment vous exécuter le code plutôt que l'inverse comme avec les bibliothèques. Cela signifie qu'un cadre a également un impact beaucoup plus important sur la façon dont vous devez structurer votre code.


37
2017-09-29 14:10



Du point de vue du développeur Web:

  1. La bibliothèque peut être facilement remplacée par une autre bibliothèque. Mais le cadre ne peut pas.

    Si vous n'aimez pas la bibliothèque de sélecteurs de date jquery, vous pouvez la remplacer par d'autres sélecteurs de date, tels que le sélecteur de date bootstrap ou le pickadate.

    Si vous n'aimez pas AngularJS sur lequel vous avez construit votre produit, vous ne pouvez pas le remplacer par d'autres frameworks. Vous devez réécrire votre base de code entière.

  2. La plupart du temps, la bibliothèque prend très peu de temps d'apprentissage par rapport à Frameworks. Par exemple: underscore.js est une bibliothèque, Ember.js est un framework.


31
2017-12-23 07:45