测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
2015-05-29 13:21
495 查看
Remoting和Web Service是.net中的重要技术,都可用来实现分布式系统开发,如果是不同的平台就只能选择Web Service,但如果是同一平台,就都可以选择了。到底选择那种,当然还有访问效率上的考虑,同时在Remoting中又有三中信道Http,Tcp,Ipc,它们又各有差别。HTTP方式的信道在跨越防火墙上有优势;TCP方式的信道常用在局域网内通信,速度比HTTP快很多;IPC信道用于同一台机器的进程间通信,通信不占用网络资源,速度又比TCP快很多。为了能够实际的比较一下这四者的实际访问速度,我写了个小程序用测试。这个程序的实现很简单利用Remoting三种信道和Web Service 访问同一个对象(相当于实际项目中的业务层),而这个对象实现返回系统的时间。就这么简单。如果有对Remoting和Web Service不太了解的,也可以通过我这个例子熟悉一下Remoting三种信道的写法差别和Web Service的调用。
下面是程序运行的界面,我使用.net中的最小时间度量:刻度(用毫秒在本机上可能都很难测出它们之间的差别),来测试每次调用所发的时间,并通过多次调用来测的一个平均时间来比较访问的速度。通过测试可以看得出他们四者得访问速度:ipc>tcp>http>Web Service.(其实Remoting的http信道和Web Service的访问速度还有待比较,跟测试的主机还有一定关系,在我办公室里的一台电脑上好像Web service的访问速度更快于http信道),大家可以自己测试一下,或研究一个比较好的方法。
//使用Http信道
public void Http()
//使用Tcp信道
public void Tcp()
//使用Ipc信道
public void Ipc()
//访问Web Service
public void WebService()
private void btnHttp_Click(object sender, EventArgs e)
private void btnTcp_Click(object sender, EventArgs e)
private void btnWebService_Click(object sender, EventArgs e)
private void btnIpc_Click(object sender, EventArgs e)
//开始测试
private void btnStat_Click(object sender, EventArgs e)
HttpChannel httpChannel = new HttpChannel(9001);
ChannelServices.RegisterChannel(httpChannel,false );
TcpChannel tcpChannel = new TcpChannel(9002);
ChannelServices.RegisterChannel(tcpChannel,false );
IpcChannel ipcChannel = new IpcChannel("MyHost");
ChannelServices.RegisterChannel(ipcChannel,false );
RemotingConfiguration .RegisterWellKnownServiceType (typeof (RemoteObject .MyObject ),"MyObject",WellKnownObjectMode.SingleCall);
Console.ReadLine();
/Files/zhang3533/RemotingAndWebService.rar
下面是程序运行的界面,我使用.net中的最小时间度量:刻度(用毫秒在本机上可能都很难测出它们之间的差别),来测试每次调用所发的时间,并通过多次调用来测的一个平均时间来比较访问的速度。通过测试可以看得出他们四者得访问速度:ipc>tcp>http>Web Service.(其实Remoting的http信道和Web Service的访问速度还有待比较,跟测试的主机还有一定关系,在我办公室里的一台电脑上好像Web service的访问速度更快于http信道),大家可以自己测试一下,或研究一个比较好的方法。
//使用Http信道
public void Http()
//使用Tcp信道
public void Tcp()
//使用Ipc信道
public void Ipc()
//访问Web Service
public void WebService()
private void btnHttp_Click(object sender, EventArgs e)
private void btnTcp_Click(object sender, EventArgs e)
private void btnWebService_Click(object sender, EventArgs e)
private void btnIpc_Click(object sender, EventArgs e)
//开始测试
private void btnStat_Click(object sender, EventArgs e)
HttpChannel httpChannel = new HttpChannel(9001);
ChannelServices.RegisterChannel(httpChannel,false );
TcpChannel tcpChannel = new TcpChannel(9002);
ChannelServices.RegisterChannel(tcpChannel,false );
IpcChannel ipcChannel = new IpcChannel("MyHost");
ChannelServices.RegisterChannel(ipcChannel,false );
RemotingConfiguration .RegisterWellKnownServiceType (typeof (RemoteObject .MyObject ),"MyObject",WellKnownObjectMode.SingleCall);
Console.ReadLine();
/Files/zhang3533/RemotingAndWebService.rar
相关文章推荐
- ASP.NET 管道事件与HttpModule, HttpHandler简单理解
- http、TCP/IP协议与socket之间的区别
- 大端、小端判断
- Linux下tcp协议socket的recv函数返回时机分析(粘包)
- WEB_Forbidden
- Lua下基本的网络编程示例
- TCP三次握手
- 支付宝携程难敌蓝翔挖掘机 谁来捍卫脆弱的网络应用
- Olrace 监听程序配置、配置Net网络服务名
- Oracle11g_https://localhost:1158/em 页面无法打开
- Linux部署http和https协议步骤
- 网络协议的详细讲解,Socket和TCP/IP还有HTTP
- https://github.com/ 英文库
- 径向基函数(RBF)神经网络
- 如何做好网络营销
- HTTPS那些事(二)SSL证书
- android判断网络是否可用
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- 看懂信息检索和网络数据挖掘领域论文的必备知识总结
- https之SSL/TLS协议分析