...
5
1
、什么是
web
框架?
所谓框架就是制定好了一套规范和惯例,让开发者在该架构下进行开发。
维基百科对软件框架(
software
framework
)的定义如下:
软件框架通常指的是为实现某个业界标准或完成特定基本任务的软件组件规范,也只为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作。或者说就是使用别人搭好的舞台,你来做表演。
web
框架是指用来促进
web
开发而存在的一个一系列标准库(
libraries
)、开发工具(
tools
)以及约定(
conventions
)的集合。
一个好的
web
框架常常具有如下特点:
a
、
Full stack
:满栈性,
web
框架应该包含完成一个完整的
web
应用所需要的一切东西,这通常需要通过安装很多软件包和做各种各样的配置来实现,另外框架中的各个
Layer
之间应该能够实现无缝的连接。
b
、
Open source
:开源性
c
、
Cross-platform
:跨平台性
(platform
- independent)
一个好的
web
框架通常能给开发人员带来如下便利:
a
、
A palce for
everything
:一个好的
web
框架应当具有很好的架构
(structure)
和一些便利的约定,这样在开发过程中应用程序的每一部分都有其明确的存在位置,这就嫌少了臆测工作并能提高开发效率。
b
、
A database
abstraction layer
:一个好的
web
框架能够自动处理底层的数据库工作,并能够在几乎所有的数据库上运行良好。
c
、
A culture
and aesthetic to help inform programming decision
:一个好的
web
框架能够表达自己的观点:通过一些约定来引导你,并帮你做出一些困难的决定,他通过帮你决定一些低级的问题来让你专注于更重要的事情上
2
、什么是
ruby
?
ruby
是一种简单快捷的面向对象的动态的脚本语言。它在
20
世纪
90
年代由日本的松本行弘开发。
ruby
具有如下特点:
•
An
interpreted, object-oriented scripting language
:解释性、面向对象的脚本语言
•
Elegant,
concise syntax
:语法高雅简洁
•
Powerful
metaprogramming features
:强大的与程序特色
•
Well suited as a
host language for creating DSLs
:非常适合作为创造
DSL(domain-specific language)
的宿主语言
(host language)
•
dynamic,
open source, cross-platform and so on:
动态、开源、跨平台等
3
、什么是敏捷开发?
Agile Manifesto
:敏捷宣言
•
Individuals and
interactions over processes and tools
:个体和交互
胜过
流程和工具
•
Working software
over comprehensive documentation
:可以运行的软件
胜过
详尽的文档
•
Customer
collaboration over contract negotiation
:客户的合作
胜过
合同谈判
•
Responding
to change over following a plan
:响应变化
胜过
因循计划
尽管右项有其价值但是敏捷开发更重视左项的价值。
传统开发过程:
与客户确定合同后在初期制定并遵循基于活动的完整计划,在重型过程与工具的指导下,通过完成大量文档进行知识传递,最后交付需求。
敏捷开发过程:
开发团队与客户密切协作,通过高度迭代式、增量式的软件开发过程响应变化,并在每次迭代结束时交付经过编码与测试的有价值的软件。
敏捷开发的十二项原则:
•
最重要的目标是:通过持续不断地加早交付有价值的软件使客户满意
•
欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化
•
经常地交付可工作软件,相隔几星期或一两个月,倾向于采用较短周期
•
业务人员和开发人员必须相互合作,项目中的每一天都不例外
•
激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
•
不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
•
可工作的软件是进度的首要度量标准。
•
敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
•
坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
•
以简洁为本,它是极力减少不必要工作量的艺术。
•
最好的架构、需求和设计出自自组织团队。
•
团队定期地反思如何能提高成效,
•
并依此调整自身的举止表现。
4
、什么是
REST
?
REST
是表征状态转移(
Representational
State Transfer
)的简称,它是
Roy Fielding
博士在
2000
年他的博士论文中提出来的一种软件架构风格。
REST
是设计风格而不是标准
,
REST
在本质上是一个可以被许多不同技术实现的高层次的风格,可以被实例化,
REST
通常基于使用
HTTP
、
URI
、
XML
以及
HTML
这些现有的广泛流行的协议和标砖。正如:
web
、
http
、
URI
可以看成是
REST
风格的一个主要实现。
REST
从资源的角度观察整个网络,分布在各处的资源由统一资源标识符
URI
确定,而客户端的应用通过
URI
来获取资源的表征,获得这些资源的表征致使这些应用程序转变了其状态。随着不断获取资源的表征客户端应用不断地转变着其状态,所谓表征状态转移(
Representational State Transfer
)并不是凭空臆造的,而是通过观察当前互联网的运作方式而抽象出来的。
Roy Fielding
认为:“涉及良好的网络应用表现为一系列的网页,这些网页可以看做是虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展示给使用的人,而这正代表了状态的转变。”
REST
的设计概念和准则:
a、
网络上所有的事物都被抽象为资源(
resource
)
b、
每个资源对应着唯一的资源标识符(
resource
identifier
)
c、
通过通用连接器接口(
generic
connector interface
)对资源进行操作
d、
对资源的各种操作不会改变资源标识符
e、
所有操作都是无状态的(
stateless
)
或者:
Five key
principles of REST
-
Give every “thing” an ID
-
Link things together
-
Use standard methods
-
Resources with multiple representations
-
Communicate statelessly
对
REST
的实现者之一
web
应用来说:资源(
resource
)的含义并不是数据而是数据加特定的表现形式(
representation
);
resource
identifier
就是
URI
(统一资源标识符),它用来指定资源;
generic
connector
interface
是
HTTP
,对资源进行的操作包括获取、创建、删除、和修改,这些操作正好对应
HTTP
提供的
GET
、
POST
、
PUT
和
DELETE
方法,另外是通过操作资源的表形来操作资源的,而资源的表现形式则一般是
XML
或者
HTML
这取决于读者是机器还是人,是消费
web
服务的客户软件还是
web
浏览器,当然也可以是其他任何的格式;
d
是指我们常说的
URL
不变性。
l
客户端和服务器结构
l
连接协议具有无状态性
l
能够利用Cache
机制增进性能
l
层次化的系统
关于状态:
注意区别应用的状态和连接协议的状态:
REST
对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。
RESTful Web
服务(也称为 RESTful Web API
)是一个使用HTTP
并遵循REST
原则的Web
服务。它从以下三个方面资源进行定义:
-
URI
,比如:
http://example.com/resources/
-
Web
服务接受与返回的互联网媒体类型,比如:
JSON
,
XML
,
YAML
等
-
Web
服务在该资源上所支持的一系列请求方法(比如:
POST
,
GET
,
PUT
或
DELETE
)
下表列出了在实现RESTful Web
服务时HTTP
请求方法的典型用途。
资源
|
GET
|
PUT
|
POST
|
DELETE
|
一组资源的URI
,比如:
http://example.com/resources
|
列出URI
,以及该资源中每个资源的详细信息
|
使用给定的一组资源替换当前整组资源
|
在本资源组中创建/
追加一个新的资源,该操作往往返回新资源的URI
|
删除整组资源
|
单个资源的URI
,比如:
http://example.com/resource
|
获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML
、JSON
等)
|
替换/
创建 指定的资源,并将其追加到相应的资源组中。
|
把指定的资源当做一个资源组,并在其下创建/
追加一个新的元素,使其隶属于当前资源。
|
删除 指定的元素。
|
-
可以利用缓存
Cache
来提高响应速度
-
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
-
浏览器即可作为客户端,简化软件需求
-
相对于其他叠加在
HTTP
协议之上的机制,
REST
的软件依赖性更小
-
不需要额外的资源发现机制
-
在软件技术演进中的长期的兼容性更好
分享到:
相关推荐
描述中虽然没有具体信息,但我们可以推测这可能是一篇关于Rails中查询技巧和最佳实践的学习笔记,可能包括如何使用ActiveRecord查询接口进行复杂的数据库操作,如选择、过滤、排序、分组等。 标签 "源码" 暗示了这...
1. **Ruby on Rails 3**:本文档主要针对 Rails 3 版本。 2. **Solr**:全文检索引擎,Sunspot 依赖于 Solr 来实现其功能。 3. **Sunspot gem**:Sunspot 的核心 gem,通过这个 gem 可以轻松配置和使用 Sunspot 功能...
综上所述,Ruby on Rails的笔记内容涵盖了从安装Rails环境到创建和运行一个简单的Rails项目的基础知识,这些内容对于初学者来说是学习Rails框架的极好入门材料。通过对这些知识点的学习,初学者可以快速了解Rails的...
陈刚的Ruby on Rails学习笔记不仅提供了从零开始构建Rails项目的步骤指南,还深入浅出地讲解了MVC架构的基本原理,对于初学者来说是一份非常实用的参考资料。通过实践“Hello World”程序,读者可以亲身体验Rails的...
在进行 Ruby on Rails 的开发之前,首先需要完成一系列的基础软件安装工作,包括但不限于 Ruby 语言环境、Rails 框架、版本管理工具等。 ##### 安装基础依赖 1. **更新系统包列表:** ```sh sudo apt-get update...
### Rails 入门详细笔记知识点解析 #### 一、环境搭建 在开始使用 Rails 进行开发之前,首先需要确保你的开发环境满足以下条件: - **Ruby 版本**:推荐使用 Ruby 1.9.2 或更高版本。这是因为早期版本如 1.8.7 ...
通过阅读《Ruby on Rails笔记》,我们可以了解到作者对于Ruby on Rails学习过程中的深入理解和实践经验。这份笔记不仅是一份学习指南,也是对Rails初学者来说非常有价值的参考资料。无论是想要从零开始学习Rails,...
通过以上内容的学习,我们了解了Rails的基本环境搭建、应用创建、控制器与视图的关系、动态内容的展示方式以及敏捷开发的思想。Rails以其高效简洁的特点,成为了Web开发领域的重要工具之一。掌握Rails不仅能够提高...
在本篇ROR(Ruby on Rails)学习笔记中,我们将深入探讨如何在Windows XP操作系统上进行环境的安装和配置。Ruby on Rails是一个流行的开源Web应用框架,它基于Ruby编程语言,以其“DRY”(Don't Repeat Yourself)...
在描述中提到的“NULL”可能意味着该资源没有提供详细的介绍,但通过博文链接(https://hlee.iteye.com/blog/351357),我们可以推测这是一个关于学习和实践Rails 3的博客文章,可能包含了作者的学习笔记、示例代码...
Ruby on Rails是一种流行的开源网站开发框架,它利用Ruby语言,遵循MVC(模型-视图-控制器)设计原则,用于快速开发数据库驱动的动态网站。本书《Ruby on Rails 实践》是一本指南,旨在向读者介绍Ruby on Rails框架...
陈刚撰写的《Ruby on Rails心得_V0.1》是一份非常宝贵的资料,旨在记录作者在学习Ruby on Rails过程中的所见所得,包括读书笔记、心得体会、自创教程及一些常见问题的解决方案。作者通过写作这种方式不仅加深了对...
ICC 学习笔记是一份详细的学习笔记,涵盖了 IC Compiler 的基础概念介绍,非常适合入门学习。该笔记中介绍了多个重要概念,包括 core ring、strap、macro ring、rail、track、trace、Gcell、Antenna violations、ECO...
"后端语言的学习笔记.zip"这个压缩包很可能包含了关于各种后端编程语言的学习资源,特别是那些用于构建动态网站和Web服务的语言。尽管没有具体的标签提供额外信息,我们可以推测这可能涵盖了诸如Java、Python、Node....
一边读着《Agile Web Development with Rails》的英文电子版,一边写随笔,并且尽量写的简单明了些,对于具体的细节概念倒没有做深入的研究,所以,这一系列也是《Agile Web Development with Rails》的读书笔记...
总的来说,`rubyinstaller-devkit-3.0.2-1-x64 and Ruby 学习笔记.7z`文件包含了一个在Windows上开始Ruby编程所需的基本组件和学习资源。通过安装Ruby和DevKit,你可以轻松地编写、编译和运行Ruby代码,同时结合学习...
本笔记摘录自WDI HKV以及lynda.com的在线Rails教程,旨在提供一个全面且深入的学习指南。 ### 1. **基础概念** - **MVC架构**:Rails采用Model-View-Controller(MVC)设计模式,将业务逻辑(Model)、用户界面...