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

Pup*_*Pup 23 frameworks programming-languages

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

Kei*_*thS 31

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

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


Gre*_*ven 5

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

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

资料来源:框架与引擎


Tri*_*dad 5

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

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

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


小智 5

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

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

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

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


Dan*_*ras 5

An engine "does" the job for you.
Run Code Online (Sandbox Code Playgroud)

一个简单的乘法程序。

A framework "simplifies" the job for you.
Run Code Online (Sandbox Code Playgroud)

您不必编写将 string 转换为 int 然后呈现给引擎的代码,而是使用另一个代码来为您转换它。这个简化代码是一个框架。