分离Command

要点:

1.请求类必须继承CommandBase
2.请求类类名为请求对象中的Key值,大小写可以不区分
3.类必须用public修饰,否则无法识别该请求,提示为无效请求
4.不能再调用NewRequestReceived事件

代码实现:

Program.cs

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Console.WriteLine("Press any key to start the server!");
 6
 7             Console.ReadKey();
 8             Console.WriteLine();
 9
10             var appServer = new AppServer();
11
12             //Setup with config model, which provides more options
13             var serverConfig = new ServerConfig
14             {
15                 Port = 8000, //set the listening port
16                 //Other configuration options
17                 //Mode = SocketMode.Udp,
18                 //MaxConnectionNumber = 100,
19                 //...
20             };
21
22             //Setup the appServer
23             if (!appServer.Setup(serverConfig))
24             {
25                 Console.WriteLine("Failed to setup!");
26                 Console.ReadKey();
27                 return;
28             }
29
30             appServer.NewSessionConnected += new SessionHandler<AppSession>(appServer_NewSessionConnected);
31
32             Console.WriteLine();
33
34             //Try to start the appServer
35             if (!appServer.Start())
36             {
37                 Console.WriteLine("Failed to start!");
38                 Console.ReadKey();
39                 return;
40             }
41
42             Console.WriteLine("The server started successfully, press key ‘q‘ to stop it!");
43
44             while (Console.ReadKey().KeyChar != ‘q‘)
45             {
46                 Console.WriteLine();
47                 continue;
48             }
49
50             Console.WriteLine();
51             //Stop the appServer
52             appServer.Stop();
53
54             Console.WriteLine("The server was stopped!");
55         }
56
57         static void appServer_NewSessionConnected(AppSession session)
58         {
59             session.Send("Welcome to SuperSocket Telnet Server");
60         }
61     }

Echo.cs

1     public class ADD : CommandBase<AppSession, StringRequestInfo>
2     {
3         public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo)
4         {
5             session.Send(requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString());
6         }
7     }

时间: 2024-11-14 16:41:30

分离Command的相关文章

[转]命令查询的责任分离 CQRS架构

命令查询的责任分离Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型的状态的命令和模型状态的查询实现分离.这属于DDD应用领域的一个模式,主要解决DDD在数据库报表输出上处理方式. Greg Young在infoQ的采访中“State Transitions in Domain-Driven Design”谈到了CQRS,Greg 解释了把领域模型分为两种:状态校验,以及状态转换,维持当前状态的一个视图. 在客

phper談談最近重構代碼的感受(3)

这篇文章本来该和同一系列的文章一起写的,因为最近换工作的缘故滞后了.重构是非常细碎的叠加,有很多值得注意的地方. 1.消灭过多的临时变量. 有时候过多的无意义的临时变量,真心让人抓狂,特别是过了比较长的时间,连写这段代码的人都不知道为何这么写了.比如下面这段代码,我们先分步骤来思考这个问题. 一个获得全部消费的方法里面充斥着各种乱七八糟的临时变量.我们当然可以不辞辛苦地把每一行都加上饱含善意的注释,但是增加注释不是最好的办法,往往是最后的办法. 很明显的是诸多变量的含义不明,导致整个逻辑也不清楚

CQRS及.NET中的参考资料

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:CQRS作为一种设计模式,其实一点都不新鲜了.不过今天有朋友感叹.NET朋友也关注CQRS,才打算把之前看到的一些.NET下的CQRS参考资料分享下. 命令查询的责任分离Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型状态的命令和模型状态的查询实现分离.这一模式最早由Greg Young在一次InfoQ的采

Adaptive Code Via C#读书笔记(1)

原书链接: http://www.amazon.com/Adaptive-Code-via-principles-Developer-ebook/dp/B00OCLLYTY/ref=dp_kinw_strp_1 这本书的标题极其失败:它不是讲C#而是讲敏捷的.不知道是因为Agile这次词用的太多了还是怎么样,弄了个Adaptive在标题里,副标题里倒是有Agile,可惜太不显眼了.如果让我来翻译的话我觉得标题可以是:代码的敏捷之道(基于C#语言进行描述).可能长了点,但毕竟能让人一眼就知道这本书

浅谈命令查询职责分离(CQRS)模式

在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题.虽然在DB上可以做一些读写分离的设计,但在业务上如果在读写方面混合在一起的话,仍然会出现一些问题. 本文介绍了命令查询职责分离模式(Command Query Responsibility Segregation,CQRS),该模式从业务上分离修改 (Command,增,删,改,会对系统状态进

转:浅谈命令查询职责分离(CQRS)模式

原文来自于:http://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html 在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题.虽然在DB上可以做一些读写分离的设计,但在业务上如果在读写方面混合在一起的话,仍然会出现一些问题. 本文介绍了命令查询职责分离模式(Command Query Resp

命令查询职责分离模式CQRS

最近想用Scala来重构Java项目.Scala的灵活高效这里就不用说了,Java MVC一套架构确实有它优点.但是开发调试效率确实慢很多.所以准备使用DDD中的命令查询职责分离模式(Command Query Responsibility Segregation,CQRS)重构项目. 首先我们先介绍下CQRS. 一.什么是CQRS CQRS最早来自于Betrand Meyer(Eiffel语言之父,开-闭原则OCP提出者)在 Object-Oriented Software Construct

一口气说出Kafka为啥这么快?

作者: 钟涛编译 来源:https://developer.51cto.com/art/202003/613487.htm Blog: https://blog.yilon.top 在过去的几年里,软件架构领域发生了巨大的变化.人们不再认为所有的系统都应该共享一个数据库. 微服务.事件驱动架构和 CQRS(命令查询的责任分离 Command Query Responsibility Segregation)是构建当代业务应用程序的主要工具. 除此以外,物联网.移动设备和可穿戴设备的普及,进一步对

Command and Query Responsibility分离模式

CQRS模式,就是命令和查询责任分离模式. CQRS模式通过使用不同的接口来分离读取数据和更新数据的操作.CQRS模式可以最大化性能,扩展性以及安全性,还会为系统的持续演化提供更多的弹性,防止Update命令在域模型Level发生冲突. 问题 在传统的数据管理系统中,更新数据以及请求数据的命令是通过数据仓库中的同一类型的实体来执行操作的.这些实体属于关系数据中的表的一列或者几列. 通常,在这些系统中,所有的创建,读取,更新以及删除(CRUD)操作都是应用到相同的实体的.举例来说,一个数据传输对象