三层架构

三层架构:  

                 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 所以需要引用他们两个

posted on 2018-01-14 10:47  小败哥哥。  阅读(177)  评论(0)    收藏  举报

导航