“引擎”和“框架”之间有什么区别?

时间:2011-02-21 17:13:02

标签: frameworks programming-languages

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

6 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:5)

框架就像是一组能够协同工作的库。这意味着你不需要四处实现常见的算法和数据结构。您可以使用这些库(框架)以某种方式排列它们,以便它们提供的功能可以帮助您解决问题。

引擎是一个系统,你用数据提供它,它就是它的工作。

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

答案 2 :(得分:4)

http://indiegamesguild.com/sgtflame/2010/02/23/frameworks-vs-engines/

  

框架主要是一堆组件接口,但它没有实现这些组件。该框架确实实现了一些粘合代码以帮助将框架绑定在一起,并且它为您可能需要的东西提供了一些实用程序实现。

     

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

这回答了吗?

答案 3 :(得分:4)

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

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

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

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

答案 4 :(得分:1)

框架示例:

引擎示例:

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

Engines

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

    Frameworks

  • 艺术绘画,音乐创作和机械CAD

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

答案 5 :(得分:1)

An engine "does" the job for you.

一个简单的乘法程序。

A framework "simplifies" the job for you.

不是编写用于将字符串转换为int然后呈现给引擎的代码,而是使用另一个代码将其转换为您。这个简化代码是一个框架。