框架与API

时间:2009-04-07 06:44:20

标签: api frameworks

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

例如,微软称.NET为框架,而Sun称他们为平台......因此,如何调用“图书馆馆藏”也是商业/营销决策?

12 个答案:

答案 0 :(得分:34)

Design Patterns提供以下定义:

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

这里的关键是虽然工具包(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 ”,以强调其“平台无关”编程语言功能。

来自About the Java Technology

  

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

     

Java平台有两个组件:

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

Java Platform

答案 3 :(得分:9)

顾名思义(应用程序编程接口),API只是框架的接口。

答案 4 :(得分:6)

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

答案 5 :(得分:5)

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

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

答案 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中,您的代码调用其他代码(),当您使用特定框架时,​​它是控制应用程序流的框架。