好的代码应该是方便客户端使用,代码能够自描述,规范化,大众标准化.

而且我相信代码也是有生命的,需要不断的维护它,你以什么样的态度对待它,它就会以同样的态度回敬你,所以在写代码前,先摆好自己的态度(一个心态良好的创造者),只有这样你的生命才会精彩,代码的生命也会精彩.

前面说了简单的框架模型,简单的设计模型,如果具体到客户端使用的话还需要代码模型来描述下,当作集成的sdk说明即可.

生产者如何发送消息:

1:配置服务端地址及名称;

2:注册本身为客户端,并约定一个全局唯一的名称

3:开启代理

4:使用消息总线发送消息.

代码如下:

ISignalRClient.Config("http://localhost:4681/", "GuitarCometService")
.RegisterClient("App2")
.StartProxy();

IMessageBus.Handle(new MessageEnvelope("App1", "Topic1", messageBody)); // 发送Topic1的消息

消费者如何消费消息:

1:配置服务端地址及名称(和上述一样的);

2:注册本身为客户端,并约定一个全局唯一名称(和上述一样的);

3:订阅消息,可以订阅为同步处理消息,也可以异步.

4:开启代理

代码如下:

ISignalRClient.Config("http://localhost:4681/", "GuitarCometService")
.RegisterClient("App1")
.AsyncSubscriber<ICustomer, Customer01>(_currentContainer, "Topic1")
.SyncSubscriber<ICustomer, Customer02>(_currentContainer, "Topic2")
.StartProxy();

以上就是发送消息和消费消息的代码,很清晰也很简单.

分享基于分布式Http长连接框架--代码模型的更多相关文章

  1. 分享基于分布式Http长连接框架--架构模型

    我画了个简单的架构图来帮助说明: 其实为发布订阅架构模式. 生产者和消费者我们统一可理解为客户端,消息中间件可认为是服务端. 生产者和消费者做为客户端要跟服务端交互,则先通过代理订阅服务端,订阅成功后 ...

  2. 分享基于分布式Http长连接框架--设计模型

    追求简单的设计. 也许你的设计功能很强大,但能够在满足你需求的前提下尽量简单明了设计. 当你的设计过于复杂的时候想想是不是有其它路可以走,你站在别人的角度想下,如果别人看了你的设计会不会心领神会,还是 ...

  3. 分享基于分布式Http长连接框架

    第一次在博客园写文章,长期以来只是潜水中.本着不只索取,而要奉献的精神,随笔文章之. 现贡献一套长连接的框架.如下特性: 1:发布者可异步发送消息,消息如果发送失败,可重试发送,重试次数基于配置,消息 ...

  4. 不仅仅是百万级TCP长连接框架 t-io

    t-io: 不仅仅是百万级TCP长连接框架 t-io是基于jdk aio实现的易学易用.稳定.性能强悍.将多线程运用到极致.内置功能丰富的即时通讯框架(广义上的即时通讯,并非指im),字母 t 寓意t ...

  5. Android C# java 长连接框架

    mina框架详解 Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务.虚拟机管 ...

  6. Java Socket长连接示例代码

    SocketListenerPusher.java代码如下: import java.io.IOException; import java.net.InetSocketAddress; import ...

  7. NIO单一长连接——dubbo通信模型实现

    转: NIO单一长连接——dubbo通信模型实现 峡客 1.2 2018.07.15 19:04* 字数 2552 阅读 6001评论 30喜欢 17 前言 前一段时间看了下dubbo,原想将dubb ...

  8. Web 通信 之 长连接、长轮询(转)

    Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...

  9. Web 通信 之 长连接、长轮询(long polling)

    基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...

随机推荐

  1. 【Linux部署 · GIT】在linux系统安装git和配置实现SSH

    领导给了一个不开放ftp的测试库,让我部署项目.拿到一个全新的环境,真是个练手的好机会. 该操作系统为:CentOs release 6.5(Final) 由于不开放ftp,所以上传下载代码是非常麻烦 ...

  2. .net中html转pdf

    最近研究了2天如何把html转为pdf保存的方法,网上找了好多解决方案.总结下来也就是2种 一种是使用js的插件 jspdf  这款插件我试了下,很强大  使用起来也很简单,唯一 一点不好的就是转成p ...

  3. Akka(23): Stream:自定义流构件功能-Custom defined stream processing stages

    从总体上看:akka-stream是由数据源头Source,流通节点Flow和数据流终点Sink三个框架性的流构件(stream components)组成的.这其中:Source和Sink是stre ...

  4. Java jdk 快速配置

    JAVA_HOME C:\Program Files\Java\jdk1.8.0_92   Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;   CLASSPATH ...

  5. H - transaction transaction transaction

    https://vjudge.net/contest/184514#problem/H 题意: 一个商人为了赚钱,在城市之间倒卖商品.有n个城市,每个城市之间有且只有一条无向边连通.给出n个城市的货物 ...

  6. vim代码粘贴缩进混乱的问题[Linux]

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp76   直接在vim插入模式下粘贴: 直接粘贴,剪贴板上的每个字符都相当 ...

  7. 遇到的一些Jquery函数

     jQuery.extend()        jQuery.merge():函数用于合并两个数组内容到第一个数组. <script> $(function () { ,,], [,,] ...

  8. Linux运维:安装CentOS7.2-图解

    矮哥linux运维群: 93324526 笔者QQ:578843228 此篇博文针对最小化安装,和只有图解.有不懂地方,欢迎加群询问.

  9. Web in Linux小笔记001

    Linux灾难恢复: Root密码修复 Centos single Filesystem是硬盘文件根目录,无法再cd ..就像macitosh 硬盘图标 Pwd:显示绝对路径 MBR修复 模拟MBR被 ...

  10. 201521123028 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 Ans: 在这一题中我们需要写两个函数,分别是remove()和convertStringToLis ...