可编程站点是指一系列设计来帮助开发人员创建站点服务的技术。有很多方式来创建站点服务。我们已经在本书中提及如何使用WCF创建使用SOAP, HTTP 和 XML的WS-* 网络服务。基于WS-* 的服务一般使用一个面向服务的解决方案创建。
一个面向服务的解决方案满足下面四个条件:
1. 显式边界
2. 自治服务
3. 服务共享元数据和契约,没有类
4. 服务的复杂性取决于策略(http://msdn.microsoft.com/msdnmag/issues/04/01/Indigo/default.aspx )
服务可以使用其他类型的架构来创建,比如代表性状态传输(REST). REST 是在一篇由Roy Fielding写的论文中(www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm )描述的架构类型。REST遵从一系列基于限制的元素。
1. 一个客户端/服务端方案用来从数据存储空间将用户接口分离出来。
2. 客户端/服务端交互是无状态的。
3. 使用缓存来提高网络效率。
4. 系统交互的组件使用一个统一接口。
5. 整体系统可以使用一个分层解决方案。
REST 架构类型通常作为站点的架构类型被引用,因为限制可以很容易地在流行网络架构中看到。我们提到了面向服务和REST因为这是当下我们在站点上创建服务的两个最常用架构模型。 理解WCF并不决定架构类型或者创建服务的行为是很重要的。 相反它暴露了一系列特性以及能力来允许你使用很多架构类型来创建服务。 这一章的余下部分将关注这些可以帮助开发人员创建网络服务的特性。为了帮助理解这些新特性后面的机制,我们将查看开发人员现在如何使用站点。
所有的都与URI有关
大多数人应该对URIs熟悉因为这是现在人们浏览站点的方式。人们访问资源,比如HTML页,通过输入到他们浏览器地址栏的地址。浏览器可以使用URIs访问一系列资源,包括图片、视频、数据、应用程序或者更多。通过一个URI来访问也是REST架构类型后面的原则之一。
表13.1 显示了在站点上可以以这种方式访问的几个资源例子。
表13.1 URI 例子
URI | 描述 |
http://finance.yahoo.com/d/quotes?s=MSFT&f=spt1d | 来自雅虎的逗号分隔格式的微软(MSFT)股票报价 |
http://finance.google.com/finance/info?q=MSFT | 来自谷歌的自定义JSON格式的微软(MSFT)股票报价。 |
http://en.wikipedia.org/wiki/Apple | 一个关于”苹果”的维基3百科站点 |
www.weather.com/weather/local/02451 | 来自Weather.com的马萨诸塞州沃尔瑟姆的天气信息。 |
www.msnbc.msn.com/id/20265063 | MSN.com上的新闻文章 |
http://pipes.yahoo.com/pipes/pipe.run?_id=j1M12Ljj2xGAdeUR1vC6Jw&_render=json&merger=eg | JSON格式的华尔街企业事件列表服务(例如,股票分隔、合并等等) |
http://rss.slashdot.org/Slashdot/slashdot | RSS格式的Slashdot的联合供稿种子 |
http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=20701ea0647b482bcb124b1c0db976f&test=stocks | XML 格式的Flickr照片搜索 |
每个例子确定一个需要一系列参数的URI来确定要收集的资源。参数以查询字符串发送或者加密作为URI的一部分路径来发送。这意味着URI用来确定、定位以及访问资源。为了更好地理解我们的意思,我们查看一下用来从谷歌收集股票报价的URL。很显然从下面的URL中q表示股票参数并以一个查询字符串参数被传递给服务:
http://finance.google.com/finance/info?q=MSFT
这个例子帮助形成我们如何确定并访问站点资源的基础。
未完待续…