本文我们学习如何在Silverlight中使用WebService进行通讯。
新建项目Silverlight应用程序,命名为:SLWebService。
在服务器端我们需要做两项目工作:
1、在Web项目中新建一个类Person,我们将在WebService中返回它的实例化对象。Person类定义如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace SLWebService.Web
{
    public class Person
    {
        public string Name { get; set; }
        public int   Age { get; set; }
    }
}

2、在Web项目中建立一个WebService,命名为MySLWebService.asmx,它的主要任务就是返回一个Person类数组,代码如下:

Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace SLWebService.Web
{
    /// <summary>
    /// MySLWebService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class MySLWebService : System.Web.Services.WebService
    {

[WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

[WebMethod]
        public Person[] GetPeople()
        {
            List<Person> People = new List<Person>()
        {
           new Person{ Name="Jack",Age=12},
           new Person{ Name="Tom",Age=22},
           new Person{ Name="Simon",Age=32},
           new Person{ Name="Richard",Age=26}
        };

return People.ToArray();
        }
        
    }
}

在客户端我们需要做如下工作:
1、建立用户界面.Page.xaml代码如下:

<UserControl x:Class="SLWebService.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
  <StackPanel Width="400" Height="300" Background="Wheat">
         <TextBlock Text="通过WebService取得的数据如下" TextAlignment="Center" Foreground="Red"  FontSize="18"></TextBlock>
         <Button x:Name="btnGetWebService" Width="200" Height="30" Content="获取数据" Click="btnGetWebService_Click"></Button>
        <ListBox x:Name="People" Width="300" Height="200" Margin="20">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                          <TextBlock Text="姓名" Width="100" Foreground="Blue" ></TextBlock>
                          <TextBlock Text="年龄" Width="100" Foreground="DarkBlue"></TextBlock>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Name}" Foreground="Red"  Width="100" ></TextBlock>
                        <TextBlock Text="{Binding Age}"  Foreground="Green"  Width="100" ></TextBlock>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</UserControl>

界面如下:

2、在Silverlight项目中引用服务器端的WebService,命名为MyWebServiceRef。


引用后,程序如下图:


3、在客户端使用WebService,通过WebService从服务器端取得数据,在本地处理后显示在用房界面上。Page.xaml.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using SLWebService.MyWebServiceRef; //加入对MyWebServiceRef的引用

namespace SLWebService
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
        }

private void btnGetWebService_Click(object sender, RoutedEventArgs e)
        {
            //使用WebService从服务器端得到数据并在本地端进行处理
            MySLWebServiceSoapClient client = new MySLWebServiceSoapClient();   
            client.GetPeopleCompleted  += new EventHandler<GetPeopleCompletedEventArgs>(client_GetPeopleCompleted);
            
            client.GetPeopleAsync();
        }

void client_GetPeopleCompleted(object sender, GetPeopleCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                People.ItemsSource = e.Result; //绑定结果到UI的List控件
            }
        }

}
}

效果如下图:
                        

前往:Silverlight学习笔记清单

本文程序在Silverlight2.0和VS2008环境中调试通过。本文参照了部分网络资料,希望能够抛砖引玉,大家共同学习。
(转载本文请注明出处)

转载于:https://www.cnblogs.com/wsdj-ITtech/archive/2009/08/28/1555525.html

SilverLight学习笔记--Silverlight中WebService通讯相关推荐

  1. SilverLight学习笔记--Silverlight之数据绑定初探

    数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接.用户界面对象称为目标,数据提供者成为数据源.   数据绑定帮助隔离应用程序的用户界面层 ...

  2. SilverLight学习笔记--Silverlight中WebRequest通讯

    本文我们学习如何使用WebRequest类实现客户端和服务器端的通讯.      本例处理过程:在客户端,我们在文本框中输入任意文本,然后用POST方法向服务器端传递信息,服务器端收到从客户端传来的信 ...

  3. SilverLight学习笔记--Silverlight中操作DOM元素

    在这里我们将实验一下在Silverlight中如何操作HTML的DOM元素. 首先创建Silverlight应用程序.   创建用户界面: <UserControl x:Class=" ...

  4. SilverLight学习笔记--如何在xaml文件中操作用户在后台代码定义的类(2)--示例篇:创建一个登录控件(原创)(转载本文请注明出处)...

    本文将示例如何运用前篇所写知识来建立一个用户自定义的登录控件.此控件界面非常简单,主要涉及的知识点是:   如何创建用户控件(包括对此控件的自定义事件和属性的编写,此处我们将创建一个名为LoginBo ...

  5. vs2010 学习Silverlight学习笔记(11):数据与通信之WebClient

    概要: 基础知识终于学完了,我今天又从第一篇看到第十篇,发现明白了一些东西,还有忘记了部分东西.呵呵,咱不能猴子掰玉米,学了新的忘记旧的.要经常去复习,去用.这一篇是数据通信部分的第一篇,有些东西没接 ...

  6. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  7. SilverLight学习笔记--建立Silverlight自定义控件(5)--绑定动画效果

    有了上述的基础,我们进一步完善我们的自定义控件,在此我们将创建Storyboard和前面的添加事件处理方法为我们的自定义控件加上动画效果.   1.首先,在MyDesignButton项目中进一步完善 ...

  8. SilverLight学习笔记--建立Silverlight自定义控件(1)--外观设计

    Silverlight 2 以丰富且强大可靠的控件模型闻名,该模型是平台中包括的控件和第三方控件包的基础.您也可以使用此控件模型构建自己的控件.   在了解如何为新平台编写自定义控件时,我经常先复制一 ...

  9. SilverLight学习笔记--如何解决Button不响应MouseLeftButtonDown与MouseLeftButtonUp事件的问题...

    在Silverlight 2 中的按钮不能响应MouseLeftButtonDown 和 MouseLeftButtonUp 事件,为解决此问题,我们可通过创建自定义按钮控件加以解决, 1.创建自定义 ...

最新文章

  1. iOS 分类思想(2)
  2. mysql与java连接查询_【java】MySQL数据库之连接查询
  3. 【论文知识点笔记】Binarized P-Network(强化学习+保守值迭代+二值化神经网络)
  4. POJ 2044 Weather Forecast
  5. 46. Permutations 1
  6. Linux下的socket网络编程
  7. android 分享小程序到微信,微信小程序-分享到朋友圈初体验
  8. 拉格朗日乘数法,一种计算条件极值的方式
  9. uniapp canvas 合成头像
  10. 基于STM32控制的PS2摇柄模块—双轴按键摇杆控制器控制TFTLCD
  11. Hive文件存储格式(建表stored as 的五种类型)
  12. nvcc fatal : No input files specified; use option --help for more information
  13. RKMEDIA--AI/AO的使用
  14. signature=755e8ee7e865b95708ea6b30aedefbd3,fMRI of Language Systems
  15. P2300 合并神犇 DP
  16. 各类免费API接口推荐,再也不怕找不到免费API了
  17. 天猫补单-淘宝补单平台哪个最安全,如何找口碑好优质正规靠谱的补单平台?
  18. 【西电—英美国家概况(英美概况/英美文化)2023第一学期】第四章参考课后答案
  19. 云计算医疗行业解决方案的前世今生
  20. 证书-OCA、OCP、OCM

热门文章

  1. R-Tree空间索引算法的研究历程和最新进展分析
  2. Mat的初始化以及Mat与数组的相互转化
  3. matlab 读取文件夹底下所有txt文件
  4. Visual C++利用互斥量同步线程实现文件读取进度条
  5. AUTOSAR从入门到精通100讲(二十二)-AUTOSAR通信篇—CANTP模块
  6. component是什么接口_阿里高级技术专家:整洁的应用架构“长”什么样?
  7. linux wenj 立即生效_【新书连载】测试工程师核心开发技术(3)—远程登录Linux系统...
  8. 【Java必备资料包】
  9. docker安装pocbox(漏洞测试验证辅助平台)
  10. mysql 表结构 增删改查_mysql学习【第3篇】:数据库之增删改查操作