【问题标题】:What is the difference between a class library and a framework类库和框架有什么区别
【发布时间】:2010-10-17 23:44:02
【问题描述】:

我整天都在听到类库、基类库、框架等术语...
什么突出了框架,什么是基类库?

【问题讨论】:

标签: frameworks class-library


【解决方案1】:

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

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

顺便说一句,这个话题还有一个不错的Wikipedia article

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • +1 我喜欢这个例子!我想说一个框架可以让你访问一个国家。而您作为开发人员“决定”访问法国。一个类库可以让你吃奶酪,喝葡萄酒......
    【解决方案3】:

    图书馆:

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

    框架:

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

    库、框架和您的代码图像表示:

    关键差异:

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

    关系:

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

    Original answer

    【讨论】:

      【解决方案4】:

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

      框架通常是针对特定上下文的重复模式/解决方案,例如一个图形用户界面框架。框架通常意味着您按照框架设计者的要求编写某些部分,将它们插入预期/正确的位置,它应该可以工作。

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

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

            【讨论】:

              【解决方案8】:

              我认为这两者是相当可互换的...... - 它只是一组常见的可重用代码(在您的目标平台上),通常由平台提供。

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

              【讨论】:

                【解决方案9】:

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

                虽然我从未注意到“base 类库”这个短语,但我希望这样的东西包含打算在使用前被子类化的抽象类。

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

                【讨论】:

                • 我在本书中看到了很多次“基类库”:ASP.NET 3.5 AJAX on page 126
                【解决方案10】:

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

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

                【讨论】:

                  【解决方案11】:

                  一个应用程序有许多部分同步共存,提供不同的功能......现在必须为这些部分中的每一个编写代码才能工作,因此应用程序框架会为您编写代码,这样您就不必经历细节- 编写与每个功能相关的每个代码的毅力。应用程序框架使编写应用程序更容易。

                  简单来说,如果你正在建造一座建筑,那么它的骨架结构、形状、它可以支撑的功能、电气和液压设计、框架等都是它的框架,现在你必须在这个框架内工作才能使你的建筑如此所有关于制作抗震结构或直线直立建筑物的担忧都已由您的框架处理

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

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

                  【讨论】:

                    猜你喜欢
                    • 2022-10-13
                    • 2019-06-05
                    • 2011-10-09
                    • 1970-01-01
                    • 2017-04-26
                    • 2011-04-15
                    • 2014-07-13
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多