RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 585432
Accepted
Andrew Kachalin
Andrew Kachalin
Asked:2020-11-01 20:28:47 +0000 UTC2020-11-01 20:28:47 +0000 UTC 2020-11-01 20:28:47 +0000 UTC

框架、库和 API 之间的区别?

  • 772

那么框架、库和API之间的真正区别是什么?有一种观点认为,所有这些都是紧密的概念,到处都有可以构建到客户端代码中的类和方法。然而,似乎存在显着差异?

framework
  • 8 8 个回答
  • 10 Views

8 个回答

  • Voted
  1. Best Answer
    VladD
    2020-11-01T23:47:56Z2020-11-01T23:47:56Z

    让我们从API开始。这是最简单的选择:应用程序访问该应用程序外部代码的能力。这是一组功能,用于使程序外部的实体完成其工作。

    现实生活中的一个例子:你的公寓里有一个管道,API 是管道工的电话号码,这个管道可以在必要时修理。

    现在,库是一组随时可用的代码,它们在应用程序的上下文中运行,并以完全相同的方式完成其工作。也就是说,库在连接时成为应用程序的一部分。库和 API 之间的区别可能非常微妙:例如,WinAPI 提供有时也在进程中发生的功能。但是,这被认为是对应用程序外部平台的调用。

    现实生活中的一个例子:您自己并没有组装壁橱,而是购买了现成的房屋,将其放在您的公寓中并使用它。壁橱是您的插件库。

    好吧,框架- 它的功能与库不同,您不调用它,相反,您的代码是从它调用的。框架可以被认为是您自己添加必要功能的应用程序的半成品。

    现实生活中的一个例子:你买了一套几乎完工的公寓,然后自己添加家具、墙纸和橱柜。公寓是你的框架,它快准备好了。你不能只是重做房间的数量或把它变成一艘船,而只是添加内部功能:镶木地板、浴室里的蓬松浴袍和一只猫。

    • 51
  2. Makarenko_I_V
    2020-11-01T20:42:49Z2020-11-01T20:42:49Z

    如果你使用每一个,你就会明白其中的区别。

    应用程序接口:

    大多数情况下,它意味着一个交互界面。用于处理独立服务。假设您想将视频上传到 YouTube,您将通过 API 使用它们的功能。

    图书馆:

    大多数情况下,一组现成的类、方法、典型问题的解决方案。为特定的东西量身定做。假设您想识别照片中的人脸(通过您自己,不使用第三方服务),然后安装某种 OpenCV 并使用它,以免重新发明轮子。

    框架:

    为了方便起见,通常包括库。他们为您提供现成的应用程序模板,实现设计模式(MVC、MVVC 或其他)。框架通常由彼此刚性连接(使用彼此的接口)的现成模块组成,在开发模块时,您需要实现接口以便于模块的集成。

    • 16
  3. Alex Krass
    2020-11-01T21:44:32Z2020-11-01T21:44:32Z

    API是用于与外部程序交互的接口。你本身有某种成品,它似乎是一个黑盒子,你希望其他程序能够使用它。您定义与之交互的方法并描述它们,第三方程序使用它。这个概念本身非常广泛,更多时候它仍然用于与主应用程序之外的远程服务和请求相关的方面。粗略地说,API 是对与黑盒交互的描述,以便它为你做这个或那个动作。

    库是各种函数和子程序的集合,可以在以后的各种应用程序中移植和使用。主要思想是它们可以在应用程序之间移植,并且可以在不修改的情况下重复使用。

    框架是未来应用程序的框架,它包含所有基本的必要细节:库、结构、初始代码等。我们可以说这是最小的工件,您将在此基础上添加功能并进一步构建应用程序。您的应用程序将由于已经存在并为您精心准备的内容而工作。

    • 11
  4. Ольга
    2020-11-01T21:52:14Z2020-11-01T21:52:14Z

    图书馆通常很小,是为特定的东西而创建的,通常是一个目的。比如一个js日历库,一个winforms图表。

    API 是系统的公开接口:其他人可以使用的方法、类等。

    框架是一个涵盖任何主题的许多主题的大型系统。例如,.NET 框架。这是一堆满足各种需求的库。您既可以编写 Web 应用程序,也可以编写 winforms、wpf、wcf 等。

    • 7
  5. Xander
    2020-12-21T20:10:31Z2020-12-21T20:10:31Z

    如果在手指上,那么像这样:

    • 库是某种外部逻辑,您的代码可以自由访问它以提取某些功能。

    • 框架是某种现成的框架,您必须在其中安装您的代码。

    • API是一个系统暴露给外部的控制面板,以便其他系统可以访问它。

    • 2
  6. 11111000000
    2020-11-01T22:26:58Z2020-11-01T22:26:58Z

    API是一种模式。

    库和框架提供 API。

    API 可以构建在框架之上。

    该框架由库组成或者是它们连接的模式。

    该库可以由平台框架构建。

    • 1
  7. Alexander Pavlenko
    2020-05-04T15:46:00Z2020-05-04T15:46:00Z

    Api(应用程序接口)——访问应用程序的功能。库(程序集)- 包含一组类或方法的单独模块。好吧,该框架不仅仅是一组功能,如 api、sdk 或库——它是一个成熟的开发环境,除了一组可在您的应用程序中使用的类和方法之外,该框架还为您提供必要的下划线、编译器、解释器、包管理器、反编译器等等。例如。Net、nodejs、java都是框架。

    • 0
  8. Aaron Peisakhovich
    2020-08-03T23:11:11Z2020-08-03T23:11:11Z

    如果我有任何错误,请纠正我。库 (*.dll) - 愚蠢的原始驱动程序。(驱动程序和程序之间的区别在于驱动程序代码中没有入口点(所谓的和心爱的函数“main(){}”...) .without psv ma​​in(){} 程序变成了一个库(一组类) 一个框架是一个SDK,它使用了一个API(它又使用了一个库/驱动程序的*.dll) 一个框架是一个SDK,它使用 API。

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5