框架与 API

jas*_*nco 41 api frameworks

现在,这可能是一个愚蠢的问题,但有时术语框架和API可以互换使用.我认为它的方式是框架是一个更大的更通用的东西,包含许多API,可用于各种编程任务(例如,.NET Framework.)API更小,更专业(例如, Facebook API.)有人想分享他们对此事的见解吗?

例如,微软称.NET为框架,而Sun称其为平台......因此,如何调用"图书馆集合"也是一个商业/营销决策?

Ste*_*rdi 34

设计模式提供以下定义:

  • 工具包:"通常,应用程序将包含来自一个或多个预定义类库的类,这些类称为工具包.工具包是一组相关且可重用的类,旨在提供有用的通用功能".
  • 框架:"框架是一组合作类,构成了特定类软件的可重用设计".

这里的关键是虽然工具包(API)在许多领域都很有用,但框架可以解决特定类问题的问题,可以通过创建框架抽象类的特定于应用程序的子类来定制.

此外,也许更重要的是,"框架决定了应用程序的体系结构":控制反转是框架的特征之一(参见Martin Fowler); 而不是让您的应用程序调用特定的API来实现特定的行为,它是调用您的代码的框架.


pax*_*blo 20

我一直认为框架是整个事物,内部代码,API等.

虽然API只是您想要使用框架时使用的位.

换句话说,.NET框架由.NET库,所有语言等组成.API就是您调用函数的方式.


Von*_*onC 15

框架确实引入了控制反转的概念
(即整个程序的控制流程不是由调用者决定的,而是由框架决定的)

当您提到语言框架(例如Java Framework或.Net Framework)时,实际上您不仅包括库及其API(如果这些库提供了控制反转,那么它将更受限于软件框架).

语言框架包括将调用代码(编译或执行代码)的开发和执行环境.
这就是.Net Framework是一个"框架"的原因.


Java可以将其框架(JDK,JRE)称为" Java平台 ",以强调其"平台无关"编程语言功能.

关于Java技术

平台是程序运行的硬件或软件环境.(包括Microsoft Windows,Linux,Solaris OS和Mac OS).
大多数平台可以描述为操作系统和底层硬件的组合.
Java平台与大多数其他平台的不同之处在于,它是一个纯软件平台,可以在其他基于硬件的平台上运行.

Java平台有两个组件:

  • Java虚拟机
  • Java应用程序编程接口(API)

Java平台


mou*_*iel 9

正如其名称所示(应用程序编程接口),API只是框架的接口.


mpe*_*pen 6

根据我的理解,API基本上是与现有应用程序(如Facebook)连接的一种方式,而框架基本上是一种从头开始构建自己的应用程序的工具.


小智 5

  • 软件框架:是软件系统(或子系统)的可重用设计.软件框架可以包括程序,代码库,脚本语言,以帮助开发和粘合软件项目的不同组件的其他软件.框架的各个部分可以通过API公开.

  • API(应用程序编程接口):是由库和/或操作系统服务提供的一组例程(AKA方法,函数),数据结构,对象类和/或协议,以支持应用程序的构建.
    更多详细信息以及此特定主题的其他链接是 http://aprogrammersday.blogspot.com/2009/02/difference-between-framework-and-api.html