ASP.NET 常见参考项目的 UI、BLL 、Model 、 DAL 分析
应用/项目名称 | UI层实现 | Business Model & Logic Layer 实现 | Data Access Layer 实现 |
Personal Web Site Starter Kit | 在ASP.NET页面上直接利用 ObjectDataSource 来绑定 PhotoManager 中的方法来获取数据、更新数据 |
两个数据实体类(Album、Photo),一个管理类(PhotoManager) 自行解决数据库连接、使用 SqlCommand 来调用存储过程来完成 |
|
Club Web Site Starter Kit | 在ASP.NET页面上直接利用 SqlDataSource 来获取数据、更新数据 | 只有一些简单的 Helper/Utility类,业务逻辑大多在页面上实现 | 有一个DataSet,提取 Member表的数据,在自己的数据库中扩充了 SqlMembershipProvider的字段 |
Classifieds Site Starter Kit |
在ASP.NET页面上,增/删/改主要是利用FormView调用BLL中的ModelDB来实现,数据列表主要利用ModelCache的List和ModelDB返回的ModelDataTable来绑定 |
1) BLL中实现了 ModelDB的类,调用DAL中的DataSet来进行数据更新,如果是查询数据(GetModelList),则得到 ModelDataComponent.ModelDataTable,这是数据集自动生成代码中的一个类
2) 在 App_Code 的Web目录中,主要实现了部分实体在 HTTP Context中的Cache功能,建立了 CachedModel(数据实体类)及其管理对象 ModelCache,后者主要是将BLL层的ModelDB的Retrive结果DataTable转成 List |
全是ASP.NET 2.0 中的DataSet,实现了所有表数据的获取与更新,它是调用存储过程来实现的 |
Commerce Starter Kit |
在ASP.NET页面上,有一些是直接调用 ModelManager对象来完成用户交互,有一些则是利用 ObjectDataSource 绑定 ModelManager 来达到同样功能
对于某些操作,如果没有对应的 ModelManager 则直接使用 SqlDataSource |
1) 在Objects目录下,定义了数据实体类,包含所有属性的Get/Set方法的定义,没有实例化方法,而是使用 void Load(IDataReader)来初始化,其中有一个对象(ShoppingCartItems),则继承至DataTable,利用BuildDataTable()来进行初始化
2) 利用数个 ModelProvider 将与数据库的主要交互功能封装起来,提供了实体层次的CRUD 3) 在 BLL 目录下,有数个 ModelManager,提供从业务层面对 Model 的操作,其中主要是调用 ModelProvider来完成具体的操作 |
在 ModelProvider项目中中,先定义ModelProvider抽象类,再由 SqlModelProvider 来继承,后者中利用 SqlHelper 来完成数据访问,主要是调用存储过程 |
Duwamish 7.1 (.NET 1.1) |
调用BusinessFacade中的 OrderSystem 和 ProductSystem 中的方法完成用户交互,这主要是调用DAL层的相关对象来完成的 |
1) ModelData,继承自System.Data.DataSet,在构造函数里调用BuildDataTables()来初始化一个DataTable用来存储Model数据
2) 在BusinessFacade和BusinessRule中,实现了与业务逻辑有关的内容,调用数据层的 Models 来完成数据访问 |
实现了数个 Models对象,提供了对于 ModelData的CRUD方法,它也是调用 SqlHelper 来完成与数据库的交互 |
Jobs Site Starter Kit | 利用 ObjectDataSource 绑定 Model 类,Command 主要是调用 Model 的 CRUD方法 | 在 Model 对象中定义了所有属性和CRUD方法,实现时调用了 DAL 的 DBAccess 对象,也使用了诸如 SqlParameter 等对象 | 只有一个类 DBAccess ,属于工具类,类似于 SqlHelper,它是利用 System.Data.SqlClient 来实现的,如果向其他数据库移植,代码量不大 |
Timer Tracker Starter Kit | 利用 ObjectDataSource 绑定 Model 类,Command 主要是调用 Model 的 CRUD方法 | 在 Model 对象中定义了所有属性和CRUD方法 |
DataAccess:抽象类,定义了DAL层需要实现所有 Model 的 CRUD 对应的数据访问方法
DataAccessHelper:工厂类,利用配置创建相应的 DataAccess 对象 SqlDataAccess:DataAccess 的 SQL Server 实现,其中也包含一些类似于SqlHelper 的通用方法以简化代码 |
.Text 0.95 (.NET 1.1) |
大多数是调用 Model有直接调用 SqlDataProvider 来获取数据、更新数据 | 在Dottext.Framework 的 Component 中定义了业务实体 Model 和 ModelCollection,在在Dottext.Framework定义了 Models 类,主要用提供 Model 的 CRUD 方法,其中的 R 返回 ModelCollection | 在Dottext.Framework 的 Data 中定义了 IDbProvider和 IDTOProvider 接口,然后提供了 DataDTOProvider 和 SqlDbProvider 的实现,其中调用了 SqlHelper 类 |
Community Server 2.1 SDK (.NET 1.1 & 2.0) |
直接调用 Models 的方法来获取数据、更新数据等 | 在 CommunityServerComponents 项目的 Components 中定义 Model 类,其中仅包含属性定义及构造函数,另外定义了 Models 类,其中实现了 Model 的 CRUD 方法,它是调用 Provider 下的 CommonDataProvider 来完成数据访问的 | 在 CommunityServerComponents 项目的 Proivder 中,利用抽象类CommonDataProvider 定义了所有 BLL & Model 层需要的数据访问方法,然后在 SqlDataProvider 中项目中使用 SqlDataProvider 继承此类,完成与 SQL Server 数据库的交互 |
.Pet Shop 4.0 | 在 ASP.NET 的页面上,大多是利用代码来调用 BLL 层的 Model 对象来获取数据、更新数据 |
Model 项目 中定义了所有的业务实体 ModelInfo BLL 项目中定义业务实体 Model ,其中包含业务视角的 CRUD 方法,它们是调用 IDAL 中的 IModel 的 CRUD 方法来实现的 |
IDAL 项目中有多个接口定义 IModel,其中定义了需要实现的 Model 的 CRUD 方法 SqlServerDAL 和 OracleDAL 分别在两种数据库上实现了 IDAL DALFactory 为工厂类,负责根据配置返回相应的 IDAL 的 IModel 实现类 DBUtility 是 SQL Server 和 Oracle 数据库操作的工具类,主要是 SQLHelper 和 OracleHelper |
简单个人评价:
- Personal Web Site Starter Kit:简单,供初学者参考之用
- Club Web Site Starter Kit:对标准 MemberShip 的扩充值得一看
- Classifieds Site Starter Kit:结构较为清晰,利用 DataSet 简化了大量 SQL 代码的编写
- Commerce Starter Kit: 利用了 Provider 模型,有些小瑕疵,如界UI层有 SqlDataSource,Model 中有 DataTable
- Duwamish 7.1:架构比较清晰,但Model 继承自 DataSet ,因此其 BuildDataTables 和 Models 中的CURD 方法较为麻烦,代码量较大
- Jobs Site Starter Kit:简单实用,有些缺点,如 Model 的 CRUD 方法的 SqlParameter 造成 BLL 和 DAL 无法完全隔离
- Timer Tracker Starter Kit:一种架构清晰、较好的实现模式,只是代码量稍大
- .Text 0.95:基于 .NET 1.1 ,因此 BLL 层稍显复杂,DAL 层代码量也较大
- Community Server 2.1:它同时兼容 .NET 1.1 和 .NET 2.0 ,因此没有利用 .NET 2.0 的许多特性,但其 Provider 的模式较为清晰
- .Pet Shop 4.0:架构清晰
转载于:https://www.cnblogs.com/lxf120/archive/2006/09/27/515902.html
ASP.NET 常见参考项目的 UI、BLL 、Model 、 DAL 分析相关推荐
- Abp项目更改默认主题在Blazorl项目的UI上
Abp项目更改默认主题在Blazorl项目的UI上 参考:Replace Basic Bootstrap theme with a free custom Bootstrap theme https: ...
- 【安全漏洞】gomarkdown/markdown 项目的 XSS 漏洞产生与分析
前言 gomarkdown/markdown 是 Go 语言的一个流行模块,它旨在快速地将 Markdown 文档转化为 HTML 页面.而此次发现的漏洞,来源于作者在编写其语法树 Parser 的时 ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!...
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....
[标题] ASP.NET常见错误,原因及解决方法[错误提示] 异常详细信息: System.Net.WebException: 请求因 HTTP 状态 401 失败:Un ...
- 参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!
头图来源:https://opensource.guide/ 来源 | 阿里巴巴云原生公众号 只有贡献代码才算是参与开源项目社区贡献吗? 一说到参与开源项目贡献,一般大家的反应都是代码级别的贡献, ...
- 参与Apache顶级开源项目的N种方式,Apache Dubbo Samples SIG 成立!
简介:一说到参与开源项目贡献,一般大家的反应都是代码级别的贡献,总觉得我的代码被社区合并了,我才算一个贡献者,这是一个常见的错误认知.其实,在一个开源社区中有非常多的角色是 non-code cont ...
- Google Android 7.0 GMS测试常见fail项以及分析解决方法
自从Google 7.0系统发布开始以来,所有使用Googl gms 包服务的第三方厂商出货必须都要过GMS认证,而在2018年预计Android 8.1系统上要求将更为严格..本篇博客列举展讯773 ...
- Gradle项目的jar发布到私有仓库
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 常见场景 作为java库的开发者,如何让其他项目用上自 ...
- 详解Visual Studio 2010中ASP.NET新增23项功能
这篇文章介绍Visual Studio 2010 (ASP.Net 4.0)的新功能. 1.代码片段(Code Snippets): 代码段是预先开发的代码模板,可以节省我们对有关语法思考的时间.在V ...
最新文章
- Qt编译过程中出现的问题
- skill alpha protocol
- HTML引入JS、CSS的各种方法
- 软件项目管理第二课—项目投标准备工作及投标函
- 浏览器的语音识别功能
- c++如何实现以任意数为底的对数(底数合法)log()
- zstack信道_zigbee无线信道的组成
- 测试用例管理工具~JIRA
- LeetCode 871. 最低加油次数
- easyui 简单风格的遮罩
- ChatGPT大规模封号...
- Hbuilder 连接MuMu模拟器
- 奋斗吧,程序员——第三十章 多情自古伤离别,更哪堪冷落清秋节
- 七、MySQL之数据定义语言(二)
- 基于android餐馆点餐系统报告感想,基于Android的餐厅点餐系统的设计与实现
- web前端实训作业 html+css+javascript 水果超市网页设计实例 企业网站制作
- 【Benewake(北醒)】 单点系列标品介绍
- 一篇文章学会 SVN
- 计算机英语短语与习惯用法词典,清华大学出版社-图书详情-《计算机英语短语与习惯用法词典》...
- RK Android11 系统常见修改
热门文章
- ie11java阻止_企业IT管理员IE11升级指南【10】—— 如何阻止IE11的安装
- python网站设计开题报告_网站设计开题报告范文精选5篇
- dvt高危患者的护理措施_dvt的预防及护理
- android手机定位p适配,Android 9(P)版本适配指南
- 互联网晚报 | 4月11日 星期一 | 苏州放宽住房限售;苹果确认开始在印度生产iPhone 13;民航局将上报民航专项检查方案...
- 元宇宙综观—愿景、技术和应对
- 关于“数据分析”如何快速入门一些基本思路
- 杭州阿里、海康、网易等组成 的HR 联盟对打工人的影响
- 低幼年龄段在线教育白皮书
- pcb结构链表_lwip中tcp_pcb结构体及其组成链表