在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的解决方案:
-
打开Microsoft Visual Studio 2010
-
单击File | New | Project菜单,这将打开New
Project对话框
-
在Installed Templates选项卡下,选择Other
Project Types | Visual Studio Solutions,然后选择Blank Solution
-
确保在对话框上的Framework版本选择区内,选择了.NET Framework 4.0
-
在Name文本框中,输入TinyLibraryCQRS然后单击OK按钮
至此,Visual Studio的Solution Explorer中只显示了一个节点,就是我们刚刚新建的TinyLibraryCQRS解决方案,在后续的文章中,我们将了解到项目的整个开发过程。
额外说明
-
在本系列文章的操作步骤描述中,界面元素的名称还是英文的,这是因为工作需要,我的开发环境是英文的,为了不至于产生歧义,我没有将这些界面元素的名称翻译成中文写在这里,也没来得及搭建一个中文环境去比对,所以目前也只能把英文的名称原封不动地写下来,我想应该不会给读者造成太大的阅读障碍吧
-
Apworks目前发布的是Alpha版本,下一个版本也正在开发中,所以文章的内容目前只适应于Alpha版本
分享到:
相关推荐
在Apworks框架发布Alpha版本的时候,我已经针对其开发案例:TinyLibraryCQRS写了Walkthrough文档,地址是:...Apworks是一套应用程序开发框架,软件架构师和开发人员可以使用这套开发框架开发出面向领域(Domain-Centri
magic-bottle项目是一套匿名社交系统,包括Andriod、WEB管理端以及服务端,采用DDD+CQRS架构 magic-bottle项目是一套匿名社交系统,包括Andriod、WEB管理端以及服务端,采用DDD+CQRS架构 magic-bottle项目是一套...
让领域驱动设计变得触手可得 - 基于 DDD、EventSourcing 的现代响应式 CQRS 架构微服务开发框架。
一个教科书式的基于C#的CQRS架构,对了解领域驱动设计和命令职责分离原则的思想有很大的帮助。
FoxOffice - 此示例程序展示了如何基于CQRS和事件源构建分布式云.NET Core程序
commanded, 使用命令建立 Elixir cqrs/es应用程序 命令使用命令在 cqrs/es Pattern 之后构建你自己的tcm应用程序。提供支持:命令注册和调度。托管和委托聚合。事件处理。长时间运行的流程管理器。命令为你的构建...
我们正在创造一个参考指南/电子书名为“构建和开发集装箱和微服务基于.NET应用程序”,其详细阐述了如何开发这种建筑风格(微服务,多克尔容器,领域驱动设计某些微服务)以及其他更简单的架构风格,如可以作为...
如何实现CQRS架构
为了运行这个应用程序,你需要在你的开发环境中安装 java8 SDK、docker、docker-compose 和 docker-machine。 如何设置开发环境: - 在多个环境中安装 Java 8 SDK 的指南。 - 在多个环境中安装 docker 的指南。 - 在...
event-sourcing, Meteor的CQRS和事件采购基础架构 用于 Meteor的 CQRS &事件源 这个包提供了构建你的Meteor 应用程序的基础设施,以英镑 ( 命令/查询职责分离) 和英镑事件采购原则为基础。 这样可以使用强大的业务...
应用程序 模拟最终用户添加收入或费用交易的银行帐户方案,并在异步事件源和CQRS架构中对其进行处理以重新计算用户的银行帐户余额。 用户还可以请求其帐户余额。 在这里,您可以看到设计: 部署外部服务 docker-...
具有CQRS架构的Todolist应用程序。 用建设。 演示版 请访问。 管理面板和待办事项历史记录快照 markov链摘要 安装 克隆此模块,然后将服务器指向/ public。 运行composer install来下载依赖项。 要生成数据库,...
CQRS(Command Query Responsibility Segration)架构,大家应该不会陌生了。简单的说,就是一个系统,从架构上把它拆分为两部分:命令处理(写请求)+查询处理(读请求)。然后读写两边可以用不同的架构实现,以...
本项目是展示如何使用ENode开发基于DDD,CQRS,ES架构的应用程序。 共分为三个Bounded Context: 1.ConferenceManagement,负责会议位置后台管理 2.Registration,负责处理用户下单 3.Payments,负责处理支付 运行步骤...
开始之前想先说一下微服务架构和CQRS架构的区别和联系。微服务架构现在很热,到处可以看到各大互联网公司的微服务实践的分享总结。但是,我今天的分享和微服务没有关系,希望可以带给大家一些新的东西。如果一定要说...
所以也想谈一下,CQRS架构下是如何实现高性能的。关于CQRS(CommandQueryResponsibilitySegration)架构,大家应该不会陌生了。简单的说,就是一个系统,从架构上把它拆分为两部分:命令处理(写请求)+查询处理(读...
1.0.0版的目标帮助使用编写CQRS和事件源应用程序状态它仍处于非常早期的开发阶段。不要使用版本0.0.5,master分支与此完全不同。建筑要求Java 8 Maven(经过3.5.0+测试) Docker compose(已通过1.18.0测试)适用于...
Emerald +微服务模板使用CQRS架构的Django GRPC框架服务堆栈:Django GRPS框架,Kafka,MySQL,Redis要求Python(3.6、3.7、3.8) Django(2.2,3.0),Django REST Framework(3.10.x,3.11.x) RHEL 8.3,Fedora ...