昨天应该完成业务分析的工作,但很无奈的是到写这篇日志的时候我们小组仍然没有完成这项工作。昨晚的额外开销的负面影响果然不小。
今天上午讲课部分的内容:先是让各组确认VSS帐户的建立和管理,让各组把业务流程分析的结果传到VSS上同步起来;再是点评昨天各组所做的分析。我们组被点评的是客户管理的部分。很可惜,看来并不合格。今天晚上我的任务就是把小组其他成员所做的分析与我负责的部分整合到一起,并修正其中的错误。啊,说起来我们组的VSS帐号结果也是我来创建和维护的;得让我们的支持经理少玩点流星花园多干点正经事才好,但又不知道该如何入手好。
下午的课程讲了一下本次项目会采用的架构。看来会参考非常经典的例子来展开:
The .NET Pet Shop。主要的参考实现是Pet Shop 4.0,但参考架构是Pet Shop 3.0。LY老师说要在3.0采用的架构的基础上进行裁剪,让我感到有点困惑……说到底,Pet Shop 3.0的架构是典型的三层架构——表现层(presentation tier)、业务逻辑层(business logic layer)、数据访问层(data access layer);这已经相当精简了,我想不到有什么理由还需要去精简,要说需要调整那或许还算合理。
表现层负责显示数据与获取用户输入,以ASP.NET Web表单实现,一般部署在IIS上;业务逻辑层负责处理领域相关的业务逻辑,以C#或VB.NET等实现,运行在CLR上;数据访问层处理数据持久化相关的操作,同样以C#或VB.NET等实现并运行在CLR上。在数据持久层以下就是数据库的连接器与数据库本身,不需要在系统内讨论。
这跟我相对熟悉的Java EE体系自然十分相似。很多东西只是换了个叫法,思想是一样的所以上手不算麻烦;像是中间的DAO,在MS体系中被分在了DAL里,后面由JavaBean表示的业务实体在MS体系中则是在Model模块中。
这么说来,应该简单看看这个架构下各个部分中有些什么对象,做些什么事,与Java EE中的术语又如何联系起来。
DBUtility是真正与数据库打交道的部分。里面有像是SQLHelper、OracleHelper等的工具类,其中实现了ExecuteNonQuery、ExecuteReader等方法,以具体的Connection/Command/Parameter来实现对数据库的访问。Pet Shop里的这些工具类对query操作会返回DataReader(而没有用DataSet),这在我们的设计中可以考虑改变一下。
Model中的对象主要是类似POJO(plain old/ordinary Java object)一般的skinny class,提供一个空构造器和一个全参数构造器,然后提供各个业务实体需要的字段和相应的属性。通常会与具体的表相对应。用于持久化的时候,Model中的对象被当作PO(persistent object)。
DAL中的自然是DAO(data access object)了。DAO用于封装对数据库的访问,但并不是直接与数据库打交道,而是通过调用DBUtility里的工具类来访问。对应每个Model里的类都有一个DAO,里面有各种操作所需要的SQL语句,并有诸如GetItemsByProduct等的方法去使用具体的SQL语句完成对数据库的操作。啊,不能忘记DAL层有IDAL模块来指定各DAO的接口,然后各个实际DAL实现会有对应的类去实现那些接口。具体加载哪个DAL实现可以在配置文件里配置,到运行时利用反射来加载。
BLL中的对象主要应该是BO(business object)——封装了业务逻辑的对象。Pet Shop里BLL中对应每个Model里的业务实体类都有一个类来处理业务……或许是因为业务逻辑很简单?
Web部分就是表现层,基本上就是页面和相关配置/资源,不应该混入业务逻辑。这里用于显示的数据的来源就是所谓VO(value/view object)
Pet Shop 4里还有些别的东西,像是几个Dependency和Strategy,这次不知道会不会用上。不过Membership的部分很可能会用。之前得Colorful大的提醒,接触到基于Membership实现的RBAC,确实很不错,看看能不能用进来。
===============================================
几个想记录的链接:
Microsoft .NET Pet Shop 3.x: Design Patterns and Architecture of the .NET Pet Shop
Microsoft .NET Pet Shop 4 架构与技术分析
对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式
分享到:
相关推荐
豪尔赫·阿朗戈 Jorge Arango 拥有20年的信息架构环境设计经验,并且担任IA协会的总裁兼董事长。 目录 · · · · · · 前言 xvii 第1部分信息架构简介 第1章信息架构要解决的问题 3 你好,iTunes 5 信息架构要...
用户体验设计师、产品经理、开发人员和数字设计中涉及的所有人,都要学习如何创建帮助人们与你的信息进行交互的语义结构。 本书包括: 信息架构概述,以及为创建有效的数字产品和服务而解决的问题 深入探讨了信息...
4.1.1 系统总体目标、设计架构、系统详细设计方案 27 4.1.1.1 设计原则 27 1. 统一设计原则 27 2. 稳定性原则 27 3. 统一设计原则 27 4. 稳定性原则 27 5. 先进性原则 27 6. 高可靠/高安全性原则 27 7. 开放...
02-DBA参与项目数据库设计及培训开发人员高效设计MYSQL库语句.avi 03-老男孩核心思想-项目周期的制定思想.avi 04-linux进程占用cpu高的解决方案案例.avi 05-数据库账户权限控制多种思路及技巧.avi 06-数据库客户端...
日志收集项目架构设计及kafka介绍 ELK项目架构 ELK方案的问题 运维成本高,每增加一个日志收集项,都需要手动修改配置 监控缺失,无法准确获取logstash的状态 无法做到定制化开发和维护 架构设计 卡夫卡原理: ...
适用范围 业务或需求分析人员、架构设计师、软件开发工程师、测试人员、项目管理人员。 项目概述 背景 文件服务器规划设计全文共29页,当前为第5页。对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最...
开发基于Flex+Spring+Hibernate架构的数据发布系统,设计了一套灵活、松耦合、可扩展的数据发布系统,该系统具有数据发布功能、用户管理功能、日志管理功能,初步解决了当前数据发布中存在的问题。
Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet ...
完成“中小企业办公自动化管理系统”的设计,中小企业办公自动化管理系统是一个适应于中小型企业的能满足日常办公需求的管理系统,本系统初步拟定由以下六个模块组成。 (一)个人通讯录 (二)日程安排模块 (三)工作...
同时,也希望通过合理的架构设计调整适用于中大型项目。稍微的依赖安装,取决于Laravel的思维进行扩展,不额外增加“负担”。开箱即用,加速Api开发。社区讨论传送 Lumen学习交流群:1105120693(QQ)概览初步支持...
增删改查等部门管理:可配置系统组织架构,树形表格展示任务调度:Cron任务管理系统监控在线用户:在线用户监控IP黑名单:实现系统IP黑名单拉黑功能CRUD日志:实现CRUD日志记录功能错误日志:显示后台未知错误及其...
2,初步尝试面向营销的技术架构,为iwebsns商业版提供实验框架; 3,全新优化的问答功能模块,性能升级。 4,用户资料后台自定义功能。 5,增加了用户邮箱激活功能。 6,main页面增加好友推荐功能,方便新用户找到...
经过一个月的迭代开发,终于初步完成酷瓜云课堂的 v1.2.0 版本,此次更新修复了以往版本出现的问题,最主要的是完成了客户端所需要的 API,以后 H5 移动端,小程序,APP 客户端就可以陆续的发布了。 还有一个重大...
12.1 Android 5.X UI设计初步 258 12.1.1 材料的形态模拟 258 12.1.2 更加真实的动画 258 12.1.3 大色块的使用 259 12.2 Material Design主题 260 12.3 Palette 261 12.4 视图与阴影 263 12.5 Tinting和...
不过早期的数据库同步业务,主要是基于trigger的方式获取增量变化,不过从2010年开始,阿里系公司开始初步的尝试基于数据库的日志解析,获取增量变更进行同步,转换衍生出了增量订阅和消费的业务,从此开启了一段新...
按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。 -测试需求的分析和确定。 -测试计划。 -测试设计。 -测试执行。 -...
前后端分离,基于vue2,uniapp,vue-cli,springboot,springsecurity,mybatisplus,mysql初步实现物业管理APP前端界面,后台管理界面,后台系统 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由...
努力打造一个免费的开源,注释全,文档全适合新手学习,方便快速二次开发的框架。 1.没有基础版,没有vip版本,没有收费群,没有收费二维码 2.初步开源真谛,一切免费才是真开源 3.不求回报,你使用快乐就是这个项目...
日志查询和监控 分散部署 服务联络SDK 去做 Tasker RPC任务类型 Tasker PHP函数任务类型 TaskStorer Kafka实现 Sdk PHP接收SDK 快速开始 安装 git clone https://github.com/meixiu/utask 修改配置 配置文件在config...