Question

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

J'ai toujours pensé à une bibliothèque comme à un ensemble d'objets et de fonctions axés sur la résolution d'un problème particulier ou d'un domaine spécifique du développement d'applications (accès à une base de données, par exemple); et un cadre, en revanche, en tant que collection de bibliothèques centrées sur une méthodologie particulière (MVC) et couvrant tous les domaines du développement d’applications.

Était-ce utile?

La solution

En réalité, 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 infrastructures ne sont que des bibliothèques regroupées dans un paquet. Dans le paquet, vous trouverez une bibliothèque dynamique réelle (libWitely.dylib). La différence entre une bibliothèque nue 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, à moins que le cadre ne soit rendu public, il contient généralement les fichiers .h nécessaires à l'utilisation de la bibliothèque.

Ainsi, vous avez tout dans un seul paquet dont vous avez besoin pour utiliser la bibliothèque dans votre application (une bibliothèque C / C ++ / Objective-C sans fichiers .h est plutôt inutile, à moins que vous ne les écriviez vous-même conformément à la documentation de la bibliothèque), au lieu d'un tas de fichiers à déplacer (un paquet Mac n'est qu'un répertoire du niveau Unix, mais l'interface utilisateur le traite comme un fichier unique, un peu comme si vous aviez des fichiers JAR en Java et lorsque vous cliquez dessus, vous ne voyez ce qu’il contient, à moins que vous ne choisissiez explicitement d’afficher le contenu).

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

  

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

Je dirais donc qu'une bibliothèque, c'est simplement "une bibliothèque". C'est un ensemble d'objets / fonctions / méthodes (selon votre langue) et votre application "liens". contre elle et peut donc utiliser les objets / fonctions / méthodes. Il s’agit en fait d’un fichier contenant du code réutilisable qui peut généralement être partagé entre plusieurs applications (vous n’aurez pas à é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 nécessaire à la création de votre application. Le cadre n'est qu'un terme très vague.

Voici un article sur un type concernant le sujet " Bibliothèque contre Framework " Personnellement, je pense que cet article est très discutable. Ce n’est pas faux de dire ce qu’il dit ici, cependant, il choisit simplement l’une des multiples définitions de framework et le compare à la définition classique de library. Par exemple. il dit que vous avez besoin d'un cadre pour la sous-classification. Vraiment? 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 pourquoi j'ai besoin d'un " framework " pour ça. D'une certaine manière, il explique plutôt comment le terme cadre est utilisé de nos jours. Comme je l’ai déjà dit, c’est un mot à la mode. Certaines entreprises publient uniquement une bibliothèque normale (au sens de bibliothèque classique) et appellent cela un "framework". parce que cela semble plus chic.

Autres conseils

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

Un cadre est un squelette dans lequel l’application définit le " 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 effectué par l'application.

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

Exemples d'infrastructure: Système d'application Web, gestionnaire de plug-ins, système d'interface graphique. Le cadre définit le concept, mais l’application définit la fonctionnalité fondamentale qui intéresse les utilisateurs finaux.

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

Selon Martin Fowler :

  

Une bibliothèque est essentiellement un ensemble de   fonctions que vous pouvez appeler, ces   journées habituellement organisées en classes.   Chaque appel fait du travail et revient   contrôle au client.

     

Un cadre contient des éléments abstraits.   design, avec plus de comportement intégré.   Pour l'utiliser, vous devez insérer   votre comportement dans divers endroits de   le cadre soit par sous-classement ou   en branchant vos propres cours. le   Le code du framework appelle ensuite votre code   à ces points.

Bibliothèque:

Il ne s'agit que d'une collection de routines (programmation fonctionnelle) ou de définitions de classe (programmation orientée objet). La raison en est simplement la réutilisation du code , c’est-à-dire obtenir le code déjà écrit par d’autres développeurs. Les classes ou les routines définissent normalement des opérations spécifiques dans une zone spécifique à un domaine . Par exemple, certaines bibliothèques de mathématiques peuvent laisser le développeur appeler la fonction sans refaire la mise en oeuvre du fonctionnement d'un algorithme.

Cadre:

Dans le framework, tout le flux de contrôle est déjà là et il y a un tas de points blancs prédéfinis que nous devrions compléter 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 si cela convient. L'avantage est que les développeurs n'ont pas à s'inquiéter de savoir si une conception est bonne ou non, mais simplement à implémenter des fonctions spécifiques à un domaine.

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

La bibliothèque, le cadre et votre relation d'image Code

Différence de clé:

La principale différence entre une bibliothèque et un cadre est & # 8220; Inversion of Control & # 8221; . Lorsque vous appelez une méthode depuis une bibliothèque, vous avez le contrôle. Mais avec un framework, le contrôle est inversé: le framework vous appelle . Source.

Relation:

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

Vous appelez la bibliothèque.

Framework vous appelle.

  

Aide de la bibliothèque
  L'échafaud fait mal
  Beaucoup de larmes

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 n’importe quelle petite partie vous aide. Un framework auquel vous devez vous engager pour l'ensemble de votre projet.

J'aime la réponse de Cohens, mais une définition plus technique est la suivante: votre code appelle une bibliothèque. Un cadre appelle votre code . Par exemple, une infrastructure graphique appelle votre code par l'intermédiaire de gestionnaires d'événements. Une infrastructure 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 exécuter votre code plutôt que l'inverse, comme dans les bibliothèques. Cela signifie qu'un framework a également un impact beaucoup plus important sur la structure de votre code.

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électeur de date jQuery, vous pouvez le remplacer par un autre sélecteur de date tel 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 simplement le remplacer par un autre framework. Vous devez réécrire l'intégralité de votre code base.

  2. La plupart du temps, la bibliothèque prend beaucoup moins de temps d’apprentissage que Frameworks. Exemple: underscore.js est une bibliothèque, Ember.js est un framework.

J'oublie où j'ai vu cette définition, mais je pense que c'est plutôt sympa.

Une bibliothèque est un module que vous appelez à partir de votre code, et un framework est un module qui appelle votre code.

Un cadre peut être constitué de différentes bibliothèques. Prenons un exemple.

Disons que vous voulez faire cuire un poisson au curry. Ensuite, vous avez besoin d'ingrédients tels que huile , épices et autres utilitaires . Vous avez également besoin du poisson qui vous servira de base pour préparer votre plat (données de votre application). ensemble, tous les ingrédients sont appelés framework . Vous allez maintenant les utiliser un par un ou en combinaison pour obtenir le curry de poisson qui est votre produit final . Comparez cela avec un framework Web constitué de underscore.js , bootstrap.css , bootstrap.js . fontawesome , AngularJS , etc. Par exemple, Twitter Bootstrap v.35 .

Maintenant, si vous ne considérez qu'un seul ingrédient, comme par exemple l'huile . Vous ne pouvez utiliser aucune huile de votre choix car cela détruirait votre poisson (données). Vous ne pouvez utiliser que huile d'olive . Comparez cela avec underscore.js . Maintenant, quelle marque d'huile que vous souhaitez utiliser est à vous. Certains plats étaient préparés avec de l ' huile d'olive américaine (underscore.js) ou de huile d'olive indienne (lodash.js). Cela ne fera que changer le goût de votre application. Comme ils servent à peu près au même but, leur utilisation dépend de la préférence du développeur et ils sont facilement remplaçables.

 entrez la description de l'image ici

  

Framework : ensemble de bibliothèques fournissant des propriétés et un comportement uniques à votre application. (Tous les ingrédients)

     

Bibliothèque : ensemble d'instructions bien défini fournissant des propriétés et un comportement uniques à vos données. (Huile sur poisson)

     

Plugin : création d'un utilitaire pour une bibliothèque (ui-router - > AngularJS) ou de nombreuses bibliothèques combinées (date-picker - > bootstrap.css + jQuery) sans lesquelles votre plugin pourrait fonctionne maintenant comme prévu.

P.S. AngularJS est un framework MVC mais une bibliothèque JavaScript. Parce que je pense que Library étend le comportement par défaut de la technologie native (JavaScript dans ce cas).

Voici comment j'y pense (et que d'autres ont rationalisé):

Une bibliothèque est quelque chose qui est contenu dans votre code. Et un framework est un conteneur pour votre application.

est lié à un article amer de Joel Spolsky , mais contient une bonne distinction entre les boîtes à outils, les bibliothèques, les frameworks, etc.

Une bibliothèque implémente une fonctionnalité dans un but étroit, alors qu’un cadre est généralement une collection de bibliothèques prenant en charge un plus grand nombre de fonctionnalités. Par exemple, la bibliothèque System.Drawing.dll gère la fonctionnalité de dessin, mais ne constitue qu’une partie du framework .NET global.

Bibliothèque - Tout ensemble de classes ou de composants pouvant être utilisés à la demande du client, permettant d'accomplir une tâche donnée.
Cadre - vous oblige à respecter certaines règles en ce qui concerne le "plug-in". dans quelque chose de plus grand que toi. Vous fournissez simplement les éléments spécifiques à votre application / vos exigences de la manière requise, afin que "framwework puisse vous rendre la vie facile"

Les bibliothèques sont conçues pour être simples à utiliser et efficaces. Vous pouvez par exemple dire que la bibliothèque Zend nous aide à accomplir différentes tâches avec ses classes et ses fonctions bien définies.Alors qu'un cadre est quelque chose qui oblige généralement à mettre en œuvre une solution, comme MVC (Model-view-controller) (référence) . C’est un système bien défini pour la distribution des tâches, comme dans MVC. Le modèle contient la base de données, les vues concernent l’interface utilisateur et les contrôleurs, la logique applicative.

Je pense que vous avez bien cerné la différence: le cadre fournit un cadre dans lequel nous faisons notre travail ... En quelque sorte, il est plus "contraignant". qu'une simple bibliothèque.
Le framework est également censé ajouter de la cohérence à un ensemble de bibliothèques.

Je pense que la bibliothèque est un ensemble d’utilitaires permettant d’atteindre un objectif (sockets, cryptographie, etc.). Le cadre est bibliothèque + RUNTIME EINVIRONNEMENT. Par exemple, ASP.NET est un framework: il accepte les requêtes HTTP, crée un objet de page, appelle des événements lyfe cicle, etc. Framework fait tout cela, vous écrivez un morceau de code qui sera exécuté à un moment précis du cycle de vie de demande actuelle!

En tout cas, question très intéressante!

Je ne me souviens pas de la source de cette réponse (je suppose que je l’ai trouvée dans un fichier .ppt sur Internet), mais la réponse est assez simple.

Une bibliothèque et une structure sont un ensemble de classes, de modules et / ou de code (en fonction du langage de programmation) pouvant être utilisés dans vos applications et vous permettant de résoudre un "problème" spécifique.

Ce problème peut être journaliser ou déboguer des informations dans une application, dessiner des graphiques, créer un format de fichier spécifique (html, pdf, xls), se connecter à une base de données, créer une partie d'une application ou une application complète ou un code appliqué à un modèle de conception .

Vous pouvez avoir un framework ou une bibliothèque pour résoudre tous ces problèmes et bien d’autres encore. Normalement, les frameworks vous aident à résoudre des problèmes plus complexes ou plus importants, mais qu’il est nécessaire de conserver leur différence principale et non une définition principale. les deux.

  

La principale différence entre une bibliothèque et un framework est la dépendance entre leur propre code, autrement dit d'utiliser un framework   besoin d’utiliser presque toutes les classes, modules ou codes du micrologiciel, mais   utiliser une bibliothèque, vous pouvez utiliser une ou plusieurs classes, modules ou code dans le   lib dans votre propre application

Cela signifie que si un framework a, par exemple, 50 classes afin de pouvoir utiliser le framework dans une application, vous devez utiliser, disons, 10 à 15 classes ou plus dans votre code, car c'est ainsi que est conçu un Framework, certaines classes (objets de ces classes) sont des entrées / paramètres pour des méthodes dans d'autres classes du framework. Voir le framework .NET, Spring ou n’importe quel framework MVC.

Mais, par exemple, une bibliothèque de journaux, vous pouvez simplement utiliser une classe Log dans votre code et vous aider à résoudre le "problème de journalisation", ce qui ne signifie pas que la bibliothèque de journaux n'a pas plus de classes dans son répertoire. Le code, comme les classes pour gérer les fichiers, les sorties d’écran ou même les bases de données, mais vous ne touchez / utilisez jamais ces classes dans votre code. C’est la raison pour laquelle il s’agit d’une bibliothèque et non d’un framework.

De plus, il y a plus de catégories que Frameworks and Libraries, mais ce sujet est hors sujet.

Votre interprétation me semble plutôt bonne ... Une bibliothèque peut être tout ce qui est compilé et autonome pour être réutilisé dans un autre code, il n'y a littéralement aucune restriction sur son contenu.

Un cadre , par contre, devrait offrir toute une gamme d’installations à utiliser dans certains domaines spécifiques du développement d’applications, comme dans votre exemple, MVC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top