Windows Phone 的通信

Windows Phone 的通信

此主题尚未评级 评价此主题

2012/11/14

适用于: Windows Phone 8 | Windows Phone OS 7.1

本主题介绍 Windows Phone 应用如何能够使用远程数据存储与其他应用进行通信。了解用于近场通信 (NFC)、IP 语音 (VoIP)、开放数据协议 (OData) 客户端和 Web 服务的套接字、蓝牙和邻近感应 API。本主题还介绍网络信息和数据感知 API。

本主题包含以下各节。

为了在整个网络中进行双向通信(例如通过聊天应用),Windows Phone OS 7.1 支持基于套接字的应用。使用套接字,客户端或服务器可以发起通信,并且一个终结点可以向另一个终结点独立发送消息。套接字应用使用System.Net.Sockets API。有关更多信息,请参见 Windows Phone 套接字

蓝牙是一种无线通信技术,通过它,10 米范围以内的设备可以互相通信。通过使用此技术,设备可以进行无物理连接的通信。无线耳机、遥控玩具和多人游戏都是使用蓝牙技术的设备和应用程序示例。通过使用 Windows Phone 8 中引进的 API,您的应用能够通过蓝牙与其他应用或设备通信。有关更多信息,请参见Windows Phone 8 的蓝牙

Windows Phone 8 支持使用近场通信 (NFC) 的 邻近 通信。邻近感应指 Windows 运行时(支持近距离内设备之间的连接)中的类的集合。通过使用此 API,您的应用可以通过点击或通过浏览查找无线范围内运行您的应用(对等方应用)的其他设备来建立连接。例如,这其中的一个应用可能是多人游戏,其中的两个用户点击其手机共同建立一个共享游戏会话。要了解邻近感应 API,请参见 Windows Phone 8 的邻近感应

从 Windows Phone 8 开始,您可以开发用于 Windows Phone 的 IP 语音 (VoIP)。通过使用 Windows 音频会话 API (WASAPI) 子集,应用可以捕获并呈现音频流。Windows Phone VoIP 应用还可以流式传输基于视频的 VoIP 调用。有关更多信息,请参见 Windows Phone 8 的 VoIP 应用

通过 Windows Phone 8 中的数据感知功能,用户可以指定其数据计划的限制。数据感知将监视与用户指定的限制相关的数据使用。使用此信息,您的应用可以在用户接近其数据限制时通过减少数据使用,或在用户超过其数据限制时停止数据使用来帮助用户节省金钱。有关更多信息,请参见在 Windows Phone 8 中如何使用数据感测 API 调整数据用法

任何基于 Web 的应用的用户体验都高度依赖手机网络连接的质量和可用性。Microsoft.Phone.Net.NetworkInformation 命名空间提供了几个类,应用可以通过它们了解有关其所在手机的网络状态的更多信息。例如,您的应用可以检查是否启用了手机网络数据或 WLAN 连接。您还可以使用 API 设置手机网络或非手机网络的网络首选项。有关更多信息,请参见 Windows Phone 网络和网络接口信息

Internet 的成功在很大程度上归功于超文本传输协议 (HTTP)。HTTP 是一种相对简单的网络协议,几乎无所不在,Web 浏览器和 Web 服务客户端应用可以用它来与整个 Internet 内的服务器交换信息。HTTP 是构建大部分 Web 服务的基础。

Web 服务允许以编程方式访问 Internet 上的各种数据。数据服务是基于 HTTP 的 Web 服务,这种 Web 服务实现开放数据协议 (OData) 以将数据公开为资源,这些资源通过数据模型进行定义并通过统一资源标识符 (URI) 进行寻址。

Web 和数据服务都使用一种基于 XML 的开放式语言来描述其基于 Web 的 API。使用 Web 服务描述语言 (WSDL) 描述 Web 服务提供的服务。概念性架构定义语言 (CSDL) 描述数据服务提供的数据模型。有关更多信息,请参见Web 服务描述语言 (WSDL) 和概念性架构定义文件格式

Web 服务

因为在 Internet 上发布的绝大多数 Web 服务都基于 HTTP,因此您可以使用 HttpWebRequest 和 WebClient 类从 Windows Phone 应用访问 Web 服务。为了帮助减轻生成 Web 服务通常所需的其他代码的任务,可以使用服务模型代理生成工具 (SLsvcUtil.exe) 或 Visual Studio 的“添加服务引用”功能生成代理类。有关如何使用WebClient 类访问 RSS 源的示例,请参见如何为 Windows Phone 创建基本的 RSS 读取器

根据 Web 服务 WSDL 文件,Web 服务代理类为 Web 服务实现序列化、请求和响应代码。您可以在 Windows Phone 应用中使用生成的代理类与相应的 Web 服务进行通信。有关更多信息,请参见使用 SLsvcUtil.exe 访问服务

数据服务 (OData)

数据服务是基于 HTTP 的 Web 服务,该 Web 服务实现开放数据协议 (OData) 以将数据公开为资源,这些资源通过数据模型进行定义并通过 URI 进行寻址。这使您能够使用具象状态传输 (REST) 的语义(尤其是 GET、PUT、POST 和 DELETE 等标准 HTTP 谓词)访问和更改数据。

由于数据服务是基于 HTTP 的,因此您可以使用 HttpWebRequest 和 WebClient 类从 Windows Phone 应用访问数据服务。为了帮助减轻生成数据服务所需其他代码的任务,您可以使用 WCF 数据服务客户端实用工具 DataSvcUtil.exe 或 Visual Studio 的“添加服务引用”功能生成一个基于数据服务 CSDL 文件的代理类。您可以在 Windows Phone 应用中使用生成的代理类与相应的数据服务进行通信。

说明注意:

通过 WCF 数据服务,可以在 .NET Framework 应用中从 Web 创建并使用开放数据协议 (OData) 服务。有关更多信息,请参见 WCF 数据服务开发人员中心

类和实用工具

以下列表包含可以直接用于发出 Web 请求的类以及一些实用工具,这些工具可用于生成经过优化以从 Windows Phone 应用发出特殊类型 Web 请求的其他类。

  • WebClient 类:提供将数据发送到基于 URI 的资源和从中接收数据的通用方法。

  • HttpWebRequest 类:提供 WebRequest 抽象类的 HTTP 特定的实现。

  • Silverlight 服务模型代理生成工具 (SLsvcUtil.exe):生成基于 Web 服务 WSDL 文件的代理类。

  • Visual Studio 的“添加服务引用”功能:生成基于 Web 服务 WSDL 文件或数据服务 CSDL 文件的代理类。

  • WCF 数据服务客户端实用工具 (DataSvcUtil.exe):生成基于数据服务 CSDL 文件的代理类。

下表显示哪个类可以用于各种类型的基于 HTTP 的编程:

常规 HTTP 编程

基于 HTTP 的 Web 服务

数据服务

WebClient 类

yes

yes

yes

HttpWebRequest 类

yes

yes

yes

SLsvcUtil.exe 生成的类

no

yes

no

“添加服务引用”功能生成的类

no

yes

yes

DataSvcUtil.exe 生成的类

no

no

yes

WebClient 和 HttpWebRequest 类可用于很多基于 HTTP 的编程,从常规 HTTP 请求到编程 Web 和数据服务。根据您的应用使用 Web 或数据服务的方式,以独占方式使用 WebClient 或 HttpWebRequest 类可能需要您编写大量的代码。

当开发 Web 或数据服务客户端应用时,在 HTTP 级别编程的替代方法就是使用代理类。代理类是分别表示基于相应 WSDL 或 CSDL 文件的 Web 服务或数据服务的类。有关更多信息,请参见本主题的以下各节。

安全注意事项

当连接到需要应用密钥的 Web 服务时,不要将应用密钥随将在手机上运行的应用一起存储。而是创建一个代理 Web 服务来对用户进行身份验证,然后使用该应用密钥调用外部云服务。有关安全建议的更多信息,请参见Windows Phone 的 Web 服务安全

Web 服务限制

每个 Windows Phone 应用最多允许有 6 个并发传出连接。

当移植 Web 服务客户端代码以便在 Windows Phone 应用中使用时,请检查 .NET API 以确保它支持代码中所使用的方法。有关 Windows Phone 支持的 API 的更多信息,请参见 Windows Phone 类库支持

有关联网支持的更多信息,请参见 Windows Phone 的联网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值