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