Newbe.Claptrap框架入门,第二步——简单业务,清空购物车
接上一篇 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务。通过本篇阅读,您便可以开始尝试使用 Claptrap 实现业务了。
该开发文档已经过期
该开发文档仅适用于 Newbe.Claptrap 0.7 及以下版本。若要查看最新的开发文档,请移步 https://claptrap.newbe.pro
开篇摘要
本篇,我通过实现“清空购物车”的需求来了解一下如何在已有的项目样例中增加一个业务实现。
主要包含有以下这些步骤:
- 定义 EventCode
- 定义 Event
- 实现 EventHandler
- 注册 EventHandler
- 修改 Grain 接口
- 实现 Grain
- 修改 Controller
这是一个从下向上的过程,实际的编码过程中开发也可以自上而下进行实现。
定义 Event Code
EventCode 是 Claptrap 系统每个事件的唯一编码。其在事件的识别,序列化等方面起到了重要的作用。
打开HelloClaptrap.Models
项目中的ClaptrapCodes
类。
添加“清空购物车事件”的 EventCode。
namespace HelloClaptrap.Models
{
public static class ClaptrapCodes
{
public const string CartGrain = "cart_claptrap_newbe";
private const string CartEventSuffix = "_e_" + CartGrain;
public const string AddItemToCart = "addItem" + CartEventSuffix;
public const string RemoveItemFromCart = "removeItem" + CartEventSuffix;
+ public const string RemoveAllItemsFromCart = "remoeAllItems" + CartEventSuffix;
}
}
定义 Event
Event 是事件溯源的关键。用于改变 Claptrap 中的 State。并且 Event 会被持久化在持久层。
在HelloClaptrap.Models
项目的Cart/Events
文件夹下创建RemoveAllItemsFromCartEvent
类。
添加如下代码:
+ using Newbe.Claptrap;
+
+ namespace HelloClaptrap.Models.Cart.Events
+ {
+ public class RemoveAllItemsFromCartEvent : IEventData
+ {
+ }
+ }
由于在这个简单的业务场景中,清空购物车不需要特定的参数。因此,只要创建空类型即可。
IEventData
接口是框架中表示事件的空接口,用于在泛型推断时使用。