Quelle est la différence entre un cadre et d'une bibliothèque? [fermé]

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

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

739
demandé sur Robert Columbia 2008-09-29 17:56:50

20 réponses

en fait, ces termes peuvent signifier beaucoup de choses différentes selon le contexte qu'ils sont utilisés.

par exemple, sur Mac OS X frameworks sont juste des bibliothèques, emballées dans un paquet. Dans le paquet, vous trouverez une bibliothèque dynamique réelle (libWhatever.dylib). La différence entre un nu-bibliothèque et le cadre sur Mac est qu'un cadre peut contenir plusieurs versions différentes de la bibliothèque. Il peut contenir des ressources supplémentaires (images, chaînes localisées, données XML) fichiers, objets UI, etc.) et, à moins que le cadre ne soit rendu public, il contient habituellement les éléments nécessaires .h fichiers que vous devez utiliser la bibliothèque.

ainsi, vous avez tout dans un paquet unique dont vous avez besoin pour utiliser la bibliothèque dans votre application (une bibliothèque C/C++/Objective-C sans .les fichiers h sont assez inutiles, à moins que vous les écriviez vous-même en fonction de la documentation de la bibliothèque), au lieu d'un tas de fichiers à déplacer (un paquet Mac est juste un répertoire sur Unix niveau, mais L'interface le traite comme un seul fichier, à peu près comme si vous aviez des fichiers JAR en Java et que lorsque vous cliquez dessus, vous ne voyez généralement pas ce qu'il y a à l'intérieur, à moins que vous ne sélectionniez explicitement pour afficher le contenu).

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

un framework logiciel est un conception d'un système logiciel (ou sous-système). Un cadre logiciel peut inclure les programmes de soutien, code bibliothèques, un langage de script, ou d'autres logiciels pour aider à développer et colle ensemble les différents composants d'un projet de logiciel. Les différentes parties le cadre peut être exposé au travers d'une API..

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

un cadre 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 plusieurs bibliothèques, d'une collection de scripts ou de n'importe quel logiciel dont vous avez besoin pour créer votre application. Le cadre est juste un terme très vague.

voici un article à propos d'un gars concernant le sujet " Bibliothèque de contre-Cadre ". Je pense personnellement que cet article est très discutable. Ce n'est pas mal ce qu'il dit là, cependant, il est juste de choisir 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 la sous-classe. Vraiment? Je peux avoir un objet défini dans une bibliothèque, je peux relier contre elle, et la sous-classe dans mon code. Je ne vois pas comment j'ai besoin d'un "cadre" pour ça. D'une certaine façon il explique comment le terme est utilisé de nos jours. C'est juste un mot hype, comme je l'ai dit avant. Certaines entreprises publient juste une bibliothèque normale (dans n'importe quel sens d'une bibliothèque classique) et l'appellent un "cadre" parce qu'il sonne plus Fantaisie.

302
répondu Mecki 2014-06-06 16:25:49

A library effectue des opérations précises et bien définies.

Un cadre est un squelette où l'application définit la "viande" de l'opération en remplissant le squelette. Le squelette a toujours le 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'image, utilitaires de chaîne de caractères, évaluation d'expressions régulières, mathématiques. Les opérations sont autonomes.

Exemples de cadres: Web application du système, Plug-in manager, l'interface graphique du système. Le cadre définit le concept, mais l'application définit la fonctionnalité fondamentale qui préoccupe les utilisateurs finaux.

443
répondu Jason Cohen 2008-09-29 13:58:40

je pense que la principale différence est que les cadres de suivre les " Hollywood principe ", c'est à dire "ne nous appelez pas, nous vous appellerons."

selon Martin Fowler :

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

Un cadre incarne abstraite design, avec plus de comportement intégrée. Pour l'utiliser, vous devez insérer votre comportement à différents endroits dans le cadre soit par subclassage ou en branchant vos propres classes. Le le code de framework appelle alors votre code au niveau de ces points.

249
répondu Panos 2008-09-29 14:12:08

appelez la bibliothèque.

Framework vous appelle.


151900920 151980920 151990920" 足場が痛い

多くの涙

198
répondu Ian Boyd 2014-03-19 23:18:50

de la Bibliothèque:

il s'agit simplement d'une collection de routines (programmation fonctionnelle) ou définitions de classe (programmation orientée objet). La raison derrière est tout simplement code reuse , 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 de domaine . Pour par exemple, il existe certaines bibliothèques de mathématiques qui peuvent laisser le développeur appeler simplement la fonction sans refaire l'implémentation de la façon dont un algorithme fonctionne.

Cadre:

dans le cadre, tout le 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. It définit un squelette où l'application définit ses propres caractéristiques de remplir le squelette. De cette façon, votre code sera appelé par le framework lorsqu'il est approprié. L'avantage est que les développeurs n'ont pas besoin de se soucier si un design est bon ou pas, mais juste de mettre en œuvre des fonctions spécifiques au domaine.

de la Bibliothèque,le Cadre et votre Code de représentation de l'image:

Library,Framework and your Code image relation

Principale différence:

la principale différence entre une bibliothèque et un cadre est " Inversion du contrôle " . Quand vous appelez une méthode d'une bibliothèque, vous êtes en contrôle. Mais avec un framework, le contrôle est inversé: le framework vous appelle . de la Source.

:

tous deux définis API, qui est utilisé pour les programmeurs à utiliser. Mettre ensemble, nous pouvons penser à une bibliothèque comme une fonction d'une application, un cadre comme le squelette de l'application, ainsi qu'une API est le connecteur à mettre ensemble. Un processus de développement typique commence normalement par un framework, et remplit des fonctions définies dans les bibliothèques à l'aide de L'API.

197
répondu Durai Amuthan.H 2017-05-23 11:33:24

comme je l'ai toujours décrit:

une Bibliothèque est un outil.

un cadre est un mode de vie.

une bibliothèque vous pouvez utiliser n'importe quelle petite partie vous aide. Un Cadre que vous devez vous engager l'ensemble de votre projet.

94
répondu James Curran 2008-09-29 14:04:04

J'aime la réponse de Cohens, 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 à travers un modèle request-response.

c'est aussi appelé inversion du contrôle - soudainement le framework décide quand et comment vous Exécuter code plutôt que l'inverse comme avec bibliothèque. Cela signifie qu'un cadre a aussi un impact beaucoup plus grand sur la façon dont vous devez structurer votre code.

38
répondu JacquesB 2008-10-30 00:48:40

De développeur Web point de vue:

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

    si vous n'aimez pas jquery date picker library, vous pouvez remplacer avec d'autres Date picker tels que bootstrap date picker ou pickadate.

    si vous n'aimez pas AngularJS sur lequel vous avez construit votre produit, vous ne pouvez pas simplement remplacer avec d'autres cadres. Vous devez réécrire votre toute la base de code.

  2. la plupart du temps, la courbe d'apprentissage de la Bibliothèque est beaucoup moins prononcée que celle des cadres. Par exemple: le trait de soulignement.js est une bibliothèque, Ember.js est un cadre.

35
répondu Fizer Khan 2014-12-23 07:45:53

j'oublie où j'ai vu cette définition, mais je pense que c'est assez agréable.

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

27
répondu Moe 2014-03-24 09:51:29

C'est ainsi que j'y pense (et que j'ai vu rationaliser par d'autres):

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

11
répondu Kon 2008-09-29 14:08:21

ici est lié un article amer de Joel Spolsky , mais contient une bonne distinction entre les boîtes à outils, bibliothèques, cadres et tel

10
répondu Lorenzo Boccaccia 2014-08-27 14:35:43

un cadre peut être fait à partir de différentes bibliothèques. Prenons un exemple.

disons que vous voulez faire cuire un curry de poisson. Ensuite, vous avez besoin d'ingrédients comme huile , épices et d'autres Utilités . Vous avez également besoin de fish qui est votre base pour préparer votre plat sur (ce sont les données de votre application). tous les ingrédients ensemble appelé un cadre . Maintenant vous allez les utiliser un par un ou en combinaison pour faire votre curry de poisson qui est votre produit final . Comparez cela avec un web framework qui est fait de underscore.js , bootstrap.css , bootstrap.js , fontawesome , AngularJS etc. Pour un exemple, Twitter Bootstrap v. 35 .

maintenant, si vous considérez seulement un ingrédient, comme huile . Vous ne pouvez pas utiliser toute l'huile que vous voulez parce que alors il va ruiner votre poisson (données). Vous ne pouvez utiliser que huile D'Olive . Comparez cela avec underscore.js . Maintenant, la marque d'huile que vous voulez utiliser dépend de vous. Un plat a été préparé avec huile D'Olive américaine (souligné.js) ou Indien Huile d'Olive (lodash.js). Cela ne fera que changer le goût de votre application. Puisqu'ils servent presque le même but, leur utilisation dépend de la préférence du développeur et ils sont facilement remplaçables.

enter image description here


Framework : une collection de bibliothèques qui fournissent des propriétés et un comportement uniques à votre application. (Tout ingrédients)

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

Plugin : un utilitaire construit pour une bibliothèque (ui-router -> AngularJS) ou de nombreuses bibliothèques en combinaison (date-picker -> bootstrap.css + jQuery) sans lequel votre plugin pourrait maintenant fonctionner comme prévu.


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

10
répondu Uday Hiwarale 2016-06-28 12:14:36

une bibliothèque implémente une fonctionnalité pour un but étroitement délimité alors qu'un framework tend à être une collection de bibliothèques fournissant un support pour un plus large éventail de fonctionnalités. Par exemple, le Système de la bibliothèque.Dessin.dll gère la fonctionnalité de dessin, mais n'est qu'une partie de L'ensemble .net framework.

6
répondu Jeff Yates 2008-09-29 14:00:01

bibliothèque-tout ensemble de classes ou de composants qui peuvent être utilisés comme le client juge bon d'accomplir une certaine tâche.

Cadre-mandate certaines lignes directrices pour que vous "plugin-in" dans quelque chose de plus grand que vous. Vous fournissez simplement les pièces spécifiques à votre application / exigences d'une manière publiée-exigé, de sorte que "le travail de cadre peut rendre votre vie facile"

6
répondu Gishu 2008-09-29 14:03:43

les Bibliothèques sont pour la facilité d'utilisation et l'efficacité.Vous pouvez dire par exemple que la bibliothèque Zend nous aide à accomplir différentes tâches avec ses classes et fonctions bien définies.Alors qu'un cadre est quelque chose qui oblige habituellement une certaine façon de mettre en œuvre une solution, comme MVC(Model-view-controller) (référence) . C'est un système bien défini pour la répartition des tâches, comme dans MVC.Le modèle contient le côté de la base de données, les vues sont pour L'Interface D'UI, et les contrôleurs sont pour La logique d'entreprise.

6
répondu Ravi shah 2017-05-23 11:47:36

L'Inversion du contrôle est un élément clé de ce qui rend un framework différent d'une bibliothèque. Une bibliothèque est essentiellement un ensemble de fonctions que vous pouvez appeler, ces jours généralement organisés en classes. Chaque appel fait du travail et renvoie le contrôle au client.

Un cadre incarne une certaine conception abstraite, avec plus de comportement intégrée. Pour l'utiliser, vous devez insérer votre comportement dans différents lieux, soit dans le cadre du sous-classement ou en le branchant à votre propres classes. Le code du framework appelle alors votre code à ces points.

6
répondu Debaprasad 2014-02-25 04:26:13

je pense que vous avez assez bien épinglé la différence: le cadre fournit un cadre dans lequel nous faisons notre travail... D'une certaine manière, c'est plus "contraignant" qu'une simple bibliothèque.

Le cadre est aussi censé apporter de la cohérence à un ensemble de bibliothèques.

5
répondu PhiLho 2008-09-29 14:00:32

je pense que la Bibliothèque est un ensemble d'utilitaires pour atteindre un but (par exemple, sockets, cryptographie, etc). Le Framework est la bibliothèque + RUNTIME EINVIRONNEMENT. Par exemple, ASP.NET est un framework: il accepte les requêtes HTTP, crée un objet page, invoque les évènements de type Lyfe, etc. Cadre de tout cela, vous écrire un peu de code qui sera exécuté à un moment précis du cycle de vie de la demande actuelle!

quoi qu'il en soit, question très intéressante!

5
répondu stefano m 2010-12-13 16:15:01

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

une bibliothèque et un Framework sont un ensemble de classes, modules et/ou code (selon le langage de programmation) qui peuvent être utilisés dans vos applications et vous aide à résoudre un"problème" particulier.

ce problème peut être log ou débugging info 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 dessin .

vous pouvez avoir un cadre ou une bibliothèque pour résoudre tous ces problèmes et beaucoup plus, normalement les cadres vous aide à résoudre des problèmes plus complexes ou plus grands, mais qu'une consécration de leur différence principale, pas une définition principale pour les deux.

la principale différence entre une bibliothèque et un Framework est la dépendance entre leur propre code, en d'autres termes pour utiliser un Framework vous besoin d'utiliser presque toutes les classes, modules ou code dans la FW, mais à utilisez une bibliothèque vous pouvez utiliser une ou quelques classes, modules ou code dans le lib dans votre propre application

cela signifie que si un Framework a, par exemple A 50 classes pour utiliser le framework dans une application que vous devez utiliser, laissez cela dit, 10-15 classes ou plus dans votre code, parce que c'est comme ça qu'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 .net framework, Spring, ou tout MVC framework.

mais par exemple une bibliothèque de log, vous pouvez juste utiliser une classe de Log dans votre code, et vous aide à résoudre le "problème de log", cela ne signifie pas que la bibliothèque de log n'a pas plus de classes dans son code, comme les classes à gérer fichiers, gérer des sorties d'écran, ou même des bases de données, mais vous ne touchez jamais/utilisez ces classes dans votre code, et c'est la raison pour laquelle il s'agit d'une bibliothèque et non d'un framework.

et aussi il y a plus de catégories que les cadres et les bibliothèques, mais c'est hors sujet.

5
répondu Junior Garza 2012-08-22 16:07:20

votre interprétation me semble assez bonne... Une bibliothèque pourrait être tout ce qui est compilé et autonome pour la réutilisation dans un autre code, il n'y a littéralement aucune restriction sur son contenu.

A framework d'un autre côté, on s'attend à ce qu'il y ait une gamme d'installations pouvant être utilisées dans un domaine particulier du développement d'applications, tout comme votre exemple, MVC.

4
répondu Adam Bellaire 2008-09-29 13:59:36