zoukankan      html  css  js  c++  java
  • 在Silverlight中如何创建WCF Service

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

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

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

    WCFTest04

    WCFTest01

    WCFTest02

    WCFTest03

    第一个范例:

    先创建一个Silverlight应用程序

    下面给Silverlight添加一个Silverlight-Enabled WCF Service如下图所示:

    WCFTest13

    WCFTest05

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

    WCFTest06

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

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

    我将其修改如下:

    复制代码
    1 [OperationContract] 
    2 public int GetRandom(int data) 
    3 
    4     Random rand = new Random(data); 
    5     // Add your operation implementation here 
    6     return rand.Next(); 
    7 }
    复制代码

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

    重新编译整个工程

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

    具体操作如下:

    WCFTest07

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

    WCFTest08

    WCFTest09

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

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

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

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

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

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

    WCFTest10

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

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

    代码如下:

    复制代码
     1 private void Button_Click(object sender, RoutedEventArgs e) 
     2 
     3     DataServiceRef.GetDataServiceClient client = new WCFTest.DataServiceRef.GetDataServiceClient(); 
     4     client.GetRandomAsync(100); 
     5     client.GetRandomCompleted += new EventHandler<WCFTest.DataServiceRef.GetRandomCompletedEventArgs>(client_GetRandomCompleted); 
     6 
     7 
     8 void client_GetRandomCompleted(object sender, WCFTest.DataServiceRef.GetRandomCompletedEventArgs e) 
     9 
    10     this.txtData.Text = "The return data is "+e.Result.ToString(); 
    11 }
    复制代码

    页面的界面代码如下:

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

    运行效果图如下:

    WCFTest11

    发布应用程序:

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

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

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

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

    WCFTest12

    如果是在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,具体请看http://www.cnblogs.com/ibillguo/archive/2008/08/31/1280418.html

    总结:

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

  • 相关阅读:
    many2many
    oneselfone
    one2one
    10-many2one
    08-one2many
    05-curd
    动态SQl
    文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
    expect用法举例
    通过命令修改mysql的提示符
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2916481.html
Copyright © 2011-2022 走看看