零配置Socket TCP消息通讯服务容器EC
EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono。通过EC容器可以让开发人员在不了解Socket网络通讯知识和不进行任何配置的情况即可把逻辑应用部署到一个网络通讯服务中。EC的目标让开发人员在编写传统Socket网络通讯服务的时候就象编写asp.net应用一样简单,只需要定义消息和控制器方法即可实施一个基于网络Socket通讯应用服务程序。
以下通过一个HelloWord例程来表述一下EC在这方面的简单灵活性;通过EC编写服务只需要从业务上来分析问题,分析一下场景先发起一个hello请求服务器,然后服务根据内容应答。
定义行为消息
[MessageID(0x1)][ProtoContract]public class Hello{[ProtoMember(1)]public string Name { get; set; }}
定义行为方法
[Controller]public class Program{static void Main(string[] args){ECServer.Open();System.Threading.Thread.Sleep(-1);}public string HelloWord(ISession session,Hello e){return string.Format("hello {0} [say time:{1}]", e.Name, DateTime.Now);}}
请求发起
string result=mClient.Send<string>(new Hello { Name="henry" });
以上就是EC的HelloWord的完整实现,从整个实现过程中是完全不用关心网络方面的事情,也不用关心消息和控制器是如何由EC接管的,只需要执行ECServer.Open()方法服务即可启动;从易用性从上面的示例已经可以表述出来,以下讲述一下EC的整体结构。
EC结构
EC的最表层Application由ECServer.Open()内部自行创建并启动,在Application下层主要有协议分析器PacketAnalyzer,消息处理中心MessageCenter,用户会话session和应用模块AppModel.
- PacketAnalyzer
协议分析器,主要用于网络流数据和消息对象转换的定义;为了方便应用EC内置集成了protobuf的协议分析器,后面会介绍这个协议的规范.
- MessageCenter
消息处理中心,主要用于消息控制器分发和执行.
协议
为了能实现可即用,EC针对protobuf提供默认的分析器,开发人员只需要通过protobuf规划定义消息即可挂载了EC容器中.协议结构如下:
协议定义比较简单byte[4]消息长度,消息主要分两大部分:消息类型(byte[2])和消息protobuf流.
Filter
如果用过asp.net mvc的朋友对Filter感觉应该不会陌生,由于EC也是基于控制器行为来处理消息,所以同样支持Filter功能.通过Filter可以方便统一地对所有请求进行验证,错误处理和日志跟踪等功能.
[Controller]public class Controller{[SkipFilter(typeof(LoginFilter))][ThreadPool]public User Regisetr(ISession session, User user){user.CreateTime = DateTime.Now;"Register invoke[Name:{0} Email:{1}]".Log4Debug(user.Name, user.EMail);return user;}[AdminFilter]public IList<User> Search(ISession session, Query query){"Search invoke".Log4Debug();List<User> users = new List<User>();users.Add(new User());users.Add(new User());return users;}}
会话状态
EC提供两种会话状态保存分别基于全局的applicatoin和连接的session.
application.MethodProcess += (o, e) =>{//applicatione.Application["Path"] = @"c:\";//sexxione.Session["folder"] = "aaa";};
多平台支持
EC同时支持Windows .net和mono并不需要根据不同平台调整配置或修改代码
HelloWord下载
http://ec.ikende.com/files/file/HelloWord20140903095823.rar
下载更多的例程代码
零配置Socket TCP消息通讯服务容器EC相关推荐
- 简单易懂的Socket TCP网络通讯知识-消息协议和数据包
不管用的是什么样的协议方式,基本通讯的原理 到底层 都是 byte[]数组 传递. 1.协议的定义 协议本身只是 通讯时候 前后端 定义的变量类型和顺序的集合. 比如说,要做一个登陆的消息传递, 需要 ...
- BeetleX之TCP消息通讯Protobuf/TLS
在网络通讯应用中直接操作数据流是比较繁琐的事情,毕竟在业务层面处理的都是对象化消息:为了让网络数据操作变得更友好直观,一般都会引用序列化组件来处理网络流和对象之前的转换工作:在这里介绍组件如何使能Pr ...
- Laravel服务容器
DI DI就是常说的依赖注入,那么究竟什么是依赖注入呢? 打个比方,电脑(非笔记本哈)需要键盘和鼠标我们才能进行操作,这个'需要'换句话说就是'依赖'键盘和鼠标. 那么,相应的,一个类需要另一个类才能 ...
- JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!
本文主要介绍如何利用socket实现实时接收服务端发送的TCP消息. 目录 一.需要掌握 二.程序源码 三.运行演示 一.需要掌握 网络调试助手下载:https://www.aliyundrive.c ...
- socket客户端和服务器通信协议,51. Socket服务端和客户端使用TCP协议通讯
Socket服务器是网络服务中常用的服务器.使用 go 语言实现这个业务场景是很容易的. 这样的网络通讯,需要一个服务端和至少一个客户端. 我们计划构建一个这样的通讯过程.服务端启动后等待客户端的访问 ...
- Esp8266学习之旅⑧ 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。(带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- 配置中心、消息队列、分布式服务链路跟踪
配置中心 配置中心定义 配置中心目的 配置中心选型 开源配置中心 选型对比 配置中心是AP模型? 比如将超时时间从100毫米修改为200毫米1秒后生效还是1分钟生效都没有关系无非是用户体验的问题 1秒 ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- php winform通信,C# Winform 通过Socket实现客户端和服务端TCP通信
操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...
最新文章
- php安装redis扩展模块
- python多功能文本编辑器_多功能文本编辑器(EditPad Pro)
- 数据库php性别显示on,使用PHP连接MySQL时,提示信息为“Unknown database 'xxxx' in yyy.php on line 23”,其意思是...
- 电脑下面的任务栏怎么取消隐藏_电脑桌面右下方任务栏的小图标如何隐藏
- win7安装git客户端和简单配置
- [html] 你最喜欢H5的哪些功能?为什么?
- mysql 主键长度_MySQL 数据库,主键为何不宜太长长长长长长长长?
- Java 主流垃圾收集器
- Type mismatch: cannot convert from int to byte
- CodeChef June Challenge 2017
- 从无到有构建计算机网络
- 每日一坑:不支援 10 验证类型。请核对您已经组态 pg_hba.conf 文件包含客户端的IP位址或网路区段,以及驱动程序所支援的验证架构模式已被支援。
- SOA联姻IMS对3G无线网络是福是祸?
- 如何批量打印 带图片名字的图片?Word 宏命令
- synchronized和Lock的异同
- 为 Surface Pro 3 全新安装 Windows 10 技术预览版
- 如何使用Mezzanine
- 4043:GPA排名系统
- AD软件中的pcbdoc、schdoc等类似一些文件的图标变成了白板解决办法
- 阿里云崩“出圈”了!保护业务还得加一道同云跨可用区容灾!