Visual studio 2005 缓存技术助E8.Net工作流2008 经历巨大处理能力挑战。
2008-02-14 13:01
645 查看
Visual studio 2005 缓存技术助E8.Net工作流2008 经历巨大处理能力挑战。
回顾E8.Net工作流的发展历程,2004-2005年经历了某省邮政局全体管理人员使用的办公自动化系统考验后,E8的处理能力提到过非常大的提升,之后几十个200-2000之间用户数的系统,日处理流程实例数在100 -400之间的系统基本上性能体验很流畅,2006年底某市邮政局185综合服务系统采用E8.Net工作流系统处理EMS揽收、电子商务、通行证签注、淘宝网物流配送。。。。刚开始的时候40个台席,日均处理流程数量是700左右。 随着业务的扩展及应用模式的成熟,到2007年年底时已经达到200个台席,B/S架构系统日均处理流程数量达12000单每日。这个过程也是E8.Net工作流2008版本的成长过程。其中Visual studio 2005中的SQL 缓存依赖技术是E8工作流经历这种挑战用到的比较重要的技术之一。
大家知道CACHE技术是.net中一个非常有价值的技术,。NET2。0支持SqlCacheDependency ,可以使CACHE依赖数据库表的变化而失效,保证获取最有效的数据,但可以减少数据库CPU压力。E8中用到的相关技术总结一下与大家分享。
优化思路回顾:
1、将操作调用频繁,数据很少变化,实时性要求不严格的数据库相关操作改为内存数据库处理模式操作,利用CACHE技术和 SqlCacheDependency 技术。构造相关数据的内存数据模型。提高计算效率并减少数据库处理压力。
2、调整流程模型数据、组织结构数据变化更新少数几个数据表,使SqlCacheDependency CACHE依赖的表比较集中,保证CACHE缓存检测的效率
3、为内存数据提供强制失效的处理接口,保证相关数据变化后,重新加载内存数据
。。。。。。
范例代码:
string Key = "xxxxxxCache_" + CacheName.ToLower();
string strSQL = "";
bool blnConstraint = false; //为SQL缓存依赖添加 强制取消的功能
if (sCacheSource == string.Empty)
{
sCacheSource = System.Configuration.ConfigurationSettings.AppSettings["SqlCacheDataSource"];
}
DataTable dt = null;
SqlCacheDependency scd;
//判断SQL缓存依赖添加 强制取消
// 通过外部程序相关 cache 赋值的方式 switch (CacheName.ToLower())
{
case "app":
break;
case "masteruserdept":
..
case "user":
..
break;
case "dept":
//判断dept变化
.
break;
case "actorcond":
case "flowmodelall":
case "flowmodelnodesall":
case "flowmodel":
case "flowmodelnodes":
//判断FLOWMODEL变化
.
break;
default:
break;
}
if (HttpRuntime.Cache[Key] == null)
{
//取数据
try
{
switch (CacheName.ToLower())
{
case "app":
strSQL = "SELECT * FROM xxxxx ";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "es_app");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "user":
//必须考虑历史情况
strSQL = "SELECT * FROM xxxxx ";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "ts_user");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "dept":
//必须考虑历史情况
strSQL = "SELECT * FROM xxxx";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "ts_dept");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "masteruserdept":
.
break;
case "flowmodelnodes":
. break;
case "flowmodelall":
.
break;
default:
break;
}
}
catch(Exception e)
{
dt = null;
//如果有错误发生配置一下 SQL 缓存
}
}
else
{
//从缓存中取值
dt= (DataTable)HttpRuntime.Cache[Key];
}
return dt;
在这里感谢客户提供的思路。
E8.Net工作流平台为.Net企业应用开发提供了一个起点。E8.Net工作流提升企业战略执行力,欢迎访问: http://www.feifanit.com.cn/productFlow.htm
QQ群: 48132184 53284682
回顾E8.Net工作流的发展历程,2004-2005年经历了某省邮政局全体管理人员使用的办公自动化系统考验后,E8的处理能力提到过非常大的提升,之后几十个200-2000之间用户数的系统,日处理流程实例数在100 -400之间的系统基本上性能体验很流畅,2006年底某市邮政局185综合服务系统采用E8.Net工作流系统处理EMS揽收、电子商务、通行证签注、淘宝网物流配送。。。。刚开始的时候40个台席,日均处理流程数量是700左右。 随着业务的扩展及应用模式的成熟,到2007年年底时已经达到200个台席,B/S架构系统日均处理流程数量达12000单每日。这个过程也是E8.Net工作流2008版本的成长过程。其中Visual studio 2005中的SQL 缓存依赖技术是E8工作流经历这种挑战用到的比较重要的技术之一。
大家知道CACHE技术是.net中一个非常有价值的技术,。NET2。0支持SqlCacheDependency ,可以使CACHE依赖数据库表的变化而失效,保证获取最有效的数据,但可以减少数据库CPU压力。E8中用到的相关技术总结一下与大家分享。
优化思路回顾:
1、将操作调用频繁,数据很少变化,实时性要求不严格的数据库相关操作改为内存数据库处理模式操作,利用CACHE技术和 SqlCacheDependency 技术。构造相关数据的内存数据模型。提高计算效率并减少数据库处理压力。
2、调整流程模型数据、组织结构数据变化更新少数几个数据表,使SqlCacheDependency CACHE依赖的表比较集中,保证CACHE缓存检测的效率
3、为内存数据提供强制失效的处理接口,保证相关数据变化后,重新加载内存数据
。。。。。。
范例代码:
string Key = "xxxxxxCache_" + CacheName.ToLower();
string strSQL = "";
bool blnConstraint = false; //为SQL缓存依赖添加 强制取消的功能
if (sCacheSource == string.Empty)
{
sCacheSource = System.Configuration.ConfigurationSettings.AppSettings["SqlCacheDataSource"];
}
DataTable dt = null;
SqlCacheDependency scd;
//判断SQL缓存依赖添加 强制取消
// 通过外部程序相关 cache 赋值的方式 switch (CacheName.ToLower())
{
case "app":
break;
case "masteruserdept":
..
case "user":
..
break;
case "dept":
//判断dept变化
.
break;
case "actorcond":
case "flowmodelall":
case "flowmodelnodesall":
case "flowmodel":
case "flowmodelnodes":
//判断FLOWMODEL变化
.
break;
default:
break;
}
if (HttpRuntime.Cache[Key] == null)
{
//取数据
try
{
switch (CacheName.ToLower())
{
case "app":
strSQL = "SELECT * FROM xxxxx ";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "es_app");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "user":
//必须考虑历史情况
strSQL = "SELECT * FROM xxxxx ";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "ts_user");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "dept":
//必须考虑历史情况
strSQL = "SELECT * FROM xxxx";
dt = MyDataBase.QueryDataTableByStr(strSQL);
scd = new SqlCacheDependency(sCacheSource, "ts_dept");
HttpRuntime.Cache.Insert(Key, dt, scd);
break;
case "masteruserdept":
.
break;
case "flowmodelnodes":
. break;
case "flowmodelall":
.
break;
default:
break;
}
}
catch(Exception e)
{
dt = null;
//如果有错误发生配置一下 SQL 缓存
}
}
else
{
//从缓存中取值
dt= (DataTable)HttpRuntime.Cache[Key];
}
return dt;
在这里感谢客户提供的思路。
E8.Net工作流平台为.Net企业应用开发提供了一个起点。E8.Net工作流提升企业战略执行力,欢迎访问: http://www.feifanit.com.cn/productFlow.htm
QQ群: 48132184 53284682
相关文章推荐
- Visual studio 2005 缓存技术助E8.Net工作流2008 经历巨大处理能力挑战
- Visual Studio 2005 通过静态变量及可系列化的HASHTABLE变量优化工厂模式(Factory)的效率,提升性能(E8.Net工作流应用系统优化系列四)
- Visual studio 2005 静态页面生成法助E8.Net工作流应用系统提升性能(E8.Net工作流应用系统优化系列二)
- Visual studio 2005 静态页面生成法助E8.Net工作流应用系统提升性能(E8.Net工作流应用系统优化系列二)
- Visual Studio 2005 通过静态变量及可系列化的HASHTABLE变量优化工厂模式(Factory)的效率,提升性能(E8.Net工作流应用系统优化系列四)
- Visual Studio 2015、2013、2012、2010、2008、2005各版本下载+有效密钥激活
- 【分享】如何创建自己的Visual Studio 2005/2008配色
- 使用asp缓存技术,提高asp承载能力
- Visual Studio 2008 C++ code slower than Visual Studio 2005
- TX Text Control文字处理教程(1)- 使用Visual Studio 2008开发产品
- visual studio 2005 / visual studio 2008 添加函数或变量时当前页面的脚本发生错误
- Visual Studio 2005/2008 调试出现“无法显示该网页”!
- 用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件] (转)
- 安装了Visual Studio 2008自带的SQL Server 2005后,设置sa登录名
- visual studio 2005/2008/2012 编译STLport 5.1.5
- Visual studio 2005/2008起始页更改方法
- 缓存--自定义缓存依赖、自定义输出缓存、缓存依赖SQL SERVER 2005与2008
- web developer tips (82):Visual Studio 2005web应用项目迁移到Visual Studio 2008
- Visual Studio 2008和ASP.NET 3.5的最新技术探索
- 一起谈.NET技术,Visual Studio 2008单元测试_数据库测试