TheBeerHouse网站项目学习笔记(5)---架构设计

摘要:TheBeerHouse整个网站是属于CMS(Content Management System)架构的系统,即基于内容的网站 设计,这是网站设计最普遍的一种架构.在此网站的设计中,为什么需要用到许多抽象基类,为什么需要各种 看似让人难以理解的属性和成员变量,设计意图是什么,这么设计有什么好处等等这类问题,都是值得我 们思考和探讨的问题.我们将从层次关系、类图关系、设计意图这几个方面讨论上述提出的问题.

一. 层次关系

如上图,红色虚线框内的将是我们讨论的内容,这里面几乎全部是类,他们共同构成了我们新闻文章 管理模块的功能架构.首先我们看到,这些类全部放到了App_Code目录中,在这个目录中包含了逻辑层和 数据层的各种类,这些类各具功能,和我们以前学习的中规中矩的三层架是有很多区别的,以前的三层结 构中分为实体层(Models)、数据层(ModelService)、逻辑层(ModelManager),这些层中只有简单的 引用关系,基本不存在继承或实现接口的关系。那么当需求增加后,这些层次关系是可以实现扩充的,但 总显得有些单调,因为有这么样一句话是说的非常有道理的:在实际设计中,类的设计对于一些相似的功 能类总该保持一个或多个基类,保持基类短小,让它只包含子类所需的通用功能是个好的设计习惯, 即使最 初在基类中不想放任何详细的代码,但以后如果需要一个通用属性和方法, 那么在整个架构中拥有一个基 类也会很方便的.一般基类都设计成抽象类,所以我们在此结构中看到的抽象类几乎都是对下面具体子类通 用功能的抽象。对于层次关系的讨论我们就从基类开始.

二. 逻辑层的结构

以下是逻辑层的类关系图:

时间: 2024-12-31 22:30:22

TheBeerHouse网站项目学习笔记(5)---架构设计的相关文章

TheBeerHouse网站项目学习笔记(3)----安全管理(上)

摘要: 安全管理是网站设计不可回避的问题,也是网站设计的重用组成部分.这些组成部分都需要对不 同的用户进行识别,检查用户是否有权限对那些受限制的网页进行访问,这种方法称为认证 (authentication).决定用户可以对哪些内容进行访问,这种方法称为授权(authorization).这两个概念容 易弄混淆,那么可以这么来理解: 认证---你是谁? 授权---我已经知道你是谁,你可以做什么?认证和授 权是网站成员权限管理的一部分,包括创建新用户,用户证书管理(包括密码保护机制,例如为遗忘密码

TheBeerHouse网站项目学习笔记(1)----换肤技术

对于ASP.NET学习的中期,TheBeerHouse 项目是一个不错的选择,这个项目几乎囊括了所有ASP.NET 2.0 下所有的技术点,而且其设计的类图架构知识值得我们借鉴.关于此项目的介绍,在此不罗嗦,可以参看如下 地址: 1. 源码下载: http://www.asp.net/Downloads/starter-kits/the-beer-house 2. 功能技术点介绍: http://www.codeplex.com/TheBeerHouse 3. 该项目真实网站: http://w

TheBeerHouse网站项目学习笔记(4)----安全管理(下)

摘要: 安全管理是网站设计不可回避的问题,也是网站设计的重用组成部分.这些组成部分都需要对不 同的用户进行识别,检查用户是否有权限对那些受限制的网页进行访问,这种方法称为认证 (authentication).决定用户可以对哪些内容进行访问,这种方法称为授权(authorization).这两个概念容 易弄混淆,那么可以这么来理解: 认证---你是谁? 授权---我已经知道你是谁,你可以做什么?认证和授 权是网站成员权限管理的一部分,包括创建新用户,用户证书管理(包括密码保护机制,例如为遗忘密码

TheBeerHouse网站项目学习笔记(2)----个性化管理

上篇讨论了换肤技术,这篇将继续讨论下一个知识点----个性化管理,即利用ASP.NET 2.0 内置的用户 个性化管理功能(必备文章讨论)将用户的各种个性信息存入自定义数据库,以达到个性信息的"记忆"功能, 让每个用户无论是匿名还是注册,在他们下次登录或匿名登录后仍然能得到自己上次的个性设置(比如网站 皮肤,页面布局,注册时的各种个人信息等). 这里的个性化管理还包括权限管理的说明(第3篇讨论),其技术基础请参看上述必备知识文章. 那么我们就继续展开讨论. 一. 数据讨论 确保此网站所

thinkphp学习笔记5—模块化设计

原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,

entity framework-求一个用Entity Framework写的网站项目学习

问题描述 求一个用Entity Framework写的网站项目学习 求各位·大神帮忙,救命那类似于宣睿斎这样的网站,我模仿这学习一下,各位大神帮帮忙,求一个用Entity Framework写的网站项目学习 解决方案 参考:http://www.cnblogs.com/SkyD/archive/2009/07/20/1526767.html 解决方案二: 在公司里都不用Entity framework写代码麽

避免单点,云上应如何实现网站高可用和高性能架构设计(系列干货)

推荐系列文章(陆续更新): 微博混合云DCP:极端流量下的峰值应对与架构挑战 千万级用户直播APP--服务端结构设计和思考 空格App亿元A轮融资背后:云上多场景技术架构实践与经验 美柚:最懂女性App背后的混合云架构与大数据服务 涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维 微博:春节日活跃用户超一亿,探秘如何实现服务器分钟级扩容 业务需要全球部署?来看看企业级全球网络架构与解决方案 银泰网上云之路引发混合云关键考虑 架构分析.数据整合.负载均衡,梦想旅行解析云上实践 虎嗅:四年覆盖9

JAVA NIO学习笔记1 - 架构简介

最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO方式NIO采用了全新的底层I/O模型.传统IO的设计概念是面向流,而NIO则是面向块.简单点说,传统I/O是基于字节的,所有I/O都被视为单个字节的移动,使用时需先把对象转换为字节码:而NIO是面向块的,以块为单位处理数据,每个操作会生成或消费一个块的数据.从设计理念来看,NIO的操作粒度要比传统I

商业级项目——基金客户端的架构设计与开发(下)(附源码)

#项目简介 上一次的博文中详细分析了基金项目的整体架构和主界面的UI设计.今天分享地方是剩下的3个页面及相应功能的实现.#个人中心 个人中心界面,最开始会跳转到一个登陆界面,用户可以通过选择"身份证.基金账户.护照.户口本",然后输入相应的账号和密码进行登陆.在这个界面中,还具有相应的记住密码,忘记密码功能.不输入是不允许进入账户的,当正确输入相应的账号密码后,通过和后台服务器进行验证登陆,登陆进去之后是一个账户详情页,有持仓查询.盈亏查询.交易查询等功能,在持仓查询中hi有总资产,活