右击WEB项目,添加Silverlight-enabled WCF Service,我们把服务名称命名为TestService,我们在此服务中添加方法如下:
public
class
TestService
{
[OperationContract]
public DateTime GetServerTime()
{
return DateTime.Now;
}
}
现在我们添加服务引用,右击Silverlight项目,添加服务引用,找到刚才建立的TestService,并把新建的引用命名为MyWebServer。注意:应先把WEB项目生成一下,要不然无法正确识别新服务。
当你创建一个服务引用后,VS将为我们创建一个代理类,一个可以与Webservice交互的类,名称是:Service名称+Client。例如我们上面的服务引用将为我们创建一个TestServiceClient类,在这个类中,我们可以使用定制的方法。
OK,现在我们开始使用新创建的服务。首先在cs中添加名称空间,如下:
using
SilverlightApplication3.MyWebServer; //我的应用程序名为SilverlightApplication3
在Silverlight中,所有的WebServcie必须以异步的方式进行访问,原理是:你Call一个方法,此时你的应用程序可以继续干其他事情,
例如进行界面上的操作,当执行的结果返回后,它将触发一个事件来执行MethodNameCompleted方法,我们的方法就是
GetServerTimeCompleted。代码如下:
public
MainPage()
{
InitializeComponent();
TestServiceClient proxy = new
TestServiceClient();
proxy.GetServerTimeCompleted += new
EventHandler<GetServerTimeCompletedEventArgs>(proxy_GetServerTimeCompleted);
proxy.GetServerTimeAsync(); //异步执行。
}
void
proxy_GetServerTimeCompleted(object
sender, GetServerTimeCompletedEventArgs e)
{
try
{
label1.Content = e.Result.ToLongTimeString();
}
catch
(Exception err)
{
label1.Content = "
获取服务数据失败
"
;
}
}
默认情况下,服务等待时间是1分钟,即1分钟后如果服务没有相应(服务器当机、或网络不顺畅),方法将会终止,但你可以自己设置相应时间,代码如下:
proxy.InnerChannel.OperationTimeout = TimeSpan.FromSeconds(30
);
我们再考虑一个问题,现在的WEB服务地址是什么样子,如果是绝对地址,那么我们今后发布程序时就会遇到很大不便,因为这个服务地址是开发时用的绝对地
址,今后在配置到服务器上时,由于IP地址的改变,我们还需修改它。有经验的开发人员这时一定会考虑用相对地址,是的,我们现在做的工作就是这个。修改代
码如下:
EndpointAddress address = new
EndpointAddress("
http://localhost:
"
+ HtmlPage.Document.DocumentUri.Port + "
/TestService.svc
"
);
TestServiceClient proxy = new
TestServiceClient();
proxy.Endpoint.Address = address;
我们看上面的代码第一行,如果Silverlight应用程序和网站在一个服务器中,那么OK,端口号自动获取了。当然,需要加两个名称空间:
using
System.ServiceModel;
using
System.Windows.Browser;
接下来,我们又要考虑一个问题,如果提供Service的服务器很忙,我们如何提供一个友好界面来提示用户“服务器现在忙”,带着问题我们开始下面的工作。
要实现这个功能,我们需要一个BusyIndicator控件,而这个控件在Toolkit中,如果你还没有安装,那就赶快上下载吧
http://silverlight.codeplex.com,安装好后,在工具栏就可以看见它,把这个控件放到页面的恰当位置,名称属性设为
busy,
<toolkit:BusyIndicator Name="
busy
"
VerticalAlignment="
Top
"
Width="
100
"
BusyContent="
正在连接服务器...
"
/>
之后在代码中加入下面的代码:
busy.IsBusy = true
;
proxy.GetServerTimeCompleted += new
EventHandler<GetServerTimeCompletedEventArgs>(proxy_GetServerTimeCompleted);
proxy.GetServerTimeAsync();
try
{
label1.Content = e.Result.ToLongTimeString();
}
catch
(Exception err)
{
label1.Content = "
获取服务数据失败
"
;
}
finally
{
busy.IsBusy = false
;
}
由于我们从服务中获取的数据量太小,所以查看效果时,busy控件的效果只是一闪而过,但当数据量大时,这个控件提供的提示功能还是很有用的:)
分享到:
相关推荐
使用《SilverLight 4 RIA开发全程解析》所阐述的在线业务的新特性,您可以创建一个与传统的基于ASP.NET的网站相比响应速度大为提高的Web应用程序。为了了解这些新特性以及改进的Silverlight工具包,我们在每一章中都...
Silverlight是微软一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA)的网络交互程序。 其中利用了一些简单的变化效果。创建了第一个元素,接下来的11个元素基本上是一样的,要修改的...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...
就是网络资源共享。 说明:使用VS2008+SQL2005+SL2.0TOOLS开发,目录文件夹data 里面有.SQL文件可以直接创建数据库,将web.config里的pwd=123改成你的就行 滑盖按钮在手机最上方一个白色小方点, 使用linq加wcf...
SilverLight学习资料 Silverlight是一个创建吸引力,许多网络上的屏幕,台式机和移动设备的交互式应用程序的强大的开发平台。
在.NET3.5框架下使用LINQ创建三层Web应用程序教程及源代码 本教程及文章教你如何在ASP.NET 3.0中使用LINQ实现三层Web网站应用程序,这里其实准确的说是多层,分别是:表现层、业务逻辑层、数据访问层、数据库层。...
Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf 第I部分 语言结构和环境 第1章 visual studio 2010 3 1.1 visual studio 2010:从express到ultimate的各种版本 4 1.2 visual basic的关键字和语法 7 ...
AddFlow for Silverlight是一款基于Silverlight平台的,用于创建交互式地流程图和工作流程图的控件,使用控件可以快速地创建工作流程图、数据库关系图、通讯网络图、组织结构图、工艺流程图、状态转换图、电话网络图...
4.一个web服务(我实现的是查询学校图书馆) 5.silverlight动画效果(简单的滑盖功能) 6,手机游戏,代码是窃取网上一个拼图的游戏 不足:1.不能动态显示手机的时间(每一秒),虽然在.aspx中网上有很多代码实现了...
它提供一切您需要创建一个网站上载,编码,编目,出版和对视频进行评论,使用的的Windows Live Silverlight的,采用Silverlight流媒体编码器。 Video.Show提供Silverlight 1.0的视频控制,托管一体化的SilverLight ...
它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight,与Oracle JavaFX的需求,并且提供更多能有效增强网络应用的标准集
微软Windows® Phone推送通知服务(PushNotificationService)为第三方开发者提供了一个弹性、专注、可持续的通道,支持发送消息、从服务器(web services)端更新Windows® Phone应用程序。 在这一部分中,一个移动应用...
你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。...
该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...
该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...
该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,...