代码之家  ›  专栏  ›  技术社区  ›  Brian

框架与SDK

  •  25
  • Brian  · 技术社区  · 17 年前

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

    那有什么区别呢?它主要是一个语义学的营销游戏,还是在开发者期望如何与软件交互方面存在实际差异(相反,开发者期望软件如何运行)?其中一个预计会高于或低于另一个,等等?

    谢谢!

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

    8 回复  |  直到 7 年前
        1
  •  14
  •   Otávio Décio    17 年前

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

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

        2
  •  33
  •   John Smith    17 年前

    我将从维基百科中复制:

    图书馆:

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

    框架:

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

    SDK:

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

    所以:

    • 库是应用程序调用的代码。
    • 框架是一个应用程序或库,几乎已经准备好了。您只需使用框架调用的代码填充一些空白点。
    • SDK是一个更大的概念,因为它可以包括库、框架、文档、工具等。
    • .NET更像是一个平台,而不是软件框架。
        3
  •  7
  •   siukurnin    17 年前

    简而言之,区别在于:

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

    一个SDK就像一个工具箱,里面有很多工具,你可以选择你使用的工具和方法。 你有控制权,但也有很多决定要做。这是相当低的水平。

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

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

        4
  •  1
  •   erlando    17 年前

    这是一个灰色地带,但框架往往是你用来编码的库,SDK通常有额外的工具来帮助你从框架中得到更多的东西。一个很好的例子是单独安装的.NET Framework SDK,该SDK具有额外的工具,如ildasm、cordb,这些工具实际上不是框架的一部分。

        5
  •  1
  •   Bill Karwin    17 年前

    我是领头羊 Zend Framework 通过它的1.0版本。我们经常得到这样的评论:从开发人员预期的意义上讲,它不是一个“框架”——他们说它更像是一个类库。

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

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

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

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

        6
  •  1
  •   Brien Foss    7 年前

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

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

        7
  •  0
  •   lithander    17 年前

    类库提供的类通常共享相同的大致应用领域(数学、渲染),但主要是相互独立使用的。

    框架提供了一些类,这些类共同构成了一个应用程序的基础,您只需要扩展和充实它。

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

        8
  •  0
  •   dsynkd    13 年前

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

    推荐文章