框架和库之间的区别是什么?

我一直认为库是一组对象和函数,专注于解决特定的问题或应用程序开发的特定领域(即数据库访问);另一方面,框架是一个以特定方法论(即MVC)为中心的库的集合,它涵盖了应用程序开发的所有领域。


当前回答

我认为主要的区别是框架遵循“好莱坞原则”,即。“别打给我们,我们会打给你的。”

马丁·福勒说:

库本质上是一组 你可以调用的函数 日子通常安排在课堂上。 每个调用都做一些工作并返回 控件到客户端。 框架体现了一些抽象 设计,内置了更多的行为。 为了使用它,你需要插入 你的行为变成了各种各样的地方 框架可以通过子类化或 通过插入你自己的类。的 框架的代码然后调用你的代码 在这些点上。

其他回答

我喜欢科恩的回答,但更专业的定义是:你的代码调用一个库。框架调用您的代码。例如,GUI框架通过事件处理程序调用代码。web框架通过请求-响应模型调用你的代码。

这也被称为控制反转——突然之间,框架决定何时以及如何执行你的代码,而不是像库那样反过来执行。这意味着框架对代码的结构也有更大的影响。

库:

它只是例程(函数式编程)或类定义(面向对象编程)的集合。其背后的原因仅仅是代码重用,即获取其他开发人员已经编写的代码。类或例程通常在域特定区域定义特定操作。例如,有一些数学库可以让开发人员只调用函数,而无需重做算法如何工作的实现。

框架:

在框架中,所有的控制流都已经在那里,并且有一堆预定义的白点,我们应该用我们的代码来填充。框架通常更复杂。它定义了一个框架,应用程序在其中定义了自己的特性来填充该框架。通过这种方式,框架将在适当的时候调用您的代码。这样做的好处是,开发人员不需要担心设计是否好,而只需考虑实现特定领域的功能。

库,框架和你的代码图像表示:

KeyDifference:

库和框架之间的关键区别是“控制反转”。当您从库中调用方法时,您处于控制之中。但是对于框架,控件是反向的:框架调用您。源。

关系:

它们都定义了API,供程序员使用。为了将它们组合在一起,我们可以将库视为应用程序的某个函数,将框架视为应用程序的骨架,而API则是将它们组合在一起的连接器。典型的开发过程通常从框架开始,然后通过API填充库中定义的函数。

我认为你很好地阐述了其中的区别:框架提供了一个我们工作的框架……不知何故,它比简单的库更“有约束”。 框架还应该为一组库添加一致性。

库实现功能的目的很窄,而框架往往是库的集合,为更广泛的特性提供支持。例如,库System.Drawing.dll处理绘图功能,但它只是整个. net框架的一部分。

正如我一直描述的那样:

图书馆是一个工具。

框架是一种生活方式。

你可以使用任何微小的部分来帮助你。一个你必须将整个项目投入其中的框架。