首页
学习
活动
专区
工具
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就是通过InstanceContextThisLock进行加锁,确保了InstanceContext同步访问。...二、Concurrency.Reentrant模式下同步实现 在ConcurrencyMode.Single并发模式下,从请求被WCF服务端运行时分发给相应InstanceContext到请求处理完成整个过程...如果在服务操作执行过程涉及到客户端回调,并且回调操作采用请求/回复消息交换模式,当被WCF服务端运行时接收到从客户端返回回复消息后,会将请求消息再次分发给相同InstanceContext。

83060

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

上一篇,使用控制台托管了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调用托管在IISWCF服务 在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 Beta1DataGrid控件还没有内置列数据排序支持(将在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高速通信,对于企业业务系统来说我会选择

    911100

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

    [在这个教程你会看到如何使用多种访问远程数据方法,你将使用除了WCF,web serviceWebClient, 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.

    91070

    使用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.3K90

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

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

    28830

    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...通过这个事件我们就可以实现数据按需加载,在这个事件我们可以拿到该RowRowIndex,如果发现当前将要显示Row已经接近末尾(当前定义为距离末尾小于5),那么就需要向服务器端请求数据。 ?

    67950

    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            //这里是配置拦截器链进行迭代处理调用

    18330

    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事件 至此,调用服务类就解释完了

    72120

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

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

    64390

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

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

    910110

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

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

    1.4K100

    WCF服务上应用protobuf

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

    76660

    何在服务实现分布式事务变通?

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

    50620

    ObservableCollection 类

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

    1.1K60

    针对构架师.NET 3.0介绍

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

    1.3K60

    Sync Framework Toolkit 开源库

    Mobile、iPhone、iPad、黑莓、Android设备以及使用HTML5浏览器——之间实现同步,客户端示例源代码基于Apache 2.0许可发布,而服务源代码基于MS-LPL许可发布。...使用SOA,我们会把所有需要数据都获取到设备,那样才能查看在SQL Server上发生了那些改变。对于上传数据也是一样。...工具集文档说明了如何为能够发现冲突(conflict-aware)和无法发现冲突(conflict-unaware)客户端编写客户端程序,从而在所有平台中使用同步服务。...管理您数据有效地使用访问 Microsoft 同步 Framework 使用 Sync Framework 创建同步提供程序 使用 SQL Azure 实现分支节点同步 使用 SQL Azure 实现分支节点同步...,第 2 部分:基于服务同步

    63490
    领券