首页 理论教育 云计算实战-地理位置服务

云计算实战-地理位置服务

时间:2023-10-29 理论教育 版权反馈
【摘要】:在创建分布式应用时,Microsoft Azure planform AppFabric服务可以解决普遍存在的基础架构问题。Microsoft Azure AppFabric目前主要提供互联网服务总线、访问控制服务和高速缓存服务,本实战主要基于AppFabric的服务总线技术。Microsoft Azure AppFabric的服务总线与传统SOA中的企业服务总线在概念上有相似的地方,但是在范围和功能上是不一样的。为了防止故障的发生,存放的消息通常需要备份,与Microsoft Azure平台上消息备份方式相同。

云计算实战-地理位置服务

地理位置服务通过照片的URI判断照片所处的地理位置,返回随机生成的位置信息。服务包含两个方法,分别通过图片URI返回国家信息和经纬度信息。

地理位置服务首先创建本地模拟的地理位置服务,将本地服务部署到AppFabric,然后在网站中调用发布到Service Bus的服务,并使用配置文件的方式发布和访问Service Bus的服务。

1.概述

在“云”上运行应用是云计算的重要服务,但这只是其中一个方面。Microsoft Azure平台能提供更多基于“云”的服务,这种服务能被传统的自有应用或云计算平台上的应用调用。这正是Microsoft Azure platform AppFabric服务的目标。在创建分布式应用时,Microsoft Azure planform AppFabric服务可以解决普遍存在的基础架构问题。

Microsoft Azure AppFabric目前主要提供互联网服务总线(Service Bus)、访问控制(Access Control)服务和高速缓存服务,本实战主要基于AppFabric的服务总线(Service Bus)技术。

Microsoft Azure AppFabric的服务总线与传统SOA中的企业服务总线在概念上有相似的地方,但是在范围和功能上是不一样的。这里的服务总线是专门针对互联网上的服务,相互调用不局限于企业内部。与将传统的应用服务器部署到互联网上比较,服务总线的目标是使其变得简单。无论是传统的自有应用还是云应用,都可以通过服务总线互相访问对方的Web服务。服务总线为每个服务端点分配一个固定的URI地址,从而帮助其他应用进行定位和访问。

服务总线可以处理网络地址转换和企业防火墙所带来的挑战,将企业内网的服务暴露给互联网。大多数企业拥有自己的局域网,为了解决IP地址不足的问题,通常都设置了网络地址转换,因此,每台服务器对外都没有一个确定的地址。同时,出于安全性考虑,防火墙往往限制了大多数的端口,使得要在互联网上访问部署在内网的服务变得困难。

服务总线正是为了解决这一问题而产生的,它作为一个“中间人”,用户的服务和使用服务的客户端作为服务总线的客户端与它进行交流。服务总线不存在网络地址转换的问题,用户的服务和服务客户端可以方便地与它通信,在最简单的场合下,服务总线只需要用户的服务器暴露出站(Outbound)服务的80或443端口,也就是只需要用户的服务器能够以Http/Https协议访问互联网,用户的服务就能连上服务总线。服务的访问是由用户服务端向服务总线发起出站网络连接的,对防火墙的要求很低。用户的服务连接到服务总线后,可以注册成为一个互联网的服务。尽管该服务的托管是在内网中的,总线服务将会分配一个互联网上的URI地址。此时,该服务已经和总线服务建立连接,其他应用只需要访问这个URI地址,服务总线会负责将请求转发给内网中的服务,并将该服务的应答转发给客户端。

服务总线具有支持消息缓冲和多个WCF服务监听同一个URI等特征。消息缓冲是通过一个简单的队列来实现的。客户端可以放置一个256MB的消息到消息缓冲池中,而不需要客户端直接响应服务,存储消息持久存储在磁盘上,服务可以从磁盘上读取被放置的消息。为了防止故障的发生,存放的消息通常需要备份,与Microsoft Azure平台上消息备份方式相同。服务总线通过监听服务随机传播客户端请求,为WCF服务提供负载均衡和容错能力。

发布在服务总线的服务一般有两种工作模式,即Service Remoting和Eventing。本实战主要基于AppFabric服务总线的Service Remoting工作模式。使用App Fabric的Service Bus功能,需要先准备一个WCF服务。为此创建一个简单的地理位置服务,通过照片的URI判断照片的地理位置。

Microsoft Azure platform AppFabric提供了一个基于互联网的服务总线,帮助用户把不同的应用服务在互联网上高效地连接起来。本项目从熟悉企业应用架构提升到更加灵活地使用总线功能,构建出面向服务的互联网应用。

2.创建本地模拟的地理位置服务

创建一个标准的基于HTTP的WCF服务,包含3个项目,分别为服务契约(Contract)、服务实现(Service)、本地控制台寄宿程序(Console Host)。

(1)服务契约中包含上面提到的两个方法及经纬度的数据结构,实现代码如下:

(2)服务的实现只是模拟地理位置信息服务,可以通过一个静态的数组存储城市名称,基于客户端的调用随机返回一个城市名称和经纬度,实现代码如下:

(3)使用HTTP,将WCF服务寄宿在控制台程序中。在Aurora项目中的照片详细信息页面调用WCF服务来展示地理位置。在PhotoController的Details方法中通过ChanneIFactory调用已经实现的WCF服务,传入当前照片的URL后将返回的城市信息和经纬度信息显示到页面上。

3.将本地服务部署到AppFabric

使用AppFabric SDK将地理位置服务发布到Service Bus上,由于此前的服务基于WCF,只需要应用AppFabric SDK中相应的扩展即可。WCF允许使用代码和配置文件两种方式设定服务的发布。

1)通过代码方式发布Service Bus

为了便于管理,将部署所需的信息写入服务的Web.Config文件中,包括要使用的Service Bus Namespace、Issuer和Key,这些信息都可以通过Developer Portal的属性栏获取。配置文件的代码如下:

返回代码部分,需要添加AppFabric引用文件放置在根目录下。完成使用项目的.NET版本选择后,便可使用AppFabric SDK完成对Service Bus的部署,步骤如下。

(1)通过ServiceBusEnvironment类的CreateServiceUri静态方法获得一个Service Bus上的终节点地址,为服务的最终发布地址。其中的schema参数要使用"sb"。传入在配置文件中指定的Namespace的URL和服务的名字。

(2)创建TransportClientendPointBehavior并指定Issuer和Key作为访问凭证。(www.xing528.com)

(3)基于步骤(1)获得Service Bus的URL创建ServiceHost对象。

(4)为ServiceHost中的终节点配置TransportClientendPointBehavior行为。

代码如下:

2)通过配置文件的方式发布Service Bus

修改配置文件,让WCF服务使用AppFabirc提供的NetTcpRelayBindings,实现消息的传递功能。代码如下:

4.在网站中调用发布到Service Bus的服务

到网站中修改调用的代码,访问发布到Service Bus的WCF服务,步骤如下:

(1)在配置文件中加入Service Bus链接必要的信息;

(2)通过ServiceBusEnvironment获取地理位置服务在Service Bus上的地址;

(3)创建用于认证的TransportClientEndpointBehavior对象并设定Issuer和Key;

(4)在客户端创建ChanneIFactory对象并配置TransportClientEndpointBehavior。

实现代码如下:

5.使用配置文件的方式发布和访问Service Bus的服务

在配置文件WCF的配置节点system.serviceModel中加入相应信息,使用配置文件的方式发布和访问Service Bus的服务。

通过配置文件的方式将本地服务发布到Service Bus上的步骤如下:

(1)在服务器端将代码还原为本地部署的状态;

(2)进入配置文件,在WCF的配置节点system.serviceModel中加入如下信息:

这里直接指定服务器的终节点地址,同时指定使用serviceBusCreadentialBehavior的WCF终节点行为(Endpoint Behavior)。

在配置文件中加入Endpoint Behavior的代码如下:

Behavior是之前通过代码进行配置时的TransportClientEndpointBehavior,只不过现在通过配置文件进行配置。Service Bus Namespace的Issuer和Key也在此设置。

客户端的代码修改和上述步骤类似,在Web.config文件中直接指定访问服务的终节点地址,并且用TransportClientEndpointBehavior设置Issuer和Key。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈