【问题标题】:Framework Vs. API框架与。 API
【发布时间】:2010-10-17 23:39:06
【问题描述】:

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

例如,Microsoft 将 .NET 称为框架,而 Sun 将其称为平台……那么关于如何称为“库集合”的业务/营销决策是否也是如此?

【问题讨论】:

    标签: api frameworks


    【解决方案1】:

    我一直认为框架就是整体,包括内部代码、API 等等。

    虽然 API 只是您想要使用框架时使用的部分。

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

    【讨论】:

    • 我更喜欢你的解释。 API = 只是一个接口,轻量级。框架:包括内部材料的完整盒子。
    【解决方案2】:

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

    【讨论】:

    • 是的,这就是我的观点,就像一个专门的接口......不一定应用程序也可以是硬件。
    【解决方案3】:

    我认为 API 是框架的子集

    【讨论】:

    • 是的,就像一个框架包含许多 API。例如,Java 平台提供了 Java 2D API,我用它来调整图像大小。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      根据我的经验,一个框架通常包含(至少)两个简单 API 没有的东西:

      • 可扩展性:您可以组合或子类化框架组件来扩展或自定义其功能。

      • 用于与应用程序开发相关的代码生成、管理或诊断任务的工具。

      【讨论】:

      • 同意 - 框架提供定制、配置和扩展功能以及用于代码生成、部署和监控的工具。
      【解决方案6】:

      Design Patterns 提供以下定义:

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

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

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

      【讨论】:

        【解决方案7】:

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

        当您提到 语言 框架(例如 Java 框架或 .Net 框架)时,您实际上包括的不仅仅是库及其 API(如果这些库提供控制反转)。

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


        Java 可能将其框架(JDK、JRE)称为“Java Platform”,以强调其“平台无关”的编程语言特性。

        来自About the Java Technology

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

        Java 平台有两个组件:

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

        【讨论】:

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

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

          【讨论】:

            【解决方案9】:

            框架基本上是一个类的集合,它们抽象出开发过程并促进代码重用,例如,您可能拥有独立于您正在构建的应用程序的数据库、会话和分页类。但是 API 是源代码接口,它允许不同系统的两个或多个组件进行交互,例如将 Google Maps API 添加到您的网站,您和 Google 是两个不同的系统,Google 编码了用于将其产品合并到您的网站的底层接口/应用。总而言之,在构建系统时使用框架工作,然后在为 Facebook 和 Google 等其他人提供扩展时开发 API。

            【讨论】:

              【解决方案10】:

              我知道这是一个老话题,这真的无关紧要,但我还是忍不住附和我自己的观点。 API(例如设备驱动程序 API、Windows API 等)为平台提供基本和必要的功能,以便程序员可以发挥他的创造力并使用平台做一些事情——是的,包括使用它来构建框架。框架在功能和抽象上更高层次,并提供一组可重用且方便的函数/类/约定,以方便开发具有某些共同属性的应用程序(例如 iPad 应用程序、Web 服务等)

              【讨论】:

                【解决方案11】:

                框架实现了一个非常重要的选项,称为 IoC(控制反转),简而言之,这意味着您的代码没有更多在手头的东西。 p>

                虽然您的代码在 API 中调用其他代码(),但当您使用特定框架时,​​控制应用程序流程的是框架。

                【讨论】:

                  【解决方案12】:

                  API(应用程序编程接口):就像他的名字的意思,是外部程序与你的内部程序或库进行交互而无需直接访问的接口。例如,谷歌地图 API 和 Facebook API 为您提供了与他们的程序和库进行交互的界面,而无需直接访问。

                  另一方面:

                  Framework :是可以帮助您构建应用程序的库的集合。你可以把框架想象成一个“骨架”,应用程序定义了“肉”,所以你不能拿一个人的骨架来构建一个马的身体,所以在开始编程之前你必须选择好的框架。这就是为什么我们说:你叫图书馆。框架调用你。

                  【讨论】:

                    猜你喜欢
                    • 2016-02-28
                    • 2015-10-06
                    • 2013-10-26
                    • 2011-09-20
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多