热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> Silverlight>>正文内容

Silverlight WCF通信(一)

发布时间:2009年04月10日点击数: 笑看风云淡

返回连载教程目录
 实例源码

本篇以及下一篇文章我将向大家介绍下在Silverlight中如何创建WCF Service

以及如何调用WCF通信获得数据以及上传数据

并手把手教大家如何实现如下的上传文件程序(计划在下一篇讲述)
 

 

 

 

第一个范例:
先创建一个Silverlight应用程序,下面给Silverlight添加一个Silverlight-Enabled WCF Service如下图所示

 

默认创建出来的.svc文件代码如下: 

这个.svc文件中定义了一个操作契约public void DoWork() (什么是操作契约请查看WCF相关材料)

没有任何输入也没有任何返回结果,明显是一个没有任何用处的操作契约

我将其修改如下:

[OperationContract]  
public int GetRandom(int data)  
{  
     Random rand = new Random(data);  
     // Add your operation implementation here  
     return rand.Next();  
}

通过传入一个int值来返回一个随机数

重新编译整个工程

接下来的问题就是如何在客户端调用这个WCF Service了

具体操作如下:

 

选择Silverlight工程的References并点击右键选择Add Service References…

 

 

点击Discovery按钮将自动帮你找到当前可得的服务

(顺便提一下Silverlight的WCF Binding只支持 binding="basicHttpBinding")

当然你如果知道当前的服务地址,你也可以在Address:中输入然后按Go来查找服务

我给服务在客户端的名字空间取名为DataServiceRef(当然你可以随便去你想要的名字)

按OK,svcUtil.exe将自动为你生成客户端代码

双击生成的Service References: DataServiceRef就能通过对象浏览器来查看生成的客户端对象了,如下图所示

 

接下来调用GetRandomAsync(int)来传送数据

并注册GetRandomCompleted事件来实现回调或者返回的数据

代码如下:

private void Button_Click(object sender, RoutedEventArgs e)  
{  
    DataServiceRef.GetDataServiceClient client = new WCFTest.DataServiceRef.GetDataServiceClient();  
     client.GetRandomAsync(100);  
     client.GetRandomCompleted += new EventHandler<WCFTest.DataServiceRef.GetRandomCompletedEventArgs>(client_GetRandomCompleted);  
}
  

void client_GetRandomCompleted(object sender, WCFTest.DataServiceRef.GetRandomCompletedEventArgs e)  
{  
     this.txtData.Text = "The return data is "+e.Result.ToString();  
}

页面的界面代码如下:

<Grid x:Name="LayoutRoot" Background="#3C3C3C">  
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">  
         <TextBlock x:Name="txtData" FontSize="20" Foreground="White"/>  
         <Button Content="Get Data" FontSize="20" Padding="8,5" Margin="0,5" Click="Button_Click"/>  
     </StackPanel>  
</Grid>

运行效果图如下:

 

发布应用程序:
通过IIS发布本应用程序你必须注册WCF组件(不然无法识别.svc文件,你的WCF通信将瘫痪)

在Vista操作系统中你需要按照如下步骤进入

Control Panel->Programs->Programs and Features->Turn Windows Features on or off

勾选下图中框红的那个组件(默认不勾选)

 

如果是在XP或者Windows 2003上,请在命令行中运行如下代码注册WCF组件

cd %SYSTEMROOT%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe /i /x

这样你的Silverlight就可以在IIS上面正常运行了(当然要让IIS识别.xap以及.xaml还需要添加两个MIME Types,具体请看<<构建第一个Silverlight应用程序>>

总结:
本篇文件大致演示了如何创建WCF Service,并在客户端调用生成的WCF Service来取得数据

下篇文章将具体讲解如何利用WCF通信来上传文件到服务器

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作