Windows Phone Service References(服务引用)初探

来源:互联网 发布:中世纪2全面战争mac 编辑:程序博客网 时间:2024/05/18 16:57

目前有很多网站提供Web服务,新一些的会用WCF(Windows Communication Foundation),比如微软为Bing提供的一些后台操作,还有一部分会用Web Service(大多数基于ASP.NET,也有用Java写的),Windows Phone其实基于Silverlight架构,自然提供了相当健全的网络访问机制,服务引用是Windows Phone中相当实用的一个功能,支持WCF和Web Service,但是和.NET其他框架(WPF、Web Form等)的服务引用存在一定差别。首先,方法仅支持异步方式,这也是Windows Phone的特点。其次,添加方式有一些小小的差别,WCF和Web Service以同样的方式添加,不像Web Form中是分开的。下面以Web Service为例(因为书上基本都是WCF),对Windows Phone服务引用做一个简单的教程。

平台:Windows Phone 8.0

编译环境:Windows 8+VS2012

语言:C#

1.首先在“解决方案资源管理器”中右键添加服务引用(“项目”->“添加服务引用”也可以)


在弹出的对话框中指定服务的地址(基于ASP.NET的Web Service后缀一般为.asmx,WCF一般为.svc)、命名空间,并预览服务所提供的方法(SOAP、GET、POST等),这里的服务为本机IP上,搭建在IIS服务器的一个用于查询手机号码归属地的服务,以手机号前7位为参数,返回归属地、运营商等信息


添加后可在“解决方案资源管理器”中对其进行更新或重新配置等操作,以适应服务器上的更新


也可以在“对象浏览器”中对其具体结构和方法进行查看



2.了解清楚服务的结构以后,就可以在代码中使用服务中的方法了

首先添加添加服务时指定的命名空间

using WebServiceTest.PhoneNumberService;

接着为相应的触发事件添加如下代码

private void StartQuery_Click(object sender, RoutedEventArgs e)        {            PhoneNumberSoapClient QueryPhoneNumber = new PhoneNumberSoapClient();  //初始化SOAP服务对象            QueryPhoneNumber.QueryCompleted += QueryPhoneNumber_QueryCompleted; //添加委托,服务调用完毕时执行            LoadingProgress.Visibility = Visibility.Visible;  //显示ProgressBar            QueryPhoneNumber.QueryAsync(QueryNumber.Text);  //执行异步调用        }        void QueryPhoneNumber_QueryCompleted(object sender, QueryCompletedEventArgs e)        {            LoadingProgress.Visibility = Visibility.Collapsed;  //隐藏ProgressBar            ContentPanel.DataContext = e.Result;  //绑定        }

于是调用过程结束,实际效果如下图

      


3.总结

Windows Phone使用服务引用的基本过程就是这样,非常简单、易用,无需建立HTTP请求,也无需进行数据解析,为快速开发奠定了基础。但由于Web服务通常基于SOAP协议,并以XML形成传输数据,所以通常要比目前各大社交网站流行的以字符串作为参数,JSON作为响应数据的基于HTTP请求的Web API费流量。虽然服务引用很简单,但在移动应用开发上并不是最佳选择。

一个SOAP请求所发送的内容


一个POST请求所发送的内容



以上是Windows Phone上对于服务引用的基本操作和分析,欢迎大家批评指正。


转载请注明出处:http://blog.csdn.net/yuanguozheng

原创粉丝点击