最近做一个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

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

86

87

88

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