有三个主要的障碍:
1、服务器解析不到客户端的assembly,因为callback的代码在客户端的assembly中
2、TypeFilterLevel默认不是Full
3、普通callback代码不能访问客户端的变量,因为不是serializable的
解决办法:
1、利用AppDomain的AssemblyResolve事件,让自己来处理assembly的查找逻辑。并且让客户端在开始的时候把自己的assembly位置发给服务器。
2、
BinaryServerFormatterSinkProvider serverFormatter = new BinaryServerFormatterSinkProvider();
serverFormatter.TypeFilterLevel = TypeFilterLevel.Full;
Hashtable properties = new Hashtable();
properties.Add("portName", "thoughtworks");
IpcChannel channel = new IpcChannel(properties, null, serverFormatter);
3、把callback放在MarshalByRefObject之中。并且让客户端注册自己的channel。这样服务器就会真的callback了,callback代码也是执行在客户端中。
分享到:
相关推荐
服务器端在接收到客户端的调用后,不仅会执行相应的方法,还会利用.NET Remoting的回调机制(Callback Mechanism)向客户端发送消息。回调机制允许服务器注册客户端提供的接口,当服务器有新消息时,可以直接调用这...
在.Net中,我们可以通过Web Service 或者Remoting 技术构建分布式应用程序(除此还有新一代的WCF,Windows Communication Foundation)。本系列文章将简单介绍Remoting的一些基本概念,包括 应用程序域、Remoting构架...
### 如何通过 .NET Remoting 实现双向通信 #### 一、引言 在分布式系统开发中,.NET Remoting 提供了一种高效且灵活的方式来处理远程对象的调用。与传统的请求/响应模型不同,.NET Remoting 支持更复杂的通信模式...
- **定义与背景**:.NET Remoting 是微软公司推出的分布式处理技术,它继承和发展了早期的 DCOM 技术,为.NET 平台提供了强大的分布式计算能力。.NET Remoting 主要应用于需要跨越多个计算机系统执行代码的企业级...
Remoting是.NET Framework提供的一种远程通信机制,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至跨越网络。在这种环境下,"双向通信"意味着服务端和客户端之间可以互相发送消息,而不仅仅是单向的...
本实例重点探讨了基于C#的远程回调(Remote Callback)和Remoting技术,同时涉及到了多线程以及异步传输等核心概念。 首先,远程回调是一种设计模式,它允许服务器在完成某个操作后主动调用客户端的方法,而不是...
Remoteing,通常指的是.NET Framework中的Remoting技术,它允许对象在不同的进程甚至不同的计算机之间进行通信,从而实现分布式系统的设计。下面将详细讲解Remoteing的相关知识点。 **一、远程方法调用(Remote ...
WCF是.NET Framework的一部分,它整合了.NET Remoting、Web Services、ASP.NET Web Services和MSMQ等通信技术,提供了一种统一的编程模型。WCF服务可以通过多种传输方式(如HTTP、TCP、命名管道等)和消息交换模式...
- **DWR (Direct Web Remoting)**:允许JavaScript直接调用Java方法,实现服务器端代码的远程执行。 **AjaxPro.dll与.NET集成** AjaxPro是一个免费的.NET库,允许JavaScript直接调用.NET服务端的方法。它的一些...
它融合了.NET Remoting、Web Services、MSMQ等多种通信技术,使得开发人员能够在多种不同的环境中进行服务的开发与部署。 - **服务契约**:在WCF中,服务契约定义了服务提供的接口和方法。通过使用`...
1. **与多种现有微软分布式技术的统一性**:WCF 统一了 ASMX、.NET Remoting、TCP、命名管道、MSMQ 等技术的开发模型,为各种应用提供了单一的编程模型。 2. **提供对不同平台互操作性的支持**:通过标准的 SOAP ...
WCF集成了.NET框架中的多种通信技术,如ASP.NET Web Services、Remoting、MSMQ等,提供了一种高度灵活且强大的方式来创建、配置和管理服务。 **二、WCF组件** 1. **服务合同(Service Contract)**:定义服务提供的...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行实时通信,无需刷新页面。这个“DWR中文官方文档-打包下载”包含了一系列详细资源,帮助开发者深入理解和应用DWR框架。 1. **DWR...