Welcome

首页 / 软件开发 / C# / C#及.NET中分布式通信方案综合测评

C#及.NET中分布式通信方案综合测评2014-10-05 cnblogs 熬夜的虫子如果你应聘互联网企业的架构师 分布式解决方案属于必问环节 因为流行SOA 关于SOA就不废话了 网上资源很多 重视4个字“基于消息”

本篇只测评大家项目中常用的几种

Remoting(TCP,HTTP,IPC)

WCF(basicHttpBinding,netTcpBinding)

Hessian

MSMQ

WebService

......

环境介绍

客户机 windows Xp   服务器 windows2003(虚拟机)

带宽2M

测试环境和线上环境差距比较大 我们看相对性就可以了

所有方案基于相同远程对象

public class DtoClass : MarshalByRefObject{public static Message GetMessageInfo(string param1, int param2, bool param3){var dto = new Message {Param1 = param1, Param2 = param2, Param3 = param3};return dto;} } [Serializable]public class Message{public string Param1 { get; set; }public int Param2 { get; set; }public bool Param3 { get; set; } } public interface IMaoyaTest{Message GetDto(string param1, int param2, bool param3);} [ServiceContract]public interface IWcfMaoyaTest{[OperationContract]Message GetDto(string param1, int param2, bool param3);}
不同的通信方案 客户端请求相同的对象

例如  remoting

public Message TcpSingleCall(){var proxy = (IMaoyaTest)Activator.GetObject(typeof(IMaoyaTest), "tcp://192.168.234.129:8001/MaoyaTestURL");return proxy.GetDto("chongzi", 10, true); }
hsssian

public Message HessianTest(){var factory = new CHessianProxyFactory("userName", "password");const string url = "http://192.168.234.129/HessianService.hessian";var hessianinstance = (IMaoyaTest)factory.Create(typeof(IMaoyaTest), url);return hessianinstance.GetDto("chongzi", 10, true); }
不同的通信方案对远程对象进行不同的处理

例如 remoting

public class RemotingTest : MarshalByRefObject,IMaoyaTest { public Message GetDto(string param1, int param2, bool param3) { return DtoClass.GetMessageInfo("remoting:"+param1,param2+1,param3); } }
hsssian

public class MaoyaService : CHessianHandler, IMaoyaTest { public Message GetDto(string param1, int param2, bool param3) { return DtoClass.GetMessageInfo("HessianService:" + param1, param2 + 3, param3); } }
本文URL地址:http://www.bianceng.cn/Programming/csharp/201410/45482.htm