zoukankan      html  css  js  c++  java
  • 三层架构

    三层架构:  

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

  • 相关阅读:
    P2048 [NOI2010]超级钢琴 (rmq +堆+贪心)
    题解 P4799 【[CEOI2015 Day2]世界冰球锦标赛】
    洛谷 P1360 [USACO07MAR]Gold Balanced Lineup G (前缀和+思维)
    洛谷 P4880 抓住czx
    洛谷 P2471 [SCOI2007]降雨量
    洛谷 P4688 [Ynoi2016]掉进兔子洞 (看到题目背景,galgame玩家狂喜)
    洛谷 P2101 命运石之门的选择 (分治)
    留言版
    【游记】OI 2020(在更)
    类欧几里得算法
  • 原文地址:https://www.cnblogs.com/gbbwzz/p/8282472.html
Copyright © 2011-2022 走看看