2009-01-08 124 views
20

框架和SDK有什么区别?以MS平台SDK和.NET框架为例。两者都有API,都隐藏了它们的内部工作原理,并且都提供了可能不能快速/容易访问的功能(换句话说,它们服务于真实世界的目的)。框架与软件开发工具包

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

谢谢!

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

回答

12

SDK预计会提供工具来针对某个系统资源或功能进行编程。一个框架不一定(尽管.NET提供了一整套工具,如编译器等 - 但这些工具无论如何都是强制性的)。因此,你可以开发一个仅由库组成的框架,但是如果你称之为SDK,你将被期望提供一些支持开发的东西。

+1

这是很好的解释。如果我想让任何人在示例的帮助下理解,请为观众添加一点: .Net Framework =形成CLR的框架类库(FCL)集合 .Net SDK = .Net Framework + C#&VB编译器+ MS构建工具,用于打包由开发人员编写的代码+ Debugger + IIS express Web服务器在VS +中还有许多其他帮助您编写针对.Net框架类库(FCL)的程序以开发.Net应用程序的工具。 – RBT 2015-01-23 08:07:12

+2

另一个例子:Qt框架(库)和Qt SDK(Qt框架+ Qmake + Qt Creator + Qt Linguist + ...) – rbaleksandar 2016-11-24 09:17:45

1

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

如果你想在一台机器上运行.NET应用程序,微软框架是强制性的。

1

这是一个灰色地带,但框架往往是你编码的库,SDK通常有额外的工具来帮助你从框架中获得更多的功能。作为单独安装的.NET Framework SDK的一个很好的例子,SDK有额外的工具,如ildasm,cordb,它们不是框架的真正组成部分。

5

简而言之所不同的是:

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

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

一个框架为你做出了很多决定,所以你不必重新发明轮子; 这更多的是“填补空白”的方法。 自由度较低,但可以节省大量时间,并可能避免一些错误。

在.NET Framework它也指运行使用它的应用程序所需的运行时文件的具体情况,但它不是这个词在编程环境中使用的方式......

+0

我不确定为什么这会得到downvoted ...迄今为止的答案,这是最接近我对术语含义的理解。 – 2009-01-08 18:59:23

0

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

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

Zend Framework被设计为松散耦合的,因此如果您愿意,您可以使用任何类别的独立程序。它在你的代码或数据库上强加了一些约定。我们打算开发代码生成器,但尚未实现它们。

但我仍然认为Zend Framework以一种其他方式被限定为框架而不是SDK:框架是可扩展。它被设计为一组面向对象的基类,其用途是开发人员可以使用这些类,或者编写简单的插件类来添加功能。

传统SDK是不可扩展。你只需要在提供的类中调用API方法,他们做他们所做的事情,然后处理结果。任何定制都在您对API的使用以及您如何使用结果。

0

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

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

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

26

我只是维基百科复制:

库:

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

框架:

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

SDK:

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

所以:

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

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

相关问题