软件系统设计
振阳软件技术培训中心
面向服务结构-软件部件的分类
把功能相同/或相似的组 件组织成了“层“(Layer) 如我们常见的三层结构:
表示层 业务逻辑层 数据层 系统服务层
振阳软件技术培训中心
13
经典的三层结构
表示层
用户界面和界面处理 数据验证,输入,数据显示 Windows Form(或智能客户)、Web Form
数据表示/输入/验证 业务逻辑
服务器
数据存储 业务逻辑 丰富的用户交互界面 部署困难(目前向智能客户端方面发展) 两种实现:胖客户端、痩客户端
特点:
振阳软件技术培训中心
5
客户端/服务器的实现
痩客户端
业务逻辑在服务端实现
存储过程、触发器
数据库移可植性好 客户端配置要求一般
8
软件系统逻辑结构
解决问题:
软件系统由哪件些部件组成? 各个部件成什么样的功能? 各个部件如何协作、通信?
系统逻辑分层原理 软件系统逻辑分层
软件系统的部件
经典的三层结构
振阳软件技术培训中心 9
系统逻辑分层(Layered)原理
问题”分而治之”的处理方式 职责分配原理 相互协作,向上服务的原理 示例:
26
振阳软件技术培训中心
用户接口调用示例
1. 2. 3. 4. 5. 6.
private void addItem_Click(object sender, System.EventArgs e) { AddItemToBasket(selectedProduct, selectedQuantity) } public void AddItemToBasket(int ProductID, int Quantity) { // code to add the item to the basket }
购买流程中包含了多个步骤 使用用户处理部件完成这个购买流程
振阳软件技术培训中心 29
设计用户处理部件
用户处理组件用类来实现 UI可以调用用户处理组件类 UPC类中方法封装了:
完成一个流程所需的动作
示例:
结帐处理 PurchaseUserProcess.cs
振阳软件技术培训中心
30
表示层设计
将用户交互分成用户界面和用户界面处理 特点:
更好的管理用户交互-如可以撤消操作 多个用户界面可以重用相同的处理 处理并发用户的活动
振阳软件技术培训中心
31
设计UIC和UPC
标识出用户交互要处理的业务处理 标识出业务处理所需要的数据 标识出用记交互过程中状态的变化 设计出用户交互流程 的实现
用户处理部件(UPC)
分隔用户界面和业务逻辑 下一步,执行什么? Front Controller, Application Controller模式参考
16
振阳软件技术培训中心
业务逻辑层
业务组件
处理特定的业务问题-封装了业务逻辑/规则
协调多个业务组件,共同完成某个业务处理过程 是数据容器 表示业务逻辑里的一个对象 业务工作流和业务组件过业务实体交互 DTO的一个用法 业务外观层 外部调用接口
服务接口 用户处理部件 业务工作流 其它业务部件
40
振阳软件技术培训中心
典型的业务部件
业务组件可以被表示 层调用 可以被服务接口调用 可以调用DALC 可以服务代理层
外部服务
振阳软件技术培训中心
41
数据传输方式
XML DataReader DataSet Typed DataSet Custom object(业务实体)
振阳软件技术培训中心
42
业务实体设计
能过属性来访问(Get和Set) 集合数据使用索引
也可用系统内置的DataTable Validate, Save, HasCheckedOut, IsLogged 提高可维护性、扩展性 Order Customer
43
业务实体成员的命名
通过方法使用的业务实体
什么时候不需要业务工作流?
不需要维护业务处理中间状态 业务组件可以被多个业务处理重用
37
振阳软件技术培训中心
零售系统-订单生成
多个步骤
信用卡验证 付款 安排交货 交货确认
按照一定的秩序完成的 每一个步骤是由单独的业务组件完成的
振阳软件技术培训中心
38
设计业务部件
1
剖析软件系统的结构
软件系统由什么组成:
程序代码、控件、数据库、文档 服务器、客户机
我们关注软件系统内部结构
物理结构
有多少类台机器?它们的职责的是什么?如何分布? 部署的问题 系统架构 软件系统内部如何组织? 软件(应用)架构的
逻辑结构
振阳软件技术培训中心
2
软件系统物理结构发展史
业务工作流
业务实体
服务接口
振阳软件技术培训中心
17
数据层
数据访问逻辑组件
隔离数据源和业务逻辑层 业务层不在依赖于数据库 配置性和维护性
服务代理
调用外部服务接口
振阳软件技术培训中心
18
回顾
把功能相同/或相似的组 件组织成了“层“(Layer) 如我们常见的三层结构:
单主机方式
单机-IBM AS400 PB, Delphi, VB6.0,FoxPro应用程序 客户机-服务器 WEB-BASE应用程序 客户机-WEB/应用服务器-数据库服务器 目前最为常用的部署结构 客户机-WEB服务器-应用服务器-数据库服务器
3
客户机-服务器(C/S)方式
客户机-服务器(B/S)方式
业务部件具有最基本的事务性 封装使用业务规则/业务逻辑 被表现层/业务工作流调用/服务接口 调用数据层/数据访问逻辑 COM/COM+ 部署在应用服务器上
振阳软件技术培训中心
39
.NET业务部件设计
由类的方法实现 业务组件处理事务 数据输入/输出的验证 调用数据访问数据层/服务代理 起动业务工作流 异常处理 业务部件可以被以下:
ISO/OSI模型 Windows系统
振阳软件技术培训中心
10
系统分层的分类
分类
Strictly layered
只能调用下层提供的服务
Relaxed layered
可以跨层调用
Layer Super type(超层)
每一层的公用行为,可以由所有层调用 每一层的部件对外的名称 上一层通过这个名称调用请求服务
胖客户端
业务逻辑有客户端实现 程序可植性好 客户端配置要求高
振阳软件技术培训中心 6
物理结构- B/S结构(三节点)
1. 2.
客户机
数据表示/输入/验证
业务逻辑 系统服务 数据存储 业务逻辑
WEB/应用服务器
3.
数据服务器
特点:
简化部署问题 好的响应能力 服务器成为系统瓶颈 伸缩性不太好 用户界面交互能力差(AJAX方向发展)
振阳软件技术培训中心
24
设计用户界面部件
数据输入
数据输入提示 数据输入限制 数据输入验证 捕获用户动作事件 数据显示/数据值的对照 可以使用单独部件进行数据缓存 可以使用单独部件进行分页处理
振阳软件技术培训中心
25
设计用户界面部件
数据显示
调用业务层/数据层获取数据 数据格式化 数据本地化 获取的数据通常是业务实体,需要一些额外的 代码(UPC)去解析 自定义数据展示爱好 可以使用单独部件进行数据缓存 可以使用单独部件进行分页处理
7
振阳软件技术培训中心
物理结构- B/S结构(四节点)
1.
客户机
数据表示/输入/验证
2.
WEB服务器
系统服务
3.
应用服务器
业务逻辑
4.
数据服务器
数据存储 业务逻辑
特点:
简化部署问题 更好的响应能力 伸缩性好 交互能力取决于客户端 是目前最为经典的结构
振阳软件技术培训中心
Session 表示用户交互流程的变化-购物车
成员变量
32
Windows Form的实现
振阳软件技术培训中心
用户处理组件设计
振阳软件技术培训中心
33
UPC设计建议
确定是否需要用户处理组件 如果用户处理过程长
中间状态需要应该保存数据库中 中间状态需要应该保存在内存/会话中
如果用户处理过程短
数据层
振阳软件技术培训中心
15
表示层
用户界面部件(UIC)