三层架构
三层架构:
1 划分:1)表现层(UI) 即展现给用户的界面
2)业务逻辑层(BLL) 对数据的操作,加工,对数据业务的逻辑处理以提供合适的数据给UI
3)数据访问层(DAL) 该层是对数据库的直接操作例如增删改查
2 目的: 为实现高内聚,低耦合的思想
3 项目文件架构:
|
ID
|
项目
|
描述
|
用途
|
项目引用关系
|
实例所需文件
|
相关方法
|
|
1
|
Web
|
表现层
|
Web页和控件
|
引用BLL
|
WebUI.aspx WebUI.aspx.cs
|
GetContent()
|
|
2
|
BLL
|
业务逻辑层
|
业务逻辑组件
|
引用 IDAL,Model,使用DALFactory创建实例
|
Content.cs
|
ContentInfo GetContentInfo(int id)
|
|
3
|
IDAL
|
数据访问层接口定义
|
每个DAL实现都要实现的一组接口
|
引用 Model
|
IContent.cs
|
ContentInfo GetContentInfo(int id)
|
|
4
|
Model
|
业务实体
|
传递各种数据的容器
|
无引用
|
ContentInfo.cs
|
|
|
5
|
DALFactory
|
数据层的抽象工厂
|
创建反射,用来确定加载哪一个数据库访问程序集的类
|
引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。
|
Content.cs
|
IDAL.Icontent create()
|
|
6
|
SQLServerDAL
|
SQLServer数据访问层
|
Microsoft SQL Server特定的Pet Shop DAL实现,使用了IDAL接口
|
引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。
|
SqlHelper.cs
Content.cs
|
SqlDataReader ExecuteReader() PrepareCommand() ContentInfo GetContentInfo(int id)
|
|
OracleDAL
|
Oracle数据访问层
|
|||||
|
7
|
DBUtility
|
数据库访问组件基础类
|
GetSqlServerConnectionString得到数据库连接字符串,也可省去该项目,在SQLServerDAL.SqlHelper中用static readonly string SqlConnectionString代替。
|
无引用
|
|
|
关系: 外部界面(UI)依赖于业务逻辑层(BLL),业务逻辑层(BLL)从数据访问层(DAL)获取数据并加工后提供给(UI)
实现步骤过程:
1)创建两个解决方案文件夹:1)BLL 2)DAL
2)创建项目的用户界面:例如:空白网站 web---添加窗体-----web窗体
3)创建实体类库 ---model(三层结构依赖实体类model)---在MODEL里添加linq实体类(data0908)----打开实体类库model里的引用下的app.config将连接字符串
如下内容复制到用户界面(UI)里的配置文件里例如(web.config),在<configuration>下复制
<connectionStrings>
<add name="model.Properties.Settings.data0908ConnectionString"
connectionString="Data Source=.;Initial Catalog=data0908;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
</connectionStrings>
4)在BLL里添加接口声明类库:IBLL, 在DAL里添加接口声明类库IDAL;因为IDAL依赖model实体类库,所以需要在IDAL里引用model
5)在接口声明类库里IDAL里分别添加接口 IDALBASE;
6)进入 接口IDALBASE代码界面,因为不知道接入的是什么类型数据所以用泛型大写<T>来接受,再在里边写方法例如:
namespace IDAL
{
public interface IDALBASE <T> where T:class
{
IQueryable<T> select(); // 1 查全部
T select(string id); // 2 通过id查全部
void insert(T t); // 3 没有返回值直接添加
void update(T t); // 4 没有返回值直接修改
void delete(T t); // 5 没有返回值直接删除
}
}
7 ) (1) 创建连接数据库nation 表的接口 IDALNATION;因为要操作nation表所以需要引用model命名空间,即using model;
(2) 创建连接数据库user表的接口 IDALUSER;因为要操作数据库里的user表所以同样需要引用model命名空间;同时在操作user表中加入另一种操作方法:分页查询即如下所示:
public interface IDAL_USERS:IDALBASE<Users>
{
IQueryable <Users> select(int pagecount, int pageindex);
}
8) 创建IBLL具体的接口 即IBLL_Mainpage 因为DAL依赖BAL和MODEL 所以需要引用他们两个

浙公网安备 33010602011771号