我整天都听到类库、基类库、框架等术语……
什么突出了框架,什么是基类库?
11 回答
类库和软件框架的区别在于,在框架中,控制流不是由用户的代码决定的,而是由框架决定的。
这也被称为好莱坞原则(不要打电话给我们,我们打电话给你)。
顺便说一句,还有 一篇关于这个主题的不错的Wikipedia 文章。
您在编写代码时使用类库,但您在框架内编写代码。
术语“框架”旨在唤起一种“身处环境中”的感觉。如果要我做一个(有限的)类比,我会说类库就像能够吃奶酪和喝葡萄酒,而框架就像访问法国;体验文化。框架是您构建程序的结构。类库是您使用的工具(可能在框架内)。
当然,框架通常会包含类库。例如,.NET 拥有大量包含在整个框架中的类库。
类库通常是一个 DLL 或一个类包,您可以将其“包含”/“引用”到您的解决方案中并重用。
框架通常是针对特定上下文的重复模式/解决方案,例如 GUI 框架。框架通常意味着您按照框架设计者的要求编写某些部分,将它们放置在预期/正确的位置并且它应该可以工作。
- 例如,Spring 是 DI 的框架。您以设计人员指定的格式编写 xml 文件,然后框架允许您获得组装的类,而不必担心框架会这样做。
- Rails 是用于 RAD 网络应用程序的 Ruby 框架。你只需要编写模型、控制器和视图,不到一个小时你就有了一个可以工作的网络应用程序。
- BCL 是一组类库,因此您不必在 .NET 中实现数据结构和常用类型,只需包含它们即可免费获得经过测试证明的实现。
一个框架通常包含多个类库。与往常一样,这些术语现在以一种模棱两可的方式使用..但上面代表了对这些术语的更常见的解释......至少我的:)
您经常使用库在您的 OWN 软件/基础设施中获得某些功能。例如打印条形码,您将使用库来执行此操作。框架抽象出一整类问题,可能是编写 Web 应用程序的问题。为此,该框架提供了具有您可以针对其编程的所有功能和存根的“框架”。
你调用类库的代码,框架调用你的代码
我认为这两者是相当可互换的...... - 它只是一组常见的可重用代码(在您所针对的任何平台中),通常由平台提供。
也许您可能会争辩说,BCL 通常代表“纯”(独立于供应商)模块,而“框架”可能(取决于您如何使用该术语)包括供应商的定制模块。但它可能对当地的解释开放。
框架是一个或多个类库的据称内聚的集合。例如,Java 和 .NET 框架由数百个类库组成。在 .NET 中,程序集和类库之间存在自定义但不一定存在对应关系。在 Java 中,名称空间和类库之间存在粗略的对应关系。
虽然我从未注意到“基类库”这个短语,但我希望这样的东西包含旨在在使用前被子类化的抽象类。
在我的第一段中,框架意味着图书馆范围内的完整性。例如,您希望图像处理框架包含处理图像所需的一切,从文件格式解析器到内存中的图形操作。
我认为框架是应用程序可以遵循的模式,定义在一组库中。
根据上下文,“基”类库可能意味着几件事;它可以引用设计为派生自的类,这是框架中的一种常见方法,或者它可以仅引用假定在任何应用程序中有用的类的核心库,因此被认为是“基本”需求,几乎是语言的一部分(例如,容器类)。
一个应用程序有许多部分同步共存,提供不同的功能......现在必须为这些部分中的每一个编写代码才能工作,因此应用程序框架会为您执行该代码,这样您就不必经历细节编写与每个功能相关的每个代码。应用程序框架使编写应用程序更容易。
用最简单的话来说,如果你正在建造一座建筑,那么它的骨架结构、形状、它可以支撑的功能、电气和液压设计、框架等都是它的框架,现在你必须在这个框架内工作才能让你的建筑如此令人担忧关于制作抗震结构或制作线性直立建筑物已由您的框架处理
就是这么简单。该框架承担了与操作系统交互的所有复杂性,并为您简化了它们。它为您处理所有细节。显然,某些框架比其他框架做得更好。
应用程序框架和库之间的区别:您在编写代码时使用类库,但您在框架内编写代码。