领域模型是应用程序的核心,它包括了领域对象、状态、方法、事件、业务逻辑以及对象之间的关系。现在,我们来为Tiny Library CQRS创建一个领域模型项目。
- 在 Solution Explorer 下,右键单击TinyLibraryCQRS项目,单击 Add | New Project… 菜单,这将打开 Add New Project 对话框
- 在 Installed Templates 选项卡下,选择 Visual C# | Windows,然后选择 Class Library ,确保所选的Framework版本是.NET Framework 4,在 Name 文本框中,输入TinyLibrary.Domain,然后单击OK按钮
- 在 Solution Explorer 下,右键单击 TinyLibrary.Domain 项目的 References 节点,单击 Add Reference… 菜单,这将打开 Add Reference 对话框
- 在 .NET 选项卡下,选择 Apworks 然后单击 OK 按钮
- 在 TinyLibrary.Domain 项目下,创建一个 Book 类,由于它是聚合根,因此使其继承于 SourcedAggregateRoot 类
using System;using Apworks;using Apworks.Snapshots;4:namespace TinyLibrary.Domain6: {class Book : SourcedAggregateRoot8: {private set; }private set; }private set; }private set; }private set; }private set; }15:base() { }base(id) { }18:void DoBuildFromSnapshot(ISnapshot snapshot)20: {new NotImplementedException();22: }23:override ISnapshot DoCreateSnapshot()25: {new NotImplementedException();27: }28: }29: } - 同理,在 TinyLibrary.Domain 项目下,创建一个 Reader 类
using System;using System.Collections.Generic;using Apworks;using Apworks.Snapshots;5:namespace TinyLibrary.Domain7: {class Reader : SourcedAggregateRoot9: {private set; }private set; }private set; }13:new List<Book>(); }15:new List<Book>(); }17:void DoBuildFromSnapshot(ISnapshot snapshot)19: {new NotImplementedException();21: }22:override ISnapshot DoCreateSnapshot()24: {new NotImplementedException();26: }27: }28: }
从上面两段代码可以看出,有两个protected的方法我们还没有实现,这两个方法是定义在SourcedAggregateRoot基类中的,用来提供与“快照”相关的功能。“快照”是CQRS架构中非常重要的一部分,在下一章节中,我们将了解到,如何为我们的领域模型添加快照功能。