RoadFlow项目架构分析
RoadFlow开源工作流源码-项目架构分析
项目文件结构:
很明了一个标准的三层架构的系统。
表示层: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,重新启动调试。
后续将分析
前台框架技术
数据字典
用户权限管理
配置和使用一个工作流
工作流分支管理
为工作流节点添加事件
......
RoadFlow项目架构分析相关推荐
- RoadFlow开源工作流源码-项目架构分析
项目文件结构: 很明了一个标准的三层架构的系统. 表示层:Web 业务层:Business 数据访问层:Data 另外存在缓存层:Cache缓存 增加公共使用类库:Utility 下面以一个实例(系统 ...
- 大数据日志分析项目架构
老是弹出由于您编辑时间过长,页面和服务器之间的连接已断开,请先将文章内容另外保存,再刷新本页面继续编辑让我保存页面我也是醉了,图片多没法一次上传,上传图片还一直失败,我只好都放在一个附件里面了.阿里能 ...
- b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释
b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释 我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括w ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...
- 饿了么开源项目Hermes跨进程架构分析1-服务端注册
文章目录 1 注册实现 1.1 创建aidl文件 1.2 服务端实现 1.2.1 HermesService 1.2.2 创建Request和Responce 1.2.3 创建单例UserManage ...
- 饿了么开源项目Hermes跨进程架构分析2-客户端连接
饿了么开源项目Hermes跨进程架构分析1-服务端注册 饿了么开源项目Hermes跨进程架构分析2-客户端连接 文章目录 2客户端连接 2.1 SecondActivity 2.2 Hermes 2. ...
- 大数据项目之_15_电信客服分析平台_0102_项目背景+项目架构+项目实现+数据生产+数据采集/消费(存储)
大数据项目之_15_电信客服分析平台_01&02 一.项目背景 二.项目架构 三.项目实现 3.1.数据生产 3.1.1.数据结构 3.1.2.编写代码 3.1.3.打包测试 3.2.数据采集 ...
- 电商项目开发(系统功能分析、架构分析)
文章目录 电商行业特点 常见的三种电商模式 系统功能分析 项目开发人员分配 技术选型与开发环境 技术 开发环境 架构分析 集中式 分布式 电商行业特点 技术范围广 分布式(一件事,拆开来做,例如,定个 ...
- Go后台项目架构思考与重构 | 深度长文
作者 | 腾讯云后台工程师黄雷 编辑 | 唐小引 来源 | CSDN(ID:CSDNnews) 引言 本文首先介绍了架构的重要性,随后从一个实际项目的重构过程作为主线,逐步引出主流的架构设计思想以及其 ...
最新文章
- C语言的基础题目,几个c语言的基础题目
- 通过yum安装配置lamp
- (转载)BeanUtils.copyProperties() 用法
- 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )
- swift 网络请求中含有特殊字符的解决方案
- word打开文档很久很慢_word文档打开特别慢怎么解决,word10打开文档很慢
- HDU3634(矩形切割)
- 网站 HTTP 升级 HTTPS 完全配置手册
- 第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)
- 作者:杜克明(1980-),男,中国农业科学院农业环境与可持续发展研究所助理研究员。...
- 网站流量和金钱的关系
- PHP学习笔记之PDO
- 上位机与1200组态步骤_新入S7-1200系统值得注意几点(博图平台)
- 程序员Java代码不会写,菜鸡程序员都是怎样写代码的?
- 不光荣的“革命”——“甘露之变”后的晚唐政治
- rtmp协议 java_rtmp协议详解 (一) handshake
- android 开发日积月累,移动端h5开发常用ui框架
- 简单实现图片转彩色字符画
- 中国的KNX 智能家居系统,将实现最高级别的安全保障!
- 罗技 无线鼠标 USB HID数据格式