wcf通过binding进行通信

服务端

class Program
    {
        static void Main(string[] args)
        {
            Uri listenURI = new Uri("http://127.0.0.1:9988/listener");
            Binding basicBinding = new BasicHttpBinding();

            //通过绑定构建信道监听器工厂
            IChannelListener<IReplyChannel> channelListener = basicBinding.BuildChannelListener<IReplyChannel>(listenURI);
            channelListener.Open();

            //创建监听信道
            IReplyChannel channel = channelListener.AcceptChannel(TimeSpan.MaxValue);
            channel.Open();
            Console.WriteLine("正在监听。。。。");

            while (true)
            {
                //接受客户端的调用请求
                RequestContext context = channel.ReceiveRequest(TimeSpan.MaxValue);
                Console.WriteLine("接受到消息" + context.RequestMessage);
                context.Reply(CreateReplyMessage(basicBinding));
            }
        }

        static Message CreateReplyMessage(Binding binding)
        {
            string action = "urn:abc";
            string body = "reply ";
            return Message.CreateMessage(binding.MessageVersion, action, body);
        }
    }

 

客户端

static void Main(string[] args)
        {
            Uri listenURI = new Uri("http://127.0.0.1:9988/listener");
            Binding basicHttpBinding = new BasicHttpBinding();

            //通过banding创建一个请求的的信道工厂
            IChannelFactory<IRequestChannel> channelFactory = basicHttpBinding.BuildChannelFactory<IRequestChannel>();

            channelFactory.Open();

            EndpointAddress endpointAddress = new EndpointAddress(listenURI);
            //通过信道工厂创建信道
            IRequestChannel requestChannel = channelFactory.CreateChannel(endpointAddress);

            requestChannel.Open();
            Message replyMessage = requestChannel.Request(CreateRequestMessage(basicHttpBinding));
            Console.WriteLine("正在创建请求");
            Console.WriteLine("已经回复的请求:"+ replyMessage);
        }

        static Message CreateRequestMessage(Binding binding)
        {
            string action = "urn:abc";
            string body = "this is request";
            return Message.CreateMessage(binding.MessageVersion, action, body);
        }

 

posted @ 2013-11-30 08:57  feidaochuanqing  阅读(241)  评论(0)    收藏  举报