零配置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

下载更多的例程代码

时间: 2024-10-09 00:12:52

零配置Socket TCP消息通讯服务容器EC的相关文章

零配置socket消息通讯容器EC

EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono.通过EC容器可以让开发人员在不了解Socket网络通讯知识和不进行任何配置的情况即可把逻辑应用部署到一个网络通讯服务中.EC的目标让开发人员在编写传统Socket网络通讯服务的时候就象编写asp.net应用一样简单,只需要定义消息和控制器方法即可实施一个基于网络Socket通讯应用服务程序. 以下通过一个HelloWord例程来表述一下EC在这方面的简单灵活

基于netty4的tcp消息转发服务--外包接的一个小项目

git地址 https://git.oschina.net/cggxx/CubeBox.git 分包 tcp分包采用的格式是 消息类型两个字节 | 内容长度两个字节 | 内容 长连接 tcp长连接使用心跳保证连接 连接验证 和客户端约定验证算法,具体看代码. 这是个人接的一个小项目,现在已经上线,连接物联网用的,由于交了代码后,没拿到钱,于是就当小项目开源了.本来打算用zookeeper建立集群的,后来懒,整了一半没弄完,以后再加

Symfony2 学习笔记之服务容器

现在的PHP应用程序都是面向对象开发,所以主要是由对象构成.有的对象可以方便的分发邮件信息而有的可能帮你把信息写入到数据库中.在你的应用程序中,你可能创建一个对象用于管理你的产品库存,或者另外一个对象处理来自第三方API的数据.重要的是现在应用程序要做的这些事情都是被组织到许许多多的对象中来处理它的每一项任务的. 我们将套路一下Symfony2中一个特殊的PHP对象,它帮助我们实例化,组织和获取你应用程序汇总的许多对象.这个对象叫做服务容器,它可以帮助你使用标准统一的方式来创建你程序中的对象.它

分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用的程序之中写数据库轮循代码,这样就会产品一个很严重的两个问题,第一个问题是延迟,轮循机制要定时执行,必须会引起延迟,第二个问题是数据库压力过大,当进行高频度的轮循会生产大量的数据库查询,并且如果有大量的使用者进行轮循,那数据库的压力就更大了. 那么在这个时间,就需要一套能支持发布-订阅模式的分布式消

分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.NET Socket Tcp 技术实现的分布消息总线,也是一个简单的发布订阅框架: 并且以案例的形式为大家演示了如何使用这个分布式消息总线架构发布订阅架构模式的应用程序,在得到各位同仁的反馈的同时,大家也非常想了解订阅者离线的情况,即支持离线构发布订阅框架. 二.离线架构 不同于订阅者.发布者都同时在

Windows Phone 7 下 Socket(TCP) 与 PC 通讯

Windows Phone 7 下 Socket(TCP) 与 PC 通讯,使用 WP7 模拟器与 PC 上的 Simple TCP 服务进行通讯. TCP 客户端主要实现 Socket 连接的建立.数据的发送与接收和关闭已经建立的 Socket. 1 using System; 2 using System.Net; 3 using System.Windows; 4 using System.Windows.Controls; 5 using System.Windows.Documents

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

TCP/IP异步通讯服务端实现方法

近期做了个TCP/IP异步通讯服务端实现方法,也是在网上胡乱搜索,然找了个自认为比较好的,然后封装一下,供后面自个使用,也供大家参考,如有不好的地方,欢迎指正,谢谢! 下面说一下这个方法里面的几个知识点: 1.托管 这个东西真心好用,虽然不知道具体怎么弄的,托管可以实现一个对象中的方法交由其他对象实现,而且可以同时触发多个方法,组件的触发函数就是由托管实现的,具体实现如下: 先声明一个托管的方法类型 public delegate void RecieveMsg(string IP_addr,

基于socket.io客户端与服务端的相互通讯

socket.io是对websocket的封装,用于客户端与服务端的相互通讯.官网:https://socket.io/. 下面是socket.io的用法: 1.由于使用express开的本地服务,先下载相关依赖 cnpm install express socket.io 2.服务端代码 const express = require("express"); const io = require("socket.io"); const app = express(