Medcl,2010.6.41.REST是什么?2.WhyRESTful?3.RESTful.NET!RoyThomasFielding博士2000年提出REST是英文RepresentationalStateTransfer的缩写REST是WEB服务的一种架构风格REST一种新型的分布式软件设计架构使用HTTP、URI等广泛流行的标准和协议网络上的所有事物都可被抽象为资源(Resource)每个资源都有一个唯一的资源标识符(ResourceIdentifier)同一资源具有多种表现形式(xml、json等)对资源的各种操作不会改变资源标识符所有的操作都是无状态的(Stateless)Ps:符合REST原则的架构方式即可称为RESTful›处处皆资源(Resource):2010公司的销售数据小明09年一月份看过的书正在上映的电影公司销售的产品清单……›REST与资源›REST面向的对象是资源RE——表现,即mediatype的设计。ST——通过跟踪超链接实现状态迁移。RESTful风格的一大特色就是使用URI来标示资源URI和URL›://example.com/users/{user}(oneforeachuser)›››{location}(oneforeachlocation)››GET:获取一个资源POST:创建一个新的资源PUT:修改一个资源的状态DELETE:删除一个资源XmlJsonXhtmlRSS/AtomOtherMediatypes›无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前Request,而不必了解前面Request的历史›无状态性减少了服务器从局部错误中恢复的任务量,可以非常方便地实现FailOver技术,从而很容易地将服务器组件部署在集群内›无状态性使得服务器端不必在多个Request中保存状态,从而可以更容易地释放资源›无状态性无需服务组件保存Request状态,因此可让服务器充分利用Pool技术来提高稳定性和性能SOAP、WSDL、WS*SOWHYREST?RPC样式的架构中,关注点在于方法,而在REST样式的架构中,关注点在于资源REST轻量级、HTTP无状态请求可以由任何可用服务器回答,分布式、缓存、云计算资源唯一URI、标准接口基于成熟HTTP的安全模型Simplicity、human-friendly……REST不是技术REST不是CRUDREST在.NET平台下的最佳实践1.WCFRESTfulProgrammingModel2.HostingWCFRESTfulServices3.SecuringRESTEndpointsWCFRESTServiceStartKitvisualstudio2008sp1.netframework3.5sp1Fiddler(客户端调试)://localhost:8080/rest/User/{userName}用户信息////summary[DataContract(Name=User)]publicclassUserInfo{[DataMember]publicstringUserName;[DataMember]publicstringBirthday;}POST:FiddlerHost:localhost:8080Content-Length:22Content-Type:application/json{userName:Aobama}PUT:53Content-Type:application/jsonHost:localhost:8080{user:{Birthday:1977\/1\/1,UserName:medcl}}://localhost:8080/rest/User/admin://localhost:8080/rest/Icon/