【发布时间】:2011-05-24 17:44:46
【问题描述】:
这两个术语有什么区别,提前感谢任何好的简化和好的例子。
【问题讨论】:
标签: api frameworks
这两个术语有什么区别,提前感谢任何好的简化和好的例子。
【问题讨论】:
标签: api frameworks
框架是一组类、接口和其他预编译代码,可以在其上或通过使用来构建应用程序。
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 个方法(在本例中为 assembly),其中 3/4 是内部的而不是System.Data 的公共 API 的一部分。因为框架的 API 保持简单,所以正确使用 SqlConnection 变得很容易。如果用户需要处理 SqlConnectionFactory、SqlDebugContext、DbConnectionPoolGroup 或 SqlConnection 类所需的任何其他内部类,它将变为正确使用 SqlConnection 的难度成倍增加。因为 API 只暴露了框架的一小部分,所以更容易创建和使用连接。
【讨论】:
API 是封装功能的(一组)组件的接口。例如,GoogleMaps API、DirectX 或 OpenGL API。
框架更像是一组工具和组件,旨在帮助开发人员在给定的框架中开发他/她的项目。该框架通常设置一些编码标准,提供有用的组件,...例如,Symfony/Cake 是 PHP Web 应用程序框架。 JUnit 是 Java 中的单元测试框架,...
框架通常可以捆绑/为某些 API 提供统一接口。
有些 API 可以使用框架在内部构建。
【讨论】:
由于每个库都有一个 API,所以没有必要举例说明。
一个流行的 Java 时间库是Joda time。
一个流行的 Java 框架是Spring framework。
你必须遵守很多规则才能很好地使用 Spring。使用 Joda 时间不必遵守那么多规则。
【讨论】:
API 是代码拥有的东西, 不是它是的东西。 框架拥有 API,但它本身不是 API。
【讨论】:
API 是 SDK 中预先内置的(或者您可以从中包含在内)。框架是可加载的包,其中可以使用此类包的公开功能。您可以通过函数指针获取这些框架的公开函数。
例子:
API:
-stringWithString:
来自框架的函数:
-myExposedMethod:
【讨论】:
框架用于设计应用程序,即MVC、MEF。就像您构建的模型一样,几乎是您在应用程序中可能需要的特定功能集的基础。
API 用于应用程序之间的交互,您的应用程序将使用 Facebook API 与 Facebook 进行交互。
希望这更清楚一点。
【讨论】:
Java API 仅表示...应用程序编程接口,其中描述了产品或软件的所有功能。
Java 框架 表示半完成的项目或代码。它提供了一个架构来制作项目。框架有自己的类和方法等。
【讨论】:
API 只是一个使用特定语言构建的库,开发人员可以使用它来构建应用程序。 框架是一组库,就像 API 一样,但是语法可能与原始语言不同。因此开发人员可能正在编写不同的 PHP 语法,例如在使用 Symphony 时。
【讨论】:
框架和 API 的主要或核心区别在于框架允许开发人员通过生命周期回调方法机制挂钩对象的生命周期,而 API 不这样做,API 仅用于执行功能。
【讨论】:
另一种可视化方式是:(适用于任何编程语言)
Any(!) “旨在供另一款软件使用的软件”按定义 必须 有一些“应用程序接口 (API) ”,它表示其他软件预计(并且允许)使用的“旋钮、开关和拨号盘”。所有内部实现细节均不可见且无法访问。
“框架”是旨在使人类更容易编写特定、常见的应用程序类型的工具,例如网页。该框架实现了“每个这样的应用程序需要能够做的事情”,并以一种经过充分测试的方式来实现,“正是为了让你(应用程序作者)不必这样做。”与其重复地写“同样的老东西,再写一次,然后担心你是否做得正确”,你只需利用框架已经为你做的事情。
毕竟……
Actum Ne Agas: 不要做已经完成的事情。
【讨论】:
API“应用程序编程接口”是一组预先编写好的包、类和接口及其各自的方法。您可以使用它而无需过多关注内部实现。 API 用于两个或多个应用程序之间的接口,类似于 REST API。
框架是一个骨架,其中包含可用于构建应用程序的设计模式、类、接口和库。框架提供控制反转,将程序流的责任交给框架本身,我们也可以在不更改其预定义代码的情况下扩展框架。例如 Spring 是一个可用于构建 Web 应用程序的框架。
【讨论】: