博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跟着Artech学习WCF扩展(1) Binding进行通信
阅读量:6450 次
发布时间:2019-06-23

本文共 3132 字,大约阅读时间需要 10 分钟。

这个demo简单 就一个服务器段的一个客户端的 主要是注释

Server的

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ServiceModel;using System.ServiceModel.Channels;namespace QqServer{    class Program    {        static void Main(string[] args)        {            //创建Uri对象,代表监听的URI:             Uri address = new Uri("http://127.0.0.1:9999/messagingviabinding");            //创建BasicHttpBinding对象,我们正是通过它来使用所有的通信功能:            BasicHttpBinding binding = new BasicHttpBinding();            //通过binding对象创建IChannelListener对象,并调用Open方法打开它:            IChannelListener
channelListener = binding.BuildChannelListener
(address); channelListener.Open(); //通过IChannelListener对象创建IReplyChannel 并调用Open方法打开它: IReplyChannel channel = channelListener.AcceptChannel(); channel.Open(); Console.WriteLine("Begin to listen "); while (true) { //在While循环中监听来自client端的request,一旦request抵达, //调用IReplyChannel 的ReceiveRequest方法,并得到一个RequestContext 对象, //通过RequestContext 对象可以得到request message并打印出来: RequestContext context = channel.ReceiveRequest(new TimeSpan(1, 0, 0)); Console.WriteLine("Receive a request message:\n{0}", context.RequestMessage); //创建一个Reply message,借助得到的RequestContext 对象发送回client端: Message replyMessage = Message.CreateMessage(MessageVersion.Soap11, "http://artech.messagingviabinding", "This is a mannualy created reply message for the purpose of testing"); context.Reply(replyMessage); } } }}Client端的
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ServiceModel;using System.ServiceModel.Channels;using System.Xml;namespace QqClient{    class Program    {        static void Main(string[] args)        {            //创建EndpointAddress 对象,这和Server的Uri一致,代表请求的地址            EndpointAddress address = new EndpointAddress("http://127.0.0.1:9999/messagingviabinding");            //创建BasicHttpBinding对象,通过实现向Server端的发送Request,并接收Reply:            BasicHttpBinding binding = new BasicHttpBinding();            //通过Binding对象创建IChannelFactory对象并调用Open方法打开它:            IChannelFactory
chananelFactory = binding.BuildChannelFactory
(); chananelFactory.Open(); //通过IChannelFactory对象创建IRequestChannel 对象并调用Open方法打开它: IRequestChannel channel = chananelFactory.CreateChannel(address); channel.Open(); //创建Request message通过Channel对象发送到Server端, //Request方法调用会返回一个Message对象代表从Server端发送回来的Reply message: Message requestMessage = Message.CreateMessage(MessageVersion.Soap11, "http://artech/messagingviabinding", "The is a request message manually created for the purpose of testing."); Message replyMessage = channel.Request(requestMessage); Console.WriteLine("Receive a reply message:\n{0}", replyMessage); channel.Close(); chananelFactory.Close(); Console.Read(); } }}

转载地址:http://faowo.baihongyu.com/

你可能感兴趣的文章
splice和sendfile
查看>>
基于rsync+inotify实现数据实时同步传输
查看>>
【No.11 默认实参的匹配】
查看>>
一键生成表结构说明文档的参考,数据字典生成方式参考
查看>>
CCNP课堂练习一:详解交换机vlan的介绍及通过交换机从逻辑上划分区域配置
查看>>
awk实际应用:文本合并
查看>>
Silverlight发布时的优化工作(2)
查看>>
Visual Studio 2010 Ultimate测试体系结构
查看>>
推荐《认知与设计——理解UI设计准则》读书笔记
查看>>
Windows 2003 AD升级至Windows 2012 AD之DHCP服务器迁移
查看>>
创建和管理表
查看>>
手机视频开发包
查看>>
Nagios短信报警功能通过飞信实现
查看>>
活动目录系列之一:基本概念
查看>>
DNS原理介绍和具体搭建DNS
查看>>
MDOP中的诊断和恢复工具——DaRT
查看>>
mysql dba系统学习(17)mysql的备份和恢复的完整实践
查看>>
Flink SQL 功能解密系列 —— 流计算“撤回(Retraction)”案例分析
查看>>
MS虚拟化架构部署XenDesktop5系列五
查看>>
Properties 类的使用
查看>>