在B/S开发中,涉及到获取系统基础资料的问题,因为是在不同平台下的开发,采用了WCF方式获取。
下面是一个调用通用权限管理系统(吉日嘎拉)基础信息资料的一个demo供参考
注意:userInfo是登录通用权限管理系统后的用户信息表,登录后需要设置对应的安全认证信息
页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 |
/// <summary> /// 基本信息表表名 /// </summary> protected
string itemName = string .Empty; /// <summary> /// 输出的json内容 /// </summary> protected
string jsonStr = string .Empty; protected
void Page_Load( object
sender, EventArgs e) { Response.ContentType = "application/json" ; itemName = string .IsNullOrWhiteSpace(RequestString( "itemName" )) || string .Equals(RequestString( "itemName" ), "null" , StringComparison.OrdinalIgnoreCase) ? string .Empty : RequestString( "itemName" ).Trim(); if
(! string .IsNullOrWhiteSpace(itemName) && ! string .IsNullOrWhiteSpace(itemName)) { using
(DataTable dt = ItemsManager.GetItemsDB(userInfo, "ItemsClass" )) { //过滤 显示或不显示 DeletionStateCode为0的字段显示,Enabled为1的字段 BaseBusinessLogic.SetFilter(dt, BaseItemDetailsEntity.FieldDeletionStateCode, "0" ); BaseBusinessLogic.SetFilter(dt, BaseItemDetailsEntity.FieldEnabled, "1" ); DataTable dtNew = new
DataTable(); dtNew.Columns.Add( "key" , typeof ( string )); dtNew.Columns.Add( "value" , typeof ( string )); for
( int
i = 0; i < dt.Rows.Count; i++) { DataRow row = dtNew.NewRow(); row[ "key" ] = dt.Rows[i][ "ITEMNAME" ]; row[ "value" ] = dt.Rows[i][ "ITEMVALUE" ]; dtNew.Rows.Add(row); } jsonStr = DataTableHelper.DataTable2Json(dtNew); } } else { jsonStr = "{\"list\":[{\"key\":\"出错了\",\"value\":\"取数据出错\",\"myFlag\":\"没有传入参数值\"}]}" ; } Response.Write(jsonStr); Response.End(); } |
业务层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 |
using
System.Collections.Generic; using
System.Data; using
System.Web; namespace
TransferFees.BLL { using
System; using
System.Web.Caching; using
DotNet.Business; using
DotNet.Utilities; using
TransferFees.DAL; using
TransferFees.Foundation; /// <summary> /// 获取基础信息表资料业务类 /// 以安全的WCF方式访问 /// 1,增加缓存功能 /// /// <author> /// <name>songbiao</name> /// <date>2014.03.18</date> /// </author> /// </summary> /// </summary> /// </summary> public
class ItemsManager { /// <summary> /// 获得基础信息表资料 /// 通过安全的WCF服务方式调用 /// 传入的用户实体含有配置的加密信息 /// </summary> /// <param name="userInfo">用户实体</param> /// <param name="itemName">要查询的基础信息表的表名</param> /// <returns></returns> public
static DataTable GetItemsDB(BaseUserInfo userInfo, string
itemName, bool
refreshFlag = false ) { string
key = "GetItemsDB" ; if
(refreshFlag) { HttpContext.Current.Cache.Remove(key); } if
(HttpContext.Current.Cache[key] == null ) { lock
(userInfo) { if
(HttpContext.Current.Cache[key] == null ) { DataTable dtRes = ItemsServices.GetItemsDB(userInfo, itemName); CacheItemRemovedCallback onRemoveCallback = new
CacheItemRemovedCallback(CacheHelper.CacheItemRemovedCallback); HttpContext.Current.Cache.Add(key, dtRes, null , DateTime.Now.AddMinutes(30.0), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, onRemoveCallback); } } } return
HttpContext.Current.Cache[key] as
DataTable; } /// <summary> /// 获得基础信息表资料 /// 用户实体含有配置的加密信息 /// </summary> /// <param name="userInfo">用户实体</param> /// <param name="itemName">要查询的基础信息表的表名</param> /// <returns></returns> public
static List<BaseItemDetailsEntity> GetItemsList(BaseUserInfo userInfo, string
itemName, bool
refreshFlag = false ) { string
key = "GetItemsList" ; if
(refreshFlag) { HttpContext.Current.Cache.Remove(key); } if
(HttpContext.Current.Cache[key] == null ) { lock
(userInfo) { if
(HttpContext.Current.Cache[key] == null ) { List<BaseItemDetailsEntity> listRes = ItemsServices.GetItemsList(userInfo, itemName); CacheItemRemovedCallback onRemoveCallback = new
CacheItemRemovedCallback(CacheHelper.CacheItemRemovedCallback); HttpContext.Current.Cache.Add(key, listRes, null , DateTime.Now.AddMinutes(30.0), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, onRemoveCallback); } } } return
HttpContext.Current.Cache[key] as
List<BaseItemDetailsEntity>; } } } |
数据访问层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 |
using
System.Collections.Generic; using
System.Data; using
DotNet.Business; using
DotNet.Utilities; namespace
TransferFees.DAL { /// <summary> /// 获取基础信息表资料服务类 /// 以安全的WCF方式访问 /// /// <author> /// <name>songbiao</name> /// <date>2014.03.18</date> /// </author> /// </summary> /// </summary> /// </summary> public
class ItemsServices { /// <summary> /// 获得基础信息表资料 /// 通过安全的WCF服务方式调用 /// 用户实体含有配置的加密信息 /// </summary> /// <param name="userInfo">用户实体</param> /// <param name="itemName">要查询的基础信息表的表名</param> /// <returns></returns> public
static DataTable GetItemsDB(BaseUserInfo userInfo, string
itemName) { DotNetService dotNetService = new
DotNetService( "DotNet.WCFClient" ); return
dotNetService.BaseItemDetailsService.GetDataTable(userInfo, itemName); } /// <summary> /// 获得基础信息表资料 /// 用户实体含有配置的加密信息 /// </summary> /// <param name="userInfo">用户实体</param> /// <param name="itemName">要查询的基础信息表的表名</param> /// <returns></returns> public
static List<BaseItemDetailsEntity> GetItemsList(BaseUserInfo userInfo, string
itemName) { DotNetService dotNetService = new
DotNetService( "DotNet.WCFClient" ); return
dotNetService.BaseItemDetailsService.GetList(userInfo, "ItemsClass" ); } } } |
这段时间一直在基于吉日嘎拉的通用权限管理系统上做开发,真心感觉他真的是很强大,
他真的不仅仅是一套权限管理系统,底层涉及到的安全问题考虑的也非常全面。
用上这套权限管理系统,我们只需关心业务就行了,时间对开发人员、对公司来说都非常重要,有一个好的选择我们一定要用上。
今后有机会会分享更多的应用,欢迎使用过这套系统的朋友一起交流。
以WCF安全认证方式调用通用权限管理系统获取基础信息资料,布布扣,bubuko.com
原文:http://www.cnblogs.com/hnsongbiao/p/3608131.html