框架和SDK有什么区别?以MS平台SDK和.NET框架为例.两者都有API,都隐藏了它们的内部工作方式,并且都提供了可能无法快速/轻松访问的功能(换句话说,它们服务于实际目的).
那有什么区别?它主要是一个语义营销游戏,还是开发人员与软件交互的方式存在实际差异(相反,开发人员如何期望软件的行为)?预计会比其他人更高或更低等等吗?
谢谢!
编辑:这个问题一般适用于SDK和框架,而不仅仅是上面提到的两个.
我只是从维基百科复制:
图书馆:
库是用于开发软件的子例程或类的集合.库包含为独立程序提供服务的代码和数据.这允许以模块化方式共享和更改代码和数据.
框架:
计算机编程中的软件框架是一种抽象,其中提供通用功能的公共代码可以被提供特定功能的用户代码选择性地覆盖或专用.框架类似于软件库,因为它们是包含在定义良好的API中的可重用的代码抽象.然而,与库不同,整个程序的控制流程不是由调用者决定的,而是由框架决定的.这种控制反转是软件框架的显着特征.
SDK:
软件开发工具包(SDK或"devkit")通常是一组开发工具,允许软件工程师为特定软件包,软件框架,硬件平台,计算机系统,视频游戏控制台,操作系统或类似软件创建应用程序.平台.它可以是一些简单的应用程序编程接口,其形式为某些文件以与特定编程语言接口,或者包括用于与某个嵌入式系统通信的复杂硬件.常用工具包括调试辅助工具和IDE中常见的其他实用工具.SDK还经常包含示例代码和支持技术说明或其他支持文档,以帮助澄清主要参考资料中的要点.
所以:
库是应用程序调用的代码.
框架是一个几乎已经准备好的应用程序或库.您只需使用框架调用的自己的代码填写一些空白处.
SDK是一个更大的概念,因为它可以包括库,框架,文档,工具等.
.NET实际上更像是一个平台,而不是一个软件框架.
SDK有望提供针对特定系统资源或功能进行编程的工具.一个框架不一定(尽管.NET提供了一整套工具,如编译器等 - 但这些工具对于它无论如何都是必须的).
因此,您可以开发一个仅由库组成的框架,但如果您将其称为SDK,则需要提供支持开发的内容.
简而言之,区别在于:
您调用SDK函数.
框架调用您的函数.
SDK就像一个包含大量工具的工具箱,您可以选择使用哪些工具以及如何使用.你有控制权,但也有很多决定要做.这是相当低的水平.
框架为您做出了很多决定,因此您不必重新发明轮子; 它更像是一种"填补空白"的方法.较少的自由,但你节省了大量的时间,可能避免一些错误.
在.NET框架的特定情况下,它还引用了使用它运行应用程序所需的运行时文件,但这不是在编程上下文中使用该单词的方式...