博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
零配置Socket TCP消息通讯服务容器EC
阅读量:6968 次
发布时间:2019-06-27

本文共 2462 字,大约阅读时间需要 8 分钟。

        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
(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
Search(ISession session, Query query) { "Search invoke".Log4Debug(); List
users = new List
(); 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://wwssl.baihongyu.com/

你可能感兴趣的文章
蓝桥杯 穿越雷区(bfs)
查看>>
SQL FORMAT() 函数实例
查看>>
iTerm 使用expect实现自动远程登录,登录跳板机
查看>>
JavaScript 面试:什么是纯函数?
查看>>
linux终端下查Dict.cn/WebsterOnline/Etymonline.com
查看>>
Hadoop(Pig)统计IP地理位置
查看>>
疯狂的 JAVA 后++
查看>>
group of transformations
查看>>
Windows Service 学习笔记
查看>>
2016.11.17随笔
查看>>
MGR架构~单写模式架构的搭建
查看>>
DFS BestCoder Round #49 ($) 1001 Untitled
查看>>
Native App, Hybrid App, Web App对比
查看>>
P1168 中位数
查看>>
B4260 Codechef REBXOR
查看>>
在 S5PV210 的 开发板上 使用 串口 收发信息
查看>>
python学习交流 - 内置函数使用方法和应用举例
查看>>
oracle 恢复数据
查看>>
5常用 Linux 命令的基本使用
查看>>
[K/3Cloud] KSQL 关联表更新字段Update语法
查看>>