来自金山词霸的解释:
n.1. 构架; 结构2. (体系的)结构,机制 3. (作为判断、决定等基础的)信仰,观点,准则
这是个非常形象的单词,用在程序设计领域非常的贴切。framework就是给定了一个基本的架构、流程,并指定细节实现的规范,单本身并不实现所有细节。程序员需要做的是按照规范填写这些流程里某些步骤的细节。
其实framework在计算机领域无所不在。下面按照从底向上的顺序展示给大家。
一、framework的类别
1. 硬件framework
这个framework就是著名的冯诺依曼架构,与之相对应的还有另外一种叫做哈佛的架构,不过并不流行。冯诺依曼规定了计算机的组成,但并没有指定CPU的型号和内存的大小。于是,硬件厂商就把不同的CPU和RAM填写到这个架构中,造就了各式各样的计算机,虽然这些计算机样子不同,但是工作流程都是不断的从RAM顺序读取指令并执行。
2.固件framework
这里的固件就是大家熟悉的BIOS了,BIOS尽管非常简单,但是却是一个标准的framework,它定义了计算机启动流程,规定了OS从哪里开始启动,这样OS制造商就必须在BIOS指定的位置填写代码。
3.操作系统framework
到此为止,算是真正进入了软件framework了,这也是个非常复杂的framework。规定了很多流程与规格,这里我们关心的是应用程序设计。拿Windows为例,它规定了执行文件启动流程,并通过PE格式说明,通过loader实现PE的架构分析。程序员做的就是填写应用逻辑的细节,而如何调用程序员写的代码,则由操作系统提供linker和loader完成。
4.编程语言的framework
先说C语言,C语言规定了程序入口为main()函数,其实这个main()函数只是C程序执行的一部分,其他的部分如程序员代码运行前、运行后的流程等由C语言编译器以及运行时共同完成。
对于C#以及Java等高级语言,其framework作用类似,也是负责与OS的loader对接,并调用程序员写的代码。
5.应用级别的framework
这个级别的framework很多,如java的structs, serverlet;C#的winform,webform, asp.net mvc等等,它们都是某一应用方向的framework,适用于某一流程。还有一些framework是通用的,如COM,Javabeans等,它们是软件组件化的框架,不关注业务层逻辑。
6.某一具体应用的framework
每个具有一定规模的软件产品,都有自己的framework,这也是大部分公司里软件架构师的工作吧。
二、framework与回调
framework是抽象的架构,必须是灵活的可扩展的,是经验丰富的设计人员负责设计的。因为framework本质上就是规定程序员填写的部分以及如何填写,已达到能被framework来调用其代码。调用级别可以是函数,这在C语言里就是回调函数,在C#里就是委托;调用级别还可以是多个函数组成的集合,这在C#和Java里可以通过接口实现,在C++里可以是抽象类,在C语言里可以是包含多个函数指针的结构体。
三、framework与库
为了便于使用者更方便地实现与框架的交互,framework一般都带有库,或者是函数库或者是类库共开发者使用。
四、个人开发者选择适合的framework
首先是framework的级别,为了快速开发最好选择最贴近业务流程的framework,如何没有合适的就选择再底层一点的框架,然后自己实现业务流程框架。
五、其他领域的framework
最典型的当然是建筑了,framework本身也是从建筑行业引申到别的行业的。再大点,整个社会本身就是一个framework,我们生活在这个框架中,要遵守整个框架的规则,按照其流程来活动,除非你能做制定新框架的人,否则就去遵守它吧!
分享到:
相关推荐
在.NET Framework 3.5中,设计模式的应用无处不在。例如,ADO.NET库中的Entity Framework就大量应用了工厂模式和策略模式,使得数据访问层更加灵活和可扩展。WCF(Windows Communication Foundation)服务中,观察者...
Spring框架是Java开发中不可或缺的一部分,尤其是在企业级应用中,它的身影无处不在。本篇将深入探讨Spring Framework 3.2.1.RELEASE版本的核心特性、设计理念以及在实际开发中的应用。 首先,Spring的核心理念是...
Spring框架是Java开发中的核心组件,尤其在企业级应用中,它的身影无处不在。4.0.1.RELEASE是Spring发展历史上的一个重要里程碑,它带来了许多改进和新特性,旨在提升开发效率和应用性能。本文将深入探讨Spring ...
关键的伦理问题包括物联网的无处不在性、小型化导致的隐形、模糊性和本体论、识别、连接性、分布式系统和大数据、中介和自主代理、嵌入式智能和扩展思维,以及无缝转移带来的不可预测性和不确定性。同时,解决这些...
在云环境中,风险无处不在。因此,有效管理这些风险对于保护组织资产至关重要。这涉及到风险识别、评估、响应计划制定等步骤。 #### 3. 责任划分 云服务模式的多样性和复杂性要求对安全责任进行明确划分: - **软件...
本文讲述了YII Framework异常处理。分享给大家供大家参考,具体如下: 异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的。YII框架封装了PHP的异常,让异常处理起来更简单。 使用 YII...
HTTP是一种简单、灵活且无处不在的平台,利用该平台可以构建暴露服务和数据的API。HTTP服务能够支持广泛的客户端,包括浏览器、移动设备和传统的桌面应用程序。 *** Web API允许开发者使用C#(一种编程语言)和.NET...
概述PHP Web 框架无处不在。 使用一个可以提高生产力。 编写一个可以教你很多关于 PHP、网络和软件工程的知识。 这里的目标是构建一个微框架——一个具有足够功能的轻量级框架,允许开发人员构建强大的应用程序。...
在现代科技的快速发展中,视频监控技术已经广泛应用于各种领域,从家庭安全到商业监控,无处不在。本文将详细探讨一个基于.NET框架,使用C#编程语言,并在Visual Studio 2017环境下编译通过的视频监控系统——...
Build Your SSRF Exploit Framework.pdf Find Blue Oceans.pdf That is A Secret.pdf 乌云安全生态理念解读.pdf 云上的身份认证应对趋势.pdf 企业安全防御「边界」.pdf 企业移动安全问题的个性及防御方案-娜迦.pdf ...
.NET Framework广泛采用了泛型技术,从集合框架到LINQ查询,再到各种高级API,泛型无处不在。例如,`List<T>`和`Dictionary, TValue>`就是两个广为人知的泛型集合类,它们允许开发者创建类型安全的动态集合,而无需...
Spring框架是Java开发中不可或缺的重要组成部分,特别是在企业级应用领域,它的影响力无处不在。Spring 5.0.0作为其重要版本,引入了诸多新特性和改进,旨在提升开发效率,增强应用性能,以及更好地适应现代软件开发...
佩斯特5.0.0 :dollar_banknote: 我花了大部分的周末来做到这一点。 例如,这些发行说明花了几天的时间来编写和更新。 请考虑赞助或赞助 。 Want想要分享反馈? ,或在“查看更多选项 。 有什么新东西?...
`String`类在Android开发中无处不在,其增强通常包括格式化、校验、加密解密、截取、拼接等功能。例如,提供一个`format()`方法可以方便地将变量插入到字符串模板中,`isNullOrEmpty()`可以快速检查字符串是否为空...
值得注意的是,由于该软件可能依赖于.NET Framework 4.0,因此在安装过程中,如果系统未预装此组件,可能会提示下载“dotNetFx40_Full_x86_x64.exe”,这是一个微软官方的.NET Framework 4.0完整版安装程序,安装后...
在现代技术日新月异的时代,嵌入式系统已经无处不在,从智能家居到工业自动化,甚至是医疗设备,都需要网络连接来实现远程监控和数据传输。在这样的背景下,针尖上的WEB服务器应运而生,它以其轻量级、高效能的特点...
在.NET中,文本操作无处不在,适当地处理文本可以显著提高应用程序的性能。本书不仅解释了操作文本的各种方法,还比较了它们的性能,帮助读者做出更好的选择。它强调了.NET Framework将所有文本存储为Unicode的重要...
二维码技术在现代生活中无处不在,它允许快速传递信息,如网址、联系信息等。在C#中,我们可以使用第三方库如ZXing.Net来解析和生成二维码。通过调用相关API,可以实现读取二维码数据以及生成新的二维码图片。 排队...
在IT领域,编程语言的应用无处不在,而C#作为微软推出的面向对象的编程语言,因其强大的功能和易用性,常被用于开发各种类型的应用程序。在这个案例中,我们探讨的是一个基于C# 2.0和WinForm的特定应用——一个专为...