1:socket VS remoting
使用socket无疑是效率最高的。但是,在复杂的接口环境下,socket的开发效率也是最低的。故在兼顾开发效率的情况下,可以使用remoting来代替socket开发。并且:
1、Tcp通道的Remoting速度非常快。
你可以通过端口查看工具,发现remoting比直接socket传输的内容,应该是属于同一个数量级的。我的另一个担心是,大客户端数量的情况下,remoting传输效率会不会很低,结果经过现场测试,同时对300个客户端进行数据通信,不存在信息丢失情况。
2、虽然是远程的,但是非常接近于本地调用对象。
也就是完全符合面向对象思想。
3、可以做到保持对象的状态
直接使用socket传输机制,我们必须花大量的精力来处理异常、断网、死机等现象,使用remoting,这些工作会大大简化。
2:remoting vs webservice
1、webservice在framework2.0状态下只能寄宿于IIS等应用服务器中。微软直到3.0才提供了servicehost来寄宿 webservice,这就极大地限制了webservice在使用中的灵活性。在framework2.0环境下,如果你有一个应用要脱离IIS而存 在,就不得不抛弃webservice。(除非你想代码实现一个WEB应用服务器)
2、remoting可寄宿在你自己的代码中,也可寄宿在windows服务及IIS中。最大程度的提供了开发和部署的灵活性。
3、remoting在使用http通道的时候,也如webservice一样支持穿透路由。
4、remoting与websercie相比,提供双向通信。哪怕是将remoting寄宿在IIS中,也支持。
5、webservice客户端自动生成的代理类比较复杂。而remoting一般来说,都是手动编写客户端代码。
6、当然,webservice最主要优势是,它是一个行业标准,而remoting只是微软自己内部的标准,如果你的应用要脱离微软的平台,就只能使用webservice了。
3:remoting vs wcf
与wcf的比较,更多的是从平台的普及度上来说。在当前环境下,2.0的普及度还是最高的。如果哪一天3.0甚至4.0普及了,当然WCF是最好的。
4:最简单例子
下面给出一个极其简单的Sample:
4.1远程对象
首先,创建一个项目,名为 RemoteObject,该项目经过编译后产生的DLL文件要在remoting客户端的项目和服务器端的项目中被引用。该项目包含一个类 MyObject, 即 Remoting使用的远程对象,如下:
using System;
using System.Windows.Forms;
namespace RemoteObject
{
public class MyObject : MarshalByRefObject
{
private int i = 0;
public int Add(int a, int b)
{
return a + b;
}
public int Count()
{
return ++i;
}
}
}
4.2Server端
新建项目 RemoteServer(控制台), Server端要引用MyObject的DLL。
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace RemoteServer
{
class MyServer
{
[STAThread]
static void Main(string[] args)
{
TcpServerChannel channel = new TcpServerChannel(9999);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject.MyObject),
"RemoteObject", WellKnownObjectMode.SingleCall);
System.Console.WriteLine("Press Any Key");
System.Console.ReadLine();
}
}
}
4.3Client端
新建项目 RemoteClient(控制台), Client端也要引用MyObject的DLL。
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace RemoteClient
{
class MyClient
{
[STAThread]
static void Main(string[] args)
{
ChannelServices.RegisterChannel(new TcpClientChannel());
RemoteObject.MyObject remoteobj = (RemoteObject.MyObject)Activator.GetObject(typeof(RemoteObject.MyObject),
"tcp://localhost:9999/RemoteObject");
Console.WriteLine("1 + 2 = " + remoteobj.Add(1, 2).ToString());
Console.WriteLine("i = " + remoteobj.Count().ToString());
Console.ReadLine();
}
}
}
好了,一次运行生成的RemoteServer.exe和RemoteClient.exe ,你就会发现原来Remoting是这样简单。
分享到:
相关推荐
**标题:“WCF 与WebService 和Remoting性能比较”** **描述分析:** 该主题旨在探讨Windows Communication Foundation (WCF)、Web Services (WebService)以及Remoting这三种.NET框架下的远程通信技术在性能上的...
C#.NET Remoting与Web服务是两种不同的分布式应用程序通信机制,它们都允许.NET应用程序在不同进程或计算机之间共享数据和功能。理解这两种技术的核心概念、差异以及适用场景是提升开发能力的关键。 首先,C#.NET ...
本项目“Remoting和原生Socket通讯测试”旨在探讨和比较这两种通信方式在实际应用中的性能和特性。 首先,让我们深入了解一下Remoting。.NET Remoting是微软.NET框架提供的一种高级通信机制,它允许对象在不同的...
remoting与webservice的区别
由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。 2、互操作性 由于WCF最基本的...
WCF是微软提出的一种全面的服务架构,它集成了.NET Framework中的多种通信技术,如.NET Remoting、Web Services、Message Queuing(MSMQ)等,提供了一种统一的方式来创建和部署跨网络、进程甚至跨计算机的分布式...
总结来说,WEB服务、Remoting和WCF都是.NET中用于构建分布式系统的关键技术,各有特点和适用场景。WEB服务侧重于基于标准的跨平台通信,Remoting提供高效但封闭的.NET内通信,而WCF则是统一的、高度可配置的通信框架...
首先,我们需要明确Remoting和WebService都是分布式应用中的通信技术,它们允许不同系统之间的组件相互通信。尽管两者在实现原理上没有本质区别,它们在应用开发层面上却有着显著的不同。 1. Remoting(远程调用)...
6. **测试和调试**:使用工具如Postman或Web Service客户端测试你的新Web Service,确保其功能与原始的Remoting服务相同。 7. **更新客户端**:最后,更新所有依赖于原Remoting服务的客户端代码,使它们指向新的Web...
下面我们将对Webservice和Remoting的区别进行详细的分析和比较。 Webservice Webservice是一种基于SOAP、WSDL和UDDI的技术,用于实现不同平台和应用系统之间的协同工作能力。Webservice的主要目的是提供在各个不同...
深入浅出对比remoting与webservice的区别 很详细的说明2种技术使用场景
- **安全性与可靠性**:WCF支持WS-Security、WS-ReliableMessaging等一系列高级特性,提供了比.NET Remoting和Web Service更为强大和全面的安全保障和消息可靠性支持。 - **性能与状态管理**:.NET Remoting在某些...
通过深入研究这个源代码,开发者可以学习到如何在C#环境中使用Socket和Remoting进行分布式系统开发,这对于构建大型、复杂的企业级应用是非常有价值的。同时,它也是一个很好的起点,可以帮助初学者理解网络通信和...
WCF是微软.NET框架中用于创建分布式应用程序的服务模型,它整合了.NET Framework 2.0之前的多种通信技术,如ASP.NET Web Services、Remoting、Message Queuing (MSMQ) 和Enterprise Services。这个群聊软件提供了...
请注意,虽然Remoting在.NET Framework中是一个强大的工具,但在.NET Core和.NET 5及更高版本中已被弃用,推荐使用WCF(Windows Communication Foundation)或更现代的gRPC等技术来实现远程通信。
【WCF与WebService的异同、优势】 一、定义 1. WebService: WebService是一种行业标准,基于XML(可扩展标记语言)来表达数据,确保跨语言和平台的兼容性。微软通过ASP.NET Web Service实现了这一标准,使用SOAP...
Remoting技术是.NET ...不过,随着WCF(Windows Communication Foundation)和现在的gRPC等现代通信框架的出现,Remoting在新项目中的使用已经减少,但在维护旧系统或理解分布式系统设计时,仍然是一个重要的知识点。
常用的分布式技术有COM+、.NET远程技术(Remoting)、Web Service和微软消息队列服务,WCF技术将这些分布式技术整合为一个高效的API。常用的那些分布式技术只能解决项目开发中某个方面的问题,并且不同技术对平台...
本文将深入探讨.NET Remoting在构建分布式系统中的角色,以及与其他分布式技术如Socket、ASP.NET Web Service、WSE和WCF的比较。 首先,让我们看看Socket和.NET Remoting之间的差异。Socket是底层网络通信的基础,...