有两种通道来使用最新的网络通讯组件Indigo:typeed 和untyped,typed channel是通过Server端的WSDL,即通过自动自动生成的interface,很明显,我们要遵守一个契约。另一个方面,我们可以使用untyped channel,在这个通道里,我们只是从一端到另一端传递最基本的Message(Indigo中的最基本单元),没有协议需要遵守,通常基于一个action URI.
看一个sample:

using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

using System.MessageBus;

The client:

class Client

{

[STAThread]

static void <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Main(string[] args)

{

Uri client = new Uri(String.Format("soap.tcp://{0}:6000/Client", System.Environment.MachineName));

Uri server = new Uri(String.Format("soap.tcp://{0}:6001/Server", System.Environment.MachineName));

Console.WriteLine("Client - {0}", client.ToString());

Uri action = new Uri("http://tempuri.org/action1");

Message message = new Message(action, "Hello");

message.Headers.Add(new PathHeader(server));

message.Headers.Add(new ToHeader(server));

message.Headers.Add(new ReplyInfoHeader(client));

Port port = new Port(client);

port.Open();

port.SendChannel.Send(message);

port.Close();

}

}

The Server:

class Server

{

[STAThread]

static void Main(string[] args)

{

Uri server = new Uri(String.Format("soap.tcp://{0}:6001/Server", System.Environment.MachineName));

Port port = new Port(server);

ServerMessageHandler handler = new ServerMessageHandler();

port.ReceiveChannel.Handler = handler;

port.CloseTimeout = new TimeSpan(1, 0, 0, 0);

port.Open();

Console.WriteLine("Server - {0}", server.ToString());

Console.ReadLine();

}

}

public class ServerMessageHandler : SyncMessageHandler

{

public override bool ProcessMessage(Message message)

{

string content = message.Content.GetObject(typeof(string)) as string;

Console.WriteLine(content);

Console.ReadLine();

return true;

}

}
看上去和remoting有点类似,其实编程方式更加简洁,更好理解。

转载于:https://www.cnblogs.com/coollzh/archive/2004/10/18/53962.html

Indigo Untyped Channel相关推荐

  1. 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~

    通过网页快速了解Linux(Ubuntu)和ROS机器人操作系统,请参考实验楼在线系统如下: 初级教程可参考:https://www.shiyanlou.com/courses/854 邀请码:U23 ...

  2. Go 知识点(08) — 对未初始化的 channel 进行读写操作

    1. 对未初始化的 channel 进行写操作 先看下面代码 func main() {var ch chan int // 只声明,并没有初始化fmt.Printf("ch is %v\n ...

  3. Go 知识点(03)— 非缓冲 channel 的长度始终为 0

    我们先看下面代码输出通道的长度是多少? func main() {ch := make(chan string)go func() {ch <- "hello"close(c ...

  4. Go 学习笔记(25)— 并发(04)[有缓冲/无缓冲通道、WaitGroup 协程同步、select 多路监听通道、close 关闭通道、channel 传参或作为结构体成员]

    1. 无缓冲的通道 无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道. 这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能 ...

  5. Go 分布式学习利器(20)-- Go并发编程之多路选择和超时控制,channel的关闭和广播

    Select 多路选择 基本使用语法如下: select {case ret := <-retCh1: //阻塞事件,等待channel1的消息t.Logf("result %s \n ...

  6. Java NIO系列教程(二) Channel

    为什么80%的码农都做不了架构师?>>>    Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写 ...

  7. Go语言的Channel文章,整个人都感觉不好了

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. Go的Channel是一个很强大的并发数据模型,在一个发送者和多个消费者情况下工作得最好,但是如果是多个发送者,那么在C ...

  8. Netty Channel源码分析

    原文:https://wangwei.one/posts/netty-channel-source-analyse.html 前面,我们大致了解了Netty中的几个核心组件.今天我们就来先来介绍Net ...

  9. POJ-1129 Channel Allocation DFS搜索

    题意:给定一张图,现在对这张图进行染色,且相邻的两个点的颜色不能够相同,问最少要用多少种颜色? 思路:有一下贪心思路,对于没一个节点,我们对其周围的结点进行遍历,对有颜色的邻节点的颜色进行统计,选取一 ...

  10. go channel 缓冲区最大限制_GO语言圣经学习笔记(八)Goroutines和Channels

    奋斗鸭!Day97 知识点 goroutinue 基本用法 golang非常深度的简化了goroutinue的使用方法,异常简单,门槛降低很多 // goroutinue 使用非常简单go f() G ...

最新文章

  1. 网站真分页js代码该怎么写? 1
  2. poj 2078(搜索+剪枝)
  3. 第三次个人赛题目2 【多项式输出格式】
  4. 没有bug队——加贝——Python 练习实例 35,36
  5. lstm原始论文_RNN及其改版(LSTM, 双向RNN, seq2seq)总结
  6. idea与myeclipse或eclipse使用编译时的区别
  7. html图片轮播幻灯片,JS+css3实现幻灯片轮播图
  8. SCUT J.O: 百步梯
  9. c语言环比,同比、环比的区别及计算公式
  10. php在线编辑器脚本,PHP如何搭建百度Ueditor富文本编辑器
  11. iso硬盘安装 凤凰os_虚拟机安装凤凰系统(PhoenixOS)教程
  12. 社交产品盈利方式产品模式设计案例
  13. 有关H5第八章的页面布局与规划介绍
  14. 十分钟入门Visio,不行来砍我!
  15. Nao机器人运行B-human代码之开始篇 1
  16. 公司人才中介平台的设计与实现
  17. spss基本总结——因子分析
  18. 苹果手机拷贝功能 php,苹果iPhone上的“通用剪贴板”到底是什么?
  19. OpenDDS Java开发(一):理解Messenger示例
  20. 影响计算机串口接收速度的因素,如何提高串口通信速度

热门文章

  1. c语言自治区二级考试题库,新疆自治区计算机二级c语言考试题库---副本.pdf
  2. java删除文件夹分享企,java删除文件夹下所有文件示例分享
  3. linux打开文件程序,linux – 获取打开特定文件的应用程序列表
  4. android asynctask源码分析,Android异步任务AsyncTask的使用与原理分析
  5. a.使用new关键字产生对象会调用构造方法_七夕面向对象编程,你知道Java有哪些创建对象的方式吗?...
  6. 381.O(1)时间插入、删除和获取随机元素-允许重复
  7. 30. 与所有单词相关联的字串
  8. 数据库创建索引的规则
  9. 电脑已安装软件提取安装包_SPSS 24,软件安装包及安装教程
  10. 搭建springmvc项目遇到的问题