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

       下载更多的例程代码

  • 相关阅读:
    25条提高Visual Studio编码和调试效率的技巧
    难得的中文ASP.NET 5/MVC 6入门教程
    入门产品经理如何分析设计一个产品
    DNX/ASP.NET 5的xUnit入门向导
    打造理想的Windows 10 APP开发环境的5个步骤
    激励远程员工的5个高招
    Windows Live Writer技巧
    免费电子书:C#代码整洁之道
    JavaScript前端框架的思考
    利用Browser Link提高前端开发的生产力
  • 原文地址:https://www.cnblogs.com/smark/p/3988154.html
Copyright © 2020-2023  润新知