使用Apworks开发基于CQRS架构的应用程序

Apworks框架发布Alpha版本的时候,我已经针对其开发案例:Tiny Library CQRS写了Walkthrough文档,地址是:http://apworks.org/custom/documents/wlkthr_BuildAppsUsingApworks/。为了走国际化道路,这篇文章是全英文的,社区里有不少网友表示难以理解。趁着这几天不算很忙,我抽空将其又翻译回中文,并加入更多的批准内容,供爱好DDD、CQRS和架构设计的朋友阅读参考,也希望大家能够积极参加讨论。

简介

Apworks是一套应用程序开发框架,软件架构师和开发人员可以使用这套开发框架开发出面向领域(Domain-Centric)并基于CQRS架构风格的应用程序。在本系列文章中,我将向大家介绍,如何使用Apworks开发一套面向领域的、松耦合的分布式应用系统。

本系列文章所使用的案例,就是之前我介绍的Tiny Library CQRS应用程序。之前也有一个系列文章是介绍这个项目的,不过那些文章都是介绍Tiny Library CQRS的一些功能要点和实现思想,并不是一套完整的How To演练文档。到写这篇文章为止,那个系列文章还没有写完,不过在我完成这个系列后,我会继续将其更新完善。

本系列文章将向读者朋友介绍,如何白手起家,使用Apworks开发应用程序。

业务场景

之前了解过Tiny Library CQRS项目的朋友对业务场景应该会非常熟悉,可直接跳过此段。在接下来的几章中,我们将开发一个应用程序,通过这个应用程序,用户可以对“读者”和“图书”进行管理。“读者”可以从图书馆“借书”,在看完后,可以“归还”给图书馆。系统用户可以创建“读者”和“图书”的信息,并且可以查询“读者”的“借书”、“还书”情况以及“图书”的借出历史和归还状态。

先决条件

为了保证你能够顺利地按照本系列文章的介绍,逐步创建能够运行的应用程序,你的系统必须符合下面的先决条件:

  • Microsoft .NET Framework 3.5 SP1
  • Microsoft Visual Studio 2010
  • Microsoft Patterns & Practices Enterprise Library 5.0 (April 2010)
  • Microsoft SQL Server 2005 (Express) or above
  • Microsoft ASP.NET MVC
  • Apworks Development Framework,可以【点击这里】直接下载(需要同意LGPL 2.1的License)

在Visual Studio中创建解决方案

现在,我们开始在Visual Studio 2010中创建解决方案。为了描述方便,我们给解决方案取个名字,称为“TinyLibraryCQRS”,所有项目的命名空间都会基于这个名称。为了能够更好地使用Apworks框架来开发应用程序,通常我们的解决方案会包含以下项目:

  • TinyLibrary.Domain(C# Library)- 该项目包含了领域模型
  • TinyLibrary.Events (C# Library)- 该项目包含了对所有领域事件的定义
  • TinyLibrary.EventHandlers(C# Library)- 该项目包含了所有领域事件的处理器定义
  • TinyLibrary.Commands(C# Library)- 该项目包含了所有客户端命令的定义
  • TinyLibrary.CommandHandlers(C# Library)- 该项目包含了所有处理客户端命令的命令处理器定义
  • TinyLibrary.QueryObjects(C# Library) - 该项目为整个应用程序提供了查询机制和查询对象
  • TinyLibrary.Services(C# WCF Service Application)- 一个C#的WCF Service项目,用来向客户端提供应用程序服务接口
  • TinyLibrary.WebApp(C# ASP.NET MVC应用程序)- 一个采用ASP.NET MVC开发的客户端程序

现在,让我们在Visual Studio 2010中创建TinyLibraryCQRS的解决方案:

  1. 打开Microsoft Visual Studio 2010
  2. 单击 File | New | Project 菜单,这将打开 New Project 对话框
  3. Installed Templates 选项卡下,选择 Other Project Types | Visual Studio Solutions,然后选择 Blank Solution
  4. 确保在对话框上的Framework版本选择区内,选择了.NET Framework 4.0
  5. Name 文本框中,输入 TinyLibraryCQRS 然后单击 OK 按钮

至此,Visual Studio的Solution Explorer中只显示了一个节点,就是我们刚刚新建的TinyLibraryCQRS解决方案,在后续的文章中,我们将了解到项目的整个开发过程。

额外说明

  1. 在本系列文章的操作步骤描述中,界面元素的名称还是英文的,这是因为工作需要,我的开发环境是英文的,为了不至于产生歧义,我没有将这些界面元素的名称翻译成中文写在这里,也没来得及搭建一个中文环境去比对,所以目前也只能把英文的名称原封不动地写下来,我想应该不会给读者造成太大的阅读障碍吧
  2. Apworks目前发布的是Alpha版本,下一个版本也正在开发中,所以文章的内容目前只适应于Alpha版本

更多篇幅请点原文链接 参考: https://github.com/daxnet/Apworks https://github.com/daxnet/ByteartRetail_Apworks

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2015-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏phodal

【开源】2md:将复制的内容、网页转成 markdown

如果一个 Markdown 编辑器不能解决问题,那么就用两个编辑器。 作为一个作者、程序员,兼知名的 markdown 程序员,我总是要在 Markdown、H...

1.3K80
来自专栏Java3y

外行人都能看懂的SpringCloud,错过了血亏!

认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)…

17110
来自专栏针针小站

【Share】Dell Precision 5510 Mojave Clover分享

首先先感谢 @darkhandz @黑果小兵 @Scottsanett 等大佬的分享

1.2K20
来自专栏walterlv - 吕毅的博客

.NET 中的轻量级线程安全

2018-01-14 12:46

16920
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】Java开源web框架汇总(152款)

“框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架; 在研究好用和新框架。 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制...

1.6K50
来自专栏魏琼东

AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置

一、前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平...

21480
来自专栏施炯的IoT开发专栏

Serial Port Debug on EBox4300

  自从上次安装了EBox4300的开发环境以后,就忙着其他事情,没有来得及做点应用。今天做了一个串口通信的应用,发上来和大家分享一下。   串口是设备调试中经...

22360
来自专栏魏琼东

AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行

一、前言      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速...

28370
来自专栏Phoenix的Android之旅

开发必须了解的10个Android库

作为一个开发者来说,避免重复造轮子是很重要的,能让你节省很多时间去专注于开发自己的业务。2018年已经过去一大半了,今天介绍下今年以来业界内比较推崇的几个框架,...

53440
来自专栏恰童鞋骚年

.NET Core微服务之基于Exceptionless实现分布式日志记录

  Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,...

42060

扫码关注云+社区

领取腾讯云代金券