写点什么

支持 REST 设计的 WCF Web 编程模型

  • 2007-05-21
  • 本文字数:1627 字

    阅读完需:约 5 分钟

MIX07 大会上 Don Box Steve Maine 的“浏览可编程Web ”联合演讲中,他们介绍了即将随Visual Studio Orcas 一同发布的WCF Web 编程模型。在统一的WCF 编程模型下,Web 编程模型从而可以支持Web 服务 REST 化设计的功能。

新的功能可以帮助在没有 SOAP 封装或者任何 WS 规范的情况下编写简单的服务。这儿的 Web 编程模型是以 URI 和 HTTP 动词为中心的。为了保持 WCF 编程模型的延续性,ServiceContract、DataContract 和其他的 WCF 的服务模型等仍然可以使用。新的模型主要位于一个名为 WebServiceHost 的新 WCF 服务主机(Host)里,以及有一个新的标准绑定:WebHttpBinding。新功能包括:

  • 通过 System.UriTemplate 支持 URI 模板。URITemplate 用来定义 URI 的特定模板。在 Joe Gregorio 博客里,他描述了 URI 模板的相关思想。
  • 在要寻找最佳匹配的时候,System.UriTemplateTable 可以用于存储一些能和具体的 URI 相配的 UriTemplate 数据。
  • 用于服务操作的 [WebGet] 和 [WebInvoke] 属性,被 WCF 调度器(Dispatcher)用来将 HTTP 请求映射到一个实现方法上。
  • WebServiceHost 和 WebHttpBinding。
  • System.ServiceModel.Syndication 命名空间,增加了对产生和消费 RSS/Atom 种子的支持。

在 Steve Maine 关于 Web 编程模型的讲座中,详细解释了所有的功能: Web 编程模型之道一 Web 编程模型之道二 Web 编程模型之道三 UriTemplate 101 UriTemplate.Match 等。

根据 Jef Newson 的说法,DonBox 和 Steve Maine 的演讲代表了微软针对分布式计算的过往实现方法的一种宣泄:

所以,我很有兴趣来观察像 Clemens Vasters 和 Don Box(还有 Steve Maine 等)这些人开始扔掉 WS-Splat 的包裹,只是 GET 它。而且我想他们是很实际的,能很好地抓住这 80% 的需求(GET),但是他们在通过一种并不严谨的方式增加了一些看上去很好的 REST 支持。当像“喔,你们不应该再给它增加一个 SOAP 层吗?”这样的问题被提出来的时候,他们会泰然自若而且平静非凡,说“哈,这儿你们将来不需要它的。”在外人看来,这好像有点滑稽。

他已经小有所成,并写了一些关于他在和 Web 编程模型争斗时,第一回合第二回合的经验心得。

David Ing 称这个对话为“简易对象辩解协议”(Simple Object Apology Protocol),因为“在所有基于架构和编程模型的工作与代码放到 SOAP 里面后,Web 编程模型在本质上是应用协议堆栈的倒退,差不多退回到 2002 年左右。”他还提到一些在 WCF 堆栈上增加新模型的风险:

对于“增加一个可选的层,现在我们知道了”这种方法的一个大问题是:许多开发者会引用最新的技术作为解决问题的最新指导。……通过提供这样一个使用什么技术(如 REST、HTTP/POX、SOAP 和 Remoting 等)的广泛选择,然后让人们找出“一个简单的答案”,其实只是增加了这一过程的复杂性和迷惑性。那些新东西的复杂性代价开始有点像联邦赤字一样——一直在错误的道路上行走。

Steve Maine 通过证明 WCF 本质上是能够“平衡目标和丰富性(Reach & Rich)”(译者注: Reach 指一个运行在所有 WEB 浏览器上的、不用额外的安装机制的前台终端,Rich 是指具有高度互交性的交互式用户接口)这一观点,回应了以上两个不同的说法:

我认为我们现在所做的延伸编程模型工作,在 V1 里增加了丰富协议堆栈的价值,因为在丰富性和目标之间它远离了传统的场景束缚。以 Rails 框架为例,使用它做一些通用场景就很容易。当然,Rails 差不多只能满足 80% 的情况。如果因为某种原因,你突然遇到了 20% 的情况,可能就无所适从了(像 Twitter 的人所发现的一样)。我们想为那些企图通过采用 WCF 摆脱在分布式系统上困惑的家伙提供保护。通过提供 Orcas Web 功能,在这个方向上我们已经取得了很大的进步,相信我们还会走的更远。

就加固在 WCF 之下开发分布式应用时所用到的全部已知协议和方法的编程模型而言,Web 编程模型是一个进步。另外它还是微软真心喜欢 REST 方法以及在他们的项目路线图里融入 REST 设计的信号之一: Astoria 项目已经基于这种新的模型了。

2007-05-21 21:531068

评论

发布
暂无评论
发现更多内容

浪潮云说丨叮!这是一份浪潮云物联网平台的简历,请查收!

云计算

Kafka 源码解析:Server 端的运行过程

华为云开发者联盟

kafka 网络 Server 端 SocketServer

云小课 | 云硬盘不用了如何处理?

华为云开发者联盟

华为云 云硬盘 退订 删除 回收站

Docker被谁干掉了?

BUG侦探

Docker 云计算 Go 语言

全球首个开源图像识别系统上线了!人脸、商品、车辆识别一网打尽!

百度大脑

人脸识别 图像识别

作为新时代的Java工程师,你需要具备什么能力?

卢卡多多

Java 能力提升 6月日更 六月

☕【JVM监控实战】教会你使用Arthas(监控ElasticSearch服务)

洛神灬殇

JVM 故障定位 Arthas 6月日更

带你掌握4种Python排序算法

华为云开发者联盟

Python 编程 算法 排序 冒泡排序

超清音质实时会议系统的背后 ,深入剖析 AliCloudDenoise 语音增强算法

阿里云视频云

阿里云 音视频 语音 视频会议 算法实践

分布式锁相关探索

常清静

redis 分布式锁 zookeeper分布式锁 redisson 分布式锁

zookeeper原生api操作

赵镇

zookeeper

同样都是使用接口,JAVA和Go差距咋就这么大呢?

面向加薪学习

react源码解析19.手写迷你版react

全栈潇晨

react.js

HarmonyOS 实战—服务卡片初体验

爱吃土豆丝的打工人

HarmonyOS 服务卡片 鸿蒙卡片

破局团伙作案风险——图卷积神经网络(GCN)算法

索信达控股

金融科技 数字化转型 数据建模 风险管理 图卷积神经网络

融云年中大促 新老用户同享超值优惠

融云 RongCloud

拍乐云 x 美上美学|监管当下,如何回归教育本质,打造品质和体验?

拍乐云Pano

RTC

如何设计好一个接口

🎄新

架构 设计 接口

面试官:谈谈你对geohash的理解和如何实现附近人功能呢?

李阿柯

redis 面试 geohash

深入浅出 LVS 负载均衡(四)实操 DR 模型、Keepalived DR 模型的高可用

UCloud技术

负载均衡

anyRTC 重磅推出在线实时 K 歌解决方案

anyRTC开发者

音视频 WebRTC 实时通讯 在线KTV

bzz|chia矿池挖矿系统APP开发搭建

薇電13242772558

区块链

原来 spring.xml 配置的 destroy-method 需要用到向虚拟机注册钩子来实现!

小傅哥

Java spring 注册虚拟机钩子 init-method destroy-method

JAVA面向对象(十一)--多态

加百利

Java 6月日更 多态

百度与张江集团达成战略合作,AI助推上海城市数字化转型

百度大脑

人工智能

想要做好微服务化,这个核心对象要管好

BoCloud博云

微服务

Pandas高级教程之:处理缺失数据

程序那些事

Python 数据分析 pandas 程序那些事

不知道我写的链表是否能看懂

八点半的Bruce.D

php 数据结构 链表

用VSCode刷LeetCode

IT蜗壳-Tango

6月日更

“云智技术论坛”即将召开,百度智能云带来端边云全面智能化平台

百度大脑

人工智能 物联网 云智一体

使用 Java 编写 Apache APISIX 插件

API7.ai 技术团队

Java 云原生 后端 插件 网关

支持REST设计的WCF Web编程模型_SOA_Hartmut Wilms_InfoQ精选文章