最近大家都在讲wcf,我不太感冒,虽然看过,但是还是用的remoting,在使用RemotingServices.Marshal的时候遇到一些问题,于是做了一个demo,这个RemotingServices.Marshal的做法在网上例子中没有看到,故撰写此文,将RemotingServices.Marshal返回的ObjRef对象序列化传递到服务器端,再由服务器端反序列用以访问客户端对象,这个做法的好处是原先我们只能client访问server,现在可以通过动态的发布对象,并将对象传递到服务器端,使得服务器可以访问客户端的对象了,这样可以达到双向通信的目的。不太会写文字,还是以图片和代码说明吧。
客户端代码如下:
Code
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Remoting;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Windows.Forms;
using Interface;
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Stream sw = File.OpenRead(@"D:\wwwroot\OICF\MarshalDemo\Server\bin\Debug\xx.bin");
BinaryFormatter bf=new BinaryFormatter();
ITest test=(ITest)bf.Deserialize(sw);
test.Say("hello world");
}
}
}
这里没有将序列化后的代码上传到服务器端,我是直接在服务器端读文件了
服务器端代码:
Code
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Remoting;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Windows.Forms;
using Interface;
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Stream sw = File.OpenRead(@"D:\wwwroot\OICF\MarshalDemo\Server\bin\Debug\xx.bin");
BinaryFormatter bf=new BinaryFormatter();
ITest test=(ITest)bf.Deserialize(sw);
test.Say("hello world");
}
}
}
工程代码地址(vs2008):http://files.cnblogs.com/lexus/MarshalDemo.zip
分享到:
相关推荐
在“Remoting双向通信V4.0.rar”这个压缩包中,我们推测包含了一个客户端(Client)和一个服务器端(Server)的应用程序示例,用于演示如何实现.NET Remoting的双向通信。 在.NET Remoting中,双向通信是指客户端和...
这个"Remoting双向通信V3.0.rar"压缩包可能包含了一个演示或实现.NET Remoting V3.0版本中双向通信的示例项目,分为Client(客户端)和Server(服务器端)两个部分。 .NET Remoting允许不同进程甚至不同计算机上的...
Remoting,全称为“.NET Framework Remoting”,是微软.NET框架中的一个高级特性,它提供了在分布式环境中进行跨进程通信的能力。这个技术允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至跨越网络进行...
这个“RemotingV1.0.rar”压缩包包含了一个简单的客户端(Client)和服务器(Server)示例,用于演示如何实现.NET Remoting的双向通信。 在.NET Remoting中,一个对象可以作为服务器端的"服务对象",暴露其方法供...
org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar
实现1.从客户端向服务端发消息,2.从服务器端向客户端推消息; 客户端发消息函数:SayFromClient(command,value),服务端自处理事件OnSayFromClient 服务端推消息函数:SayFromServer(command,value),客户端自处理...
Remoting双向通信是一种在.NET Framework中实现客户端与服务器之间高效、灵活的数据交换技术。这个"Remoting双向通信v1.0"可能是一个实现双向通信的软件包或框架,旨在简化远程对象调用的过程,使应用程序能够实时地...
Remoting TCP双向通信是一种在分布式系统中实现高效、可靠数据交换的技术。在.NET框架中,Remoting提供了一种跨进程甚至跨计算机的通信机制,允许对象在不同的应用程序域(AppDomain)之间透明地调用方法。TCP...
在.NET Remoting中,实现双向通信通常涉及到代理对象(Proxy Object)和服务器激活(Server Activation)。客户端通过代理对象与服务端进行通信,而服务端可以通过回调接口(Callback Interface)向客户端发送数据。...
"Remoting双向通信例程"是一个实用的学习资源,旨在帮助初学者理解和实现客户端与服务器之间的双向通信。在这个例程中,我们将深入探讨Remoting的核心概念和技术。 首先,我们需要理解什么是.NET Remoting。它是...
C# 实现Remoting双向通信,.Net Remoting 是由客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象来实现通信的; 具体过程可参考https://www.cnblogs.com/tuyile006/p/9981744.html, 代码...
### 如何通过 .NET Remoting 实现双向通信 #### 一、引言 在分布式系统开发中,.NET Remoting 提供了一种高效且灵活的方式来处理远程对象的调用。与传统的请求/响应模型不同,.NET Remoting 支持更复杂的通信模式...
.NET Remoting是微软.NET框架中的一种高级通信机制,它允许分散在不同进程或甚至不同计算机上的对象进行交互,实现跨应用程序域(AppDomain)的通信。这个"DotnetRemoting技术实例实析.rar"压缩包提供了关于.NET ...
Remoting是.NET Framework提供的一种高级通信机制,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至跨越网络。这个“Remoting入门学习程序源码.rar”文件包含了一个学习Remoting基础知识的示例项目,...
项目工程结构如下图所示,除了包含spring定义远程服务org.springframework.remoting.httpinvoker.*部分节点代码(红框框部分,具体设计代码部分参考相关代码示例说明文章),还包含springmvc等其他示例部分可以忽略...
在这个特定的场景中,我们关注的是"双向通信",这是一种高级的Remoting特性,使得客户端和服务端可以互相调用方法,而不仅仅是单向的请求-响应模式。 首先,让我们深入理解什么是Remoting。.NET Remoting允许开发者...
using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Serialization.Formatters; namespace Microshaoft.RemotingObjects.Server { public class RemotingQueueServer { private Queue _queue = ...
.NET Remoting是一种允许对象跨越应用程序域边界进行通信的技术。为了使远程对象能够被其他应用程序访问,.NET框架提供了一种灵活的方式来配置这些对象的行为,而无需修改源代码或重新编译。其中,配置文件起到了至...