首页 文章

什么是软件框架? [关闭]

提问于
浏览
174

有人可以解释一下软件框架是什么吗?为什么我们需要一个框架?框架如何使编程更容易?

12 回答

  • 2

    我很晚才回答 . 但是,我想分享一个我今天才想到的例子 . 如果我告诉你要切割尺寸为5米×5米的纸张,那么你肯定会这样做 . 但是假设我要你切1000张相同尺寸的纸 . 在这种情况下,您不会进行1000次测量;显然,你可以制作一个5米乘5米的画框,然后在它的帮助下,你可以在更短的时间内剪下1000张纸 . 所以,你所做的是制作一个可以执行特定类型任务的框架 . 您不是为同一类型的应用程序反复执行相同类型的任务,而是创建一个框架,将所有这些工具放在一个漂亮的数据包中,从而为您的应用程序提供抽象,更重要的是为许多应用程序提供抽象 .

  • 2

    一个框架帮助我们使用“已经创建”,一个metaphore就像,

    认为地球物质是编程语言,

    例如“相机”是程序,你决定创建一个笔记本 . 您不需要每次都重新创建相机,只需使用地球框架(例如到技术商店)拿相机并将其集成到您的笔记本中 .

  • 87

    框架具有您可能需要的一些功能 . 你可能需要某种具有内置排序机制的数组 . 或者您可能需要一个窗口,您可以在其中放置一些控件,您可以在框架中找到所有这些控件 . 这是一种围绕你自己的工作跨越FRAME的工作 .

    编辑:好的我正要挖掘你们想要告诉我的内容;)你可能还没有注意到这些线之间的信息"WORK that spans a FRAME around ..."之后,它会越来越深入 . 我试着给它一个希望你很高兴:
    对我在这里找到的问题_777029的一个很好的解释
    http://ifacethoughts.net/2007/06/04/difference-between-a-library-and-a-framework/

  • 2

    从技术上讲,您不需要框架 . 如果你正在制作一个非常简单的网站(想想1992年的网页),你可以用硬编码的HTML和一些CSS来做这一切 .

    如果你想制作一个现代的webapp,你实际上也不需要使用它的框架 .

    您可以选择每次都自己编写所需的所有逻辑 . 您可以编写自己的数据持久性/存储层,或者 - 如果您太忙 - 只需为每个数据库访问编写自定义SQL . 您可以编写自己的身份验证和会话处理层 . 和你自己的模板rending逻辑 . 和你自己的异常处理逻辑 . 以及您自己的安全功能 . 和你自己的单元测试框架,以确保一切正常 . 你自己...... [持续了很长时间]

    Then again, if you do use a framework ,你'll be able to benefit from the good, usually peer-reviewed and very well tested work of dozens if not hundreds of other developers, who may well be better than you. You'将快速构建你想要的东西,而不必花时间 Build 或担心上面列出的基础设施项目太多 .

    您可以在更短的时间内完成更多工作,并且知道您正在使用或扩展的框架代码很可能比您自己完成的更好 .

    而这个成本呢?投入一些时间学习框架 . 但是 - 正如几乎每个网络开发人员都会证明的那样 - 通过使用你选择的任何框架来学习获得大量(真正的,巨大的)好处的时间绝对值得 .

  • 5

    The summary at Wikipedia (Software Framework)(首先谷歌点击顺便说一句)解释得很好:

    计算机编程中的软件框架是一种抽象,其中提供通用功能的公共代码可以被提供特定功能的用户代码选择性地覆盖或专用 . 框架是软件库的一个特例,它们是包含在定义良好的应用程序编程接口(API)中的可重用的代码抽象,但它们包含一些将它们与普通库分开的关键区别特征 . 软件框架具有将它们与库或普通用户应用程序分开的这些区别特征:控制反转 - 在框架中,与库或普通用户应用程序不同,整个程序的控制流程不是由调用者决定的,而是由框架决定的 . [1]默认行为 - 框架具有默认行为 . 此默认行为实际上必须是一些有用的行为,而不是一系列无操作 . 可扩展性 - 用户通常可以通过选择性覆盖或由提供特定功能的用户代码专门扩展框架 . 不可修改的框架代码 - 通常不允许修改框架代码 . 用户可以扩展框架,但不能修改其代码 .

    您可能“需要”它,因为它可能在开发应用程序时为您提供了一个很好的快捷方式,因为它包含许多已经编写和测试过的功能 . 原因与我们使用软件库的原因非常相似 .

  • 4

    已经有很多好的答案,但让我看看我是否可以给你另一个观点 .

    通过相当多的简化,您可以将框架视为完整的应用程序,但实际功能除外 . 你插入功能和PRESTO!你有一个申请 .

    比如说,考虑一个GUI框架 . 该框架包含了创建应用程序所需的一切 . 事实上,你可以通过很少的源代码来简单地创建一个最小的应用程序 - 它确实没有任何东西 - 但它确实为你提供了窗口管理,子窗口管理,菜单,按钮栏等等 . 这是框架方面的事情 . 通过添加您的应用程序功能并将其“插入”到框架中的正确位置,您可以将这个空白的应用程序变成一个真正的,完整的应用程序 .

    Web应用程序,服务器端应用程序等都有类似的框架类型 . 在每种情况下,框架都会提供大量繁琐,重复的代码(希望如此),同时提供实际的问题域功能 . (这是理想 . 当然,实际上,框架的成功是多变的 . )

    我再次强调,这是框架是什么的简化视图 . 虽然大多数框架内置了如此可怕的概念,但我并没有使用像“控制反转”之类的可怕术语 . 既然你是初学者,我以为我会用你的行话来饶恕你 .

  • 2

    我不确定“框架”的定义是否明确 . 有时一大堆库被称为框架,但我认为这个词的典型用法更接近于aioobe带来的定义 .

    这个very nice article总结了一组库和框架之间的区别:

    框架可以定义为一组图书馆,上面写着“不要打电话给我们,我们会打电话给你” .

    框架如何帮助您?因为您不是从头开始编写内容,而是基本上只扩展一个给定的工作应用程序 . 您可以通过这种方式获得大量的工作效率 - 有时候生成的应用程序可能比您在同一时间段内自己完成的工作要复杂得多 - 但您通常会进行大量的灵活交易 .

  • 3

    一个简单的解释是:框架是一个脚手架,您可以围绕它构建应用程序 .

    框架通常提供一些基本功能,您可以使用和扩展它们以创建更复杂的应用程序,有各种各样的框架 . 微软MVC框架就是一个很好的例子 . 它提供了使用MVC模式离开地面构建网站所需的一切,它处理Web请求,路由等 . 您所要做的就是实现“控制器”并提供“视图”,这是MVC框架定义的两个构造 . 然后,MVC框架处理调用控制器并呈现视图 .

    也许不是最好的措辞,但我希望它有所帮助

  • 12

    在最低级别,框架是一个环境,您可以在其中获得一组工具

    这些工具以库,配置文件等形式出现 .

    这个所谓的“环境”为您提供基本设置(错误报告,日志文件,语言设置等)......可以修改,扩展和构建 .

    人们实际上不需要框架,只需要节省时间,而其他只是个人喜好的问题 .

    人们会用框架来证明这一点,你不必从头开始编写代码 . 但这些只是让图书馆与框架混淆的人 .

    我在这里没有偏见,我现在实际上正在使用一个框架 .

  • 50

    一般来说,框架工作是真实的或概念结构,旨在作为建筑物的支持或指导,将结构扩展为有用的东西......

  • 28

    框架提供特定问题区域的功能/解决方案 .
    来自wiki的定义:

    计算机编程中的软件框架是一种抽象,其中提供通用功能的公共代码可以被提供特定功能的用户代码选择性地覆盖或专用 . 框架是软件库的一个特例,它们是包含在定义良好的应用程序编程接口(API)中的可重用的代码抽象,但它们包含一些将它们与普通库分开的关键区别特征 .

  • 396

    除了定义之外,有时只有在你已经理解的情况下才能理解,一个例子帮助了我 .

    我想在浏览.Net中的列表时,我有一丝理解;提供由提供特定功能的用户代码定制的功能的框架的示例 . 拿List.Sort(IComparer) . 排序算法位于Sort方法的.Net框架中,需要进行一系列比较;物体A来自物体B之前或之后?但Sort本身并不知道如何进行比较;只有被排序的类型才知道 . 您无法编写可由许多人重用的比较排序算法用户并预测您要求排序的所有各种类型 . 你必须将这项工作留给用户自己 . 所以在这里,sort,又称框架,回调用户代码中的一个方法,该类型被排序,以便它可以进行比较 . (或者可以使用代表;同一点 . )

    我做对了吗?

相关问题