SilverLight学习笔记--Silverlight中WebService通讯

本文我们学习如何在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 { getset; }
        
public int   Age { getset; }
    }
}

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

 

ContractedBlock.gifExpandedBlockStart.gifCode
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux怎么修改sftp默认端口,转:linux 修改sftp服务默认提供者sshd的session timeout

NAT firewalls like to time out idle sessions to keep their state tables clean and their memory footprint low.NAT防火墙喜欢对空闲的会话进行超时处理&#xff0c;以确保它们状态表的干净和内存的低占用率。Some firewalls are nice, and let you idle for up to a day …

导出文件_一招解决PDF文件导出图片

将PDF文件保存为高清图片是经常需要进行的保存方式之一&#xff0c;因为PDF文件虽然安全性高&#xff0c;但是相比较图片而言&#xff0c;还是不易进行查看的&#xff0c;那么如何将PDF文件导出图片呢&#xff1f;以前也了解过很多方法&#xff0c;不过最好的当然不是截图了。虽…

如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)

转自&#xff1a;http://www.cftea.com/c/2008/04/A1FQ34RYSYNLFT47.aspSharpZipLib 是一个免费的组件&#xff0c;可以利用它对 ZIP 等多种格式进行压缩与解压。 本地下载 SharpZipLib 0.85.4&#xff1b; 本地下载 SharpZipLib 0.85.4 源文件与示例&#xff1b; 本地下载 Sha…

linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...

2019年5月&#xff0c;Kubernetes社区(后面简称”社区“)修复了标号为CVE-2019-11244的安全漏洞&#xff0c;这个修复方案似乎并不彻底&#xff0c;于是有人发布Issue对此提出异议&#xff0c;希望提供进一步修复方案。虽然Kubernetes已经非常安全&#xff0c;但对于一些安全标…

用python计算ln函数_python-含参函数

#!/usr/local/bin/python3# -*- coding:utf-8 -*-#----------函数位置参数和关键字参数----------def test(x,y): #此处的 x&#xff0c;y为形参print(x)print(y)test(1,2) #位置参数调用-此处的 1&#xff0c;2为实参&#xff0c;且与形参一一对应test(y2,x1) #关键字调用&…

ASP.NET MEMBERSHIP的XML配置

做了一个MEMBERSHIP的测试&#xff0c;先记下来&#xff0c;以备后用&#xff01;JAVAEYE网站是不是被人攻击了啊。。怎么打不开。。晕。。我有好多文章都在里面啊。。都没有备份的。。。 <connectionStrings><add name"conn"connectionString"server.…

高中数学40分怎么办_2019年第35届全国高中数学联赛试题及参考答案

2019年第35届全国高中数学联赛考试已结束&#xff0c;本文收集整理本次数学联赛的试题和参考答案&#xff0c;以供大家了解参考。本次数学联赛由全国高中数学联赛组委会统一命题&#xff0c;共分为一试和二试。一试时间为80分钟&#xff0c;包括8道填空题(每题8分)和3道解答题(…

linux 关机 日志,centos7 异常关机了,怎么查看系统的异常日志?

centos7 异常关机了&#xff0c;怎么查看系统的异常日志?crash中也没有dump的文件.这是messages日志:Feb 26 11:14:03 moon systemd-logind: Removed session 11.Feb 26 11:14:56 moon systemd: Created slice user-0.slice.Feb 26 11:14:56 moon systemd: Starting Session 1…

一个把图片保存到SQL数据库的工具

因公司的业务需要,会把很多图片保存到数据库中.因此做了一个很简单的工具,把图片保存到SQL数据库中.1.可以连接到不同服务器上的SQL数据库,可以选择操作各个表;2.可以指定保存到数据库的图片格式(JPG or BMP);3.可以用windows图片和传真查看器预览图片.下载地址:一个把图片保存…

redis 哨兵_Redis哨兵机制的原理介绍

php中文网最新课程每日17点准时技术干货分享本篇文章给大家带来的内容是介绍Redis的哨兵机制&#xff0c;让大家了解哨兵机制的原理和如何实现。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。概述Redis的复制有一个缺点&#xff0c;当主…

linux 编写完程序吗,linux下编写C++程序

注&#xff1a;本文写的内容全部在ubuntu12.04下完成。要在linux下写C程序&#xff0c;要懂的一点编译的知识。下面介绍一下。源代码->预处理器(负责将代码补充)->汇编程序(生成汇编语言)-> 目标程序(生成二进制文件)->链接器(链接文件)->可执行程序(生成执行程…

BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具

为了学习python re模块正则表达式&#xff0c;寻找了一些正则表达式工具&#xff0c;除了komodo捆绑的rx toolkit外&#xff0c;其他的测试工具都是基于.net或其他引擎的&#xff0c;语法上多少有点出入。 干错自己写一个&#xff0c;用了2天时间&#xff0c;python re googl…

随机生成从大到小排序python_随机快速排序(使用Python描述)

title代码复制自随机快速排序的实现-夜雨最萌.和快速排序一样呀&#x1f602;随机快速排序与快速排序的思路一样,差异就是取主元之前,随机快速排序多了一个步骤:而随机快速排序是随机取得一个元素,但是又会与最后一个元素交换位置.取得主元的下标位置实际上还是最后一个下标.快…

linux守护进程fifo,linux守护进程配置文件

syslogd 是一种守护进程&#xff0c;它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用&#xff0c;这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。1.文件格式/etc/syslog.conf是syslog守护程序的配置文件.sys…

【大数据】NiFi 的基本使用

NiFi 的基本使用 1.NiFi 的安装与使用1.1 NiFi 的安装1.2 各目录及主要文件 2.NiFi 的页面使用2.1 主页面介绍2.2 面板介绍 3.NiFi 的工作方式3.1 基本方式3.2 选择处理器3.3 组件状态3.4 组件的配置3.4.1 SETTINGS&#xff08;通用配置&#xff09;3.4.2 SCHEDULING&#xff0…

Asp.net页面事件引发后台程序处理原理【转】

以前在ASP中&#xff0c;不存在事件处理&#xff0c;传统的处理方法是通过隐藏文本框来提交不同的参数进行区别用户的不同动作&#xff0c;或则用不同的URL查询字符串来区别。ASP.NET中出现了事件处理&#xff0c;让开发人员区分用户动作方便并简单了许多。 实际上&#xff0c;…

常用linux双机软件,双机热备软件_Windows与Linux双机热备软件有哪些

Windows与Linux双机热备软件有哪些众所周知&#xff0c;双机热备可以提供服务器高可用性&#xff0c;但linux操作系统部署双机热备开源软件即可&#xff0c;而Windows操作系统的需要付费的Rose。1、Rose HA通过Rose HA系统把两台服务器与磁盘阵列系统相连&#xff0c;操作系统、…

python datatime 平均值_python求数据的时间平均

#!/usr/bin/python# encoding: utf-8import refrom itertools import imap, ifilter# 定义正则表达式patt re.compile(r"""(?P\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}) # 日期时间\s*&#xff0c;\s* # 分隔符号(?P\d) # 数值""", re.I|re.…

加密和解密类

&#xfeff;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Security.Cryptography;usingSystem.IO;usingSystem.Web;namespaceThewolfs.Framework.Text{ ///<summary>///加密类 ///</summary>publicclassTwE…

linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

作业一&#xff1a;1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖)cat /etc/passwd /etc/group > /1.txt2)将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加)cat /etc/passwd /etc/shadow >> /2.txt3)将/1.txt、/2.…