昨天应该完成业务分析的工作,但很无奈的是到写这篇日志的时候我们小组仍然没有完成这项工作。昨晚的额外开销的负面影响果然不小。
今天上午讲课部分的内容:先是让各组确认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的数据库编程模式
分享到:
相关推荐
1. **文档说明**:此文档包含了项目从初步构思到具体实现的各个阶段所需考虑的关键要素,包括设计约束、逻辑架构、物理架构、开发架构和数据架构。此外,每个部分都详细地阐述了其目标、方法和实现策略。 2. **DFX...
在IT行业中,架构设计是构建复杂软件系统的关键步骤,它涉及到如何组织和连接各个组件,以实现高效、可扩展和可维护的系统。本部分主要关注"从架构设计到系统实施"的第一部分,我们将深入探讨架构设计的重要概念、...
### 智能家居开发日志知识点解析 #### 一、项目概述与启动阶段 - **项目背景**:本项目旨在开发一套基于STM32和ZigBee技术的智能家居系统,实现家庭环境中的智能控制与监测。 - **启动会议**:在项目的初期阶段,...
本文将深入探讨如何设计与实现一个万亿级规模的大数据平台,并重点介绍其核心组件、关键技术以及架构演进策略。 #### 一、平台整体架构概述 大数据平台的整体架构设计需充分考虑数据处理的实时性、扩展性和易用性...
豪尔赫·阿朗戈 Jorge Arango 拥有20年的信息架构环境设计经验,并且担任IA协会的总裁兼董事长。 目录 · · · · · · 前言 xvii 第1部分信息架构简介 第1章信息架构要解决的问题 3 你好,iTunes 5 信息架构要...
通过阅读《Nginx模块开发与架构解析》这本书,无论是对Nginx有初步了解还是希望深入研究的开发者,都能从中受益匪浅,掌握Nginx的高级特性,提升自己在Web服务器领域的能力。如果你对Nginx的模块开发、架构设计、...
1. ARM程序设计:使用ARM架构的处理器进行程序开发,理解和应用ARM指令集及其汇编语言。 2. Linux操作系统:利用Linux作为系统内核,熟悉Linux驱动程序开发,实现设备的交互和数据处理。 3. 交叉编译:由于开发环境...
用户体验设计师、产品经理、开发人员和数字设计中涉及的所有人,都要学习如何创建帮助人们与你的信息进行交互的语义结构。 本书包括: 信息架构概述,以及为创建有效的数字产品和服务而解决的问题 深入探讨了信息...
### Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 #### 一、Hadoop概述 Hadoop是一种能够处理大规模数据集的开源软件框架。它最初由Apache开发,旨在为海量数据提供分布式存储和计算能力。Hadoop的核心...
网站架构设计是构建高效、可扩展且易于维护的web应用程序的关键。本文主要探讨了网站架构的基本需求、目标、架构层次及其间的交互,以及如何处理集群、第三方应用集成和数据一致性等问题。 首先,基本需求和目标...
在构建一个网络项目交易...以上就是网络项目交易系统初步设计中的主要知识点,这些内容将指导系统的开发过程,确保最终产品能满足用户需求,提供安全可靠的交易环境。在实际开发中,还需要根据具体情况进行调整和优化。
1. 日志采集设计:通过搭建syslog日志服务和基于syslog协议采集日志数据,确保了从多设备中提取日志并进行初步的集中管理。 2. 日志处理设计:根据预设的过滤规则对日志进行过滤,并将不同厂商和型号的日志整合成...
本文档旨在详细介绍一种日志分析技术的设计方案,该方案致力于提供一个可配置的日志分析服务。通过该服务,可以根据不同产品线的具体需求来定制化分析策略,从而高效地提取关键信息并进行深入分析。此方案的核心在于...
在构建大型多人在线角色扮演游戏(MMORPG)服务器端架构时,设计和开发的目标是至关重要的。首先,高稳定性是核心需求,确保服务器能够长时间无故障运行,以满足玩家不间断的游戏体验。高适应性意味着服务器需要应对...
这一设计允许SP(增值服务商)和CP(内容提供商)能够独立开发复杂应用,促进模块化工作细化,简化新产品上线流程,遵循“一次设计,零代码修改”的原则。 #### 名称解析 - **SMG**:服务消息代理网关引擎,负责...
本文将从初步设计的角度出发,探讨汇率系统的架构设计,分享一些实际工作中的经验与积累。 首先,汇率系统的核心功能是提供实时、准确的汇率数据,因此,系统设计应以数据获取和处理为主线。这包括以下几个关键组件...
- **用户手册概要.doc**:初步介绍软件的使用方法,帮助理解系统预期的行为。 - **数据要求说明书.doc**:描述数据的类型、格式、存储和处理要求,为数据库设计提供依据。 4. **概要设计阶段**: - **概要设计...
【经典自开发框架项目】是IT领域中一个重要的实践,它涵盖了软件开发的多个关键环节,包括设计、实现、测试和维护。自开发框架的主要目的是为了提高开发效率,提升代码的可重用性,以及更好地适应项目的特定需求。在...
在Java Web开发中,三层架构是一种常见的设计模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种分层设计有助于提高代码的可读性、...