火龙果软件-Rest架构与案例分析
火龙果软件-腾讯-游戏产品运营事故案例介绍
火龙果整理
网游运营事业部组织图
部门总经理
市场部
策划部
客服部
技术部
海外部
渠道部
市场策划组
网站设计组
翻译
测试
策略
网络游戏事业部的组织架构图
火龙果整理
《凯旋》公测之后,为了迎接十一长假,策划希望策划一些线上活 动,继续冲高在线,Mini Boss活动就此出炉。
火龙果整理
• 只有合理的将一个整体任务的结果责任赋予某人,才能让 其拥有与这个责任对等的权力来制约和控制整个事情。 • 经验必须是沉积在每个人身上,而不是整个团队,富有经 验的的产品经理是一个团队的重要财富。
火龙果整理
现在的运营团队工作模型
• 一个运营团队的三层工作模型
火龙果整理
– 程序实现后提交测试组测试两轮,在测试中因为没有使用大量QB来进行真实的模 拟测试,所以居然没有发现概率方面存在异常;
– 种种错误累加起来使26%概率的特等奖终于出现在了外网环境中; – 从当晚8点多发布活动到10点之前关闭这个活动,仅一个多小时共产生游戏币21个 亿,有700多名用户参与了刷取游戏币; – 由于钱的数量巨大,玩家四处转移游戏币。而冻结账户方面没有预案,虽然紧急 处理及时,但冻结不彻底,扣款程序又出问题等, 最终损失还是构成了一级事故 ; – 事故发生后对员工和相关领导都受到了处罚。
– 经此打击,更多的活跃玩家离开了凯旋,游戏在线下跌到1万余。
火龙果整理
对于回档游戏数据,团队既没有成熟的运营处理预案,也没有进行过任何 演练,迟钝的反应和生硬的处理手法显现出了运营团队的稚嫩。
火龙果整理
《凯旋》产品
• 在白装备事件中,我们得到了哪些教训呢? • • • • • 对于网游产品,测试部门是一定需要专业重点建设的; 对于紧急事故必须有完备的处理预案和责任人制度; 对于重大的备份恢复操作,平时要经常演习熟悉; 对于风险评估和具体应对,我们还需要更多的经验; 对于用户管理和运营维护方面的经验缺乏,舆论导向控制 不力,用户反馈收集缓慢,信息不全,用户体验很差; • 最重要的是,我们需要一个符合网游产品运营特点的团队 管理结构。
火龙果软件--Trac学习手册
Trac学习手册在项目开发中,我倾向于大任务分解、小团队、迭代开发、持续交付。
在管理上,我更看重人与人的交流以及交流后的共识,提倡客户、开发人员、测试人员等面对面的交流,让代码说话。
因此,在选择项目使用的工具上,我更喜欢一些轻量级的开发、配置和管理工具。
在项目配置和管理方面,以前也用到过很多工具。
版本控制用过VSS、TeamSource、CVS和Subversion,项目管理、bug跟踪方面用过Project、CVSTrac 和Trac,当然还有最基本的Excel。
目前我做的项目基本上都是使用Trac+Subversion来构建的,为什么呢?版本控制方面,VSS是以前用的,微软的,大而笨重,TeamSource是Borland的东东,不是很流行。
剩下的就CVS和Subversion了,老实说,我用这两个东东的时间都不长,都是免费,分布式部署比较方便,都够用,真正让我确定使用SVN的是Trac。
我使用CVS完全是因为要用CVSTrac,一个轻量级的项目管理和错误跟踪工具(具体可以参见cnpack)。
直到后来,我知道了Trac,觉得这就是我需要的项目配置和管理的平台。
具体说Trac对我最有用的是Wiki、里程碑、任务管理(bug跟踪)和集成Subversion。
使用wiki我可以轻松的构建项目的网站,项目内容管理,资源链接以及信息发布等等。
里程碑使我的迭代计划更加易于管理,每个迭代(里程碑)有多少工作量,完成了多少,还剩多少,时间节点,相关的资源一目了然。
任务管理最明显的好处就是bug跟踪,还可以为每个里程碑、模块分配任务,并有多种报告可以查看,小团队管理的利器啊。
集成Subversion,可以在Trac网站中查看Subversion的资源,这样,客户和业务人员不使用Subversion也可以获取相应的资源了。
Trac和Subversion好处很多,但安装有点费劲,当然,对于熟手来说很容易。
我当时弄了好久才搞定Trac,今天早晨才使用上WebAdmin插件。
火龙果软件UML建模工具开发实践精品PPT课件
火龙果 整理
UML建模工具开发高阶探讨
❖ 如果只是开发一个UML工具来玩一玩的话, 前面做的已经足够!
你真的了解UML吗?
❖从OMG下载所有相关的UML白皮书和参考手册,能读 多少遍,就读多少遍.
❖将相关UML & MDA普及网站的所有UML技术文章通读 一遍,如UMLChina.MDAChina,。
你知道你未来的产品是什么样子吗?
❖熟练操作IBM Rational Rose、Borland Together,或 Trufun Plato。知己知彼。
第三步:构建UML IDE
火龙果 整理
❖ 将图形系统和UML对象类库完美的融合,构 建一个完整的UML应用环境。
❖ 二者的结合架构:MVC
将图形看作是UML对象的视图(View)。 将UML对象看作是图形的Model(模型)。 一个UML对象可以有多个视图表示。
第三步:构建UML IDE
你有足够的资金养家糊了口吗?
❖ 因为你的这项投入5年之内赚钱的可能几乎为零,甚至永远为零。
火龙果 整理
你准备好了吗?-必备条件
❖ 公司
你有足够的资金吗?
❖ 想一想IBM收购Rational的出价, Borland收购Together的价码,掂 量一下你的钱袋!
你有胆量和软件巨人直面较量吗?
第一步:构建图形系统
❖ 要实现的功能:
视图:
❖ Zoom out, Zoom In. ❖ OverView….
图形输入输出
❖ 复制图像到Clipboard ❖ 保存到文件:最好是XML文件,或SVG。 ❖ 读取文件 ❖ 打印
其他UI支持:
❖ ToolBox ❖ Property Editor
软件工程-03需求分析
14
火龙果 整理
获得需求的方法 - 1
访谈
正式访谈 系统分析员将提出一些事先准备好的具体问题 非正式访谈 系统分析员将提出一些用户可以自由回答的开放性问题,以鼓励 被访问人员说出自己的想法 如:“您对目前正在使用的系统有哪些不满意的地方” 向被调查人员发调查表 当需要调查大量人员时
分析建模 – cont.
分析建模的原则
需要能够表达和理解问题的信息域和功能域 要能以层次化的方式对问题进行分解和不断细化
25
火龙果 整理
软件需求规格说明
用自然语言完整、准确、 具体描述系统的数据需求 、功能需求、性能需求、 可靠性和可用性要求、出 错处理需求、接口需求、 约束、逆向需求、将来可 能提出来的需求
数据流图(DFD),数据字典(DD) 实体-关系图(ERD) 状态转换图(STD) 主要的处理算法描述逻辑模型(IPO)
修正系统开发计划
准确地估计系统的成本及进度,修正以前我们所制定的开发计划
13
火龙果 整理
3.1 需求分析的任务 3.2 获得需求的方法 3.3 分析建模与规格说明 3.4 结构化分析简介 3.5 数据模型:实体-关系图 3.6 功能模型:数据流图(数据规范化) 3.7 行为模型:状态转换图
28
火龙果 整理
软件需求规格说明的简略大纲 – cont.
Ⅲ.功能描述 C.控制描述:1 .控制规格说明、2 .设计约束 Ⅳ.行为描述 A.系统状态 B.事件和动作 Ⅴ.确认标准 A.性能范围 B.测试种类 C.预期的软件响应 D.特殊考虑 Ⅵ.参考书目 Ⅶ.附录
29
火龙果 整理
需求规格说明工作的艰巨性
6
火龙果 整理
火龙果软件UML设计方案文档
系统分析与设计统一建模语言UML期末报告学期:2018-2018第1学期专业:班级:学号:姓名:2018年1月6日门诊管理系统第1章需求分析1.1系统建设的意义随着社会的发展,门诊管理系统结合了各种新的技术,通过可行性的技术途径来整合各种资源,为医务人员节省出大量的时间,更好的的为门诊和患者服务,还将医务人员从繁琐重复的病历文书书写工作中解脱出来,集中精力关注病人的诊疗,而且通过模板书写的病历更加完整、规范,门诊系统通过提供了完整、权威、规范、严谨的病历模板,避免了书写潦草、缺页、漏项、模糊及不规范用语等常见问题,提高病历审核合格率,还方便了病人查询自己的病例。
1.2系统需求描述从系统功能描述可以划分为以下几方面:挂号子系统:该系统有人工挂号系统和自主挂号系统。
对于出来患者需要录入本人的相关信息并办好就诊卡,以后挂号就可以直接使用就诊卡进行挂号,这样既减轻了医务人员的工作负担,同时也缩短了患者的挂号时间,能够更短时间的就诊。
自主管好系统提供除了人工挂号系统的退号以外的所有的功能。
医疗信息管理子系统:此子系统主要是为了医院的医务管理人员使用,主要提供医务人员、药品信息、患者信息的增删改功能。
通过此功能可以方便门诊部门的基本信息管理,提高医务管理人员工作效率。
查询子系统:此查询系统可为患者提供个人病例查询,药品的相关信息的查询和就诊医生的相关的信息,病人需输入相关的验证信息;另外医务人员还可以通过此查询为病人拿相应的药品。
收费子系统:该子系统的功能是主要医院提供打印收费票据、医疗工程收费统计、收费汇总等功能。
此外还可以为本院的忠实患者办理医疗卡、进行医疗卡预存。
医疗卡能方便患者进行挂号及自助挂号和缴付各种医疗费用。
系统主要功能是面向医院的工作人员。
诊断查询子系统:此系统主要为医生填写病人相关病历信息提供方便。
主要提供制作检查单、制作检查结果单、制作病历书。
该系统包含所有常用的医疗检查工程和药品信息方便医生为患者开检查单和开处方。
火龙果软件-大数据量_海量数据_处理方法总结
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。
下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。
将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。
同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。
所以一个简单的改进就是counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。
还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。
当hash 函数个数k=(ln2)*(m/n)时错误率最小。
在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。
但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。
举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。
这样k大概是8个。
注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。
通常单个元素的长度都是有很多bit的。
所以使用bloom filter内存上通常都是节省的。
扩展:Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。
火龙果软件-OSGi基础
1.OSGi是什么:Java语言的动态模块系统本文介绍了OSGi是什么,以及OSGi容器的一些现状。
OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。
OSGi是什么OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。
OSGi容器已有多家开源实现,比如Knoflerfish、Equinox和Apache的Felix。
您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系。
OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守的契约,其中,服务对象是容器要实现的。
您如果想要在OSGi平台上进行开发,首先,您必须要使用OSGi API来创建您的应用,然后将之部署到OSGi容器中。
从开发者的角度看,OSGi具有以下优点:a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构如果说您使用Servlet容器开发您的网络应用,使用EJB容器开发交易式应用,您可能会问,为什么我们还需要另外的容器呢?对这个问题的简短回答是,OSIG容器是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,您非常需要将这些应用分割为一个个的模块。
在本系列以后的文章中,我将针对这个问题进行展开并深入回答。
1. OSGi在企业开发中的应用OSGi联盟(OSGiAlliance)于1999年3月开始着手制定OSGi规范,其主要目的就是要制定一套开放式标准,以便向局域网及其中的设备提供可管理的服务;其基本思路是,一旦您在网络设备(如服务器和嵌入式设备)上使用了OSGi服务平台,您就可以在网络上的任何地方管理这些设备上运行的软件组件的生命周期,可以在后台对这些组件进行安装、升级或卸载,但不需要打断该设备的正常运行。
火龙果软件--Director安装配置
vCloud
vShield Manager配置
安装vShield Manager
火龙果整理
1、从VMware官方vSphere4.1下载页面,找到vShield Zones 4.1 Update1,下载ova文件 2、在vSphere Client登陆页面,选择【文件】-【导入ovf】文件,导入 vShield Zone 4.1 Update1.ova。导入后,esx01主机多出一个虚拟机, 名字为vShield Manager 3、开启vShield Manager虚拟机。登陆界面,用户名:admin,密码: default,二者均为默认
vCloud
vCloud Director 硬件要求
火龙果整理
vCloud Director服务器组均要求能够访问一台 vCenter 服务器、一台 vShield Manager 服务器以及一个或多个 ESX/ESXi 主机
vCloud Director 网络要求
1、每台 vCloud Director 服务器均需两个 IP 地址,以便能够支持两个 不同的 SSL连接。一个连接用于 HTTP 服务。另一个用于控制台代理服 务。 2、您必须使用网络时间服务(如 NTP)将所有 vCloud Director 服务 器(其中包括数据库服务器)的时钟同步。被同步服务器的时钟之间最 多允许存在 2 秒的偏差 3、由 DNS 通过完全限定域名或非限定主机名的转发和反向查找来进行 解析
vCloud
VMware vCloud Director架构图
火龙果整理
vCloud Director 的安装和配 置过程会创建单元,将它们连 接到共享数据库,并建立与 vCenter server、vShield Manager 和 ESX/ESXi 主机的 第一次连接。稍后,系统管理 员可以随时使用 vCloud Director Web 控制台将其 他 vCenter servers、vShield Manager 服务器和 ESX/ESXi 服务器连接到 vCloud Director 服务器组
《Rest架构与案例》课件
# Rest架构与案例
这个PPT课件将会介绍Rest架构的概念和应用案例。通过理解Rest架构的设计 原则和优势,可以在Web开发、移动开发和云计算服务中应用此架构。
什么是Rest架构?
背景
Rest架构是一种基于HTTP协 议的Web应用程序设计风格。
概念解释
Rest代表Representational State Transfer,通过对资源的 状态的表现进行操作和传输。
总结
1
Rest架构的定义和概念
Rest是一种基于HTTP的Web应用程序设计风格,具有简洁、可扩展和易于理解的特点。
2
Rest架构的优劣分析
Rest架构的优势包括简单的API、协议灵活性和易于缓存,但也存在HTTP局限性、复杂性和 安全性问题。
3
Rest架构案例探究
在Web开发、移动开发和云计算服务中,Rest架构都有广泛的应用。
特点
Rest具有简洁、可扩展和易 于理解的特点,使得它成为 一种常用的架构风格。
Rest架构设计原则
1 统一资源标识符
通过URL唯一标识资源, 支持对资源的增删改查操 作。
2 无状态通信
3 资源的缓存
服务器不保存客户端的状 态信息,每次请求都包含 足够的信息供服务器理解。
利用缓存提高性能和可伸 缩性,减少对服务器的重 复请求。
基于Rest的Web开发
使用Rest架构设计和开发Web应用程序,提供简 洁且易于维护的API。
基于Rest的移动开发
利用Rest架构构建响应式设计和可靠的移动应用 程序。面向资源的Web服务设计
通过将Web服务的应用逻辑抽象为资源,实现灵 活和可扩展的Web服务。
火龙果软件-UML详解及实例分析
UML的特点
火龙果整理
(1) 统一标准 UML统一了Booch、OMT和OOSE等方法中的基本概念, 已成为OMG的正式标准,提供了标准的面向对象的模型元素 的定义和表示。 (2) 面向对象 UML还吸取了面向对象技术领域中其他流派的长处。 UML符号表示考虑了各种方法的图形表示,删掉了大量易引起 混乱的、多余的和极少使用的符号,也添加了一些新符号。 (3) 可视化、表示能力强 系统的逻辑模型或实现模型都能用 UML模型清晰的表示, 可用于复杂软件系统的建模。 (4) 独立于过程 UML是系统建模语言,独立于开发过程。 (5) 易掌握、易用 由于UML的概念明确,建模表示法简洁明了,图形结构 清晰,易于掌握使用。
用于表示其他信息,比如注释,模型元素的语 义等。另外,为了适应用户的需求,它还提供了扩 展 机 制 (Extensibility mechanisms) , 包 括 构 造 型 (Stereotype) 、 标 记 值 (Tagged value) 和 约 束 (Constraint).使用UML语言能够适应一个特殊的方 法(或过程),或扩充至一个组织或用户。
通用模型元素
火龙果整理
模型元素是 UML 构造系统的各种元素,是 UML 构建 模型的基本单位。模型元素代表面向对象中的类,对象, 关系和消息等概念,是构成图的最基本的常用的概念。分 为以下两类: 1、基元素 是已由 UML 定义的模型元素。如:类、结点、构件、 注释、关联、依赖和泛化等。 2、构造型元素 在基元素的基础上构造的新的模型元素,是由基元素 增加了新的定义而构成的,如扩展基元素的语义(不能扩 展语法结构) ,也允许用户自定义。构造型用括在双尖括 号《》中的字符串表示。 目前 UML 提供了 40 多个预定义的构造型元素。如使 用《Use》、扩展《 Extend 》。
statuefulset 案例
StatuefulSet案例分析1. 案例背景StatuefulSet是Kubernetes中用于管理有状态应用的控制器。
与Deployment控制器不同,StatuefulSet能够确保有状态应用的稳定部署和扩展。
在这个案例中,我们将介绍一个使用StatuefulSet管理有状态应用的场景。
假设我们有一个在线购物应用,该应用包括一个后端数据库和多个前端应用实例。
每个前端应用实例需要连接到数据库,并且需要持久化存储来存储用户上传的图片和其他数据。
我们希望能够通过StatuefulSet来管理这些有状态应用的部署和扩展。
2. 案例过程2.1 创建数据库首先,我们需要创建一个数据库来存储应用的数据。
我们可以使用Kubernetes的StatefulSet来创建一个数据库实例。
apiVersion: apps/v1kind: StatefulSetmetadata:name: databasespec:selector:matchLabels:app: databaseserviceName: databasereplicas: 1template:metadata:labels:app: databasespec:containers:- name: databaseimage: mysql:5.7ports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalue: passwordvolumeMounts:- name: database-datamountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: database-dataspec:accessModes:[ "ReadWriteOnce" ]resources:requests:storage: 10Gi在这个例子中,我们创建了一个名为database的StatefulSet,它使用了MySQL 5.7的容器镜像。
需求分析与测试人员如何做好需求分析
火龙果 整理
• 首先对访问者和访问记录这两个元素进行 分析,先看访问者有那些属性,除了描述 中提及的访问时间和IP地址外,访问者还有 那些属性呢?显然访问者的访问内容是最 重要的属性,仅记录访问时间和访问者的IP 地址是否足够呢,从日志能分析出什么有
举例说明如何进行测试需求分析
•非功能性
需求是产
限制条件
火龙果 整理
• 限制条件是全局性的需求。它们可以是对 项目本身的限制,或是对产品最终设计的 限制。
• 例子:南京平台必须在2010年开学的第一学期上线
• 客户是在说,如果顾客不能在给定的时间前使用该产 品,那么它就没有什么用了。其效果是,需求分析师 必须对需求进行限制,只包括那些在最后期限前能够 提供最大价值的需求。
会这样做? • 2 、业务模型法:
测试需求分析的步骤
火龙果 整理
• 3 、业务场景法: • a) 考虑用例的调用者;考虑每一个用例提供的服务是
供哪些外部用例或者系统调用,找出所有的调用者。 调用的前提、约束都要考虑。每一个调用都可以考虑 成一个大的业务流程。(一般和外部有交互的用例出 错的概率比较大,需要重点关注) • b) 考虑系统内部各个用例之间的交互,形成内部业务 流程图。需要分析每个用例之间的约束关系、执行条
• 2、在需求阶段消除问题的代价最小,而如 果需求问题等到产品发布出去后才发现的
为什么要做需求分析
火龙果 整理
• 1、“决策性”——要不要做这个产品,通 过对市场需求的分析来决策项目是否需要 立项; 2、“方向性”——良好的需求分析可以对 项目人员明确方向,让项目成员知道下面 应该如何实施;
如何进行需求分析
火龙果 整理
• 一般可以从三个方面去考 虑:
火龙果 MyProcess 过程改进模型
火龙果MyProcess过程改进模型作者:俎涛zutao@,火龙果软件工程技术中心 虽然CMMI,RUP,XP,等等软件过程框架和方法虽然风靡一时,但是业内人士都有一个不争的事实:真正有效的过程改进其实很少发生。
问题关键在哪里呢,在于软件过程改进的方式!一般的软件过程改进都是建立一个“良好的过程规范”,这个规范可能是CMMI那样主要强调过程质量标准的,也可能像RUP和XP那样比较强调实施路线图的,但是,这样的过程改进都有一个很大的成本风险:先有帽子,然后再说脑袋如何如何。
呵呵,明显的不合逻辑。
火龙果软件基于多年来自一线的过程改进实践经验,建立了一套自己的有效过程改进理论“MyProcess”。
MyProcess的改进过程的核心思路如下图所示:图1:MyProcess过程改进模型火龙果MyProcess是一个基于过程现状问题的过程改进方法,关注您的当前过程基础与问题,不提倡海市蜃楼式的过程改进,核心宗旨:z可行的才是有效的z基于当前过程基础z关注现在过程问题z参考先进过程经验z采用进化式的改进z改进永无止境MyProcess首先强调关注当前组织中过程的问题,为了避免什么都改进,什么都改进不了的尴尬局面,把过程的问题具体化为项目中的过程问题,首先对项目进行历史再现,然后进行深入的诊断,发现问题,改进问题,把改进好的过程应用于新的项目,对于有普遍意义的实践提升为规范,然后再对规范理论化,形成过程理论。
过程改进涉及到软件工程组织的工作方式、方法和环境的改进,尤其涉及到人员观念和工作习惯的改变,客观的说不应该是一个急进的过程,而是一个结合组织当前的过程问题,逐步改造的过程,所以过程改进模型应该提供一个具体的演进的路线图,而这个演进的路线图可以像CMMI那样分为多个级别,然后逐步改进,但是分级的问题就是对客户的问题进行了主观的分级,虽然这也是基于大量的过程经验得出的,但是很难一下适应客户当前改进的需要,因为改进可能并不是组织当前最关键的目标,一般是辅助或者支持性的目标,所以改进的过程模型应该有另外一种层次出现:不局限于具体的过程域,而强调一种基本的过程改进方式,MyProcess正式关注于这个方面,可以带来一个更灵活和客观的思路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
● 安全性与幂等性:
– GET和HEAD请求是安全的 – GET、HEAD、PUT和DELETE请求是幂等的
火龙果整理
PUT与POST创建资源
● 创建资源时,PUT与POST的区别:
– 若客户端决定新资源的URI——用PUT
– 若服务器决定新资源的URI——用POST
● 在一个博客系统中使用PUT与POST的比较:
● 非标准报头
Cookie Set-Cookie X-WSSE
● 自定义报头
不重新发明已存在的报头
不将应该放在实体主体里的信息放进报头 命名遵循惯例,名称以“X-‖开头
火龙果整理
HTTP响应代码
● 状态码(3位数字)分类
1xx:通知——仅在与HTTP服务器沟通时使用
2xx:成功——成功收到、理解和接受动作
火龙果整理
REST抽象概念 – 资源
● URI规范(RFC 2396): “资源可以是任何有标示的东西”
“并非所有的资源都是通过网络能够获取的”
● 任何事物,只要有被引用的必要,就是一个资源 (resource)。它可以是一个实物,也可以是一个抽象 的概念。 ● 通常一个资源是某个可以存放在计算机上并体现为比 特流的事物。在Web中,可以这样认为——资源是 URI标示的东西。
火龙果整理
HTTP– 把文档装入信封
请求
客户端
服务器
响应
火龙果整理
HTTP请求
● 方法(method):表示客户端希望服务器如何处理该信 封。有GET、POST、PUT、DELETE、HEAD、 OPTION、TRACE和CONNECT八个方法。 ● 路径(path):请求链接里主机名后面部分,即信封上的 地址。 ● 请求报头(request headers):一组起元数据作用的键 值对,类似信封上贴的标签信息。HTTP除定义了一 套标准报头外,程序也可以自己定义报头。 ● 实体主体(entity-body):也称作文档或表示,即信封里 的文档。一般情况下,请求实体主体可为空。
● 陈老师与女明星的关系
● 等等
火龙果整理
URI与资源的关系
● URI既是资源的名称,也是资源的地址。 ● 一个资源必须至少有一个URI,而一个URI只能指示 一个资源。 ● 任何两个资源不可能是同一个。 ● 两个不同的资源在某一时期可能指向同样的数据。 ● 同一资源具有多个URIs的虽然能让引用变得更加容 易,但坏处是将产生“稀释效应”,客户端无法自动 验证它们是指向同一个资源。
200(―OK‖)、201(―Created‖)、204(―No Content‖)
3xx:重定向——为完成请求,必须进一步采取措施
301(―Moved Permanently‖)、303(―See Other‖)
4xx:客户端错误——请求包含错误的语法或不能完成
400(―Bad Request‖)、401(―Unauthorized‖)、403(―Forbidden‖)
/search?q=陈老师
―浏览器打开google网站,搜索框输入‖陈老师‖,点击搜索。
● 服务器所能提供的每一则有价值的信息都应该作为资 源来发布。
● 区别资源的可寻址与应用的可寻址:许多Web应用不 是像Web一样可寻址的,尤其是Ajax应用。
如Gmail Web服务是可寻址的,不过调用该服务的Gmail Web 应用不是可寻址的。
火龙果整理
ROA四个属性(特征标志)
● 可寻址性(addressability)
● 无状态性(statelessness)
● 连通性(connectedness) ● 统一接口(uniform interface)
火龙果整理
可寻址性
● 资源是通过URI暴露的,URI是可以寻址的。
4.暴露一个统一接口的子集 5.设计来自客户端的表示 6.设计发给客户端的表示 7.用超链接和表单把资源与已有资源联系起来
8.考虑有哪些典型的事件经过
9.考虑可能出现的错误情况
火龙果整理
肯德基REST案例
● 案例描述 顾客 与 服务员:
光临KFC,排队等候,查看食品列表,点餐,生成 订单,付款,在旁等候,下一位。
主流WEB服务架构
● REST式面向资源的架构 具备Web特征的服务:静态网站、许多未采用SOAP 的只读Web服务、许多只读型Web应用等 ● PRC式架构 所有采用XML-RPC遗留协议的服务,几乎所有的 SOAP服务 ● REST-RPC混合架构 大部分Web应用,大量采用MVC模式的Web应用
回顾Web的发展
● HTTP(Hypertext Transfer Protocol) 超文本传输协议?NO,超文本转移协议!
● URI / URL
● Web1.0 – 静态(只读)仓库 Web2.0 – 双向,交互
Web3.0 – 数据化,服务化,平台化
● HTML JavaScript 富客户端(Flex Silverlight…) SOAP
404(―Not Found”)、405(―Method Not Allowed‖)
5xx:服务器端错误——服务器不能完成明显合理的请求
500(―Internal Server Error‖)、503(―Service Unavailab果整理
整个博客资源(/weblogs/myweblog) 博客里一片文章资源(/weblogs/myweblog/entries/1)
火龙果整理
使用PUT与POST比较
火龙果整理
ROA设计步骤
1.规划数据集 2.将数据集划分为资源
3.设计URI为资源命名
火龙果整理
无状态性
● 状态分两种:应用状态(application state)和资源状态 (resource state)。前者保存在客户端,后者保存在服 务端。 ● 每个HTTP请求是完全孤立。请求包含服务器实现该 请求的全部信息,不依赖于之前某个请求。 ● 无状态性意味着服务端不应保存应用状态,客户端应 当管理自己的应用状态。
火龙果整理
REST简介
● REST(Representational State Transfer) 表述性状 态转移,一种架构风格
● 不是一个具体的标准或者架构,只是一套设计原则和 一种架构风格
● HTTP是这种架构风格的实现 ● 一种真实描述Web的方式,不被特定时期的特定应用 程序概念歪曲,是对Web的本质回归 ● 提供区分良好实践和糟糕实践的途径:判断特定实践 是否与Web架构一致
火龙果整理
HTTP响应
● 响应代码(response code):通知客户端请求成功或失 败,以及如何处理信封里的内容。 ● 响应报头(response header):类似请求报头。 ● 实体主体(entity-body):同样是放在信封里的文档,但 绝大多数情况它不会为空。
火龙果整理
REST架构与案例 分析
火龙果整理
大纲
● 回顾Web的发展 ● HTTP
● 主流Web服务介绍
● REST抽象概念 ● REST式架构 -- ROA ● REST案例分析 ● REST式服务框架-- Restlet
火龙果整理
违背REST的恶果
● 服务端必须维持状态
难以对URI进行缓存
应用部署难以水平扩展
存在安全隐患
● 数据与表象混杂
无法准确表达与理解请求含义 对不同客户端要分代码处理
● URI难以持久化
暴露技术实现且易变更URI 代码方法入侵URI
火龙果整理
REST式架构 -- ROA
● 面向资源的架构(Resource-Oriented Architecture, ROA) ● 一个具体的REST式架构 ● 一种把实际问题转换成REST式Web服务的方法
火龙果整理
REST架构
火龙果整理
REST设计准则
● 网络上的所有事物都被抽象为资源
● 每个资源对应一个唯一的资源标识URI
● 通过HTTP协议方法作连接器对资源进行操作 ● 对资源的任何操作不改变资源标识URI ● 所有的服务器操作都是无状态的
火龙果整理
火龙果整理
资源的表示
● 对于一个本身就是一些数据项的资源,最容易想到的 一个表示就是这些数据本身。
– 如HTML格式的网页新闻
● 对于代表实物或其他难以归结为信息的事物,其表示 就是关于资源的状态的任何有用信息。
– 如“连上Web的自动饮料机”提供关于实物饮料的数据
● 即使在一个对象的诸多表示中,已经有一个表示包含 实际数据了,它也还可以有其他包含元数据的表示。
火龙果整理
REST抽象概念 – 表示
● 资源和表示不是一码事。Web上获取的不是资源,而 是资源的表示。
● 对于给定的资源,可以有很多不同的表示。
表示 HTML XML
表示
资源
表示 Flash Text
表示
标识符(URI)
火龙果整理
REST抽象概念 – 状态
– 如在线书店为每本书提供该书电子版与评论两种表示
● 表示的选择信息可以放在HTTP报头或URI中。
火龙果整理
资源间的链接
● 大多数表示是超媒体(hypermedia)的,它不仅包含数 据,还包含指向其它资源的链接。 ● Roy Fielding博士论文中指出:“将超媒体作为应用 状态的引擎”。即客户端应用状态在服务器提供的“ 超媒体”的指引下发生变迁。
火龙果整理
连通性
● 资源的表示“具有链接”的特性即连通性,它要求资 源应当通过它们的表示彼此链接起来。
● HTTP会话的当前状态不是作为资源状态保存在服务 器上的,而是被客户端作为应用状态来跟踪的。