技术开发 频道

WCF中的REST架构

  我将详细介绍大家可能最为熟悉的REST风格的 WCF 服务:支持AJAX的服务。此类服务应属于LO REST的范畴。现在很多人直觉地将“好”等同于“高大全”,因而低估了这种LO REST实现的价值。本篇将告诉你这决非事实,支持AJAX的WCF服务是足够强大的。

  解决方案的背景信息

  我有一个底层工作已基本完整的初始解决方案,大部分代码是作为12集AJAX 客户库Webcast 系列的组成部分。提供这个初始解决方案的目的是为了让我更好地展现支持AJAX的WCF服务的强大能力,避免现场创建一个这样的服务然后再与AJAX 客户应用集成所需的冗长步骤(如何你认为我创建的范例应用乏善可陈,请试一下Supersefer,这是一个基于这个范例的希伯来文网上商店)。

  在这个初始解决方案中请特别注意两个ASP.Net AJAX 控件: Catalog.js和ShoppingCart.js. 下面的截图就是这两个控件的显示 


 
  Catalog控件是本篇的重要操作对象,它的任务是接受一个特定的数据结构,显示一页产品信息,作绑定用途,并在用户选中某样产品或者点击浏览控件的时候出发消息,至于该控件是如何与宿主页(Catalog.aspx)交互,大家可以在前面提到的Webcast系列中找到。就本篇而言,我们只要关注Catalog.aspx(宿主页)中的下列代码片段,里面有一个GetData() 方法。等我们实现了WCF服务之后,就在这个方法里调用它。我们会给WCF服务传入诸如startIndex(起始索引)和pageSize(页的大小)之类的参数(服务的返回数据将是指定页数的产品信息), 以及几个回调方法(服务调用成功或失败后被回调)。

  下面也给出了调用成功的回调方法。该方法直接获取了指向catalog控件的引用($get 在 asp.net的AJAX中用来指向一个控件)。然后它将设定当前页的索引值,再用传入回调函数的数据,也就是我们的WCF有效荷载,来设定productInfo属性。最后,该函数调用控件的dataBind方法,这个方法直接基于存储在productInfo属性中的数据做了一些DOM注入。 

 

0
相关文章