框架和库之间有什么区别?

框架之间有什么区别?

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


实际上这些术语可能意味着很多不同的事情,这取决于它们所使用的上下文。

例如,在Mac OS X上,框架就是库,打包成一个包。 在包中你会发现一个实际的动态库(libWhatever.dylib)。 裸露的库与Mac上的框架之间的区别在于,框架可以包含库的多个不同版本。 它可以包含额外的资源(图像,本地化字符串,XML数据文件,UI对象等),除非该框架公开发布,它通常包含使用该库所需的必要.h文件。

因此,你需要在应用程序中使用该库的所有东西(没有.h文件的C / C ++ / Objective-C库是没用的,除非你根据一些库文档自己编写它们),而不是一堆文件可以移动(Mac软件包只是Unix级别的一个目录,但UI将它视为一个单独的文件,就像在Java中有JAR文件一样,当你点击它时,你通常看不到里面是什么,除非你明确选择显示内容)。

维基百科把框架称为“流行语”。 它定义了一个软件框架

软件框架是软件系统(或子系统)的可重用设计。 软件框架可能包括支持程序,代码库,脚本语言或其他软件,以帮助开发和粘合软件项目的不同组件。 框架的各个部分可能通过API暴露。

所以我想说一个图书馆就是这样的“图书馆”。 它是一个对象/函数/方法(取决于你的语言)和你的应用程序“链接”的集合,因此可以使用对象/函数/方法。 它基本上是一个包含可重复使用的代码的文件,通常可以在多个应用程序之间共享(您不必一遍又一遍地编写相同的代码)。

框架可以是您在应用程序开发中使用的所有内容。 它可以是图书馆,许多图书馆的集合,脚本的集合或创建应用程序所需的任何软件。 框架只是一个非常模糊的术语。

这里有一篇关于“图书馆与框架”主题的文章。 我个人认为这篇文章是很有争议的。 他在那里说什么并不是错的,但是,他只是挑选了框架的多个定义之一,并将其​​与库的经典定义进行了比较。 比如他说你需要一个子分类框架。 真? 我可以在库中定义一个对象,我可以链接它,并在我的代码中进行子类化。 我没有看到我需要一个“框架”。 他在某种程度上解释了现在如何使用术语框架。 正如我之前所说的那样,这只是一个被大肆宣传的词汇。 有些公司只是发布一个普通的图书馆(从任何经典图书馆的意义上说),并称之为“框架”,因为它听起来更加花哨。


执行特定的,定义明确的操作。

框架是应用程序通过填充骨架来定义操作的“肉”的框架。 骨架仍然有代码链接部分,但最重要的工作是由应用程序完成的。

库的例子:网络协议,压缩,图像处理,字符串实用程序,正则表达式评估,数学。 操作是独立的。

框架示例: Web应用程序系统,插件管理器,GUI系统。 框架定义了这个概念,但应用程序定义了最终用户关心的基本功能。


我认为主要区别在于框架遵循“好莱坞原则”,即“不要打电话给我们,我们会打电话给你。”

据马丁福勒说:

本质上是一组可以调用的函数,这些函数通常组织成类。 每次通话都会执行一些操作并将控制权返回给客户端。

框架体现了一些抽象设计,内置了更多的行为。为了使用它,您需要通过子类化或插入自己的类将您的行为插入框架中的各个位置。 框架的代码然后在这些地方调用你的代码。

链接地址: http://www.djcxy.com/p/3927.html

上一篇: What is the difference between a framework and a library?

下一篇: how to get the data from custom data tag in jquery