标签:客户端 try except line pch message tty ext orm
IPCChannel是.NET Framework 2.0 里面新增的,它使用 Windows 进程间通信 (IPC) 系统在同一计算机上的应用程序域之间传输消息。在同一计算机上的应用程序域之间进行通信时,IPC 信道比 TCP 或 HTTP 信道要快得多。但是IPC只在本机应用之间通信。所以,在客户端和服务端在同一台机器时,我们可以通过注册IPCChannel来提高Remoting的性能。但如果客户端和服务端不在同一台机器时,我们不能注册IPCChannel。
IpcChannel 执行下列功能:
TcpChannel 类使用二进制格式化程序将所有消息序列化为二进制流,并使用 TCP 协议将该流传输至目标统一资源标识符 (URI)。
TcpChannel 执行下列功能:
HttpChannel 类使用 SOAP 协议在远程对象之间传输消息。所有消息都通过 SoapFormatter 传递,此格式化程序会将消息转换为 XML 并进行序列化,同时向数据流中添加所需的 SOAP 标头。如果还指定了二进制格式化程序,则会创建二进制数据流。随后,将使用 HTTP 协议将数据流传输至目标 URI。
HttpChannel 符合 SOAP 1.1 标准,它执行下列功能:
using System; namespace RemotingMarshal { public class MessageMarshal : MarshalByRefObject { public void SetMes(string messge) { Console.WriteLine(messge); } } }
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Channels.Http; using RemotingMarshal; namespace RemotingService { public class UsersServices { static void Main(string[] args) { //1.Tcp: TcpChannel channel = new TcpChannel(8090); //端口随便取 //2.Http: //HttpChannel channel = new HttpChannel(8090); ChannelServices.RegisterChannel(channel, false); //注册远程对象 RemotingConfiguration.RegisterWellKnownServiceType( typeof(MessageMarshal), "Test", WellKnownObjectMode.SingleCall); Console.Read(); } } }
using System; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Channels.Http; using RemotingMarshal; namespace RemotingClient { public class UsersClient { static void Main() { try { //1.Tcp TcpClientChannel channel = new TcpClientChannel(); ChannelServices.RegisterChannel(channel, false); MessageMarshal mMarshal = (MessageMarshal)Activator.GetObject(typeof(MessageMarshal), "TCP://localhost:8090/Test"); //2.Http //HttpClientChannel channel = new HttpClientChannel(); //RemotingConfiguration.RegisterWellKnownClientType(typeof(MessageMarshal), "http://localhost:8090/Test"); //MessageMarshal mMarshal = new MessageMarshal(); int count = 0; while (true) { mMarshal.SetMes("num:" + count++); System.Threading.Thread.Sleep(1000); } } catch (Exception er) { Console.WriteLine(er.Message); } Console.Read(); } } }
标签:客户端 try except line pch message tty ext orm
原文地址:http://www.cnblogs.com/valor-xh/p/6029635.html