惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
M
MIT News - Artificial intelligence
L
LangChain Blog
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
Recent Announcements
Recent Announcements
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 聂微东
U
Unit 42
Martin Fowler
Martin Fowler
腾讯CDC
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky

博客园 - coollzh

关于.NET VS JavaEE平台争论的沉思录 不要使用Microsoft Project的理由 Using distributed transactions in .Net 1.x without deriving from ServicedComponent .NET下的开发者们正在继承计算机早期时代伟大的黑客精神 上海著名网络公司招聘高级软件工程师 即将过的2004 URLRewriting的问题 谁知道c++中的char ** 在C#中一般用什么类型 VC#2005 最新技术预览版下周发布 上海某著名互联网公司招聘asp.net/.net开发工程师 Coming soon: “Enterprise Library” .net framework1.1到2.0的重大变化 Windows 2003 中DTC的怪事情 动态Validator的奇怪问题 一件及其汗的事! sql server2000 在windows2003的默认安装客户端无法连接 msn”给你一个惊喜“的病毒 DataReader的问题 35岁前应该做好的十件事
Indigo Untyped Channel
coollzh · 2004-10-18 · via 博客园 - coollzh

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

using System;

using System.MessageBus;

The client:

      class Client

      {

            [STAThread]

            static void 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有点类似,其实编程方式更加简洁,更好理解。