【问题标题】:What's the difference between an "engine" and a "framework"? [closed]“引擎”和“框架”有什么区别? [关闭]
【发布时间】:2011-07-01 10:31:07
【问题描述】:

我听说这些术语似乎可以互换使用,所以我有点不清楚。请举出例子。

【问题讨论】:

  • 有用的见解:引擎可以在框架之外构建,也可以作为组件框架中存在。框架 = 更抽象。引擎 = 专业。
  • 我投票决定将此问题作为离题结束,因为它要求的是单词的定义,而不是帮助中心定义的编程。

标签: frameworks programming-languages


【解决方案1】:

这些术语和其他术语看起来确实非常相似。它们是从概念的角度命名的,因此可以定义如下:

  • “框架”是您构建实际应用程序的“基础”或“支持结构”。 .NET Framework 不仅包括一个基础(CLR),还包括一系列提供标准化功能的库,否则您必须自己实现这些功能。其他框架或基础提供更具体的支持领域,例如 UI、数据存储、客户端-服务器交互等。框架提供相对静态的通用结构,您可以在其中构建特定和独特的东西。
  • “引擎”是一个自包含但外部可控的代码段,它封装了设计用于执行特定类型工作的强大逻辑。引擎的存在是为了完成“繁重的工作”,您可以指示它执行一些复杂的抽象任务,并且它以相对有效的方式处理细节,而无需进一步的外部指导。 SQL 实现和其他执行搜索的服务通常称为“引擎”。还有物理引擎、图形引擎等,它们都有一个共同点,即你以某种通用的方式告诉它“执行此操作”,它会处理细节。

【讨论】:

  • 说得好,谢谢
  • 一个框架可以包含多个引擎吗?
  • 我不会将框架或其基础与 CLR 进行比较。 CLR 是完全不同的东西。我猜你可能指的是 BCL?
【解决方案2】:

框架类似于一组旨在能够协同工作的库。这意味着您无需四处实现通用算法和数据结构。您使用这些库(框架)以某种方式排列它们,以便它们提供的功能可以帮助您解决问题。

引擎是一个系统,你向它提供数据,它就能完成工作。

值得注意的是,库可以有“引擎”,并且可以使用框架构建引擎。

【讨论】:

    【解决方案3】:

    一个框架主要是一堆组件接口,但它并没有实现那些组件。该框架确实实现了一些胶水代码来帮助将框架连接在一起,并且它为您可能需要的东西提供了一些实用程序实现。

    游戏引擎实现了框架中定义的所有组件……或者至少游戏引擎开发人员认为实现其游戏引擎所需的所有组件。在某些情况下,引擎可能不需要物理或网络等,因此游戏引擎开发人员可能会选择将这些组件排除在引擎之外。

    来源:Frameworks vs Engines

    【讨论】:

    • 来自 indiegamesguild.com 链接(上图)的有用定义:“框架提供了定义游戏引擎中使用的组件的抽象接口以及许多“胶水”和实用程序实现,而游戏引擎提供了所有的实现。”
    【解决方案4】:

    AFAIK 框架是您构建应用程序的结构。它与库的不同之处在于它具有控制反转(即在库中,您从代码中调用子例程,因此您拥有控制权;但在框架中,您将子例程绑定到框架,它会在需要时调用您的子例程 -所以控制权在框架上)。

    引擎是一个完全不同的概念——它是框架和库的混合体。像框架一样,它可以控制应用程序。然而,与框架不同的是,您无需将子例程绑定到引擎,而是使用其内置 API 来执行某些任务(类似于库)。

    总而言之,框架是应用程序的结构,您可以通过将子例程绑定到它来扩展和定制它。 OTOH,引擎是主要应用程序本身,您可以使用其公共 API 简单地指示它执行您想要的操作。

    因此,框架更加灵活。然而,引擎是一个工作应用程序——因此它可以更快地完成工作,因为程序员不需要浪费时间重新发明轮子。他可以简单地指示引擎做什么,引擎将处理内部操作。

    【讨论】:

      【解决方案5】:
      An engine "does" the job for you.
      

      一个简单的乘法程序。

      A framework "simplifies" the job for you.
      

      您无需编写将字符串转换为 int 并呈现给引擎的代码,而是使用另一个代码为您进行转换。这个简化代码是一个框架。

      【讨论】:

      • 这不是说没有真正的“游戏引擎”吗? “游戏引擎”不会为我创建游戏——它只会简化构建它。所以只能有“游戏框架”吧?
      【解决方案6】:

      框架示例:

      引擎示例:

      对每种不同类型的调查给出了一个线索......

      Engines

      • 搜索引擎,一种信息检索系统,旨在查找计算机系统上的信息
      • 游戏引擎,计算机或视频游戏的核心软件组件
      • 布局引擎,用于格式化网页内容以在屏幕上显示的软件
      • 将图像规格转换为像素的渲染引擎、软件或硬件
      • 光线追踪引擎,通过追踪模拟光线来渲染场景的软件
      • 多态引擎或变异引擎,早期的概念或机械计算设备
      • 差分引擎,一种用于将多项式函数制成表格的机械计算器
      • 分析引擎,计算机的概念,由 Charles Babbage 设计

        Frameworks

      • 艺术绘画、音乐作曲和机械 CAD

      • 针对不同编程语言和目标机器的编译器。
      • 财务建模应用程序
      • 地球系统建模应用程序
      • 决策支持系统
      • 媒体播放和创作
      • 网络应用程序
      • 中间件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 2014-09-21
        • 2015-10-08
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 2019-06-05
        相关资源
        最近更新 更多