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

时间:2009-04-07 07:11:40

标签: frameworks class-library

我听到了一整天的术语类库,基类库,框架,... 什么突出了框架和什么是基类库?

11 个答案:

答案 0 :(得分:22)

类库和软件框架之间的区别在于,在框架中,控制流程不是由用户代码决定的,而是由框架决定的。

这也被称为好莱坞原则(不要打电话给我们,我们称之为你)。

顺便说一句,关于这个主题也有一个很好的Wikipedia article

答案 1 :(得分:13)

您在编写代码时使用类库,但在框架内编码

术语“框架”旨在唤起“在一个环境中”的感觉。如果我要对它进行(有限的)类比,我会说一个类库就像能够吃奶酪和喝葡萄酒,而框架就像访问法国;体验文化。框架是构建程序的结构。类库是您使用的工具(可能在框架内)。

当然,框架通常包含类库。例如,.NET拥有大量的类库,它们包含在整个框架中。

答案 2 :(得分:8)

库:

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

框架:

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

图书馆,框架和您的代码图像表示:

Library,Framework and your Code image relation

KeyDifference:

库和框架之间的主要区别是 “控制反转” 。当您从库中调用方法时,您就可以控制它。但是使用框架,控件反转:框架调用你Source.

关系:

它们都定义了API,用于程序员使用。将这些组合在一起,我们可以将库视为应用程序的某个功能,将框架视为应用程序的框架,API是将这些组合在一起的连接器。典型的开发过程通常从框架开始,并通过API填写库中定义的函数。

Original answer

答案 3 :(得分:6)

类库通常是一个DLL或一组类,您可以“包含”/“引用”到您的解决方案中并重用。

框架通常是针对特定上下文的重复模式/解决方案,例如GUI框架。一个框架通常意味着您根据框架设计者的要求编写某些部分,将它们插入预期/正确的位置并且它应该起作用。

  • e.g。 Spring是DI的框架。您以设计者指定的格式编写xml文件,然后框架允许您获取已组装的类,而不必担心框架是否这样做。
  • Rails是Ruby中用于RAD网络应用程序的框架。您只需编写模型,控制器和视图,就可以在一小时内找到可用的Web应用程序。
  • BCL是一组类库,因此您不必在.NET中实现数据结构和常用类型,只需包含它们即可免费获得经过测试的经过验证的实现。

框架通常包含多个类库。与往常一样,这些术语现在以模棱两可的方式使用..但上面代表了对这些术语的更常见的解释......我的至少:)

答案 4 :(得分:5)

通常,您使用库来获取OWN软件/基础架构中的某些功能。例如,打印条形码,您将使用库来执行此操作。框架抽象出一大类问题,也许是编写Web应用程序的问题。为此,框架提供了“框架”,其中包含您可以编程的所有功能和存根。

答案 5 :(得分:4)

类库只是一组封装到可定义单元(如程序集)中的类。该术语不限于任何特定语言或框架。

Base Class Library(BCL)是预先安装.NET Framework的类库的集合的特定术语属性,它提供整齐地组织到命名空间中的类,以便您有一个API来构建你自己的解决方案。

框架是一个更广泛的术语,包括类库,管理进程的受控执行的虚拟机,提供运行时环境以及内存管理和异常处理等其他服务。有关详细信息,请参阅.NET Framework

答案 6 :(得分:4)

你调用类库的代码 框架调用代码的地方

答案 7 :(得分:2)

我认为这两者是相当可互换的...... - 它只是一组常用的可重用代码(在你所针对的任何平台上),通常由平台提供。

也许你可以说BCL通常代表“纯粹的”(独立于供应商的)模块,其中“框架”可能(取决于你如何使用该术语)包括供应商的定制模块。但它可能对当地的解释开放。

答案 8 :(得分:1)

框架是一个或多个类库的涉嫌紧密集合。例如,Java和.NET框架由数百个类库组成。在.NET中,通过自定义但不一定是程序集和类库之间的对应关系。在Java中,名称空间和类库之间存在粗略的对应关系。

虽然我从未注意到短语“ base 类库”,但我希望这样的事情能够包含在使用之前要进行子类化的抽象类。

我的第一段意义上的框架意味着图书馆范围内的完整性。例如,您可能希望图像处理框架包含操作图像所需的一切,从文件格式解析器到内存中的图形操作。

答案 9 :(得分:0)

我认为框架是一个应用程序可以符合的模式,在一组库中定义。

“基础”类库可能意味着一些事情,具体取决于上下文;它可以引用设计为派生的类,这是框架中的常用方法,或者它只能引用假定在任何应用程序中都有用的类的核心库,因此被认为是“基本”需求,几乎是语言的一部分(例如,容器类)。

答案 10 :(得分:0)

应用程序有许多部分同步共存,提供不同的功能......现在必须为每个部分编写代码才能工作,因此应用程序框架为您编写代码,这样您就不必去了通过编写与每个功能相关的每个代码的细节。应用程序框架使编写应用程序变得更容易。

在大多数简单的术语中,如果你正在建造一座建筑物,那么它的骨架结构,形状,它可以支持的功能,电气和液压设计,框架等都是它的框架,现在你必须在这个框架中工作,使你的建筑如此所有担心建立抗震结构或建造线性直立建筑的问题都由你的框架来处理

就这么简单。该框架具有与操作系统连接的所有复杂性,并为您简化它们。它为您处理所有细节。显然,某些框架比其他框架做得更好。

应用程序框架和库之间的区别:在编写代码时使用类库,但是在框架内编写代码。