C#及.NET中分布式通信方案综合测评2014-10-05 cnblogs 熬夜的虫子如果你应聘互联网企业的架构师 分布式解决方案属于必问环节 因为流行SOA 关于SOA就不废话了 网上资源很多 重视4个字“基于消息”本篇只测评大家项目中常用的几种Remoting(TCP,HTTP,IPC)WCF(basicHttpBinding,netTcpBinding)HessianMSMQWebService......环境介绍客户机 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