Architecture 框架与SDK

Architecture 框架与SDK,architecture,frameworks,sdk,semantics,Architecture,Frameworks,Sdk,Semantics,框架和SDK之间有什么区别?以MS平台SDK和.NET框架为例。两者都有API,都隐藏了它们的内部工作,并且都提供了其他方式可能无法快速/轻松访问的功能(换句话说,它们是用于实际用途的) 那么有什么区别呢?它主要是一个语义学的营销游戏,还是在开发人员与软件交互的方式上存在实际的差异(反之,开发人员如何期望软件的行为)?一个预期的水平比另一个高还是低,等等 谢谢 编辑:这个问题通常适用于SDK和框架,而不仅仅是上面提到的两个。SDK应该提供针对特定系统资源或功能进行编程的工具。框架不一定是必需的(

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

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

谢谢


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

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


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

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


如果您希望在计算机上运行.NET应用程序,则Microsoft Framework是必需的。

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

简而言之,区别在于:

  • 您可以调用SDK函数
  • 框架调用您的函数
SDK就像一个工具箱,里面有很多工具,您可以选择使用哪些工具以及如何使用。 你有控制权,但也有很多决定要做。这是相当低的水平

框架为您做出许多决策,因此您不必重新发明轮子; 这更像是一种“填空”的方法。 减少自由度,但可以节省大量时间,并可能避免一些错误

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

1.0版中我一直处于领先地位。我们经常听到这样的评论:它不是开发人员期望的“框架”——他们说它更像是一个类库

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

Zend框架被设计成松散耦合的,所以如果您愿意,您可以独立使用任何类。它对代码或数据库施加了一些约定。我们本来打算开发代码生成器,但还没有实现它们

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


传统SDK是不可扩展的。您只需在提供的类中调用API方法,它们执行它们所执行的操作,然后处理结果。任何定制都取决于您对API的使用以及如何利用结果。

类库提供的类通常共享相同的粗略应用领域(数学、渲染),但它们的使用基本上是相互独立的

框架提供了类,这些类共同构成了应用程序的基础,您只能对其进行扩展和充实


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

我将从维基百科复制:

图书馆:

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

框架:

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

SDK:

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

因此: