petshop4.0 各个文件的作用-程序员宅基地

技术标签: 数据库  设计模式  

petshop4.0 各个文件的作用

petshop4.0设计说明 (转) 一、项目名称及描述:(实现步骤为:4-3-6-5-2-1)

1、WEB=表示层

2、BLL=业务逻辑层

3、IDAL=数据访问层接口定义

4、Model=业务实体

5、DALFactory=数据层的抽象工厂(创建反射)

6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Oracle数据访问层

DBUtility 数据库访问组件基础类

二、项目引用关系

1、Web 引用 BLL。

2、BLL 引用 IDAL,Model,使用DALFactory创建实例。

3、IDAL 引用 Model。

4、Model 无引用。

5、DALFactory 引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。

6、SQLServerDAL 引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。

三、实现步骤

1、创建Model,实现业务实体。

2、创建IDAL,实现接口。

3、创建SQLServerDAL,实现接口里的方法。

4、增加web.config里的配置信息,为SQLServerDAL的程序集。

5、创建DALFactory,返回程序集的指定类的实例。

6、创建BLL,调用DALFactory,得到程序集指定类的实例,完成数据操作方法。

7、创建WEB,调用BLL里的数据操作方法。

注意:

1、web.config里的程序集名称必须与SQLServerDAL里的输出程序集名称一致。

2、DALFactory里只需要一个DataAccess类,可以完成创建所有的程序集实例。

3、项目创建后,注意修改各项目的默认命名空间和程序集名称。

4、注意修改解决方案里的项目依赖。

5、注意在解决方案里增加各项目引用。

1

WEB

     表示层

2

Model

PetShop.Model PetShop.Model 业务实体

3

BLL

PetShop.BLL PetShop.BLL 业务逻辑层

4

DALFactory

PetShop.DAL PetShop.DALFactory 数据层的抽象工厂

5

IDAL

PetShop.IDAL PetShop.IDAL 数据访问层接口定义

6

SQLServerDAL

PetShop.SQLServerDAL PetShop.SQLServerDAL SQLServer数据访问层

7

OracleDAL

PetShop.OracleDAL PetShop.OracleDAL Oracle数据访问层

8

DBUtility

PetShop.DBUtility PetShop.DBUtility 数据库访问组件基础类

9

CacheDependencyFactory

PetShop.CacheDependencyFactory PetShop.CacheDependencyFactory 缓存依赖类的工厂类

10

ICacheDependency

PetShop.ICacheDependency PetShop.ICacheDependency 缓存依赖类接口

11

TableCacheDependency

PetShop.TableCacheDependency PetShop.TableCacheDependency 缓存依赖实现类

12

IBLLStrategy

PetShop.IBLLStrategy PetShop.IBLLStrategy 同步/异步处理策略接口(实现在bll根据配置反射选择)

13

MessagingFactory

PetShop.MessagingFactory PetShop.MessagingFactory 异时处理消息队列的抽象工厂

14

IMessaging

PetShop.IMessaging PetShop.IMessaging 异时处理消息队列接口定义

15

MSMQMessaging

PetShop.MsmqMessaging PetShop.MsmqMessaging 异时处理消息队列的实现

16

Profile

PetShop.Profile PetShop.Profile Profile的数据访问层

17

ProfileDALFactory

PetShop.ProfileDALFactory PetShop.ProfileDALFactory ProfileDAL的工厂类(反射创建ProfileDAL)

18

IProfileDAL

PetShop.IProfileDAL PetShop.IProfileDAL Profile的数据访问层接口定义

19

OracleProfileDAL

PetShop.OracleProfileDAL PetShop.OracleProfileDAL Oracle的Profile Providers

做用户状态管理

20

SQLProfileDAL

PetShop.SQLProfileDAL PetShop.SQLProfileDAL SQL Server 的Profile Providers

做用户状态管理

21

Membership

PetShop.Membership PetShop.Membership Membership认证和授权管理

22

OrderProcessor

PetShop.OrderProcessor PetShop.OrderProcessor 后台处理进程,处理订单队列

些项目可以分类来理解,主要包括以下几个部分,

Web ??        ??外观层

Bill ?                    ?业务逻辑层

IDAL?                ? 数据访问层接口

DALFactory?       ? 数据层的抽象工厂

SQLServerDAL     ?SQL数据访问层

OracleDAL                Oracle数据访问层

Model                         业务实体层

DBUtility                    数据访问组件基础类

CacheDependencyFactory 缓存依赖的工厂类

ICacheDependency           缓存依赖类接口

TableCacheDependency   缓存依赖实现类

IBLLStrategy                      同步/异步处理策略接口

MessagingFactory               异时处理消息队列的抽象工厂

IMessaging                            异时处理消息队列接口定义

MSMQMessaging                    异时消息队列的实现

Profile                                          Profile数据访问层

ProfileDALFactory                      ProfileDAL的工厂类

IProfileDAL                                Profile数据访问层接口定义

OracleProfileDAL?????Oracle的Profile Providers 做用户状态管理

SQLProfileDAL?????SQL Server 的Profile Providers 做用户状态管理

Membership??????Membership认证和授权管理

OrderProcessor????后台处理进程,处理订单队列

SQL数据库中含有四个数据库

它们分别为:MSPetShop4 ,MSPetShop4Oreder,  MSPetShop4Profile 和MSPetShop4Servers

其中MSPetShop4有如下几个表?分别为CateGory  Product Item Supplier和Inventory五个表

其中CateGory存储宠物类别有关信息?Product存储宠物的商品目录?Item存储宠物的详细信息

Supplier存储相关供应商的信息?Inventory存储和每种宠物的具体数量

MSPetShop4Order 含有一下三个表?其数据库模型如下

petshop4.0 各个文件的作用 - 贵霜楼沙 - 葵花即将盛开

Order表存储了订单的详细通信信息??OrderStatus记录了订单的状态??LineItem记录了订单中的宠物数量等等详细信息

MSPetshopPrifile 的数据库模型如下

petshop4.0 各个文件的作用 - 贵霜楼沙 - 葵花即将盛开

其中Profile表记录了客户的基本活动信息

Account 记录了客户的身份地址相关信息

Cart记录了用户的意向清单和购物列表

最后一个数据库就是MSPetShop4Servers??它相当于Visual Studio内置的成员和角色管理的数据库

这里不在讨论

在这么简单的功能中建如此大的工程和复杂的数据库设计.微软肯定有自己的卖点

下面我们看看PetShop4.0中相对于3.0的新增相关技术!

 

?

 

用 System.Transactions 代替服务组件。

 

?

 

用强类型集合的泛型代替松散类型的 ILists。

 

?

 

ASP.NET 2.0 成员身份,用于用户身份验证和授权。

 

?

 

用于 Oracle 10G 的自定义 ASP.NET 2.0 成员身份提供程序。

 

?

 

ASP.NET 2.0 自定义 Oracle 和 SQL Server 配置文件提供程序,用于用户状态管理。

 

?

 

用母版页取代 ASP.NET Web 用户控件,从而获得一致的外观。

 

?

 

ASP.NET 2.0 向导控件。

 

?

 

使用 SqlCacheDependency(而非基于超时)的数据库级缓存失效。

 

?

 

启用基于消息队列构建的异步 Order 处理

 

 

在这个工程中用到了抽象工厂设计模式?

我对设计模式了解的很少,明天深入学习一下抽象工厂设计模式,同时试着做一个类似多层的项目以尽快熟悉2005和了解它的新特性?

所谓“依懒注入”

就是将应用程序所依赖的组件在运行时动态的加载到应用

程序中。依赖注入的目标并非为应用程序添加更多的功能,而是提升了组件的

重用性,并为应用程序搭建一个具有较强灵活性和扩展性的平台。在程序实现上就用

Assembly.Load(AssemblyName).CreateInstance(typeName)在程序运行时动态创建实例.PetShop4.0中多次应用了与配置文件相强合的反射注入技术。下面就介绍一下反射注入技术在PetShop4.0多层应用程序和应用。

 

 

项目名

 

 

PetShop.CacheDependencyFactory

 

 

类名

 

 

DependencyAccess

 

 

方法

 

 

privatestaticIPetShopCacheDependency LoadInstance(string className)

 

 

配置文件中的值

 

 

<appSetting>

……….

<add key="CacheDependencyAssembly" value="PetShop.TableCacheDependency"/>

……

</appSetting>

 

 

代码文件中的实现

 

 

string path=ConfigurationManager.AppSettings["CacheDependencyAssembly"];

string fullyQualifiedClass = path + "." + className;

return (IPetShopCacheDependency)Assembly.Load(path)

.CreateInstance(fullyQualifiedClass);

 

 

从上面的实现来看其实是很简单的。三个步骤就实现了:两前个步骤,主要是为动态创建

实例提供参数:程序集名称,和类名称(类型名).

1.    执行ConfigurationManager.AppSettings[“keyName”]来获取配置文件中的键值,也就

程序集的名称AssemblyName。

2.    组合类名称typeName。

3.    执行Assembly.Load(AssemblyName).CreateInstance(typeName)进行动太创建实例

其实PetShop4.0中实现反射注入技术都是上面的那种思想。所以下面就省去配置文件中的

信息和实现的代码实现信息,只是统计反射注入技术在PetShop4.0中应用的位置信息。

 

 

 

 

项目名

 

 

PetShop.DALFactory

 

 

类名

 

 

DataAccess

 

 

方法

 

 

1.    public static PetShop.IDAL.ICategory CreateCategory()

2.       public static PetShop.IDAL.IInventory CreateInventory()

3.       public static PetShop.IDAL.IItem CreateItem()

4.       public static PetShop.IDAL.IOrder CreateOrder()

5.       public static PetShop.IDAL.IProduct CreateProduct()

 

 

 

 

项目名

 

 

PetShop.MessagingFactory

 

 

类名

 

 

QueueAccess

 

 

方法

 

 

public static PetShop.IMessaging.IOrder CreateOrder()

 

 

  

 

项目名

 

 

PetShop.ProfileDALFactory

 

 

类名

 

 

DataAccess

 

 

方法

 

 

Publics  tatic

PetShop.IProfileDAL.IPetShopProfileProvider

CreatePetShopProfileProvider()

转载于:https://www.cnblogs.com/qingtaong/archive/2012/07/31/2616849.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34290390/article/details/93512660

智能推荐

Linux查看登录用户日志_怎么记录linux设备 发声的登录和登出-程序员宅基地

文章浏览阅读8.6k次。一、Linux记录用户登录信息文件1  /var/run/utmp----记录当前正在登录系统的用户信息;2  /var/log/wtmp----记录当前正在登录和历史登录系统的用户信息;3  /var/log/btmp:记录失败的登录尝试信息。二、命令用法1.命令last,lastb---show a listing of la_怎么记录linux设备 发声的登录和登出

第四章笔记:遍历--算法学中的万能钥匙-程序员宅基地

文章浏览阅读167次。摘要:1. 简介 2. 公园迷宫漫步 3. 无线迷宫与最短(不加权)路径问题 4. 强连通分量1. 简介在计算机科学裡,树的遍历(也称为树的搜索)是圖的遍歷的一种,指的是按照某种规则,不重复地访问某种樹的所有节点的过程。具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。两种著名的基本遍历策略:深度优先搜索(DFS) 和 广度优先搜索(B...

【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表_activereports.net 实现查询报表功能-程序员宅基地

文章浏览阅读591次。提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表。今天我们来一起了解一下什么是报表,报表的结构、构成元素,以及为什么需要报表。什么是报表简单的说:报表就是通过表格、图表等形式来动态显示数据,并为使用者提供浏览、打印、导出和分析的功能,可以用公式表示为:报表 = 多样的布局 + 动态的数据 + 丰富的输出报表通常包含以下组成部分:报表首页:在报表的开..._activereports.net 实现查询报表功能

Ubuntu18.04 + GNOME xrdp + Docker + GUI_docker xrdp ubuntu-程序员宅基地

文章浏览阅读6.6k次。最近实验室需要用Cadence,这个软件的安装非常麻烦,每一次配置都要几个小时,因此打算把Cadence装进Docker。但是Cadence运行时需要GUI,要对Docker进行一些配置。我们实验室的服务器运行的是Ubuntu18.04,默认桌面GNOME,Cadence装进Centos的Docker。安装Ubuntu18.04服务器上安装Ubuntu18.04的教程非常多,在此不赘述了安装..._docker xrdp ubuntu

iOS AVFoundation实现相机功能_ios avcapturestillimageoutput 兼容性 ios17 崩溃-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏2次。首先导入头文件#import 导入头文件后创建几个相机必须实现的对象 /** * AVCaptureSession对象来执行输入设备和输出设备之间的数据传递 */ @property (nonatomic, strong) AVCaptureSession* session; /** * 输入设备 */_ios avcapturestillimageoutput 兼容性 ios17 崩溃

Oracle动态性能视图--v$sysstat_oracle v$sysstat视图-程序员宅基地

文章浏览阅读982次。按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。 类似于v$sesstat,该视图存储下列的统计信息:1>.事件发生次数的统计(如:user commits)2>._oracle v$sysstat视图

随便推点

Vue router报错:NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}的解决方法_navigationduplicated {_name: 'navigationduplicated-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏9次。我最近做SPA项目开发动态树的时候一直遇到以下错误:当我点击文章管理需要跳转路径时一直报NavigationDuplicated {_name: “NavigationDuplicated”, name: “NavigationDuplicated”}这个错误但是当我点击文章管理后,路径跳转却是成功的<template> <div> 文章管理页面 <..._navigationduplicated {_name: 'navigationduplicated', name: 'navigationduplic

Webrtc回声消除模式(Aecm)屏蔽舒适噪音(CNG)_webrtc aecm 杂音-程序员宅基地

文章浏览阅读3.9k次。版本VoiceEngine 4.1.0舒适噪音生成(comfort noise generator,CNG)是一个在通话过程中出现短暂静音时用来为电话通信产生背景噪声的程序。#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)static const EcModes kDefaultEcMode = kEcAecm;#elsestati..._webrtc aecm 杂音

医学成像原理与图像处理一:概论_医学成像与图像处理技术知识点总结-程序员宅基地

文章浏览阅读6.3k次,点赞9次,收藏19次。医学成像原理与图像处理一:概论引言:本系列博客为医学成像原理与图像处理重要笔记,由于是手写,在此通过扫描录入以图片的形式和电子版增补内容将其进行组织和共享。前半部分内容为图像处理基础内容,包括图像的灰度级处理、空间域滤波、频率域滤波、图像增强和分割等;后半部分内容为医学影象技术,包括常规胶片X光机、CR、DR、CT、DSA等X射线摄影技术、超声成像技术、磁共振成像(MRI)技术等。本篇主要内容是概论。_医学成像与图像处理技术知识点总结

notepad++ v8.5.3 安装插件,安装失败怎么处理?下载进度为0怎么处理?_nodepa++-程序员宅基地

文章浏览阅读591次,点赞13次,收藏10次。notepad++ v8.5.3 安装插件,下载进度为0_nodepa++

hive某个字段中包括\n(和换行符冲突)_hive sql \n-程序员宅基地

文章浏览阅读2.1w次。用spark执行SQL保存到Hive中: hiveContext.sql(&quot;insert overwrite table test select * from aaa&quot;)执行完成,没报错,但是核对结果的时候,发现有几笔数据超出指定范围(实际只包含100/200)最终排查到是ret_pay_remark 字段包含换行符,解决方案:执行SQL中把特殊字符替换掉regexp_replace(..._hive sql \n

印象笔记05:如何打造更美的印象笔记超级笔记_好的印象笔记怎么做的-程序员宅基地

文章浏览阅读520次,点赞10次,收藏8次。印象笔记05:如何打造更美的印象笔记超级笔记本文介绍印象笔记的具体使用,如何打造更美更实用的笔记。首先想要笔记更加好看和实用,我认为要使用超级笔记。所谓超级笔记就是具有很多便捷功能的笔记。_好的印象笔记怎么做的

推荐文章

热门文章

相关标签