没有合适的资源?快使用搜索试试~ 我知道了~
基于.NET平台的分层架构实战实用文档doc.doc
0 下载量 103 浏览量
2022-12-01
05:42:50
上传
评论
收藏 10MB DOC 举报
温馨提示
试读
95页
基于.NET平台的分层架构实战实用文档doc.doc
资源推荐
资源详情
资源评论
�
基于.NET 平台的分层架构实战
【实用文档】doc
文档可直接使用可编辑,欢迎下载
通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就
是专门研究.NET 平台上分层架构的(题目叫“基于.NET 平台的分层架构与设计模式应用
研究”).通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,
详述一下分层架构。然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,
所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基
本方法,这样会直观很多。希望在这个文章系列的写作过程中,能和朋友们一起学习,一起
进步。
为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简
单的留言本系统作为 Demo,这个系统的名字就叫做 NGuestBook。
ﻫ 初步计划将这个文章系列分为以下几篇:
1.综述2 ﻫ.系统需求分析及数据库设计3 ﻫ.架构概要设计
4.实体类的实现5 ﻫ。接口的设计与实现
6。依赖注入及 IoC的设计与实现
7。数据访问层的第一种实现——Access+动态生成SQL 语言8 ﻫ.数据访问层的第
二种实现——SQLServer+存储过程9 ﻫ.数据访问层的第三种实现——基于 NBear
框架的 ORM 实现10 ﻫ.业务逻辑层的实现
11。表示层的实现12 ﻫ。使用ASP.NET AJAX 框架对表示层进行改进
13.总结
当然,以上只是初步计划,在写文章的过程中可能会根据具体情况适当调整,但是内容大
体就是这些。
这个文章系列不会对所用到的技术进行详细讲解,具体请参考相关文献,阅读文章前
最好能对以下技术有一个了解:1 ﻫ.C#语言2 ﻫ。ASP.NET3 ﻫ.设计模式
4.关系数据库基础知识5 ﻫ.软件架构基本原则与软件工程基础知识6 ﻫ。基
于 NBear 框架的 ORM技术
7。JavaScript,Ajax
8。ASP.NET AJAX 框架(特别是客户端编程)9 ﻫ.HTML,CSS,标准化布局
ﻫﻫ 另外,本文章系列是基于.NET framework2.0 框架平台进行讨论,3。5 平台的
新特性(如LINQ、ASP.NET MVC等)不会讨论,IDE使用 Visual Studio 2005,数据
库会用到 SQLServer2005 Express 和 Access2003。
� 在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影
响项目的开发过程和质量。实际中,这个环节不但需要系统分析师、软件工程师等
计算机方面的专家,还需要相关领域的领域专家参与才能完成。ﻫﻫ 但是,在这
个文章系列中,所要使用的 Demo仅仅是一个例子,而且其业务极为简单,因此,这里
并不是真正的需求分析和数据库设计,而是将 Demo 的需求和数据库罗列至此,使
朋友们对 Demo 有一个大体的了解,方便后续文章中开发过程的理解。
需求分析: 这个项目是一个留言本,其业务极为简单,现将其描述如下。
1.任何访问者可以进行留言,留言完成后,不会立即显示正文,而是要经过管
理员验证后才可显示。
2。任何访问者可以对留言发表评论,未通过验证的留言不可以评论。3 ﻫ.管
理员可以对留言进行回复(这个回复不同于评论,是直接显示在正文下面,而且是一
个留言只能有一个回复),并可对留言与评论实行删除,以及对留言进行通过验证
操作。4 ﻫ.管理员分为超级管理员和普通管理员。超级管理员只有一个,负责
对普通管理员实行添加、删除操作.普通管理员可偶多个,负责对留言的管理,并可
以修改自己的登录密码.
ﻫ 这个项目的用例图如下:ﻫ
数据库设计:ﻫ 设计数据表之前,首先进行实体和关系的识别与确定。ﻫ 通过需求
分析,可以观察得出,本项目的实体有:管理员(不包括超级管理员),留言,评论。本项目的
关系有:留言与评论间的一对多关系.ﻫﻫ 进一步,数据库各表的设计如下:
ﻫ 管理员表(TAdmin)ﻫ ID int 管理员 ID NotNull 主键,自增
Name varchar(20) 登录名 NotNull
Password varchar(50) 登录密码 NotNull 使用MD5 加密ﻫﻫ 留
言表(TMessage)
ID int 留言 ID NotNull 主键,自增
GuestName varchar(20) 留言者用户名 NotNull
GuestEmail varchar(100) 留言者E-mail Null
Content text 留言内容 NotNullﻫ Time datetime 发表留言
时间 NotNull ﻫ Reply text 回复 Null
IsPass varchar(10) 是否通过验证 NotNull
ﻫ 评论表(TComment)
Content text 评论内容 NotNullﻫ Time datetime 发表评论
时间 NotNull
MessageID int 所属留言的 ID 外键
� 基于。NET 平台的分层架构实战(三)—架构概
要设计
本文主要是对将要实现的架构进行一个总体的描述,使朋友们对这个架构有个宏观上的认
识。这篇文章理论性的东西会偏多一点,从下篇开始,将进行实际项目的开发.这篇文章的许
多内容摘自我的毕业论文.
架构基本原则:
这里,将描述一些在这个架构设计中的基本原则,其中很多都是经典的设计原则,不过针对
分层架构的特点,用我自己的语言进行了描述。其中也有我自己提出的原则。
逐层调用原则及单向调用原则
现在约定将 N 层架构的各层依次编号为 1、2、…、K、…、N-1、N,其中层的编号越大,
则越处在上层.那么,我们设计的架构应该满足以下两个原则:
1.第 K(1
2.如果 P 层依赖 Q 层,则 P 的编号一定大于 Q。
其中第一个原则,保证了依赖的逐层性,及整个架构的依赖是逐层向下的,而不能跨层依赖。第
二个原则,则保证了依赖的单向性,及只能上层依赖底层,而不能底层反过来依赖上层。
针对接口编程,而不是针对实现编程
这里所指的接口,不是特指编程语言中的具体语言元素(如C#中由 Interface 定义的语
言接口),而是指一种抽象的,在语义层面上起着接合作用语义体。它的具体实现,可能是
接口,可能是抽象类,甚至可能是具体类。
我认为,从不同的视角,接口可以有以下两种定义:
1.接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了
自然界“如果你是……则必须能……”的理念。
2。接口是在一定粒度视图上同类事物的抽象表示。注意这里我强调了在一定粒度视图上,
因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。
具体到 N 层架构中,针对接口编程的意义在部分上是这样的:ﻫ现仍约定将N层架构的各层
依次编号为 1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层,那么第 K 层不
应该依赖具体一个 K-1层,而应该依赖一个 K-1层的接口,即在第 K 层中不应该有 K—1 层
中的某个具体类.
依赖倒置原则
在软件设计原则中,有一种重要的思想叫做依赖倒置。它的核心思想是:不能让高层组件依
赖底层组件,而且,不管高层组件和底层组件,两者都应依赖于抽象。
那么,这个原则和我们上面的原则是否矛盾呢?其实并不矛盾。
因为这个原则定义中的“依赖”是指“具体依赖",而上面定义中的依赖全部指“抽象依赖”。我
对这两种依赖的定义如下:
具体依赖——如果 P 层中有一个或一个以上的地方实例化了 Q 层中某个具体类,则说 P 层具
体依赖于Q层。
抽象依赖—-如果P层没有实例化 Q 层中的具体类,而是在一个或一个以上的地方实例化了
Q 层中某个接口,则说 P 层抽象依赖于Q层,也叫接口依赖于 Q 层。
从这两个定义可以看到,所谓的依赖倒置原则,正是上面提到针对接口编程,而不是针对实现
编程,两者在本质上是统一的.
综上所述,可以看出,本课题设计的分层架构,应该是这样一种架构:1ﻫ。N层架构的各层依
次编号为1、2、…、K、…、N—1、N,其中层的编号越大,则越处在上层。
2.架构中仅存在一种依赖,即第 K 层接口依赖第 K—1 层,其中 1
封装变化原则
封装变化的原则定义为:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需
要变化的代码混杂在一起。
开放-关闭原则
开发-关闭原则定义为:对扩展开放,对修改关闭.
具体到N层架构中,可以描述为:当某一层有了一个新的具体实现时,它应该可以在不修改其
他层的情况下,与此新实现无缝连接,顺利交互。
单一归属原则
在这个架构中,任何一个操作类都应该有单一的职责,属于单独的一层,而不能同时担负两
种职责或属于多个层次(实体类及辅助类可以被多个层使用,但它们不属于任何一个层,而
是独立存在)。
层次划分:
目前,典型的分层架构是三层架构,即自底向上依次是数据访问层、业务逻辑层和表示层.
这种经典架构经历了时间的考验和实践的多次检验,被认为是合理、有效的分层设计,所以,
在本文中,将沿袭这种经典架构,使用数据访问层、业务逻辑层和表示层的三层架构体系.
职责划分:
目前,在典型的三层架构中,对层次各自的职责划分并没有一个统一的规范,综合现有的成
功实践和.NET 平台的特殊性,在本文中将三层架构的职责划分如下:
剩余94页未读,继续阅读
资源评论
xinkai1688
- 粉丝: 322
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
- Linux线程同步机制深度解析与实用指南.zip
- PTA题库C语言解题策略与实战.rar
- SVPWM控制技术的simulink建模与仿真【包括simulink模型,参考文献,操作步骤】
- AI高清修复图片画质易语言易语言源码易语言填表
- 映射窗口.ec易语言易语言模块CPU占用0%游戏监控窗口监控
- 易语言 361窗口模块高效、便捷、自封装、自用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功