零配置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) =>
{
//application
e.Application["Path"] = @"c:\";
//sexxion
e.Session["folder"] = "aaa";
};
多平台支持
EC同时支持Windows .net和mono并不需要根据不同平台调整配置或修改代码
HelloWord下载
http://ec.ikende.com/files/file/HelloWord20140903095823.rar
零配置Socket TCP消息通讯服务容器EC的更多相关文章
- socket TCP简单通讯
socket 服务器 // // main.m // socket_server // // Created by lujunjie on 2016/11/23. // Copyright © 201 ...
- Laravel 服务容器,IoC,DI
DI DI 就是常说的依赖注入,那么究竟什么是依赖注入呢? 打个比方,电脑(非笔记本哈)需要键盘和鼠标我们才能进行操作,这个‘需要’换句话说就是‘依赖’键盘和鼠标. 那么,相应的,一个类需要另一个类才 ...
- Symfony2 学习笔记之服务容器
现在的PHP应用程序都是面向对象开发,所以主要是由对象构成.有的对象可以方便的分发邮件信息而有的可能帮你把信息写入到数据库中.在你的应用程序中,你可能创建一个对象用于管理你的产品库存,或者另外一个对象 ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 干货!手把手教你如何使用第三方通讯服务实现LayIM Socket组件开发。
前言 之前写了一系列的文章,是关于使用ASP.NET SignalR技术实现LayIM的功能对接,有兴趣的同学移步:http://www.cnblogs.com/panzi/p/5767095.htm ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
随机推荐
- mac上抓iphone数据包
iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在 ...
- FizzlerEx —— 另一个HtmlAgilityPack的CSS选择器扩展,
之前我介绍过HtmlAgilityPack的CSS选择器扩展——ScrapySharp,它可以非常方便的实现通过CSS选择器表达式来查询HtmlNode.今天在使用的过程中,发现它不支持nth-chi ...
- sqlite支持各种交集差集 并集操作了
- 关于DCOM的安全性
关于DCOM的安全性 DCOM的安全性设置在注册表中. 2. 通过DCOMCNF.exe可以配置
- Visual Studio 换皮肤
通过字体和颜色修改 Visual Studio 提供了修改配色的入口,你完全可以根据自己的喜好进行自定义,下面就通过该方法把编辑器背景设置成 “豆沙绿”. 选择 工具 / 选项 / 环境 / 字体和颜 ...
- Allegro学习(http://www.asmyword.com/forum.php?mod=forumdisplay&fid=86)
一.资源 1.网站推荐www.eda365.com,里面有很多有用的东西:当然还有官方代理商的网站http://www.pspice.com.cn/: 2.视频教程:有库源电气的视频教程,还有在www ...
- asp.net GDI+绘制多个矩形
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 企业内部从零开始安装docker hadoop 提纲
下载apache 项目 http://mirror.bit.edu.cn/apache/ 下载 centos 7 安装 盘 iso 大约7G 安装 centos7 copy 光盘盘中的 packag ...
- 自动获取socket链接状态
C# TcpClient在连接成功后无法检测连接状态,即使对方关闭了网络连接.以下扩展可检测连接状态: static class TcpClientEx { public static bool Is ...
- 济南学习D2T2__数学分析题
[问题描述]有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则你比较厉害.求你比较厉害的概率.[输入格式]第一行有三个数N,l,r,含义如上描述.接下来一行有N个数代表每一个数的 ...