测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)

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信道),大家可以自己测试一下,或研究一个比较好的方法。
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)

测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      //使用Http信道
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    public void Http()
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Stopwatch stopWatch = new Stopwatch();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Start();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      MyObject myObj = (MyObject)Activator.GetObject(typeof(MyObject), "http://localhost:9001/MyObject");
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      myObj.GetServerTime();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Stop();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbHttp.Items.Add(stopWatch.ElapsedTicks);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)     //使用Tcp信道
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    public void Tcp()
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Stopwatch stopWatch = new Stopwatch();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        stopWatch.Start();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      MyObject myObj = (MyObject)Activator.GetObject(typeof(MyObject), "tcp://localhost:9002/MyObject");
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        myObj.GetServerTime();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        stopWatch.Stop();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        lsbTcp.Items.Add(stopWatch.ElapsedTicks);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)     //使用Ipc信道
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    public void Ipc()
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Stopwatch stopWatch = new Stopwatch();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Start();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      MyObject myObj = (MyObject)Activator.GetObject(typeof(MyObject), "Ipc://MyHost/MyObject");
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      myObj.GetServerTime();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Stop();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbIpc.Items.Add(stopWatch.ElapsedTicks);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      //访问Web Service
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    public void WebService()
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Stopwatch stopWatch = new Stopwatch();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Start();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      localhost.Service ws = new localhost.Service();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      ws.GetServerTime();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      stopWatch.Stop();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbWeb.Items.Add(stopWatch.ElapsedTicks);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    private void btnHttp_Click(object sender, EventArgs e)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Http();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    private void btnTcp_Click(object sender, EventArgs e)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Tcp();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    private void btnWebService_Click(object sender, EventArgs e)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        WebService();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    private void btnIpc_Click(object sender, EventArgs e)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Ipc();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)     //开始测试
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    private void btnStat_Click(object sender, EventArgs e)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Int32 Times = int.Parse(txtTimes.Text);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Int64 Sum = 0;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      double Ave=0;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbHttp.Items.Clear();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbIpc.Items.Clear();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbTcp.Items.Clear();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      lsbWeb.Items.Clear();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      for (Int32 i = 0; i < Times; i++)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Http();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Tcp();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Ipc();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        WebService();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)       //计算平均时间
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      for(Int32 i=0;i<Times;i++)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Sum += int.Parse(lsbHttp.Items[i].ToString ());
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Ave = Sum / Times;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      txtHttp.Text = Ave.ToString();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Sum = 0;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      for (Int32 i = 0; i < Times; i++)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Sum += int.Parse(lsbTcp.Items[i].ToString());
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Ave = Sum / Times;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      txtTcp.Text = Ave.ToString();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Sum = 0;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      for (Int32 i = 0; i < Times; i++)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Sum += int.Parse(lsbWeb.Items[i].ToString());
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Ave = Sum / Times;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      txtWebService.Text = Ave.ToString();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Sum = 0;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      for (Int32 i = 0; i < Times; i++)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      {
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)        Sum += int.Parse(lsbIpc.Items[i].ToString());
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Ave = Sum / Times;
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      txtIpc.Text = Ave.ToString();
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)    }
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)HttpChannel httpChannel = new HttpChannel(9001);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      ChannelServices.RegisterChannel(httpChannel,false );
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      TcpChannel tcpChannel = new TcpChannel(9002);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      ChannelServices.RegisterChannel(tcpChannel,false );
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      IpcChannel ipcChannel = new IpcChannel("MyHost");
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      ChannelServices.RegisterChannel(ipcChannel,false );
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      RemotingConfiguration .RegisterWellKnownServiceType (typeof (RemoteObject .MyObject ),"MyObject",WellKnownObjectMode.SingleCall);
测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)      Console.ReadLine();

/Files/zhang3533/RemotingAndWebService.rar

上一篇:MySQL(三)


下一篇:python学习笔记17(动态类型)