框架是一组类、接口和其他预编译代码,应用程序可以通过使用它们来构建。
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 变得容易。如果用户需要处理 SqlConnectionFactory、SqlDebugContext、DbConnectionPoolGroup 或任何其他 SqlConnection 类所需的内部类,则使用 SqlConnection 将变得更加困难。由于 API 仅暴露了框架的一小部分,因此更容易创建和使用连接。
API是代码拥有的东西,而不是它本身。框架具有API,但它本身不是API。
API(应用程序编程接口)是一组预先编写的包、类和接口及其各自的方法。您可以在不太关注内部实现的情况下使用它。API 用作两个或多个应用程序之间的接口,就像 REST API。
框架是一个包含设计模式、类、接口和库的骨架,可用于构建应用程序。框架提供了控制反转,将程序流程的责任交给框架本身,同时我们可以在不改变其预定义代码的情况下扩展框架。例如,Spring 是一个可用于构建 Web 应用程序的框架。
API是从SDK中预先构建的(或者您可以将其包含在其中)。框架是可加载的捆绑包,其中这些捆绑包的公开函数可以被使用。您可以通过使用函数指针来获取这些框架的公开函数。
例如:
API:
-stringWithString:
框架中的函数:
-myExposedMethod:
Java API 简单来说就是...应用程序编程接口,其中描述了产品或软件的所有功能。
Java框架 意味着半成品项目或代码。它提供了一个架构来制作项目。框架有自己的类和方法等。
任何(!) "旨在被其他软件使用的软件" 定义上必须具有一些"应用程序接口 (API)",它代表了其他软件预期(并且允许)使用的"旋钮、开关和控制器"。所有内部实现细节都不可见且无法访问。
"框架"是为人们更容易地编写特定类型的应用程序——例如网页而设计的工具。框架以一种经过充分测试的方式实现"每个这种应用程序需要能够执行的任务",目的是"确保您 (应用程序作者) 无需重复编写相同的内容,并担心是否正确",您只需利用框架已经为您完成的工作。
毕竟...
Actum Ne Agas: 不要再做已经完成的事情。
框架用于设计应用程序,例如MVC、MEF。就像您建立的模型一样,几乎是某个功能集的基础,您可能希望在应用程序中使用。
API用于应用程序之间的交互,您的应用程序将使用Facebook API与Facebook进行交互。
希望这更加清晰明了。