谁能给我解释一下什么是软件框架?为什么我们需要一个框架?框架做了什么来简化编程?


当前回答

一个简单的解释是:框架是一个可以围绕它构建应用程序的支架。

A framework generally provides some base functionality which you can use and extend to make more complex applications from, there are frameworks for all sorts of things. Microsofts MVC framework is a good example of this. It provides everything you need to get off the ground building website using the MVC pattern, it handles web requests, routes and the like. All you have to do is implement "Controllers" and provide "Views" which are two constructs defined by the MVC framework. The MVC framework then handles calling your controllers and rendering your views.

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

其他回答

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

计算机中的一个软件框架 编程,是一种抽象 哪个公共代码提供泛型 功能可以选择性地 由用户代码覆盖或专门化 提供特定的功能。 框架是一种特殊情况 它们是软件库 代码包装的可重用抽象 在定义良好的应用程序中 编程接口(API),然而他们 包含一些关键区别 区分它们的特征 普通的图书馆。

一般来说,框架作品是真实的或概念性的结构,旨在作为建筑的支撑或指南,将结构扩展为有用的东西……

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

编辑: 好吧,我将要挖掘你们试图告诉我的东西;)你可能没有注意到“跨越一个框架的工作……”这行之间的信息。 在它越陷越深之前。我试着给它一个地板,希望你优雅地: 我在这里找到了一个很好的解释“库和框架的区别”的问题 http://ifacethoughts.net/2007/06/04/difference-between-a-library-and-a-framework/

在最低的层次上,框架是一个环境,在其中您可以使用一组工具

这些工具以库、配置文件等形式出现。

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

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

人们会证明有了框架,你就不必从头开始编码了。但这些只是人们混淆了库和框架。

我在这里没有偏见,实际上我现在使用的是一个框架。

已经有很多很好的答案了,但让我看看我是否能给你另一个观点。

为了简化事情,您可以将框架视为一个除了实际功能之外完整的应用程序。你插入功能和PRESTO!你有一个应用程序。

Consider, say, a GUI framework. The framework contains everything you need to make an application. Indeed you can often trivially make a minimal application with very few lines of source that does absolutely nothing -- but it does give you window management, sub-window management, menus, button bars, etc. That's the framework side of things. By adding your application functionality and "plugging it in" to the right places in the framework you turn this empty app that does nothing more than window management, etc. into a real, full-blown application.

对于web应用程序,服务器端应用程序等也有类似类型的框架。在每种情况下,框架提供了大量乏味、重复的代码(希望如此),而您提供了实际的问题域功能。(这是理想状态。当然,在现实中,框架的成功有很大的变数。)

我再次强调,这是对框架的简化观点。我没有使用像“控制反转”之类的可怕术语,尽管大多数框架都内置了这样可怕的概念。既然你是初学者,我想我就不给你行话了,用一个简单的比喻。