库还是框架还是API?[关闭]


33

库,框架和API有什么区别?在我看来,它们都一样。我想听听人们对此的想法。





2
@Jorg:您应该将此作为答案提交。就目前而言,这是边缘垃圾邮件,并阻塞了页面。

2
@Sergio-JörgW Mittag对SO有1171个深思熟虑的答案(此处有42个深思熟虑的答案)。他不是很难。他试图通过显示此问题的必要性来改善P.SE(更不用说这里没有答案提到了框架的显着特征)。
科尔宾2011年3

Answers:


35

库是用于特定目的的功能/对象的集合。您可以在各种项目中使用库。

框架是模式和库的集合,可帮助构建应用程序。

API是其他程序无需直接访问即可与您的程序进行交互的接口。

换句话说,将库视为应用程序的附件/片段,将框架视为应用程序的框架,将API视为该应用程序的外向部分。


7
那不是一个很好的框架定义。我真的不会将任何框架称为“模式和库的集合”
TheLQ 2011年

框架更像是要构建的环境。+1
除外

是的,我有点不知所措。有人有更好的建议吗?其他明智者随时可以编辑。我去看了维基百科,该维基百科称其为框架:“框架是软件库的一种特例,因为它们是包装在定义良好的应用程序编程接口(API)中的代码的可重用抽象”,这似乎引起了更多的混乱。这个问题的上下文比帮助。
GSto 2011年

3
库是由您的代码负责(您的代码“使用该库”),而框架是由它负责(该框架“运行您的代码”)。例如,框架规定了事物必须发生的顺序(Swing,Servlet),而使用库则可以决定何时以及如何使用它(图像转换,加密)。API只是可以调用的一堆函数的定义,并且是库和框架的一部分。
Martin Wickman

14

到目前为止,很好的答案是,但是他们错过了一个关键点-框架使用IoC。您的代码被框架包围。它生活在里面。相反,您的代码仅使用库或API。它住在外面。IoC是不同的。


不一定正确。框架可以使用IoC,并且您的应用程序可以存在于框架内,但不是必须的。愚蠢的是,有关框架的Wikipedia条目将其列为框架的“区别特征”,并引用了该论文“ dirkriehle.com/computer-science/research/dissertation/… ”,但该论文本身未包含短语“倒置”或“ ioc”,并实际上指出“通常,应用程序不仅使用一个框架,还使用多个框架。” (p26,参考p9)
柯克·布罗德赫斯特

11
@Kirk Broadhurst实际上是在思考Martin Fowler:“控制反转是使框架与库不同的关键部分。...一个框架体现了一些抽象设计,并内置了更多的行为。为了使用它需要通过子类化或插入自己的类将行为插入框架中的各个位置。然后,框架的代码将调用您的代码...”。如果我们得出结论,IoC不是一个明显的功能,则没有特色-它们都是一样的,这很无聊。
Scant罗杰

@ ScantRoger,Java Collections Framework是否使用IoC?似乎也不是那么.......
Pacerier

3

库是为执行常见任务而构建的代码的集合。库代码往往相对稳定且无错误。使用适当的库可以减少需要编写的代码量。它将倾向于减少应用程序的代码行数,从而提高功能交付的速度。在大多数情况下,使用库例程比编写自己的代码更好。

API(应用程序编程接口)是某些功能的接口,该功能允许应用程序访问可用功能。API可以被称为接口。API存在于许多级别,包括系统,库,框架,程序和应用程序。应该在实现实现API的代码之前定义API。

API应该稳定,尽管由于各种原因可以弃用部分API。API使用得越广泛,更改它就越困难。尽管不赞成使用许多方法,但大多数(如果不是全部)Java 1.0 API仍然可用。

框架是旨在简化应用程序构建的API的集合。框架提供了可重用组件的实现。好的框架往往专门用于它们的应用程序。

Java集合框架是各种类型的对象的API的集合,可用于处理集合。它为各种集合提供了API的层次结构。在Java Collections Framework中,SortedSet接口扩展了Set接口,而Set接口又扩展了Collection接口。这些API是抽象接口,实际的实现具有不同的名称。集合框架使实现集合变得简单,并简化了开发过程中不断变化的实现。

如针对J2EE开发的Java Spring框架所示,框架可以由较小的框架构建。Spring由十几个框架组成,其中许多框架可以单独使用或替换为其他框架。

使用适当的库,API和框架可以简化开发。这些组件负责处理常见问题,并允许开发团队专注于特定于应用程序的问题。


2

框架是从库升级的。如果您的工具箱是一个库,那么您的研讨会将是一个框架。

维基百科说

API是一种抽象,描述了与软件系统组件所使用的一组功能进行交互的接口

API和用户界面之间的重要区别在于,API使其他软件/服务可以通过编程方式与您的解决方案进行交互。

可以为应用程序(通过dll或插件)或网站和服务(通过REST和网络服务)构建API


打个比方...
sunwukung 2011年

1

API根据可以从源代码中使用哪些对象和方法来定义如何使用其他内容。例如,将Twitter或Facebook集成到站点中使用Twitter或Facebook中的API来确保更新正确的数据。

从某种意义上说,框架往往会比较庞大,因为有时它几乎可以形成自己的语言。jQuery是一个框架的示例,该框架具有自己的语法,并且在某种意义上具有进入我的代码的重要性。从某种意义上说,框架也可以是使其与API相似的平台,例如Win32API或.Net Framework每种都有许多用于构建应用程序的方法,因此可以有其中包含API的Framework和也被视为Framework的API。

库通常是实现API或框架的二进制文件,因此在某些情况下,它们是必须使用API​​或框架的位。至少这就是我如何看待这些术语以及它们之间的差异。


1

去图书馆开始读书。如果您是应用程序,那么书籍就是图书馆。架子,橱柜和容纳所有这些的化合物构成了框架。API是您执行阅读书籍任务时接触的所有内容。


这是一个很好的答案。
Magus 2014年

0

库是用于简化常见任务的代码集合-它可以是类,函数或特定于您的语言或平台的任何东西。一个很好的例子可能是一个字符串处理库,它为常见任务(构建,拆分,搜索或排序字符串等)提供帮助。

API(应用程序编程接口)是如何与其他应用程序,系统或技术一起使用的定义(“接口”)。它实质上定义了可用于与该其他系统进行交互的操作。API 可以是一个库(意味着该API被包装在一个库或一组类中),但是区别在于API始终引用外部系统-无论是数据库,Web服务,另一个应用程序还是操作系统本身。

框架是一个更大的概念-它通常包含许多库和API,以执行常见任务。它在更高的概念层次上存在-它不仅是工具的集合,而且是设计模式,最佳实践和方法的集合。软件框架是一个通用框架的扩展-其含义包括作为构建事物的基础,提供支持和结构以及为需求提供指导和定义。


0

该应用程序是使用基于框架的库开发的,并通过API进行通信。

如果您在构建应用时说一个在线图像处理应用,

  • 您可以使用一些预先编写的图像处理库。
  • 在您知道的任何框架上,它将指导您构建应用程序。
  • 您将为应用程序提供某种与外界交互的方式。这就是您与世界其他地方的应用程序API。

当有电话打入您的应用程序时

  • 它会以您在框架指导下的设计方式进行处理
  • 处理图书馆携带的电话
  • 这些功能将通过您的API从外部访问

给主叫人

这些存在的原因:

  • 库:避免您重新发明轮子
  • 框架:除非框架本身存在缺陷,否则可以避免系统设计和处理的意外陷阱
  • API:通过连接真实世界访问的核心来确保应用程序的安全性
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.