在WCF数据访问中使用缓存提高Winform字段中文显示速度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在WCF数据访问中使用缓存提高Winform字段中文显示速度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4116字,纯文字阅读大概需要6分钟。
内容图文
![在WCF数据访问中使用缓存提高Winform字段中文显示速度](/upload/InfoBanner/zyjiaocheng/1153/42e73f0a06d148cc8ec7706c9c4d5b5d.jpg)
在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析。如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处理;一般情况下,我们把中文对照信息放到业务类里面去统一解析,但是这样会导致每次WCF访问方式请求解析中文化的操作耗费一定的响应时间。如果使用缓存存储中文字段的对照表,那么就不用每次请求WCF的数据访问,减少一些响应时间的消耗,提高用户体验效果。
1、使用硬编码方式的中文化解析操作
硬编码的方式,中文化字段的操作,是在本地进行的,一般响应会比较快,如下代码所示。
public void BindData() { #region 添加别名解析 this.winGridViewPager1.DisplayColumns = "ID,User_ID,LoginName,FullName,Note,IPAddress,MacAddress,SystemType_ID,LastUpdated"; this.winGridViewPager1.AddColumnAlias("ID", "编号"); this.winGridViewPager1.AddColumnAlias("User_ID", "登录用户ID"); this.winGridViewPager1.AddColumnAlias("LoginName", "登录名"); this.winGridViewPager1.AddColumnAlias("FullName", "真实名称"); this.winGridViewPager1.AddColumnAlias("Note", "日志描述"); this.winGridViewPager1.AddColumnAlias("IPAddress", "IP地址"); this.winGridViewPager1.AddColumnAlias("MacAddress", "Mac地址"); this.winGridViewPager1.AddColumnAlias("LastUpdated", "记录日期"); this.winGridViewPager1.AddColumnAlias("SystemType_ID", "系统类型"); #endregionstringwhere = GetConditionSql(); PagerInfo pagerInfo = this.winGridViewPager1.PagerInfo; List<LoginLogInfo> list = CallerFactory<ILoginLogService>.Instance.FindWithPager(where, ref pagerInfo); this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<LoginLogInfo>(list); }
只是这种方式弹性化不太好,如果字段比较多,在界面里面就有很多这样的代码,而且如果多处有这样的解析,就不好控制解析字段名称的一致性。
2、中文化统一解析操作
为了克服第一种方案的弊端,我们可以把中文化参考的操作移到底层DAL去实现,高一层的接口,只需要调用它进行解析(方法GetColumnNameAlias)就可以了。
/// <summary> /// 绑定列表数据 /// </summary> private void BindData() { this.winGridViewPager1.DisplayColumns = "HandNo,CardNo,CardStatus,CardGrade,Name,Sex,Telephone,Mobile,OpenDate,ValidateDate,Discount,Balance,MaxCount,Creator,CreateTime"; this.winGridViewPager1.ColumnNameAlias = CallerFactory<IMemberService>.Instance.GetColumnNameAlias();//字段列显示名称转义stringwhere = GetConditionSql(); List<MemberInfo> list = CallerFactory<IMemberService>.Instance.FindWithPager(where, this.winGridViewPager1.PagerInfo); this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<MemberInfo>(list); this.winGridViewPager1.PrintTitle = "会员信息报表"; }
这样处理后,解析的统一性提高了,代码也简化了很多,基本上达到了我们期望的效果。但是唯一的问题就是如果是WCF的数据访问方式,那么每次访问都会耗费一定的处理时间。
如果我们使用缓存,第二次直接从本地获取,那么速度会提高很多,特别是表的字段参照对象比较多的时候,性能提高更加明显。
3、使用缓存的操作处理
由于.NET提供了MemoryCache对象给我们进行缓存的处理,我们利用它就可以很好实现了,为了方便,我们可以对它进行一定的封装后在使用。
首先,我们希望封装后提供一个通用的对字段中文化的处理函数,传入相应的参数就可以了。因此先封装好一个辅助类。
/// <summary> /// 提供一些常见操作的缓存处理 /// </summary> public class CacheDataUtil<T> where T : BaseEntity { ///<summary>/// 获取指定对象的别名 ///</summary>///<typeparam name="T">实体类信息</typeparam>///<param name="service">接口服务对象</param>///<returns></returns>publicstatic Dictionary<string, string> GetColumnNameAlias(IBaseService<T> service) { System.Reflection.MethodBase method = System.Reflection.MethodBase.GetCurrentMethod(); string key = string.Format("{0}-{1}-{2}", method.DeclaringType.FullName, method.Name, typeof(T).Name); return MemoryCacheHelper.GetCacheItem<Dictionary<string, string>>( key, delegate() { return service.GetColumnNameAlias(); }, new TimeSpan(24, 0, 0));//24小时,即1天后过期 } }
然后在主体界面里面,我们绑定分页控件的处理代码如下所示即可。
/// <summary> /// 绑定列表数据 /// </summary> private void BindData() { // entity this.winGridViewPager1.DisplayColumns = displayColumns; //this.winGridViewPager1.ColumnNameAlias = CallerFactory<ICustomerService>.Instance.GetColumnNameAlias();//字段列显示名称转义 //使用缓存存储表的别名,可以有效提高二次显示速度this.winGridViewPager1.ColumnNameAlias = CacheDataUtil<CustomerInfo>.GetColumnNameAlias(CallerFactory<ICustomerService>.Instance);//字段列显示名称转义stringwhere = GetConditionSql(); PagerInfo pagerInfo = this.winGridViewPager1.PagerInfo; List<CustomerInfo> list = CallerFactory<ICustomerService>.Instance.FindWithPager(where, ref pagerInfo); this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<CustomerInfo>(list); this.winGridViewPager1.PrintTitle = "客户信息列表"; }
原文:http://www.cnblogs.com/wuhuacong/p/3959334.html
内容总结
以上是互联网集市为您收集整理的在WCF数据访问中使用缓存提高Winform字段中文显示速度全部内容,希望文章能够帮你解决在WCF数据访问中使用缓存提高Winform字段中文显示速度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。