最近做一个Project,考虑到时间紧迫,对以前的分层结构做了些修改,没想到开发效率比以前提高75%,以前两天一个功能点,现在只需要半天甚至更少了。
具体来看一下,以前的分层如下

业务单元在Manager完成,Manager之间不能互相调用,事务在Facade完成,直接拼装Manager,Manager中不能Delete,Insert,Update等数据库更新的语句,涉及数据库更新的全部在持久化代理层Persist Proxy做,Wrapper外观类判断是否采用负载均衡,根据Facade 中public的方法重新定义了一次,当然这六层全部可以通过ER图或者Table生成代码。
现在的分层如下

DB Interface封装了数据访问Palau组件,Manager直接写SQL,Entity增加了集合类,Manager设及所有的业务逻辑,之间可以互相调用。这四层也可以用代码生成工具自动生成。
改进后的模型,可支持分布式应用,MS 的Remoting问题太多,WSE打完补丁后性能有所提升,还可以。

具体来看一下,以前的分层如下

业务单元在Manager完成,Manager之间不能互相调用,事务在Facade完成,直接拼装Manager,Manager中不能Delete,Insert,Update等数据库更新的语句,涉及数据库更新的全部在持久化代理层Persist Proxy做,Wrapper外观类判断是否采用负载均衡,根据Facade 中public的方法重新定义了一次,当然这六层全部可以通过ER图或者Table生成代码。
现在的分层如下

DB Interface封装了数据访问Palau组件,Manager直接写SQL,Entity增加了集合类,Manager设及所有的业务逻辑,之间可以互相调用。这四层也可以用代码生成工具自动生成。
1
using System;
2
using System.Configuration ;
3
using Palau.DAL ;
4
using System.Data ;
5
using System.IO ;
6
7
namespace DBInterface
8
{
9
/// <summary>
10
/// Broker 的摘要说明。
11
/// </summary>
12
public class Broker
13
{
14
PersistBroker m_broker = null ;
15
16
private string m_databasetype = "";
17
18
public string DataBaseType
19
{
20
get
21
{
22
return this.m_databasetype;
23
}
24
set
25
{
26
this.m_databasetype = value;
27
}
28
}
29
30
public Broker()
31
{
32
string strConn = CommonFunction.Decript(ConfigurationSettings.AppSettings["ConnectionString"]) ;
33
string strDbType = ConfigurationSettings.AppSettings["DataBaseType"].ToUpper();
34
this.m_databasetype = strDbType;
35
// m_broker = PersistBroker.Instance(strConn, strDbType) ;
36
m_broker = PersistBroker.Instance(strConn);
37
}
38
39
public Broker(string ConnectionString,string DataBaseType)
40
{
41
this.m_databasetype = DataBaseType;
42
m_broker = PersistBroker.Instance(ConnectionString, DataBaseType) ;
43
}
44
45
public void Open()
46
{
47
m_broker.Open() ;
48
}
49
50
public void Close()
51
{
52
m_broker.Close() ;
53
}
54
55
public DataSet ExecuteDataSet(string SQL,string[] Names,object[] Values)
56
{
57
return m_broker.ExecuteDataset(SQL,CommandType.Text,Names,Values) ;
58
}
59
60
public DataSet ExecuteDataSet(string SQL)
61
{
62
return m_broker.ExecuteDataset(SQL);
63
}
64
65
public void Execute(string SQL,string[] Names,object[] Values)
66
{
67
m_broker.ExecuteNonQuery(SQL,CommandType.Text,Names,Values) ;
68
}
69
70
public void BeginTransaction()
71
{
72
m_broker.BeginTrans() ;
73
}
74
75
public void CommitTransaction()
76
{
77
m_broker.CommitTrans() ;
78
}
79
80
public void RollBackTransaction()
81
{
82
m_broker.RollbackTrans() ;
83
}
84
}
85
86
87
}
88
using System;2
using System.Configuration ;3
using Palau.DAL ;4
using System.Data ;5
using System.IO ;6

7
namespace DBInterface8
{9
/// <summary>10
/// Broker 的摘要说明。11
/// </summary>12
public class Broker13
{14
PersistBroker m_broker = null ;15

16
private string m_databasetype = "";17

18
public string DataBaseType19
{20
get21
{22
return this.m_databasetype;23
}24
set25
{26
this.m_databasetype = value;27
}28
}29

30
public Broker()31
{32
string strConn = CommonFunction.Decript(ConfigurationSettings.AppSettings["ConnectionString"]) ;33
string strDbType = ConfigurationSettings.AppSettings["DataBaseType"].ToUpper();34
this.m_databasetype = strDbType;35
// m_broker = PersistBroker.Instance(strConn, strDbType) ;36
m_broker = PersistBroker.Instance(strConn);37
}38

39
public Broker(string ConnectionString,string DataBaseType)40
{41
this.m_databasetype = DataBaseType;42
m_broker = PersistBroker.Instance(ConnectionString, DataBaseType) ;43
}44

45
public void Open()46
{47
m_broker.Open() ;48
}49

50
public void Close()51
{52
m_broker.Close() ;53
}54

55
public DataSet ExecuteDataSet(string SQL,string[] Names,object[] Values)56
{57
return m_broker.ExecuteDataset(SQL,CommandType.Text,Names,Values) ;58
}59

60
public DataSet ExecuteDataSet(string SQL)61
{62
return m_broker.ExecuteDataset(SQL);63
}64

65
public void Execute(string SQL,string[] Names,object[] Values)66
{67
m_broker.ExecuteNonQuery(SQL,CommandType.Text,Names,Values) ;68
}69

70
public void BeginTransaction()71
{72
m_broker.BeginTrans() ;73
}74

75
public void CommitTransaction()76
{77
m_broker.CommitTrans() ;78
}79

80
public void RollBackTransaction()81
{82
m_broker.RollbackTrans() ;83
}84
}85

86

87
}88

改进后的模型,可支持分布式应用,MS 的Remoting问题太多,WSE打完补丁后性能有所提升,还可以。



浙公网安备 33010602011771号