EC全称是elastic communication,是基于c#实现的Socket网络通信服务容器,支持windows .Net和mono。经过EC容器可让开发人员在不了解Socket网络通信知识和不进行任何配置的状况便可把逻辑应用部署到一个网络通信服务中。EC的目标让开发人员在编写传统Socket网络通信服务的时候就象编写asp.net应用同样简单,只须要定义消息和控制器方法便可实施一个基于网络Socket通信应用服务程序。 c#
如下经过一个HelloWord例程来表述一下EC在这方面的简单灵活性;经过EC编写服务只须要从业务上来分析问题,分析一下场景先发起一个hello请求服务器,而后服务根据内容应答。 windows
[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的最表层Application由ECServer.Open()内部自行建立并启动,在Application下层主要有协议分析器PacketAnalyzer,消息处理中心MessageCenter,用户会话session和应用模块AppModel.
网络
为了能实现可即用,EC针对protobuf提供默认的分析器,开发人员只须要经过protobuf规划定义消息便可挂载了EC容器中.协议结构以下: session
协议定义比较简单byte[4]消息长度,消息主要分两大部分:消息类型(byte[2])和消息protobuf流. mvc
若是用过asp.net mvc的朋友对Filter感受应该不会陌生,因为EC也是基于控制器行为来处理消息,因此一样支持Filter功能.经过Filter能够方便统一地对全部请求进行验证,错误处理和日志跟踪等功能.
app
[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. asp.net
application.MethodProcess += (o, e) => { //application e.Application["Path"] = @"c:\"; //sexxion e.Session["folder"] = "aaa"; };
EC同时支持Windows .net和mono并不须要根据不一样平台配置或调整代码. spa
http://ec.ikende.com/files/file/HelloWord20140903095823.rar .net