小智 53
框架是一组类,接口和其他预编译代码,可以在其上或通过使用哪些应用程序来构建.
API是框架的公共面.设计良好的框架仅公开使用框架所需的类,接口等.支持框架操作但对框架用户不必要的代码保留在框架的程序集/ dll内部.这使得框架的公众面貌变得很小并且鼓励"成功的坑",或者框架的质量使得做正确的事情变得简单.
(我提供了.NET世界的一个例子)SqlConnection类用于连接到Sql Server实例.它的公共API非常简单:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
Run Code Online (Sandbox Code Playgroud)
但是,此类依赖于System.Data框架中的大约200个方法(在本例中为程序集),其中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可以使用框架在内部构建.