Question

Quelle est la différence entre un framework et un SDK? Prenez, par exemple, le SDK de la plate-forme MS et le framework .NET. Les deux ont des API, les deux cachent leurs rouages ??internes et fournissent des fonctionnalités qui pourraient ne pas être rapidement / facilement accessibles autrement (autrement dit, elles servent un objectif réel).

Alors, quelle est la différence? S'agit-il principalement d'un jeu de marketing lié à la sémantique ou existe-t-il des différences réelles dans la manière dont les développeurs sont censés interagir avec le logiciel (et inversement, comment les développeurs peuvent-ils s'attendre à ce que le logiciel se comporte)? Est-ce qu'on s'attend à ce que l'un soit de niveau supérieur ou inférieur à l'autre, etc.?

Merci!

EDIT: Cette question s’applique aux SDK et aux frameworks en général, pas seulement aux deux mentionnés ci-dessus.

Était-ce utile?

La solution

Un SDK est censé offrir des outils pour programmer par rapport à une certaine ressource ou fonctionnalité du système. Un framework pas forcément (bien que .NET propose un ensemble d'outils tels que les compilateurs, etc. - mais ceux-ci sont obligatoires pour qu'il fonctionne de toute façon).

Ainsi, vous pouvez développer un framework composé uniquement de bibliothèques, mais si vous l'appelez SDK, vous devrez offrir quelque chose pour soutenir le développement.

Autres conseils

Je vais simplement copier de Wikipedia:

Bibliothèque:

  

Une bibliothèque est un ensemble de sous-programmes ou de classes utilisés pour développer des logiciels. Les bibliothèques contiennent du code et des données fournissant des services à des programmes indépendants. Cela permet au code et aux données d'être partagés et modifiés de manière modulaire.

Cadre:

  

Un framework logiciel, en programmation informatique, est une abstraction dans laquelle un code commun fournissant des fonctionnalités génériques peut être remplacé ou spécialisé de manière sélective par un code utilisateur fournissant des fonctionnalités spécifiques. Les frameworks sont similaires aux bibliothèques logicielles en ce qu'ils sont des abstractions de code réutilisables encapsulées dans une API bien définie. Contrairement aux bibliothèques, toutefois, le flux de contrôle du programme global n'est pas dicté par l'appelant, mais par le framework. Cette inversion de contrôle est la caractéristique distinctive des frameworks logiciels.

SDK:

  

Un kit de développement logiciel (SDK ou "devkit") est généralement un ensemble d’outils de développement permettant à un ingénieur logiciel de créer des applications pour un certain progiciel, une infrastructure logicielle, une plate-forme matérielle, un système informatique, une console de jeu vidéo, système, ou une plateforme similaire. Cela peut être quelque chose d'aussi simple qu'une interface de programmation d'application sous la forme de certains fichiers pour se connecter à un langage de programmation particulier ou inclure un matériel sophistiqué pour communiquer avec un certain système intégré. Les outils courants incluent les outils de débogage et les autres utilitaires souvent présentés dans un IDE. Les kits SDK incluent également fréquemment des exemples de code et des notes techniques de support ou toute autre documentation de support permettant de clarifier certains points du document de référence principal.

Donc:

  • La bibliothèque est le code que votre application appelle.
  • Framework est une application ou une bibliothèque presque prête à l'emploi. Vous venez de remplir quelques points vides avec votre propre code appelé par le framework.
  • Le SDK est un concept plus vaste car il peut inclure des bibliothèques, des frameworks, de la documentation, des outils, etc.
  • .NET ressemble plus à une plate-forme qu'à un framework logiciel.

En résumé, la différence est la suivante:

  • Vous appelez les fonctions du SDK.
  • Le cadre appelle vos fonctions.

Un SDK est comme une boîte à outils avec de nombreux outils et vous choisissez ceux que vous utilisez et comment. Vous avez le contrôle mais aussi beaucoup de décisions à prendre. C'est un niveau assez bas.

Un cadre prend beaucoup de décisions pour vous, vous n'avez donc pas à réinventer la roue; C’est plutôt un " remplir les blancs " approche. Moins de liberté, mais vous gagnez beaucoup de temps et évitez probablement quelques erreurs.

Dans le cas particulier du framework .NET, il fait également référence aux fichiers d'exécution nécessaires à l'exécution des applications qui l'utilisent, mais ce n'est pas la façon dont le mot est utilisé dans un contexte de programmation ...

C’est une zone grise, mais les frameworks sont généralement les bibliothèques contre lesquelles vous codez. Les SDK disposent souvent d’outils supplémentaires pour vous aider à tirer le meilleur parti de Framework. Le Kit de développement logiciel (SDK) .NET Framework, que vous installez séparément, est un bon exemple. Il contient des outils supplémentaires tels que ildasm et cordb, qui ne font pas vraiment partie du cadre.

J'ai été le chef de file de Zend Framework dans sa version 1.0. Nous avons souvent entendu dire que ce n'était pas un "cadre". dans le sens où les développeurs s'y attendaient - ils ont dit que c'était plus une bibliothèque de classe.

Ils s’attendaient à ce qu’un framework ressemble davantage à un ensemble de classes que doit être utilisé ensemble pour qu’elles fonctionnent. Un cadre peut également inclure un ensemble de conventions de codage, vous guidant pour organiser votre code d’une certaine manière. Un framework peut également imposer des conventions de nommage pour vos classes et entités de base de données. Et enfin, des outils de génération de code.

Zend Framework a été conçu pour être couplé de manière lâche, vous pouvez donc utiliser n’importe laquelle des classes autonome si vous le souhaitez. Il a imposé peu de conventions sur votre code ou votre base de données. Et nous avions l'intention de développer des générateurs de code, mais nous ne les avions pas encore implémentés.

Mais j’ai toujours estimé que Zend Framework était qualifié de cadre, au lieu de SDK, d’une autre manière: un cadre est extensible . Il est conçu comme un ensemble de classes de base orientées objet, et l’utilisation prévue est que les développeurs étendent ces classes ou écrivent de simples classes de plug-in pour ajouter des fonctionnalités.

Un kit de développement logiciel traditionnel n'est pas extensible . Vous appelez simplement des méthodes API dans les classes fournies, elles font ce qu'elles font et vous vous occupez du résultat. Toute personnalisation dépend de votre utilisation de l’API et de la manière dont vous exploitez les résultats.

Microsoft SDK peut être utilisé par un développeur pour créer ses programmes. Les utilisateurs finaux n’en ont normalement pas besoin.

Microsoft Framework est en revanche obligatoire si vous souhaitez exécuter des applications .NET sur une machine.

Une bibliothèque de classes fournit des classes qui partagent généralement le même domaine d’application approximatif (mathématiques, rendu) mais qui sont conçues pour être utilisées de manière indépendante les unes des autres.

Un cadre fournit des classes qui forment ensemble la base d’une application que vous ne faites que développer et étoffer.

Un SDK contient tout ce dont vous aurez besoin pour utiliser la technologie fournie. Il contient souvent de la documentation, des exemples et des outils en plus du contenu principal, qui peut être un framework, une bibliothèque de classes ou même quelque chose de complètement différent.

Dans une comparaison, vous pourriez dire:
Bibliothèque - > Cadre - > SDK
Framework se compose de plusieurs bibliothèques, ainsi que de quelques outils (compilateurs, etc.) et ne cible pas une plateforme spécifique. Pour une plate-forme, plusieurs cadres peuvent être développés, chacun servant un objectif différent. Le Kit de développement logiciel (SDK) vous offre des infrastructures et tout ce dont vous avez besoin pour développer des logiciels pour une plate-forme spécifique.

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