2009-01-08 28 views
20

¿Cuál es la diferencia entre un framework y un SDK? Tomemos, por ejemplo, el MS Platform SDK y el .NET framework. Ambos tienen API, ambos ocultan su funcionamiento interno, y ambos proporcionan una funcionalidad que puede no ser rápida/fácilmente accesible de otra manera (en otras palabras, cumplen un propósito en el mundo real).Frameworks vs. SDKs

¿Cuál es la diferencia? ¿Es principalmente un juego de marketing de semántica, o existen diferencias reales en cómo se espera que los desarrolladores interactúen con el software (y, a la inversa, cómo los desarrolladores pueden esperar que el software se comporte)? ¿Se espera que uno sea de nivel más alto o más bajo que el otro, etc.?

Gracias!

EDITAR: Esta pregunta se aplica a los SDK y marcos en general, no solo a los dos mencionados anteriormente.

Respuesta

12

Se espera que un SDK ofrezca herramientas para programar contra un determinado recurso o característica del sistema. Un Framework no necesariamente (aunque .NET ofrece un conjunto completo de herramientas tales como los compiladores, etc.), pero estas son obligatorias para que funcionen de todos modos).

Por lo tanto, podría desarrollar un Framework que consista únicamente en bibliotecas, pero si lo llama SDK, se espera que ofrezca algo para apoyar el desarrollo.

+1

Esa fue una gran explicación. Sólo para añadir un poco para los espectadores si quiero hacer que alguien entender con la ayuda de un ejemplo a continuación: Net Framework = Conjunto de librerías de clases marco (FCL), que forman el CLR .Net SDK = Net Framework + Compilador C# & VB + herramienta MS Build para empaquetar el código escrito por desarrollador + depurador + servidor web IIS express en VS + Muchas otras cosas que le ayudan a escribir el programa contra .NET Framework Class Libraries (FCL) para desarrollar una aplicación .Net. – RBT

+2

Otro ejemplo: marco de Qt (las bibliotecas) y Qt SDK (marco Qt + qmake + + Qt Creator Qt Linguist + ...) – rbaleksandar

1

Microsoft SDK podría ser utilizado por el desarrollador para crear sus programas. Los usuarios finales normalmente no lo necesitan.

En su lugar, Microsoft Framework es obligatorio si desea ejecutar la aplicación .NET en una máquina.

1

Es un área gris pero los marcos suelen ser las bibliotecas contra las que codifica, los SDK a menudo tienen herramientas adicionales para ayudarlo a obtener más del Framework. Un buen ejemplo es el .NET Framework SDK que se instala por separado, el SDK tiene herramientas adicionales como ildasm, cordb, que en realidad no son parte del framework.

5

En pocas palabras, la diferencia es:

  • Se llama a las funciones de SDK.
  • El marco llama a sus funciones.

Un SDK es como una caja de herramientas con muchas herramientas y eliges las que usas y cómo. Tiene el control pero también muchas decisiones que tomar. Eso es bastante bajo nivel.

Un marco toma muchas decisiones para usted, por lo que no tiene que reinventar la rueda; Es más un enfoque de "rellenar los espacios en blanco". Menos libertad, pero ahorrará mucho tiempo y probablemente evitará algunos errores.

En el caso particular del marco .NET también se refiere a los archivos de tiempo de ejecución necesarios para ejecutar aplicaciones que utilizan, pero que no es la forma en que la palabra se usa en un contexto de programación ...

+0

No estoy seguro de por qué esto quedó downvoted ... De las respuestas hasta el momento, es el lo más cercano a mi comprensión del significado de los términos. –

+1

Porque los puntos de viñeta son incorrectos. Las funciones que llama es la API, no el SDK. SDK es una cosa "definida en gris". Es solo un marco con cosas adicionales para ayudarte. – lespommes

0

yo era el plomo en Zend Framework a través de su versión 1.0. A menudo recibimos comentarios de que no era un "marco" en el sentido en que los desarrolladores esperaban; decían que era más una biblioteca de clases.

Esperaban que un framework fuera más parecido a un conjunto de clases que debe usar para que funcionen juntos. Un marco también puede incluir un conjunto de convenciones de codificación que lo guíen a organizar su código de cierta manera.También un marco puede imponer convenciones de nomenclatura para sus clases y entidades de base de datos. Y finalmente, herramientas de generación de código.

Zend Framework fue diseñado para ser acoplado libremente, por lo que podría usar cualquiera de las clases de forma independiente si así lo deseara. Impuso pocas convenciones en su código o su base de datos. Y teníamos la intención de desarrollar generadores de código pero todavía no los habíamos implementado.

Pero todavía sentía que Zend Framework calificaba como un marco, en lugar de un SDK, de otra manera: un marco es extensible. Está diseñado como un conjunto de clases base orientadas a objetos, y el uso previsto es que los desarrolladores extend estas clases, o escriban clases sencillas de complementos, para agregar funcionalidad.

Un SDK tradicional es no extensible. Simplemente llama a los métodos API en las clases provistas, ellos hacen lo que hacen, y tú lidias con el resultado. Cualquier personalización se basa en el uso que haga de la API y la forma en que utiliza los resultados.

0

Una biblioteca de clases proporciona clases que generalmente comparten el mismo área aproximada de aplicación (matemática, representación) pero están destinadas a ser utilizadas en su mayoría independientes entre sí.

Un marco proporciona clases que, en conjunto, forman la base de una aplicación que solo amplía y desarrolla.

Un SDK contiene todo lo que necesitará para utilizar la tecnología que se proporciona con el SDK. A menudo contiene dokumentation, samples y herramientas junto con el contenido principal real que podría ser un framework o una biblioteca de clases o incluso algo completamente diferente.

26

Voy a copiar de Wikipedia:

Biblioteca:

Una biblioteca es una colección de subrutinas o clases que se utilizan para desarrollar software. Las bibliotecas contienen código y datos que proporcionan servicios a programas independientes. Esto permite que el código y los datos se compartan y modifiquen de forma modular.

Marco:

un marco de software, en la programación de computadoras, es una abstracción en la que el código común que proporciona funcionalidad genérica se puede anular o especializada por código de usuario que proporciona una funcionalidad específica de forma selectiva. Los marcos son similares a las bibliotecas de software en que son abstracciones reutilizables de código envuelto en una API bien definida. A diferencia de las bibliotecas, sin embargo, el flujo de control del programa en general no es dictado por la persona que llama, sino por el marco. Esta inversión de control es la característica distintiva de los marcos de software.

SDK:

Un kit de desarrollo de software (SDK o "SDK de") es típicamente un conjunto de herramientas de desarrollo que permite a un ingeniero de software a crear aplicaciones para un determinado paquete de software, estructura de software, hardware plataforma, sistema informático, consola de videojuegos, sistema operativo o plataforma similar. Puede ser algo tan simple como una interfaz de programación de aplicaciones en forma de algunos archivos para interactuar con un lenguaje de programación particular o incluir hardware sofisticado para comunicarse con un determinado sistema integrado. Las herramientas comunes incluyen ayudas de depuración y otras utilidades a menudo presentadas en un IDE.Los SDK también incluyen con frecuencia código de muestra y notas técnicas de respaldo u otra documentación de respaldo para ayudar a aclarar puntos del material de referencia principal.

Así:

  • Biblioteca es el código que su aplicación requiere.
  • Framework es una aplicación o biblioteca que está casi lista. Simplemente complete algunos espacios en blanco con su propio código que llama el marco.
  • SDK es un concepto más grandes, ya que puede incluir bibliotecas, marcos, documentación, herramientas, etc.
  • .NET es realmente más como una plataforma, no un marco de software.
+1

Y cuál es la diferencia con un 'motor' – Delta

+1

@Delta un motor es una especie de marco que también proporciona un entorno de ejecución con el que sus programas interactúan. Creo que la idea clave es que el motor está "funcionando" con su código controlando o "manejando" las acciones. –

0

En una comparación, se podría decir:
Biblioteca -> Marco -> SDK
marco se compone de varias bibliotecas, además de algunas herramientas (compiladores, etc.), y no se dirige a una plataforma específica. Para una plataforma, puede haber varios marcos desarrollados cada uno con un objetivo diferente. SDK le ofrece marcos y todo lo demás que necesita para desarrollar software para una plataforma específica.