框架与SDK

时间:2009-01-08 16:10:23

标签: architecture frameworks sdk semantics

框架和SDK有什么区别?以MS平台SDK和.NET框架为例。两者都有API,都隐藏了它们的内部工作方式,并且都提供了可能无法快速/轻松访问的功能(换句话说,它们服务于实际目的)。

那有什么区别?它主要是一个语义营销游戏,还是开发人员与软件交互的方式存在实际差异(相反,开发人员如何期望软件的行为)?是否有人会比其他人更高或更低等等?

谢谢!

编辑:这个问题一般适用于SDK和框架,而不仅仅是上面提到的两个。

8 个答案:

答案 0 :(得分:38)

我只是从维基百科复制:

库:

  

库是用于开发软件的子例程或类的集合。库包含为独立程序提供服务的代码和数据。这允许以模块化方式共享和更改代码和数据。

框架:

  

计算机编程中的软件框架是一种抽象,其中提供通用功能的公共代码可以被提供特定功能的用户代码选择性地覆盖或专用。框架类似于软件库,因为它们是包含在定义良好的API中的可重用的代码抽象。然而,与库不同,整个程序的控制流程不是由调用者决定的,而是由框架决定的。这种控制反转是软件框架的显着特征。

SDK:

  

软件开发工具包(SDK或“devkit”)通常是一组开发工具,允许软件工程师为特定软件包,软件框架,硬件平台,计算机系统,视频游戏控制台,操作系统创建应用程序或类似的平台。它可以是一些简单的应用程序编程接口,其形式为某些文件以与特定编程语言接口,或者包括用于与某个嵌入式系统通信的复杂硬件。常用工具包括调试辅助工具和IDE中常见的其他实用工具。 SDK还经常包含示例代码和支持技术说明或其他支持文档,以帮助澄清主要参考资料中的要点。

所以:

  • 库是应用程序调用的代码。
  • Framework是一个几乎就绪的应用程序或库。您只需使用框架调用的自己的代码填写一些空白处。
  • SDK是一个更大的概念,因为它可以包括库,框架,文档,工具等。
  • .NET更像是一个平台,而不是一个软件框架。

答案 1 :(得分:15)

SDK应该提供针对特定系统资源或功能进行编程的工具。一个框架不一定(虽然.NET提供了一整套工具,如编译器等 - 但这些工具对于它无论如何都是必须的。)

因此,您可以开发一个仅由库组成的框架,但如果您将其称为SDK,则需要提供支持开发的内容。

答案 2 :(得分:8)

简而言之,区别在于:

  • 您调用SDK函数。
  • 框架调用您的函数。

SDK就像一个包含大量工具的工具箱,您可以选择使用哪些工具以及如何使用。 你有控制权,但也有很多决定要做。那是相当低的水平。

框架为您做出了很多决定,因此您不必重新发明轮子; 它更像是一种“填补空白”的方法。 较少的自由,但你节省了大量的时间,可能避免一些错误。

在.NET框架的特定情况下,它还引用了使用它运行应用程序所需的运行时文件,但这不是在编程上下文中使用该单词的方式......

答案 3 :(得分:1)

开发人员可以使用Microsoft SDK来创建他们的程序。最终用户通常不需要它。

如果要在计算机上运行.NET应用程序,则必须使用Microsoft Framework。

答案 4 :(得分:1)

这是一个灰色区域,但Frameworks往往是您编写代码的库,SDK通常有额外的工具来帮助您从框架中获得更多。作为单独安装的.NET Framework SDK的一个很好的例子,SDK有额外的工具,如ildasm,cordb,它们实际上不是框架的一部分。

答案 5 :(得分:1)

我是Zend Framework的1.0版本。我们经常得到的评论是,它不是开发人员所期望的“框架” - 他们说这更像是一个类库。

他们希望框架更像是一组必须一起使用才能工作的类。框架还可能包含一组编码约定,指导您以某种方式组织代码。框架也可以为您的类和数据库实体强加命名约定。最后,代码生成工具。

Zend Framework被设计为松散耦合,因此如果您愿意,可以单独使用任何类。它对您的代码或数据库强加了很少的约定。我们原本打算开发代码生成器,但还没有实现它们。

但我仍然觉得Zend Framework以另一种方式作为框架而不是SDK来合格:框架是可扩展的。它被设计为一组面向对象的基类,预期用途是开发人员extend这些类或编写简单的插件类来添加功能。

传统SDK 不可扩展。您只需在提供的类中调用API方法,它们就会执行它们的操作,并处理结果。任何自定义都在您使用API​​以及如何使用结果。

答案 6 :(得分:0)

类库提供的类通常共享相同的粗略应用程序区域(数学,渲染),但主要用于彼此独立。

框架提供的类一起构成了一个只能扩展和充实的应用程序的基础。

SDK包含使用SDK提供的技术所需的一切。它通常包含dokumentation,示例和工具以及实际的核心内容,可能是框架或类库,甚至是完全不同的东西。

答案 7 :(得分:0)

在一个比较中,你可以说:
图书馆 - >框架 - > SDK
框架由几个库和一些工具(编译器等)组成,并不针对特定平台。对于一个平台,可能会开发几个框架,每个框架都有不同的用途。 SDK为您提供框架以及为特定平台开发软件所需的一切。