API和框架的区别

34
这两个术语有什么区别?非常感谢任何好的简化和好的例子。
11个回答

62

框架是一组类、接口和其他预编译代码,应用程序可以通过使用它们来构建。

API 是框架的公共界面。一个设计良好的框架只会暴露那些需要使用框架的类、接口等。支持框架操作但对框架用户不必要的代码被保留在框架的程序集/dll中。这使得框架的公共界面变小,并鼓励“成功之坑”,即使框架易于做正确的事情。

(我提供一个来自 .NET 世界的例子)SqlConnection 类用于连接到 Sql Server 实例。它的公共 API 很简单:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do work here; connection closed on following line.
}

然而,这个类依赖于 System.Data 框架中的约 200 个方法(在这种情况下,是一个 程序集),其中 3/4 是内部方法,不属于 System.Data 的公共 API 部分。由于框架的 API 被保持简单,因此使用 SqlConnection 变得容易。如果用户需要处理 SqlConnectionFactorySqlDebugContextDbConnectionPoolGroup 或任何其他 SqlConnection 类所需的内部类,则使用 SqlConnection 将变得更加困难。由于 API 仅暴露了框架的一小部分,因此更容易创建和使用连接。


2
我有一个问题。在Java中,为什么Collections被称为API和框架。有时它被写成“Collections API”,有时是“Collections框架”。另外,考虑到你的答案,Java的“Reflection API”呢?它是Java哪个框架的一部分? - shanti
1
我不知道。我也不知道。 - user1228

8
API是一个接口,用于封装功能的(一组)组件。例如,GoogleMaps API、DirectX或OpenGL APIs。
框架更像是一组工具、组件,旨在帮助开发人员在给定的框架中开发自己的项目。框架通常设置一些编码标准,提供有用的组件等。例如,Symfony/Cake是PHP Web应用程序框架,JUnit是Java单元测试的框架。
框架通常可以为某些API提供统一的接口。
一些API可以使用框架进行内部构建。

3
  1. API - 应用程序接口 -> 使用库的API时必须遵守的合同
  2. library - 一组解决特定问题的类/模块 -> 具有API
  3. framework - 一个“更大”的库集合,并有一套使用规则

由于每个库都有API,因此没有必要举例。

一个流行的Java时间库是Joda时间

一个流行的Java框架是Spring框架

您必须遵守许多规则才能很好地使用Spring。您不必遵守太多规则才能使用Joda时间。


2

API是代码拥有的东西,而不是它本身。框架具有API,但它本身不是API。


2
  • API(应用程序编程接口)是一组预先编写的包、类和接口及其各自的方法。您可以在不太关注内部实现的情况下使用它。API 用作两个或多个应用程序之间的接口,就像 REST API。

  • 框架是一个包含设计模式、类、接口和库的骨架,可用于构建应用程序。框架提供了控制反转,将程序流程的责任交给框架本身,同时我们可以在不改变其预定义代码的情况下扩展框架。例如,Spring 是一个可用于构建 Web 应用程序的框架。


0

API是从SDK中预先构建的(或者您可以将其包含在其中)。框架是可加载的捆绑包,其中这些捆绑包的公开函数可以被使用。您可以通过使用函数指针来获取这些框架的公开函数。

例如:

API:

-stringWithString:

框架中的函数:

-myExposedMethod:

0
  1. Java API 简单来说就是...应用程序编程接口,其中描述了产品或软件的所有功能。

  2. Java框架 意味着半成品项目或代码。它提供了一个架构来制作项目。框架有自己的类和方法等。


“Collections Framework”是什么?为什么要这样称呼它? - shanti

0
框架和API的主要区别在于,框架允许开发人员通过生命周期回调方法机制来钩取对象的生命周期,而API则不会这样做,API仅旨在执行功能。

0
另一种可视化的方法是这样的:(适用于任何编程语言)

任何(!) "旨在被其他软件使用的软件" 定义上必须具有一些"应用程序接口 (API)",它代表了其他软件预期(并且允许)使用的"旋钮、开关和控制器"。所有内部实现细节都不可见且无法访问。

"框架"是为人们更容易地编写特定类型的应用程序——例如网页而设计的工具。框架以一种经过充分测试的方式实现"每个这种应用程序需要能够执行的任务",目的是"确保您 (应用程序作者) 无需重复编写相同的内容,并担心是否正确",您只需利用框架已经为您完成的工作。

毕竟...

Actum Ne Agas: 不要再做已经完成的事情。


0

框架用于设计应用程序,例如MVC、MEF。就像您建立的模型一样,几乎是某个功能集的基础,您可能希望在应用程序中使用。

API用于应用程序之间的交互,您的应用程序将使用Facebook API与Facebook进行交互。

希望这更加清晰明了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接