摘要:
业务逻辑层是专门处理软件业务需求的一层,处于数据库之上,服务层之下,完成一些列对Domain Object的CRUD,作为一组微服务提供给服务层来组织在暴露给表现层,如库存检查,用法合法性检查,订单创建。 业务逻辑层包含领域对象模型,领域实体,业务规则,验证规则,业务流程。1:领域对象模型为系统结构描述,包含实体功能描述,实体之间的关系。领域模型处于天生的复杂性:2:领域实体:业务层是一些操作业务对象(BO)的处理。业务对象包含数据和行为,是一个完整的业务对象。其不同于上节架构设计中服务层的简单理解提到的数据迁移对象(dto),对于dto存在数据的,不存在行为,dto是bo(ddd中又称... 阅读全文
随笔档案-2012年05月
流畅的验证组件:FluentValidation
2012-05-27 22:33 by 破狼, 14281 阅读, 收藏, 编辑
摘要:
这里要介绍一款与企业库VAB(Validation Application Block),ASP.NET MVC基于Attribute声明式验证所不同的验证组件,FluentValidation,其利用表达式语法链式编程,使得验证组件与实体分开。我喜欢他的原因是喜欢表达式,喜欢链式的感觉,大有一气呵成之意。 进入今天的主题首先如果你还没有这款组件,你可以利用VS2010的NuGet安装,(如果不会的请安装上篇开源DataBase组件:FluentMigrator中提到的方式安装),命令为: 现在我们可以开始体验了,实体类do任然是上节的Orders: do:publiccl... 阅读全文
开源DataBase组件:FluentMigrator
2012-05-27 19:09 by 破狼, 5913 阅读, 收藏, 编辑
摘要:
今天将介绍一款开源组件FluentMigrator,其提供了jQuery式链式编程方式,和3.0后的表达式语法使其语义清晰。主要提供我们队数据库结构的维护,版本控制回滚和新增。适用于 敏捷和TDD实践中我们的需求功能的递增,数据结构增加,可持续化集成,应用场景感觉如其名Fluent(流畅)。 一:我们先利用NuGet安装FluentMigrator: 1:在vs在打开Package Manager Console: 2:安装FluentMigrator: 3:如果你希望控制台提交,可以安装其tools: 二:下面我面做一个简单的实例订单Order(这里仅列... 阅读全文
Interface继承至System.Object?
2012-05-23 01:11 by 破狼, 3267 阅读, 收藏, 编辑
摘要:
这其实是个很基础的问题,在我们学习C#类型的时候第一句就是所有的对象都继承至System.Object。今天一个同事问我Interface继承之System.Object。所以才有了本文。 在这里我只从几个方面简单的说明: 1:从语义: Interface在oo中表示一组行为的集合,是高层次的抽象,契约,一种稳定的表现。好比我们生活的公司和员工之间的合同,双方都必须遵循。所以我们的接口必须是一个干净纯洁的体系。加入interface继承之System.Object,这以为这是不是,Interface有Equal,ToString等方法?这明显破坏了接口的干净体系。 2:实践(C... 阅读全文
SOA面向服务架构简述
2012-05-22 21:37 by 破狼, 10039 阅读, 收藏, 编辑
摘要:
在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务。在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契约方式发布于网络中,我们的关注点在于服务,面向服务编程,这种通过组合业务逻辑暴露可用服务的架构叫做面向服务架构(SOA)。 SOA强调一个松耦合,基于宏服务的架构,通过契约暴露给服务消费者可用的服务交互。SOA是以服务为组成构建,原则有: 边界清晰: 服务层是消费者交互到系统业务的唯一入口,所有我们的服务必须能够被消费者所理解,以及最好处理Request/Response基于消... 阅读全文
架构设计中服务层的简单理解
2012-05-21 23:09 by 破狼, 22468 阅读, 收藏, 编辑
摘要:
在ddd设计中我们经常会提到服务层,服务层是什么?职责是什么?有什么好处?。 先看简单的层次图(注:这里并没有考虑其他多余的领域逻辑数据层存储,或者UOW这些细节) 我的理解是服务层是处于我的应用程序业务层和表现层之间的应用程序边界,边界可能是很薄的一层类设计或者是分布式服务网络跃点。它是一个与技术无关的名词。由表现层直接调用,契约,执行命令(修改状态(CUD))或者是查询返回dto(数据迁移对象)(cms,命令-查询分离)。他对业务逻辑层接口很清楚,组织业务逻辑 微服务形成宏服务,适配表现层。 这里谈到宏服务和微服务,宏服务有一些列粗粒度的服务组成。用户的一次操作usec... 阅读全文
一些软件设计的原则
2012-05-12 18:57 by 破狼, 12449 阅读, 收藏, 编辑
摘要:
以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则。相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在《再谈“我是怎么招聘程序”》中所说的,一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成。在这里想和大家说说设... 阅读全文
架构设计--逻辑层 vs 物理层
2012-05-09 22:50 by 破狼, 7830 阅读, 收藏, 编辑
摘要:
Layer 和Tier都是层,但是他们所表现的含义不同,Tier指的是软件系统中物理上的软件和硬件,具体指部署在某服务器上,而Layer(逻辑层)指软件系统中完成特定功能的逻辑模块,逻辑概念。 Layer是逻辑上 组织代码的形式。比如逻辑分层中表现层,服务层,业务层,领域层,他们是软件功能来划分的。并不指代部署在那台具体的服务器上或者,物理位置。 Tier这指代码运行部署的具体位置,是一个物理层次上的划为,Tier就是指逻辑层Layer具体的运行位置。所以逻辑层可以部署或者迁移在不同物理层,一个物理层可以部署运行多个逻辑层。 从Layer和Tier就会延伸到逻辑架构和物理架构。我... 阅读全文
面向设计原则理解
2012-05-08 00:47 by 破狼, 6054 阅读, 收藏, 编辑
摘要:
面向对象设计(OOD)核心原则让我的程序模块达到“高内聚低耦合”,这是来自于30年前兴起的结构化设计(structured Design),但是同样适用于我们的OOD。1.高内聚: 高内聚是指某个特定模块(程序,类型)都应完成一系列相关功能,描述了不同程序,类型中方法,方法中不同操作描述的逻辑之间... 阅读全文