Cela peut sembler une question idiote, mais les termes Framework et API sont parfois utilisés de manière interchangeable. Selon moi, un framework est un élément plus générique, contenant de nombreuses API, pouvant être utilisé pour diverses tâches de programmation (par exemple, le .NET Framework). Une API est plus petite et plus spécialisée (par exemple, le API Facebook.) Quelqu'un veut-il partager son point de vue?
Et prenons, par exemple, le fait que Microsoft appelle .NET un framework alors que Sun appelle sa plate-forme ... cela pourrait-il aussi être une décision commerciale/marketing de définir comment appeler une "collection de bibliothèques"?
Design Patterns fournit les définitions suivantes:
La clé ici est que, bien que les API puissent être utiles dans de nombreux domaines, les cadres sont conçus pour résoudre les problèmes de classes de problèmes spécifiques, qui peuvent être personnalisés "en créant des sous-classes spécifiques à l'application des classes abstraites du cadre" .
De plus, et peut-être plus important encore, "le framework dicte l'architecture de votre application": Inversion Of Control est l'une des caractéristiques des frameworks (voir Martin Fowler à ce sujet ); au lieu que votre application appelle des API spécifiques pour implémenter un comportement spécifique, c'est le framework qui appelle votre code.
J'ai toujours pensé que le framework était le tout, code interne, API, etc.
Alors que l’API est exactement ce que vous utilisez lorsque vous souhaitez utiliser le framework.
En d'autres termes, le framework .NET comprend les bibliothèques .NET, tous les langages, etc. L'API est simplement la façon dont vous appelez les fonctions.
Un framework introduit la notion de inversion de contrôle
(c’est-à-dire que le flux de contrôle du programme global n’est pas dicté par l’appelant, mais par le cadre)
Lorsque vous vous référez aux frameworks langage (tels que Java Framework ou .Net Framework), vous n'incluez pas uniquement des bibliothèques et leurs API (ce qui serait plus limité qu'un Software Framework si ces bibliothèques fournir une inversion de contrôle).
Un framework de langage inclut les environnements de développement et d'exécution qui appellera votre code (pour le compiler ou l'exécuter).
C’est pourquoi .Net Framework est un "Framework".
Java peut faire référence à ses cadres (JDK, JRE) en tant que "Java Platform" afin de mettre en valeur sa fonctionnalité de langage de programmation "indépendante de la plate-forme".
De À propos de la technologie Java
Une plate-forme est l'environnement matériel ou logiciel dans lequel un programme est exécuté. (y compris Microsoft Windows, Linux, SE Solaris et Mac OS).
La plupart des plates-formes peuvent être décrites comme une combinaison du système d'exploitation et du matériel sous-jacent.
La plate-forme Java diffère de la plupart des autres plates-formes en ce qu’elle est une plate-forme logicielle qui s’exécute par-dessus d’autres plates-formes basées sur du matériel.La plate-forme Java a deux composants:
- La machine virtuelle Java
- L'interface de programmation d'application Java (API)
Comme son nom l'indique (Application Programming Interface), l'API n'est que l'interface du framework.
De mon point de vue, une API est essentiellement un moyen d’interfaçage avec une application existante (telle que Facebook), alors qu’un cadre est essentiellement un outil permettant de créer votre propre application à partir de la base.
Software Framework: est une conception réutilisable pour un système logiciel (ou un sous-système). Une structure logicielle peut inclure des programmes, des bibliothèques de codes, un langage de script, un autre logiciel permettant de développer et de coller les différents composants d’un projet logiciel. Différentes parties du framework peuvent être exposées via une API.
API(interface de programmation d'application): comme son nom l'indique, est une interface permettant aux programmes externes d'interagir avec votre programme inter ou votre bibliothèque sans accès direct. Par exemple, l'API Google Map et l'API Facebook vous fournissent l'interface pour interagir avec leur programme et leur bibliothèque sans accès direct.
D'un autre coté:
Framework : est un ensemble de bibliothèques pouvant vous aider à créer une application. vous pouvez imaginer le cadre comme un "squelette" où l'application définit la "viande", de sorte que vous ne pouvez pas prendre un squelette humain pour construire un corps hors normes, vous devez donc choisir le bon cadre avant de commencer à programmer. c'est pourquoi nous avons dit: Vous appelez la bibliothèque. Framework vous appelle.
Un framework est essentiellement un ensemble de classes qui résument le processus de développement et encouragent la réutilisation du code. Vous pouvez par exemple avoir des classes de base de données, de session et de pagination indépendantes de l'application que vous créez. Mais une API est une interface de code source qui permet à deux composants de systèmes différents ou plus d’interagir, par exemple en ajoutant l’API de Google Maps à votre site Web. Google et vous êtes deux systèmes différents. Google a codé l’interface sous-jacente pour incorporer ses produits à votre site Web. /application. Dans l’ensemble, il suffit de travailler avec un framework lors de la construction de votre système, puis de développer une API lorsque vous proposez des extensions à d’autres personnes comme Facebook et Google.
J'aimerais penser qu'une API est un sous-ensemble d'un framework
D'après mon expérience, un framework inclut souvent (au moins) deux choses qu'une API simple ne fait pas:
Extensibilité: vous pouvez composer ou sous-classer des composants d'infrastructure pour étendre ou personnaliser ses fonctionnalités.
Outils de génération de code, d'administration ou de diagnostic liés au développement d'applications.
Je sais que c'est un vieux fil et que ça n'a pas vraiment d'importance, mais je ne peux pas m'empêcher de vous faire part de mes propres opinions. Une API (par exemple, une API de pilote de périphérique, une API Windows, etc.) fournit les fonctions de base et essentielles d'une plateforme, de sorte qu'un programmeur puisse exercer sa créativité et faire quelque chose avec cette plate-forme, y compris en l'utilisant pour créer un cadre. Un cadre est de niveau supérieur en termes de fonctions et d’abstractions et fournit un ensemble de fonctions/classes/conventions réutilisables et pratiques pour faciliter le développement d’applications partageant certains attributs communs (applications iPad, services Web, etc.).
Un framework implémente une option très importante appelée IoC (Inversion of Control) qui signifie en un mot que votre code a, no more, des choses en main.
Tandis que dans une API, votre code appelle d’autres codes ( bibliothèques ), lorsque vous utilisez un cadre spécifique, c’est le cadre qui contrôle les flux de l’application.