现在,这可能是一个愚蠢的问题,但有时术语框架和API可以互换使用。我认为它的方式是框架是一个更大的更通用的东西,包含许多API,可用于各种编程任务(例如,.NET Framework。)API更小,更专业(例如, Facebook API。)有人想分享他们对此事的见解吗?
例如,微软称.NET为框架,而Sun称他们为平台......因此,如何调用“图书馆馆藏”也是商业/营销决策?
答案 0 :(得分:34)
Design Patterns提供以下定义:
这里的关键是虽然工具包(API)在许多领域都很有用,但框架可以解决特定类问题的问题,可以通过创建特定于应用程序的子类来定制框架的抽象类“。
此外,也许更重要的是,“框架决定了应用程序的体系结构”:控制反转是框架的特征之一(参见Martin Fowler on this);而不是让您的应用程序调用特定的API来实现特定的行为,它是调用您的代码的框架。
答案 1 :(得分:20)
我一直认为框架是整个事物,内部代码,API等等。
虽然API只是您想要使用框架时使用的位。
换句话说,.NET框架由.NET库,所有语言等组成。 API就是您调用函数的方式。
答案 2 :(得分:15)
框架确实引入了inversion of control的概念 (即整个程序的控制流程不是由调用者决定的,而是由框架决定的)
当您提到语言框架(例如Java Framework或.Net Framework)时,实际上您不仅仅包含库及其API(这将更加局限于Software Framework如果这些库提供了控制反转)。
语言框架包括将调用代码(编译或执行代码)的开发和执行环境。
这就是为什么.Net Framework是一个“框架”。
Java可以将其框架(JDK,JRE)称为“ Java Platform ”,以强调其“平台无关”编程语言功能。
平台是程序运行的硬件或软件环境。 (包括Microsoft Windows,Linux,Solaris OS和Mac OS) 大多数平台可以描述为操作系统和底层硬件的组合 Java平台与大多数其他平台的不同之处在于,它是一个纯软件平台,可以在其他基于硬件的平台上运行。
Java平台有两个组件:
- Java虚拟机
- Java应用程序编程接口(API)
答案 3 :(得分:9)
顾名思义(应用程序编程接口),API只是框架的接口。
答案 4 :(得分:6)
根据我的理解,API基本上是与现有应用程序(如Facebook)连接的一种方式,而框架基本上是一种从头开始构建自己的应用程序的工具。
答案 5 :(得分:5)
软件框架:是软件系统(或子系统)的可重用设计。软件框架可以包括程序,代码库,脚本语言,以帮助开发和粘合软件项目的不同组件的其他软件。框架的各个部分可能通过API公开。
答案 6 :(得分:3)
API (应用程序编程接口):就像他的名字一样,是一个外部程序与您的程序间或库交互而无需直接访问的接口。例如,谷歌地图API和Facebook API为您提供了与其程序和库交互的界面,而无需直接访问。
另一方面:
框架:是一组可以帮助您构建应用程序的库。您可以将框架想象为应用程序定义“肉”的“骨架”,因此您无法使用人体骨架来构建hors体,因此您必须在开始编程之前选择好的框架。这就是为什么我们说:你打电话给图书馆。框架会给你打电话。
答案 7 :(得分:2)
我想认为API是框架的子集
答案 8 :(得分:2)
根据我的经验,框架通常包含两个(至少)简单的API不会:
可扩展性:您可以编写或子类化框架组件以扩展或自定义其功能。
与应用程序开发相关的代码生成,管理或诊断任务的工具。
答案 9 :(得分:2)
框架基本上是一个类的集合,它们抽象开发过程并促进代码重用,例如,您可能拥有独立于您正在构建的应用程序的数据库,会话和分页类。但API是源代码接口,允许不同系统的两个或多个组件进行交互,例如将Google Maps API添加到您的网站,您和Google是两个不同的系统,Google编码底层接口以将其产品合并到您的网站/应用。总而言之,只需在构建系统时使用框架工作,然后在为Facebook和Google等其他人提供扩展时开发API。
答案 10 :(得分:1)
我知道这是一个老线程并且它确实没关系,但我只是忍不住用我自己的观点来表达。 API(例如设备驱动程序API,Windows API等)为平台提供基本和基本功能,以便程序员可以锻炼他的创造力并对平台做一些事情 - 是的,包括使用它来构建框架。框架在功能和抽象方面具有更高的层次,并提供一组可重用且方便的函数/类/约定,以便于开发共享某些共同属性的应用程序(例如iPad应用程序,Web服务等)。
答案 11 :(得分:0)
框架实现了一个非常重要的选项,称为 IoC(控制反转),简而言之,您的代码已经,不再,手头的事情。
在API中,您的代码调用其他代码(库),当您使用特定框架时,它是控制应用程序流的框架。