首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SIlverlight中实现对WCF服务的同步调用?

在Silverlight中实现对WCF服务的同步调用,可以采用以下步骤:

  1. 创建WCF服务

首先,需要创建一个WCF服务,并在其中定义要调用的方法。例如,创建一个名为MyService的服务,其中包含一个名为GetData的方法,如下所示:

代码语言:csharp
复制
[ServiceContract]
public interface IMyService
{
    [OperationContract]
    string GetData(int value);
}

public class MyService : IMyService
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
}
  1. 生成服务引用

在Silverlight项目中,右键单击项目名称,然后选择“添加服务引用”。在“地址”框中输入WCF服务的地址,然后单击“确定”。这将生成一个名为ServiceReference1的文件夹,其中包含与WCF服务通信所需的代理类和配置文件。

  1. 调用WCF服务

在Silverlight应用程序中,可以使用生成的代理类来调用WCF服务的方法。例如,可以在按钮单击事件处理程序中添加以下代码来调用GetData方法:

代码语言:csharp
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    MyServiceClient client = new MyServiceClient();
    client.GetDataCompleted += Client_GetDataCompleted;
    client.GetDataAsync(123);
}

private void Client_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
    string result = e.Result;
    // 处理结果
}

在上面的代码中,MyServiceClient是生成的代理类,GetDataCompleted是一个事件,用于处理异步调用完成后的结果。GetDataAsync方法用于异步调用WCF服务的GetData方法。

  1. 实现同步调用

要实现同步调用,可以使用AutoResetEvent对象来阻塞线程,直到异步调用完成。例如,可以在按钮单击事件处理程序中添加以下代码来调用GetData方法:

代码语言:csharp
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    MyServiceClient client = new MyServiceClient();
    AutoResetEvent waitHandle = new AutoResetEvent(false);
    string result = null;
    client.GetDataCompleted += (s, args) =>
    {
        result = args.Result;
        waitHandle.Set();
    };
    client.GetDataAsync(123);
    waitHandle.WaitOne();
    // 处理结果
}

在上面的代码中,AutoResetEvent对象用于阻塞线程,直到异步调用完成。GetDataCompleted事件的处理程序将结果存储在result变量中,并将AutoResetEvent对象设置为已发出信号。在调用GetDataAsync方法后,线程将等待AutoResetEvent对象的信号,然后继续执行后续代码。

总之,要在Silverlight中实现对WCF服务的同步调用,可以使用异步调用和AutoResetEvent对象来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

并发中的同步--WCF并发体系的同步机制实现

对于这三种并发模式,Multiple采用的并行的执行方式,而Single和Reentrant则是采用串行的执行方式。串行执行即同步执行,在WCF并发框架体系中,这样的同步机制是如何实现的呢?...一、Concurrency.Single模式下的同步实现 实际上,WCF并发框架体系下针对Concurrency.Single模式的实现非常简单,其本质就是对InstanceContext进行加锁。...WCF就是通过对InstanceContext的ThisLock进行加锁,确保了对InstanceContext的同步访问。...二、Concurrency.Reentrant模式下的同步实现 在ConcurrencyMode.Single并发模式下,从请求被WCF服务端运行时分发给相应的InstanceContext到请求处理完成的整个过程中...如果在服务操作执行过程中涉及到对客户端的回调,并且回调操作采用请求/回复消息交换模式,当被WCF服务端运行时接收到从客户端返回的回复消息后,会将请求消息再次分发给相同的InstanceContext。

85160

使用WCF进行跨平台开发之二(IIS托管WCF服务并使用php平台调用)1.系统必备2.在IIS中托管WCF服务3.使用PHP调用托管在IIS中的WCF服务

上一篇中,使用控制台托管了WCF服务,但是如果想从PHP和java平台调用,必须将其托管到IIS中(并不是必须的,还是有其他的方式的 比如windows azure) 1.系统必备      首先,必须打开...2.在IIS中托管WCF服务      在IIS默认网站中添加应用程序emp,并在高级设置中,设置应用程序池为“ASP.NET v4.0”,并设置默认网站右键--编辑版定,在http类型中编辑IP地址和主机名...在新建的虚拟目录对应的实际目录中,添加web.config文件,配置wcf服务和终结点,并打开元数据公开,然而,因为这里不是使用常用的svc文件托管的服务,所以需要serviceActivations节点配置服务...3.使用PHP调用托管在IIS中的WCF服务 在PHP服务器中打开浏览器,并浏览http://192.168.11.1/emp/EmployeeManagement.svc测试服务是否托管正常。 ?...出现以上页面,证明在IIS中托管正常,现在,可以使用php开发程序调用此服务啦。

2.1K70
  • Silverlight 2 Beta 1学习资源

    Using Silverlight 2's DataGrid with WCF + LINQ to SQL: 这个15分钟的录像博客示范了如何在服务器上建造一个LINQ to SQL对象模型,然后用WCF...将其发布,然后示范了如何建造一个使用了新的Silverlight DataGrid控件的Silverlight客户端,该客户端调用WCF服务获取LINQ to SQL数据,将其绑定到DataGrid上。...Simple Editing of Web Service Data in a DataGrid: Mike Taulty有一篇好贴,展示如何在服务器上建造WCF服务,然后从Silverlight 2客户端使用它来获取数据...Sorting with Silverlight 2's DataGrid Control: Silverlight 2 Beta1中的DataGrid控件还没有内置的列数据排序支持(将在Beta2中提供...在这个贴子里,他展示了如何使用一个定制的header列方法来实现排序。也看一下Matt的这里的贴子,该文提供了一个DataGrid测试页面,展示了目前DataGrid的若干特性。

    1.2K70

    Silverlight与数据库的三种互操作

    开发 了解Linq开发 了解Ado.net data service 主要内容 创建一个Silverlight应用程序 创建一个普通的WCF服务提供Silverlight应用调用实现互操作...1执行SQL(insert ,update, delete),实现与数据库的互操作 2执行SQL(select),得到返回的dataset后以string的类型返回 Silverlight调用WCF...新增,删除,编辑,查询功能通过调用WCF提供的2个接口实现。 ? ? 注意:Silverlight Datagrid控件无法绑定匿名对象。...选择需要发布服务的实体类和操作方式,metadata class可以让你很方便实现对实体类的验证和控制显示格式。 Silverlight调用RIA-LINK实现互操作 ?...调用LINQ查询,不同的是不再需要调用异步方法实现这些功能,也不需要引用服务 RIA Serve框架 ? ?

    1.4K70

    更强悍的Silverlight: WCF RIA Services

    如果你安装了 VS 2010 的 Silverlight 4 开发工具,会发现一项重量级的安装项目,WCF RIA Services,用于Silverlight数据访问服务,比WCF和ADO.NET Data...在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现。...创建拥有良好用户体验的RIA应用,你需要客户端和服务端有着相同的业务规则,因此在客户端和服务端保证同步的中间层变得至关重要。...在 Silverlight 3,我们通过WCF 或是ADO.NET Data Service 来实践所需的功能,WCF RIA Service 则是完全为了解决这一方面的问题而发展出来的相关服务,也是基于...WCF服务,WCF支持各种通讯协议,目前WCF RIA Service只使用HTTP的绑定,而且Silverlight 4支持tcp绑定,参见InfoQ Silverlight 4中的高速通信,对于企业业务系统来说我会选择

    933100

    silverlight 《Hands-On-Labs》教程系列

    [在这个教程中你会看到如何使用多种访问远程数据的方法,你将使用除了WCF,web service的WebClient, Downloader和 WebRequest来获取数据.LINQ to XML和数据绑定都已经在...silverlight中得到了支持.最后你将有在sl中使用ASP.NET Extensions Preview提供的ADO.NET Data Services和feed syndication support....你可以使用designer工具去设计界面然后添加事件,设置属性.在后置代码中 调用方法.这个控件包可以在你开发的项目中就像内置空间的一样使用.此外你可以添加属性,方法,事件到你的控件中来制定更加适应的控件...[在设个教程中你将会看到如何使用css来Silverlight plug-in进行交互.如何建立适应浏览器大小变化的Silverlight,如何融合HTML和Silverlight,如何在浏览器和c#中访问...[如何在XAML中建立Storyboards制作动画.] Requirements: This tutorial requires the above installs only.

    92670

    使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)1.创建项目结构2.契约的设计3.实现服务4.控制台托管服务5.在.net平台中调用WCF

    在本系列文章 (我现在计划的应该是三篇,一篇WCF的开发和部署,另外是在.net平台上调用它,第二篇是PHP调用,第三篇是JAVA调用)。     ...而后新建ConsoleHost、Client两个控制台应用程序,分别为在控制台中实现服务托管使用,一个作为.net平台上调用WCF的实例使用,如下图 ?...这两个命名空间中包含ServiceContractAttribute等WCF需要的契约特性类,和对复杂类型序列化的类DataContractSerializer。 ?     ...5.在.net平台中调用WCF 在Client中,添加服务引用,命名空间设置为ServiceReference ?...在这里,我们已经简单的实现了WCF服务的实现和.net本平台调用WCF,这一篇不是最重要的,下一篇是使用IIS托管WCF并使用PHP调用WCF。

    1.5K90

    SilverLight企业应用框架设计【一】整体说明

    Silverlight企业应用框架设计【六】自定义系统菜单(使用自己的DataForm) SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web...服务) SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService) SilverLight企业应用框架设计【三】服务端设计 SilverLight企业应用框架设计...【二】框架画面 SilverLight企业应用框架设计【一】整体说明 闲言碎语~不要讲 先上图片 这个系列讲到的这个系统与 WinForm企业应用框架设计【一】界限划分与动态创建WCF服务(no svc...企业应用框架设计【五】系统登录以及身份验证+源码 这个系列类似 只不过是用在silverlight上的 当然,换了平台就换了很多技术 下面我说一下这个框架的一些特点 一:自己实现基于HTTP的REST服务...二:自己实现客户端实体和服务代理的代码生成逻辑 使用RiaService的人肯定会知道 VS开发环境在Silverlight客户端 自动生成了服务代理的代码和实体的代码 这些代码放在 Generated_Code

    29530

    Silverlight DataGrid使用WCF RIA Service实现Load-on-demand的数据加载

    那么对于Silverlight,我们可以使用DataGrid通过WCF RIA Service来实现这个功能。 1.     ...-         添加Silverlight enabled WCF Service 在WebApplciation工程中添加一个新的Item,选取”Silverlight enabled WCF Service...Load-on-demand数据加载 -         在Silverlight工程中添加Service引用 如下图通过给Silverlight工程添加Service reference来操作WCF..._employees.Add(employee); } } } -         在DataGrid上实现数据的Load-on-demand Silverlight...通过这个事件我们就可以实现数据的按需加载,在这个事件中我们可以拿到该Row的RowIndex,如果发现当前将要显示的Row已经接近末尾(当前定义为距离末尾小于5),那么就需要向服务器端请求数据。 ?

    69050

    Spring源码解析之AOP 中对拦截器调用的实现

    前面我们分析了 Spring AOP 实现中得到 Proxy 对象的过程,下面我们看看在 Spring AOP 中拦截器链是怎样被调用的,也就是 Proxy 模式是怎样起作用的,或者说 Spring 是怎样为我们提供..., this);  这里的 this 参数对应的是 InvocationHandler 对象,这里我们的 JdkDynamicAopProxy 实现了这个接口,也就是说当 Proxy 对象的函数被调用的时候...,这里是通过 AopUtils 的方法调用 - 使用反射机制来对目标对象的方法进行调用: 1public static Object invokeJoinpointUsingReflection(Object...nextInvocation 就已经包含了当前的拦截链的基本信息,我们看到在 Interceptor 中的实现比如 TransactionInterceptor 的实现中: 1public Object...//这里是 TransactionInterceptor 插入的事务处理代码,我们会在后面分析事务处理实现的时候进行分析  3        try {  4            //这里是对配置的拦截器链进行迭代处理的调用

    19830

    SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)

    来个索引 SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService) SilverLight企业应用框架设计【三】服务端设计 SilverLight...企业应用框架设计【二】框架画面 SilverLight企业应用框架设计【一】整体说明 在上一节中讲到的自动生成的服务代理类核心代码,如下 public event ServiceEventHandler...ServiceEventArgs e) { Completed(sender, e); } 大家注意到我们是通过ServiceInvoker来调用服务的...实例化ServiceInvoker类之后就注册了ServiceEventHandler事件 此事件是服务调用完成后触发的事件(silverlight 原生的ria service也有一个completed...(JSON数据)反序列化成实体类型,并赋值给ServiceEventArgs 然后触发了Completed事件 也就是触发我们服务端代理类的si_Completed事件 至此,调用服务端的类就解释完了

    73220

    ConcurrencyMode.Multiple模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响

    通过《上篇》介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制。那么,在WCF框架体系内部,整个过程是如何实现的呢?...至于实现流量控制的原理,我们会在后面讨论。在这里我们需要知道,WCF将所有限流相关的实现定义在ServiceThrottle类中。我们不妨来看看ServiceThrottle的定义。...WCF对限流控制的实现原理,相对来说还是比较复杂的。...无论是基于对并发会话的控制,还是对并发调用以及并发实例上下文的控制,都是采用相同的实现机制。WCF为此专门设计了一个内部组建,我们可以将其称为流量限制器(FlowThrottle)。...关于会话信道,可以参阅《WCF技术剖析(卷1)》第9章关于会话的内容。 如果并发会话的流量限制器放行,对请求消息的处理进入第二道屏障,即并发调用流量限制器。

    65690

    ConcurrencyMode.Multiple 模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响

    在《上篇》中,我通过一个具体的实例演示了WCF服务宿主的同步上下文对并发的影响,并简单地介绍了同步上下文是什么东东,以及同步上下文在多线程中的应用。...等到需要执行服务操作的时候,WCF并发体系会判断分发运行时的同步上下文是否存在,如果不存在则在各个的线程中执行服务操作,否则,服务操作会被封送到该同步上下文中执行。...也就是说,在某个时刻,仅仅只有针对某个服务调用的服务操作被执行,其他的调用请求都将被放入一个等待队列中。...的并发请求操作的执行机制有了一个大概的了解,接下来我们对该机制在WCF并发框架体系下的真正实现进行更加深层次的探讨。...在回调场景中,客户端开启服务代理并指定回调实例上下文对象进行服务调用的时候,如果当前线程存在同步上下文,那么当服务端进行回调的时候,回调操作会自动被封送到该同步上下文中执行。

    947110

    silverlight动态读取txt文件解析json数据调用wcf示例

    终于开始正式学习silverlight,虽然有点晚,但总算开始了,今天看了一下sdk,主要是想看下silverlight中如何动态调用数据,对于数据库的访问,sdk中的官方示例多用的是Ado.Net数据服务...,方便到是方便,就是感觉Ado.Net数据服务返回的xml太啰嗦了,一点也不精简,数据通讯量太大(N多无用的标签导致客户端与服务端之间传输数据增加了不少),于是想到能否直接用wcf返回json格式, 何况...sdk中提到silverlight中System.Json已经完成了对json的解析 经实验,用WebClient貌似就能解析一切,包括加载json文本,纯文本,以及wcf,不过要注意的是:xap与被调用的...txt或wcf必须在同一个域下,否则将调用失败,具体看下面的代码 Page.Xaml完整内容如下:  <UserControl x:Class="WcfTest.Page" xmlns="http...的代码也在这里贴出来,就是一"启用了ajax的wcf服务",没啥特别的,下面的代码仅参考(从NorthWind数据库中,读取了表Categories的部分信息) Code using System.Configuration

    1.4K100

    WCF服务上应用protobuf

    通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。...protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。...在TCP网络编程中这是必须面对的问题。在tcp网络编程中,要反序列化业务消息,就要先知道业务数据的大小。而且在实际应用中可能在一个发送操作中,发送多个业务消息,而且每个业务消息的大小、类型都不一样。...借助于WCF这样的网络编程框架,然后结合protobuf这样的序列化框架,网络编程中技术基础设施层面的东西就给我们解决得差不多了,我们可以真正只关注于业务的实现。...protobuf的dotNet实现protobuf-net, 支持WCF的DataContact,WCF程序几乎不需要什么修改就能使用。

    78160

    如何在微服务中实现分布式事务的变通?

    传统单体架构下的分布式事务概念并不适合微服务,面临的挑战很多(挑战问题点击标题见原文),想在微服务中进行分布式事务处理?...需要改变思路和视角: 组合,如果您认为您应该合并几个微服务或将事务集成到一个服务中,那么进行此练习永远不会晚。 为事务构建一致且有用的审核,并确保您始终捕获审核,即使服务超时也是如此。...不要用假设的场景进行测试(例如杀死服务,然后查看其他组件的行为),而是尝试生成可能导致服务终止或超时的情况或数据或序列,然后查看弹性/重试在其他服务中的工作方式。...将断路器集成到您的生态系统中,以便您能够检查所有服务(即将参与这些交易的服务)是否都处于健康状态。这样,您甚至可以在开始交易之前就避免半成品交易。...对于订单微服务和库存微服务之间需要实现分布式事务,您可以使用以下设计以批处理替代: 在这里,您仍然可以进行扩展,隔离和独立部署,但是批处理过程将使其更加一致。

    51720

    ObservableCollection 类

    Windows Presentation Foundation (WPF) 在 Microsoft .NET Framework 中添加了一些功能,您可以可靠地使绑定控件与其数据源保持一致。...利用 ObservableCollection 类,WPF /Silverlight 应用程序可以使绑定控件与基础数据源保持同步,但它还提供了更有用的信息,尤其是 ObservableCollection...类还可以在您添加、删除、移动、刷新或替换集合中的项目时引发 CollectionChanged 事件。...通常我们采用WCF服务所使用的List, 在Silverlight客户端生成的代理都会使用ObservableCollection 替代,没有用过Silverlight的同学可以到这篇文章《推荐一个...Silverlight多文件(大文件)上传的开源项目》看到上传文件集合类FileCollection就是ObservableCollection的子类 。

    1.2K60

    针对构架师的.NET 3.0介绍

    Windows Communication Foundation (WCF) WCF允许你通过提供一个基于标准的框架和一个组合的架构来构建服务。...WCF的3个关键设计理念是互操作性、生产力和面向服务的开发。 微软提供了若干个可以轻易添加和删除的消息层通道和服务模型层行为。...WCF可以和现有的投资互操作,并结合和扩展现存的微软分布式系统技术,如:Enterprise Services、System.Messaging、Microsoft .NET Remoting、ASMX...最后,从生产力来看,使用WCF来开发安全的事务性网络服务,你将获得生产力在级别上的显著提高。...想想看,要实现类似WCF的功能你需要开发、生成和维护上万行代码,而现在WCF却已经作为基础框架的一部分提供给你了。WCF已经为你提供了一个首要的核心编程框架,以应付逐步增长的面向服务的开发。

    1.3K60

    Silverlight+WCF 实战-网络象棋最终篇之房间装修-WCF端(二)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 佛靠金装,人要衣裳,房间也要加金砖。本篇我们来把房间装修下,让它看起来专业一点!...一:效果预览,先上图 这是之前的房间图片: 今天我们要装修成的房间图片: 再上一张游戏中的效果图: 二:实现说明 1:新增加图片 为了实现装修,我这里新增加了3张图片: 1:房间图片 2...:房间游戏中状态的图片 3:QQ用户头像 图片是从QQ象棋游戏的安装程序中Copy过来的,由于Silverlight只支持png等个别种类图片,所以用ps把图片另存为png格式了。...三:代码实现[WCF端] 1:WCF端代码:实体修改 WCF端:Player玩家实体 ExpandedBlockStart.gif /// /// 游戏玩家 by 路过秋天...服务端编绎过去后,客户端注意更新服务引用,接着由于服务端实体的两字段被删除,必然会引发个别小错误了。

    44720
    领券