领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Dilip Krishnan 译者 马国耀 发布于 2010年6月24日
Mike Amundsen在一篇博文中探讨了在仅限于使用GET和POST的环境中如何开发RESTFul的服务。
当我每次与人谈到REST架构风格时,人们给我的印象都是,除非使用PUT和DELETE这两个HTTP方法,不然你的应用就不能算是RESTful的。这是不对的。
为了解释该问题,他转而回答了几个小问题,并通过它们证明,只要针对正确的操作使用了正确的HTTP方法,服务就是RESTful的。
他反复地说,代理通过检查HTTP方法来判断操作的安全性。只要通过HTTP方法表达的操作的目的与该操作的实现保持一致,操作就是安全的。
在实现中不要使用安全方法(如GET和HEAD)进行不安全的操作(如,写数据),这点非常重要。[……]因为HTTP将GET定义为“安全的”操作,所以缓存(Cache)和其他代理就会(基于HTTP规范)理所当然地认为对相应的URI执行“预取(pre-fetch)”、或根据需要缓存响应并重播这些响应(replay the responses)是没有问题的。
虽然在这个问题上,许多示例和文章都建议这么做(也就是使用PUT和DELETE),但是他强调了RESTful的服务接口不应该总是CRUD接口。
[……]另一普遍观念是仅仅使用POST去执行所有操作不算RESTful。换言之,除非你使用了PUT和/或DELETE,不然你就不能称你的实现是支持REST的。这个错误的假设往往是仅通过CRUD操作的透镜去看REST所得到的副产品,即REST== HTTP之上的CRUD。还是那句话,虽然可以在HTTP之上实现CRUD,但它不是REST,只是HTTP之上的CRUD。
他继续搬出了Roy Fielding的在博客中说的话,“用POST是没问题的。”
我们没有必要对于每次HTTP中的状态修改都使用PUT。REST从来没有要求我们应该这么做。
“当然可以”,他说道,“很多年来一直是这么做的,并不需要什么神奇的玩意儿。不需要特别的HTTP头;不需要在URI中指定动作;不需要在消息体中设置方法参数”。接着,它给出了在某服务器上的操作队列的示例。
例如,暴露公共资源,客户端通过请求(Request)向服务端提交数据,请求被加入到一个列表中等待处理:
POST /users/pending-updates/ 或 POST /users/pending-deletes/
该模型与Tim Bray在Sun的VM API(Tim称之为Slow REST)的设计中的用到的思想非常相似。该思想来源于Craig McLanahan的关于处理异步操作请求的建议书。
对于任何或所有的PUT/POST/DELETE操作,我们返回“202 进行中(In progress)”和一个新的“状态(Status)”资源,该资源包含,一个0至100的进度标识 (progress);一个指定操作作用对象的target_uri;一个指定操作的op;以及当progress达到100时,指代应用程序返回结果的status和message域。其思想是提供一个钩子供实现者进行低廉的轮询。
Mike在他的帖子中这样结尾,当HTTP方法的使用受到网络的限制,或者受到客户端的用户代理的限制而不能使用除标准的GET和POST之外的其他动词(如PUT和DELETE)时,服务应该作出调整,并将客户引导到正确的表象、HTTP方法和URI。
由于HTTP将交互抽象成资源和通过URI寻址的表象,所以作出运行时的调整非但可以,而且协议在设计时就考虑了这点。通过这些层次的抽象以及在Fielding的论文中描述的超媒体的限制(hypermedia constraint),你就能得到一个非常灵活的实现,不仅符合HTTP规范,而且能跨多种环境(甚至包括限用GET和POST的环境)支持REST架构风格的关键原则。
您的见解呢?请一定在此处或在原帖中发表出来。
查看英文原文:Are GET And POST Enough To Create RESTful Services?
译者 马国耀 关注企业级应用开发与架构,有多年SOA项目实施和咨询经验,专注于SOA及云计算的融合。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
3 条回复
关注此讨论 回复