框架和库之间的区别是什么?
我一直认为库是一组对象和函数,专注于解决特定的问题或应用程序开发的特定领域(即数据库访问);另一方面,框架是一个以特定方法论(即MVC)为中心的库的集合,它涵盖了应用程序开发的所有领域。
框架和库之间的区别是什么?
我一直认为库是一组对象和函数,专注于解决特定的问题或应用程序开发的特定领域(即数据库访问);另一方面,框架是一个以特定方法论(即MVC)为中心的库的集合,它涵盖了应用程序开发的所有领域。
当前回答
库:
它只是例程(函数式编程)或类定义(面向对象编程)的集合。其背后的原因仅仅是代码重用,即获取其他开发人员已经编写的代码。类或例程通常在域特定区域定义特定操作。例如,有一些数学库可以让开发人员只调用函数,而无需重做算法如何工作的实现。
框架:
在框架中,所有的控制流都已经在那里,并且有一堆预定义的白点,我们应该用我们的代码来填充。框架通常更复杂。它定义了一个框架,应用程序在其中定义了自己的特性来填充该框架。通过这种方式,框架将在适当的时候调用您的代码。这样做的好处是,开发人员不需要担心设计是否好,而只需考虑实现特定领域的功能。
库,框架和你的代码图像表示:
KeyDifference:
库和框架之间的关键区别是“控制反转”。当您从库中调用方法时,您处于控制之中。但是对于框架,控件是反向的:框架调用您。源。
关系:
它们都定义了API,供程序员使用。为了将它们组合在一起,我们可以将库视为应用程序的某个函数,将框架视为应用程序的骨架,而API则是将它们组合在一起的连接器。典型的开发过程通常从框架开始,然后通过API填充库中定义的函数。
其他回答
我认为主要的区别是框架遵循“好莱坞原则”,即。“别打给我们,我们会打给你的。”
马丁·福勒说:
库本质上是一组 你可以调用的函数 日子通常安排在课堂上。 每个调用都做一些工作并返回 控件到客户端。 框架体现了一些抽象 设计,内置了更多的行为。 为了使用它,你需要插入 你的行为变成了各种各样的地方 框架可以通过子类化或 通过插入你自己的类。的 框架的代码然后调用你的代码 在这些点上。
我不记得这个答案的来源了(我想我是在互联网上的一个。ppt中找到的),但答案很简单。
一个库和一个框架是一组类,模块和/或代码(取决于编程语言),可以在你的应用程序中使用,并帮助你解决特定的“问题”。
这个问题可以是在应用程序中记录或调试信息、绘制图表、创建特定的文件格式(html、pdf、xls)、连接到数据库、创建应用程序的一部分或完整的应用程序或应用于设计模式的代码。
你可以有一个框架或一个库来解决所有这些问题,甚至更多,通常框架帮助你解决更复杂或更大的问题,但这只是它们主要区别的连续,而不是两者的主要定义。
库和框架之间的主要区别是它们自己的代码之间的依赖关系,换句话说,你要使用框架 需要使用FW中几乎所有的类、模块或代码 类中的一个或几个类、模块或代码 Lib在您自己的应用程序中
这意味着,如果一个框架有50个类,为了在你需要使用的应用程序中使用框架,比如说,在你的代码中有10-15个或更多的类,因为这就是设计框架的方式,一些类(类的对象)是框架中其他类的方法的输入/参数。请参阅. net框架、Spring或任何MVC框架。
但是以一个日志库为例,你可以在你的代码中使用一个log类,并帮助你解决“日志问题”,这并不意味着日志库在他的代码中没有更多的类,比如处理文件的类,处理屏幕输出,甚至数据库,但你永远不会在你的代码中接触/使用这些类,这就是为什么它是一个库而不是一个框架的原因。
还有比框架和库更多的类别,但这是跑题了。
从Web开发人员的角度来看:
库可以很容易地被另一个库替换。但框架不能。 如果你不喜欢jquery日期选择器库,你可以替换为其他日期选择器,如bootstrap日期选择器或pickadate。 如果你不喜欢在AngularJS上构建你的产品,你不能用任何其他框架来替代。你必须重写你的整个代码库。 大多数情况下,与框架相比,库需要更少的学习曲线。例如:underscore.js是一个库,Ember.js是一个框架。
什么是图书馆?
库是代码块的集合(可以是变量、函数、类、接口等形式),由开发人员构建,以简化其他发现其相关性的开发人员的软件开发过程。
什么是框架?
参考库的定义,我们可以将框架定义为一种工具,通过在受控的开发环境中为开发人员提供必要的库,帮助开发人员解决大量特定于领域的问题。
根据Erich Gamma等人在《设计模式》一书中给出的定义:
库:构成可重用实现的一组相关过程和类; 框架:由一组具有模板方法的协作类组成的可重用规范。它设置了控制流,并允许通过在子类中重写框架类中模板方法调用的钩子方法来将框架裁剪到特定问题的流中。
特定于问题的代码可以使用库和实现框架。