三层架构
三层架构:
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号