Windows Phone 云应用开发实践之(一)Windows Azure

 

 

Windows Phone 云应用开发实践(一)

Windows Azure平台

概述

Windows AzureTM是一个云服务操作系统,为Windows Azure 平台提供开发、服务托管和服务管理环境。Windows Azure通过微软的数据中心为开发人员提供以按需的计算能力和存储能力去托管、扩展和管理互联网上的应用程序。

Windows Azure平台是微软数据中心托管的云服务平台,提供可高度扩展的处理和存储功能、关系数据服务和可用于构建Windows Phone应用程序的高级数据订阅。Windows Azure 是一个可扩展的平台,它支持多种语言并且和你现有的内部部署环境集成在一起。在Windows Azure上创建应用程序和服务, 开发人员可以利用他们现有的Microsoft Visual Studio®专长。同时,Windows Azure支持流行的标准、协议和语言,包括SOAP、REST、XML、Java、PHP和Ruby。

有关构建使用Windows Azure中云服务的手机应用程序的资源,请下载Windows Azure for Windows Phone工具包。工具包中包括用于Windows Phone和Windows Azure的Visual Studio项目模板、为在手机上使用而优化的类库、示例应用程序和文档。下载地址: http://watwp.codeplex.com/

要运行工具包中的项目模板和示例解决方案必须安装下列组件:

  • Microsoft Visual Studio 2010 Professional (or higher) or both Microsoft Visual Web Developer 2010 Express and Microsoft Visual Studio 2010 Express for Windows Phone
  • Microsoft ASP.NET MVC 3
  • Windows Phone SDK 7.1 Release Candidate
  • Silverlight for Windows Phone Toolkit
  • Internet Information Services 7 (IIS7)
  • Windows Azure SDK for .NET – November 2011
  • Windows Identity Foundation Runtime
  • Microsoft SQL Server 2008 R2 Express (or higher)
  • Entity Framework 4.1 Code First
  • Internet Explorer 9 (or any other modern Web browser supporting HTML5)

 

注意

工具包中包含配置向导,配置向导检查和安装以上列出的组件。导航至工具包安装的根目录,双击Setup.cmd即可启动配置向导。选择"Install All"安装所需的组件。

图 启动配置工具Setup.cmd

注意

此工具包依赖于Windows AzureSilverlight for Windows PhoneASP.NET MVC 3的项目类型。因此运行示例的解决方案和使用工具包中的项目模板,需要安装Visual Studio 2010 Professional或者更高版本的Visual Studio。对于很多开发者而言可能只安装了Microsoft Visual Studio 2010 Express for Windows Phone,那么还需要Microsoft Visual Web Developer 2010 Express方可使用工具包中的项目模板。

 

Windows Azure

Windows Azure是一个云计算平台,可以让你在云中运行的应用程序和数据存储。而不必担心底层的基础设施建设和管理操作系统,你可以简单地构建应用程序并将其部署到Windows Azure。Windows Azure为开发人员提供按需计算、存储,网络、内容交付能力。

SQL Azure数据库

微软SQL Azure数据库是基于SQL Server技术构建高度可用和可扩展的云数据库服务。SQL Azure的高可用性和容错功能是内置的,开发人员不需考虑如何配置和维护数据库。

与本地SQL Serve类似,SQL Azure公开表格格式数据流(TDS)接口以提供基于Transact-SQL的数据库访问。因为Windows Phone应用程序平台不支持TDS协议,因此在Windows Phone应用程序中必须使用Web服务来存储和检索SQL Azure数据库中的数据。

Windows Azure Marketplace DataMarket

Windows Azure Marketplace DataMarket是一个数据信息商城,它简化了所有类型数据的发布和使用。通过DataMarket,开发人员可以发现、预览、购买和管理高级数据订阅。

DataMarket使用OData协议传输数据DataMarket OData源在数据集中提供基于REST的API,简化了开发的难度。Windows Phone应用程序使用Windows Phone的OData客户端库获取DataMarket的数据。OData是用于查询和更新数据的Web协议,在后面的小节中将专门介绍Windows Phone的OData开发。

DataMarket数据集有两种类型:支持灵活查询的数据集和支持固定查询的数据集。灵活查询数据集支持更广泛的基于REST的查询。固定查询数据集仅支持固定数量的查询,它提供了C#的客户端库以帮助客户端应用程序使用数据。

 

 

架构图

本节的重点内容是Windows Azure工具包为Windows Phone提供服务和代理的概述。

  1. Windows Azure存储的代理和服务

针对Windows Azure存储服务的每一个请求必须通过身份验证。为了避免身份验证信息(存储帐户名和密钥)存储在您的手机客户端应用程序,Windows Azure工具包提供安全的方式使用Windows Azure存储服务,确保Windows Azure存储的帐户信息在Web托管这些服务中是安全的。

Azure表和队列代理是HTTP处理程序,请求转发到真正的Windows Azure存储服务。如果代理确定请求的权限有效,代理将签署请求并转发给真正的Windows Azure存储服务,然后将Windows Azure存储服务的响应转发给客户端。

共享访问签名服务(Shared Access Signature service)是WCF REST服务,提供containers和 blobs共享访问签名(Shared Access Signatures,简称SAS)。一旦手机客户端收到的SAS,它可以使用它来执行请求的Blob服务的REST API。

 

  1. SQL Azure的OData服务

在SQL Azure OData服务是使用Entity Framework 4.1的SQL Azure(或SQL Server)上的WCF数据服务。 目前这项服务的版本,除了支持读操作,还增加了一个安全层来管理认证/授权。

 

图 SQL Azure的Odata服务

 

  1. 推送通知

在Windows Phone微软的推送通知服务提供可使第三方开的消息推送通道,发送从Web服务到Windows Phone应用程序的数据通知。Windows Azure工具包提供增强的MPN(Microsoft Push Notification)服务:

  1. 1. 在MPN服务中注册Windows Phone应用程序。Windows Phone应用程序开通MPN服务的特定通道。MPN的服务器创建与特定通道对应的订阅,所以在该端点收到的通知将被转发到特定的WP设备和具体的WP应用。
  2. 2. 使用工具包的Web角色注册Windows Phone客户端:Windows Phone应用程序调用Web角色的SamplePushNotificationService注册成为MPN服务的订阅终端。
  3. 3. Windows Azure工具包的云服务发送通知请求至MPN:云服务以特定的xml格式向MPN服务发送HTTP POST请求,注册接收推送通知的Windows Phone设备。
  4. 4. MPN的服务发送通知至Windows Phone:MPN处理通知请求,并将其推送至Windows Phone设备。Windows Phone设备接收到推送的客户端发送来的通知后,将通知路由至Shell。如果应用程序没有运行,Shell将更新应用程序的Tile(磁贴)或者显示Toast通知。如果应用程序处于运行状态,Shell将发送通知至正在运行的应用程序。

当从门户网站发送Tile(磁贴)或Toast通知,通知全文被储存在一个Azure队列或在SQL Azure数据库表,当手机启动应用程序,并且应用程序推送通知选项被选中,那么将轮询此队列或数据库表,将该用户的所有信息提取显示。

图 推送通知

 

  1. ACS身份验证

Windows Azure访问控制服务(Windows Azure Access Control Service ,简称ACS)允许应用程序外包认证,例如使用Windows Live ID、谷歌、雅虎等账户的身份认证。由ACS提供简单的Web令牌,并以此令牌为每个发送给服务的HTTP请求署名。由Web服务检查此令牌的有效性,并授权访问Windows Azure存储或SQL Azure。

图 ACS身份验证

 

  1. 成员资格

ASP.NET成员资格允许开发者验证和甘栗Web应用程序的用户信息,提供了用于验证用户地凭据,创建和修改会员用户,以及管理比如密码和电子邮件地址之类的用户设置的功能。ASP.NET成员资格,主要用于使用ASP.NET窗体身份验证,但可以在运行ASP.NET应用程序的任何设置中使用。

当Windows Phone应用程序作为身份验证服务使用ASP.NET的成员资格,必须创建Web角色,方可访问Web角色部署的服务。ASP.NET成员为Windows Phone应用程序的请求提供授权,Web服务检查授权的有效性,并提供访问Windows Azure存储和SQL Azure的数据服务。

 

图 成员资格

  1. 管理门户

所有Windows Phone云应用程序的管理是绑定于管理门户的,管理门户提供管理Windows Azure的Blob、Containers,以及Windows Azure 队列、表的服务,还有微软推送通知和苹果推送通知的服务。

 

图 管理门户

 

动手实践——创建Windows Phone云应用

 

本节介绍如何使用Windows Azure工具包中的项目模板创建Windows Phone云应用。

  1. 以管理员身份Visual Studio (这是运行Windows Azure项目的必要条件)
  2. 在"文件"菜单上,指向"新建" ,然后单击"项目"
  3. "已安装的模板新建项目"对话框左侧的列表中,选择"Visual C#"节点下的"Cloud",选择"Windows Phone Cloud "模板。

图 新建项目

  1. 新的Windows Phone云应用项目 对话框中,选择存储选项,至少选择一个Windows Azure存储SQL Azure数据库选项。注意注意

注意:

Windows Azure Storage是项目模板的默认选择,如果只选择SQL Azure数据库,那么信息将只存储在SQL Azure数据库。

图 数据存储服务的选项

  1. 单击"下一步 "移动到向导的下一个步骤。
  2. 如果"Windows Azure存储"选项被选中,那些需要提供您的Windows Azure存储帐户信息(用户名和密钥)。

图 Windows Azure存储选项

  1. 单击" 下一步 "移动到向导的下一个步骤。
  2. 如果"SQL Azure数据库"的选项被选中,那么需要提供您的SQL Azure数据库服务器的信息(服务器名、用户名和密码)。

图 SQL Azure数据库选项

 

注意:

如果你想使用本地SQL Server实例,而不是SQL Azure数据库,请选中"使用本地SQL Server实例"选项,并选择列表中的SQL Server实例。

 

  1. 单击" 下一步 "移动到向导的下一个步骤。
  2. 对于推送通知服务选项,选择是否要包括推送通知服务支持的Windows Phone或者Apple。

图 推送通知选项

 

注意:

如果苹果推送通知服务(APN)支持选项被选中时,会出现一个对话窗口显示本地计算机上安装的证书列表。选择使用的APN证书身份的证书,然后单击确定创建和安装特定的IOS应用程序的苹果推送通知证书,你需要先注册Apple开发者网站上注册,获得并安装SSL证书。

 

图 SSL证书

 

图 支持Apple推送通知服务的选项

  1. 单击"下一步"移动到向导的下一个步骤。
  2. 要么选择要么ASP.NET成员(默认),要么选择Windows Azure 访问控制服务。

.图 管理用户身份认证

 

如果Windows Azure的访问控制服务(ACS)的选项被选中,您需要提供您的ACS服务的命名空间和管理的密钥。

图 Windows Azure的访问控制服务(ACS)的选项

点击确定完成在Visual Studio中创建Windows Phone云应用的项目。

打开创建的解决方案,可以看到解决方案名称为"WPCloudApp1"包含以下项目:

  1. WPCloudApp1:具有Web角色的Windows Azure的项目
  2. WPCloudApp1.Phone:Windows Phone的Silverlight项目,其中包含示例应用程序演示如何接收推送通知和使用Windows Azure表、Blob和队列。
  3. WPCloudApp1.Web:具有Web角色的ASP.NET MVC 3个项目,包含该工具包的服务和管理页面。

注意:

项目名称取决于您在"新建项目"对话框中键入的名称。

图 解决方案

 

posted @ 2012-12-21 13:28  Xuesong  阅读(2078)  评论(4编辑  收藏  举报