零基础30分钟开启你的AgileEAS.NET SOA 中间件平台开发之旅

by 魏琼东 2014.4.25 11:20
接触AgileEAS.NET SOA 中间件平台(以下简称EAS.NET平台)有4个多月时间,经过试用认为可以把它作为一个开发的基础平台,开发团队可以把开发的重点放在需求的把控和项目的交付上,从而节省大量的时间,提高项目的开发、交付效率,降低对项目团队的深层技术要求,更重要的一点是EAS.NET平台的开发团队持续不断地维护和改进平台以及对反馈问题的快速反应,使我对平台的持续发展充满信心。

由于EAS.NET平台的资料比较多,需要花费较多的时间才能够初步了解平台并能够使用平台开始开发,所以,在此,我把学习EAS.NET平台的过程总结了一下,形成本篇短文,希望能够让初次接触EAS.NET平台的朋友能够用30分钟时间,跟着本文案例实际操作一遍,对EAS.NET平台有一个真实的体验,节省大家的时间,也算对EAS.NET平台的一点回报,希望有更多的人了解它的优势并真正用好它,为EAS.NET平台的使用者带来价值,也为EAS.NET平台的开发者带来效益,最终实现合作共赢的美好结局。 [更多...]

Tags:

.NET | C# | ESB | SOA | Socket | WCF | 三层架构 | 中间件 | 云计算 | 平台 | 应答 | 报表 | 权限 | 框架 | 模块 | 用户 | 负载均衡 | 通信框架

AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置

by 魏琼东 2013.10.12 11:58
一、AgileEAS.NET SOA中间件Socket/Tcp框架介绍      在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA中间Socket/Tcp框架进行了总体的介绍,我们知道 AgileEAS.NET SOA中间件Socket/Tcp框架是一套Socket通信的消息中间件: 二、简单的服务器客户段消息应答      在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架-简单例子-实现简单的服务端客户端消息应答中我们实现了一个简单的客户端消息请求==>服务端应答的简单的Socket应用。 三、完整的应用-实现完整的聊天室      本文我们将实现一个多人聊天室的应用,类似于早年的网络聊天室或者当年的QQ网络聊天室或者游戏里面的聊天功能,聊到室主界面如下:      聊天室支持公聊和私聊频道,理论上可以支持几百甚至几千人,具体上限没有经过测试,在这个案例之中,大家将会掌握基于AgileEAS.NET SOA中间件Socket/Tcp框架的比较复杂的消息定义及消息处理及消息协调,同时还会掌握如何管理服务端的链接、聊天室用户在线状态、消息的多目标转发等功能。      本案例的可执行客户端程序和服务端已经在我们的服务器上为大家部署了一套,大家可以下载客户段http://112.74.66.105/downloads/eas/examples/chat.client.rar体验,下载客户端压缩包之后解压缩,注册一个账号就可以使用这个账号登录我们为大家搭建的聊天室服务端。 三、下载源代码编译配置运行      本案例源代码请通AgileEAS.NET SOA中间件官方网站的最新下载中的栏目进行下载或者从SVN中获取最新版本的源代码: 下载或者SVN-OUT得到代码之后我们来看一下代码文建构: 一级目录 二级目录 说明 Code   程序源代码   Entities 实体(ORM)代码   BLL.Contracts 业务契约定义代码   BLL.Host 数据实现代码   Messages Socket通信消息定义   Services Socket服务定义   ChatRoom 客户段程序代码   UserManage 注册用户管理代码 db   用户数据库文件,Sqlite数据库 Documents   文档,用户模型文档 Publish   引用程序集及编译输出            然后用VS2010或者VS2012打开Code目录之中的ChatRoom解决方案进行编译,编译写成之后我们开始进行配置。      打开Publish目录之中的EAS.SOA.Server.exe.config进行服务端配置:      其中最重要的配置就是配置服务端sqlite数据库文件的路径,以及端口号,当然端口号是可以不用修改的,配置完成之后我们启动Publish目录之中的soaserver.start.bat指指理文件来启动聊天室服务端:      启动聊天室服务端的本质是启动AgileEAS.NET SOA 中间件SOA服务,在SOA服务之中我们集成了Socket插件服务系统,我们的聊天室做为一个SOA的Socket插件服务被进行加载和处理,需要说明的是如果你的运行环境是Win7或者Win2008操作系统,需要以管理员权限运行启动脚本: 接下来我们配置客户段,打开ChatingRoom.MainClient.exe.config文件,修改以下地方:     这样我们变完成了聊天室客户端的配置,运行ChatingRoom.MainClient.exe程序启动客户端的登录窗口:     点用户注册注册一个新用户:     注册成功之后使用这个用户登录聊天室:      到时为止,聊天室案例的配置过程到此完成! 四、源代码学习      要学习和研究本案例的源代码,请参考:      1.AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍      2.AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架-简单例子-实现简单的服务端客户端消息应答      在之后的文章之中我们将会对本案例源代码进行分析。 五、特别感谢      感谢团队成员计文忻同学为大家编写了本案例的第一版本,之后我在通信和界面上做了一些小的调整,也感谢王涛同学为本应用案例提供了Banner图片和一些界面美工建议,也感谢在此案例进行测试和提出建议的客户和小伙伴们。 六、联系我们      为了完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台了开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。      AgileEAS.NET平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。      我的技术团队成员都是合作多年的老朋友,因为这个平台是免费的,所以也没有什么收入,都是由程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友。 团队网站:http://www.agilelab.cn, AgileEAS.NET网站:http://www.smarteas.net 官方博客:http://eastjade.cnblogs.com QQ:47920381,AgileEAS.NET QQ群:113723486(AgileEAS SOA 平台)/上限1000人 199463175(AgileEAS SOA 交流)/上限1000人 120661978(AgileEAS.NET 平台交流)/上限1000人 212867943(AgileEAS.NET研究)/上限500人 147168308(AgileEAS.NET应用)/上限500人 172060626(深度AgileEAS.NET平台)/上限500人 116773358(AgileEAS.NET 平台)/上限500人 125643764(AgileEAS.NET探讨)/上限500人 193486983(AgileEAS.NET 平台)/上限500人 邮件:james@agilelab.cn,mail.james@qq.com, 电话:18629261335。

Tags:

.NET | AgileEAS.NET | C# | SOA | Socket | 中间件 | 应答 | 框架 | 消息中间件 | 通信框架 | 聊天室

AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

by 魏琼东 2013.10.11 20:07
一、AgileEAS.NET SOA中间件Socket/Tcp框架介绍      在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA中间Socket/Tcp框架进行了总体的介绍,我们知道 AgileEAS.NET SOA中间件Socket/Tcp框架是一套Socket通信的消息中间件: 二、简单例子-实现简单的服务器客户段消息应答      我们接下来实现一个简单的例子,例子的场景非常的简单,客户端向服务端发送一个请求消息,服务段收到消息之后显示消息内容,并对客户端发送一个应答消息,客户端收到应答消息之后显示这个应答消息,对于本例子,我们使用WinForm应用来实现。 三、一步一步实现      首先我们下载AgileEAS.NET SOA 中间件最新版本5.0/5.1,下载地址:http://www.smarteas.net/page/EAS_NET_Downloads.aspx。      首先我们打开VS2010或者VS2010创建一个类为项目Socket.Demo.Messages:      删除默认的Class1.cs,引用AgileEAS.NET SOA 中间件的EAS.MicroKernel.dll程序集文件,然后添加一个类请求消息类RequestMessage: 1: [Serializable] 2: [Message("14DB99D2-190C-48E9-879A-EA833247F24A", "请求消息")] 3: public class RequestMessage:IMessage 4: { 5: /// <summary> 6: /// 消息内容。 7: /// </summary> 8: public string Content 9: { 10: get; 11: set; 12: } 13:  14: public void Load(EAS.IO.BufferReader reader) 15: { 16: this.Content = reader.ReadString(); 17: } 18:  19: public void WriteTo(EAS.IO.BufferWriter writer) 20: { 21: writer.Write(this.Content); 22: } 23: }      以上代码我们定义了一个请求消息,消息ID为"14DB99D2-190C-48E9-879A-EA833247F24A",Load方法实现从消息读取器之中读出消息内容,WriteTo方法实现把消息内容写入消息编写器,转换为字节流供通信引擎进行收发,接下来我们再增加一个应答消息类ResponseMessage: 1: [Serializable] 2: [Message("D94C51C4-8423-4BF6-A011-184265BBA62C", "应答消息")] 3: public class ResponseMessage : RequestMessage, IMessage 4: { 5: }     在本例子之中应答消息与请求消息其内容没有本质的区别,都是文本通信,所以就直接继承了RequestMessage,变更了MessageID和消息说明。 到此为止,我们已经完成了请求消息与应答消息的定义Socket.Demo.Messages项目结构下:    接下来我们来实现服务端程序,向解决方案添加一个Socket.Demo.Server的Windows窗体应用程序:    同样,我们要引用AgileEAS.NET SOA 中间件的EAS.MicroKernel.dll程序集文件,并且还要引用Socket.Demo.Messages项目,然后重命名Form1为MainForm,并做以下界面布局:    接下来我们向服务端加载请求消息的处理器RequestMessageHandler,用于服务端收到请求消息之后的处理动作: 1: class RequestMessageHandler:AbstractMessageHandler<RequestMessage> 2: { 3: public override void Process(NetSession context, uint instanceId, RequestMessage message) 4: { 5: //1.显示消息。 6: MainForm.Instance.ShowMessage(message); 7:  8: //2.向客户端回复一条应当消息。 9: string content = string.Format("{0}已收到,OK!", message.Content); 10: ResponseMessage responseMessage = new ResponseMessage { Content = content }; 11: context.Reply(responseMessage); 12: } 13: }      然后我们实现MainForm窗体的功能代码: 1: using System; 2: using System.Collections.Generic; 3: using System.ComponentModel; 4: using System.Data; 5: using System.Drawing; 6: using System.Linq; 7: using System.Text; 8: using System.Windows.Forms; 9: using EAS.Sockets; 10: using Socket.Demo.Messages; 11:  12: namespace Socket.Demo.Server 13: { 14: public partial class MainForm : Form 15: { 16: public static MainForm Instance = null; 17: private SocketServer m_SocketServer = null; 18:  19: public MainForm() 20: { 21: InitializeComponent(); 22: Instance = this; 23:  24: //实例化对象。 25: this.m_SocketServer = new SocketServer(); 26:  27: //端口号为6610 28: this.m_SocketServer.Port = 6610; 29:  30: //注册消息处理器。 31: this.m_SocketServer.AddHander<RequestMessage>(new RequestMessageHandler()); 32:  33: this.m_SocketServer.ServerStarted += new EventHandler(m_SocketServer_ServerStarted); 34: this.m_SocketServer.ServerStopped+=new EventHandler(m_SocketServer_ServerStopped); 35: } 36:  37: void m_SocketServer_ServerStarted(object sender, EventArgs e) 38: { 39: this.btnStart.Enabled = false; 40: this.btnStop.Enabled = true; 41: } 42:  43: void m_SocketServer_ServerStopped(object sender, EventArgs e) 44: { 45: this.btnStart.Enabled = true; 46: this.btnStop.Enabled = false; 47: } 48:  49: internal void ShowMessage(Messages.RequestMessage message) 50: { 51: Action UI = () => 52: { 53: this.tbMessage.AppendText(message.Content); 54: this.tbMessage.AppendText("\r\n"); 55: this.tbMessage.ScrollToCaret(); 56: }; 57:  58: this.Invoke(UI); 59: } 60:  61: private void btnStart_Click(object sender, EventArgs e) 62: { 63: if (this.m_SocketServer.ServerState == ServerState.Stoped) 64: { 65: this.m_SocketServer.StartServer(); 66: } 67: } 68:  69: private void btnStop_Click(object sender, EventArgs e) 70: { 71: if (this.m_SocketServer.ServerState != ServerState.Stoped) 72: { 73: this.m_SocketServer.StopServer(); 74: } 75: } 76: } 77: }      其中代码this.m_SocketServer.AddHander<RequestMessage>(new RequestMessageHandler());完成向服务器注册请求消息的处理器对象,internal void ShowMessage(Messages.RequestMessage message)方法用于显示服务器收到的请求消息。     接下来我们来实现客户端程序,向解决方案添加一个Socket.Demo.Client的Windows窗体应用程序,同前面一样样,我们要引用AgileEAS.NET SOA 中间件的EAS.MicroKernel.dll程序集文件,并且还要引用Socket.Demo.Messages项目,然后重命名Form1为MainForm,并做以下界面布局:     接下来我们向客户端加载应答消息的处理器ResponseMessageHandler,用于客户端收到应答消息之后的处理动作: 1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: using EAS.Sockets.Messages; 6: using Socket.Demo.Messages; 7: using EAS.Sockets; 8:  9: namespace Socket.Demo.Client 10: { 11: class ResponseMessageHandler : AbstractMessageHandler<ResponseMessage> 12: { 13: public override void Process(NetSession context, uint instanceId, ResponseMessage message) 14: { 15: //1.显示消息。 16: MainForm.Instance.ShowMessage(message); 17: } 18: } 19: }          然后我们实现MainForm窗体的功能代码: 1: using System; 2: using System.Collections.Generic; 3: using System.ComponentModel; 4: using System.Data; 5: using System.Drawing; 6: using System.Linq; 7: using System.Text; 8: using System.Windows.Forms; 9: using EAS.Sockets; 10: using Socket.Demo.Messages; 11:  12: namespace Socket.Demo.Client 13: { 14: public partial class MainForm : Form 15: { 16: public static MainForm Instance = null; 17: SocketClient m_SocketClient; 18:  19: public MainForm() 20: { 21: InitializeComponent(); 22: Instance = this; 23: this.m_SocketClient = new SocketClient(); 24: this.m_SocketClient.IPAddress = "127.0.0.1"; 25: this.m_SocketClient.Port = 6610; 26: this.m_SocketClient.AddHander<ResponseMessage>(new ResponseMessageHandler()); 27:  28: this.m_SocketClient.Connected += new EventHandler(m_SocketClient_Connected); 29: this.m_SocketClient.Closed += new EventHandler(m_SocketClient_Closed); 30: } 31:  32: void m_SocketClient_Connected(object sender, EventArgs e) 33: { 34: this.btnConnect.Enabled = false; 35: this.btnClose.Enabled = true; 36: this.btnSend.Enabled = false; 37: } 38:  39: void m_SocketClient_Closed(object sender, EventArgs e) 40: { 41: this.btnConnect.Enabled = true; 42: this.btnClose.Enabled = false; 43: this.btnSend.Enabled = true; 44: } 45:  46: internal void ShowMessage(ResponseMessage message) 47: { 48: Action UI = () => 49: { 50: this.tbMessage.AppendText(message.Content); 51: this.tbMessage.AppendText("\r\n"); 52: this.tbMessage.ScrollToCaret(); 53: }; 54:  55: this.Invoke(UI); 56: } 57:  58: private void btnConnect_Click(object sender, EventArgs e) 59: { 60: if (this.m_SocketClient.ClientState == ClientState.Closed) 61: { 62: this.m_SocketClient.Connect(); 63: } 64: } 65:  66: private void btnClose_Click(object sender, EventArgs e) 67: { 68: if (this.m_SocketClient.ClientState != ClientState.Closed) 69: { 70: this.m_SocketClient.Connect(); 71: } 72: } 73:  74: private void btnSend_Click(object sender, EventArgs e) 75: { 76: if (this.tbSend.Text.Trim().Length == 0) 77: { 78: MessageBox.Show("不能发空消息"); 79: return; 80: } 81:  82: if (this.m_SocketClient.ClientState != ClientState.Closed) 83: { 84: RequestMessage rm = new RequestMessage(); 85: rm.Content = this.tbSend.Text.Trim(); 86: this.m_SocketClient.Send(rm); 87: } 88: } 89: } 90: }         OK,这个简单的例子我们已经开发完成了,接下来,我们来编译、测试一下这个例子! 四、运行测试      首先我们启动服务端程序、启动服务器,然后启动客户段并连接服务器,从客户段向服务器发送消息,服务端会显示客户端发送的消息会向客户端发送一个应答消息。 五、本例源代码下载      本文例子源代码请通过http://112.74.66.105/downloads/eas/examples/Socket.Demo.rar进行下载,有关于AgileEAS.NET SOA 中间件平台请通过AgilleEAS.NET SOA 中站件平台官方网站的最新下载页面下载。 六、联系我们      为了完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台了开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。      AgileEAS.NET平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。      我的技术团队成员都是合作多年的老朋友,因为这个平台是免费的,所以也没有什么收入,都是由程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友。 团队网站:http://www.agilelab.cn, AgileEAS.NET网站:http://www.smarteas.net 官方博客:http://eastjade.cnblogs.com QQ:47920381,AgileEAS.NET QQ群:113723486(AgileEAS SOA 平台)/上限1000人 199463175(AgileEAS SOA 交流)/上限1000人 120661978(AgileEAS.NET 平台交流)/上限1000人 212867943(AgileEAS.NET研究)/上限500人 147168308(AgileEAS.NET应用)/上限500人 172060626(深度AgileEAS.NET平台)/上限500人 116773358(AgileEAS.NET 平台)/上限500人 125643764(AgileEAS.NET探讨)/上限500人 193486983(AgileEAS.NET 平台)/上限500人 邮件:james@agilelab.cn,mail.james@qq.com, 电话:18629261335。

Tags:

AgileEAS.NET | Socket | 中间件 | 企业应用架构 | 分布式 | 框架 | 消息中间件 | 通信框架 | C# | .NET | 请求 | 应答

最新评论

声明

本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2011