这两个术语有什么区别,提前感谢任何好的简化和好的例子。
答案 0 :(得分:50)
框架是一组类,接口和其他预编译代码,可以在其上构建或使用哪些应用程序。
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仅暴露了一小部分框架,因此更容易创建和使用连接。
答案 1 :(得分:6)
API是封装功能的(一组)组件的接口。例如,GoogleMaps API,DirectX或OpenGL API。
框架更像是一组工具,旨在帮助开发人员在给定的框架中开发他/她的项目。该框架通常设置一些编码标准,提供有用的组件,...例如,Symfony / Cake是PHP Web应用程序框架。 JUnit是Java中单元测试的框架,......
Frameworks通常可以捆绑/提供一些API的统一接口。
某些API可以使用框架在内部构建。
答案 2 :(得分:3)
由于每个库都有一个API,因此无需提供示例。
时间流行的Java库是Joda time。
流行的Java框架是Spring framework。
你必须遵守很多规则才能很好地使用Spring。您不必遵守使用Joda时间的规则。
答案 3 :(得分:1)
API是代码具有的东西,不是它的东西。框架具有 API,但它本身不是API。
答案 4 :(得分:0)
API是从SDK预先内置的(或者可以包含在其中)。框架是可加载的束,其中可以使用这种束的暴露功能。您可以通过使用指向函数的指针来获取这些框架的公开函数。
示例:
API:
-stringWithString:
框架中的功能:
-myExposedMethod:
答案 5 :(得分:0)
框架用于设计应用程序,即MVC,MEF。就像您构建的模型一样,几乎是您在应用程序中可能需要的某组功能的基础。
API用于应用程序之间的交互,您的应用程序将使用Facebook API与Facebook进行交互。
希望这一点更清楚。
答案 6 :(得分:0)
Java API 仅表示...应用程序编程接口,其中所有功能都描述了产品或软件。
Java Framework 表示半完成的项目或代码。它提供了一个制作项目的架构。框架有自己的类和方法等。
答案 7 :(得分:0)
API只是一个使用特定语言构建的库,开发人员可以使用它来构建应用程序。 框架是一组库,就像API一样,但是语法可能会使原始语言失效。因此,开发人员可能正在编写不同的PHP语法,例如在使用Symphony时。
答案 8 :(得分:0)
框架和API的主要或核心差异是框架允许开发人员通过生命周期回调方法机制挂钩对象的生命周期,而API不会这样做,API仅用于执行功能
答案 9 :(得分:0)
另一种可视化方法是:(任何编程语言都是如此)
任何(!)"旨在由另一个软件使用的软件"按定义必须具有一些应用程序接口(API),"代表"旋钮,开关和拨号盘"预期(并允许)使用另一部分软件。所有内部实现细节都不可见,无法访问。
"框架"是一种工具,旨在使人们更容易编写特定的,通用的应用程序类型 - 例如网页。该框架实现了每个这样的应用程序将需要能够做的事情,"并且以一种经过充分测试的方式进行测试,确切地说,你(应用程序作者)不必这样做。"而不是冗余地写下同样的旧事物,再多一次,并且担心你是否正确地做了,"你只需利用框架已经为你做的事情。
毕竟......
Actum Ne Agas: 不做任何事情。