项目文件结构:

很明了一个标准的三层架构的系统。

表示层:Web

业务层:Business

数据访问层:Data

另外存在缓存层:Cache缓存

增加公共使用类库:Utility

下面以一个实例(系统登陆为例)来讲解各层之间如何调用:

系统登陆界面跳到Login1.aspx页面。

查看后面登陆界面代码,当点击登陆按钮时页面会触发Page_Load事件,然后判断是IsPostBack时,表示是提交的登陆按钮操作时,调用check方法来验证登陆信息。

protected void Page_Load(object sender, EventArgse)

{

if (IsPostBack)

{

check();

}

}

然后看下check方法的代码。

/表示层调用业务层代码/

// RoadFlow.Platform.Users这里先调用业务层的对象RoadFlow.Platform.Users

RoadFlow.Platform.Users busers = newRoadFlow.Platform.Users();

//业务层调用的是GetByAccount方法

var user =busers.GetByAccount(account.Trim());

if (user == null ||string.Compare(user.Password, busers.GetUserEncryptionPassword(user.ID.ToString(),password.Trim()), false) != 0)

{

Session[isVcodeSessionKey]= "1";

RoadFlow.Platform.Log.Add("用户登录失败",string.Concat("用户:", account, "登录失败,帐号或密码错误"),RoadFlow.Platform.Log.Types.用户登录);

Script = "alert('帐号或密码错误!');";

}

业务层代码///

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

public RoadFlow.Data.Model.Users GetByAccount(string account)

{

return account.IsNullOrEmpty() ? null : dataUsers.GetByAccount(account);//业务层调用数据访问层代码

}

访问层代码///

IUser接口

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

RoadFlow.Data.Model.Users GetByAccount(string account);

RoadFlow.Data.Factory

通过工厂模式来调用数据访问层具体类,如MSSQL类,以后要扩展其它数据库请重写此类扩展多数据库,如增加Data.Oracle数据访问层,然后工厂方法调return new Data.Oracle.Users()。现在代码是调用的MYSQL数据库访问层具体实现类。

public static Data.Interface.IUsersGetUsers()

{

return new Data.MSSQL.Users();

}

RoadFlow.Data.MSSQL实现代码

/// <summary>

/// 根据帐号查询一条记录

/// </summary>

public RoadFlow.Data.Model.Users GetByAccount(string account)

{

string sql = "SELECT * FROM Users WHERE Account=@Account";

SqlParameter[] parameters = new SqlParameter[]{

newSqlParameter("@Account", SqlDbType.VarChar, 255){ Value = account }

};

SqlDataReader dataReader = dbHelper.GetDataReader(sql, parameters);

List<RoadFlow.Data.Model.Users> List =DataReaderToList(dataReader);

dataReader.Close();

return List.Count > 0 ? List[0] : null;

}

这样就完成了表示层访问数据库的整个流程,可能在查询数据时在业务层会增加从缓存中查询数据,这样就不从数据库查,如果缓存不存在即从数据库查询,减轻数据库的负担。但这样对调试不方便,每次要调试有缓存的代码需要半闭IE,重新启动调试。

转载于:https://www.cnblogs.com/Jeely/p/11262049.html

RoadFlow开源工作流源码-项目架构分析相关推荐

  1. 【PX4-AutoPilot教程-1】PX4源码文件目录架构分析

    PX4源码文件目录架构分析 PX4源代码的结构复杂,这是源代码的总目录结构(以v1.13.0为例): Firmware ├─boards ├─build ├─cmake ├─Documentation ...

  2. RoadFlow项目架构分析

    RoadFlow开源工作流源码-项目架构分析 项目文件结构: 很明了一个标准的三层架构的系统. 表示层:Web 业务层:Business 数据访问层:Data 另外存在缓存层:Cache缓存 增加公共 ...

  3. 开源项目实例源码_今年我读了四个开源项目的源码,来分享下心得

    今年来看了 RocketMQ.Kafka.Dubbo .Tomcat 的源码,之前也有读者询问过如何读源码,索性就来分享一下. 其实还看了一点点 Linux.Redis.jdk8,这几个阅读的目的和上 ...

  4. EntLib.com Forum / YAF 开源论坛--源码的目录结构(对分析代码很有帮助)

    EntLib.com Forum / YAF 开源论坛--源码的目录结构如下(对分析代码很有帮助): ├─bin (二进制目录,编译后的dll放于此处) ├─classes (类文件目录,如系统中用到 ...

  5. 开源中国源码学习UI篇(一)之FragmentTabHost的使用分析

    最近在有意读开源中国的源码来提升Android开发能力,开通博客来提升一下自己的积极性- -我参考的是开源中国2.2版,完整源码地址为http://git.oschina.net/oschina/an ...

  6. 开源中国源码学习UI篇(二)之NavigationDrawer+Fragment的使用分析

    前文链接:开源中国源码学习UI篇(一)之FragmentTabHost的使用分析 开源中国2.2版,完整源码地址为:http://git.oschina.net/oschina/android-app ...

  7. 学习 sentry 源码整体架构,打造属于自己的前端异常监控SDK

    前言 这是学习源码整体架构第四篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.文章学习的是打包整合后的代码,不是实际仓库中的拆分 ...

  8. 学习 axios 源码整体架构,打造属于自己的请求库

    前言 这是学习源码整体架构系列第六篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 学习源码整体 ...

  9. JAVA源码优化、分析工具

    JAVA源码优化.分析工具 一.11款用于优化.分析源代码的Java工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的 ...

最新文章

  1. Python一键转Java?“Google翻译”你别闹
  2. 一文梳理缺陷检测方法
  3. wpf在presenter(VM)中异步更新viewer中数据
  4. 凭着这把AutoML利剑,这家AI公司荣登 IEEE ISI“铁王座”
  5. Spring MVC 单元调试和访问
  6. BugkuCTF-Misc:隐写
  7. linux找不到光口,以太坊查看命令_求助 输入ifconfig命令 后看不到eth0但是有eth3和eth4-CSDN论坛_区块链百科...
  8. visibility: hidden与display:none的区别
  9. netlify 部署vue_如何使用Netlify构建和部署网站-全面的教程
  10. Pingf的stm32学习笔记之GPIO_Part2[0913]
  11. 常用简单的sql语句
  12. 求一个数的最大公约数
  13. jsp电子商务 购物车实现之一 设计篇
  14. 转载 :sql server 2005 无法删除数据库 #Test,因为该数据库当前正在使用
  15. 2.CND技术详解---CDN技术概述
  16. 项目管理甘特图模板_甘特图简易制作流程
  17. 无法将数据库从SINGLE_USER模式切换回MULTI_USER模式(Error 5064)
  18. Android开发自定义相机,自定义拍照界面
  19. 云借阅-图书管理系统
  20. Redis 的特点及命令大全

热门文章

  1. android 6.0默认壁纸,我伙呆!安卓6.0壁纸竟然是这样得来的
  2. 从公司管理到IT审计 控制风险并增加价值(zt)
  3. qnap plex安装_如何在Apple TV上安装Plex
  4. 树莓派CM4_3xPCIE扩展板(SSD+WIFI6+USB3.0+5G+4G)——SSD固态盘测速
  5. latex公式中插入空格
  6. 对学校的希望和寄语_写一段对学校的寄语
  7. 各大媒体优劣对比_户外广告媒体类型与优缺点对比分析
  8. Python中,一次性往Excel写入几十万条数据
  9. 蒸汽流量计算软件_涡街流量计的基本测量原理及选型
  10. 知识点滴 - 在Win10里添加Excel的ODBC数据源