频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
使用Apworks开发基于CQRS架构的应用程序[创建领域模型项目]
2014-01-27 11:40:57         来源:zhixiang2010的专栏  
收藏   我要投稿

领域模型是应用程序的核心,它包括了领域对象、状态、方法、事件、业务逻辑以及对象之间的关系。现在,我们来为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 按钮
    AddApworksReferenceDialog
  • TinyLibrary.Domain 项目下,创建一个 Book 类,由于它是聚合根,因此使其继承于 SourcedAggregateRoot
       1: using System;
       2: using Apworks;
       3: using Apworks.Snapshots;
       4:  
       5: namespace TinyLibrary.Domain
       6: {
       7:     public class Book : SourcedAggregateRoot
       8:     {
       9:         public string Title { get; private set; }
      10:         public string Publisher { get; private set; }
      11:         public DateTime PubDate { get; private set; }
      12:         public string ISBN { get; private set; }
      13:         public int Pages { get; private set; }
      14:         public bool Lent { get; private set; }
      15:  
      16:         public Book() : base() {  }
      17:         public Book(long id) : base(id) {  }
      18:  
      19:         protected override void DoBuildFromSnapshot(ISnapshot snapshot)
      20:         {
      21:             throw new NotImplementedException();
      22:         }
      23:  
      24:         protected override ISnapshot DoCreateSnapshot()
      25:         {
      26:             throw new NotImplementedException();
      27:         }
      28:     }
      29: }
  • 同理,在 TinyLibrary.Domain 项目下,创建一个 Reader
       1: using System;
       2: using System.Collections.Generic;
       3: using Apworks;
       4: using Apworks.Snapshots;
       5:  
       6: namespace TinyLibrary.Domain
       7: {
       8:     public class Reader : SourcedAggregateRoot
       9:     {
      10:         public string LoginName { get; private set; }
      11:         public string Name { get; private set; }
      12:         public List Books { get; private set; }
      13:  
      14:         public Reader() : base() { Books = new List(); }
      15:  
      16:         public Reader(long id) : base(id) { Books = new List(); }
      17:  
      18:         protected override void DoBuildFromSnapshot(ISnapshot snapshot)
      19:         {
      20:              throw new NotImplementedException();
      21:         }
      22:  
      23:         protected override ISnapshot DoCreateSnapshot()
      24:         {
      25:              throw new NotImplementedException();
      26:         }
      27:     }
      28: }

    从上面两段代码可以看出,有两个protected的方法我们还没有实现,这两个方法是定义在SourcedAggregateRoot基类中的,用来提供与“快照”相关的功能。“快照”是CQRS架构中非常重要的一部分,在下一章节中,我们将了解到,如何为我们的领域模型添加快照功能。

点击复制链接 与好友分享!回本站首页
上一篇:使用Apworks开发基于CQRS架构的应用程序[创建快照]
下一篇:构建一个RESTful Web Service(Building a RESTful Web Service)
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站