最近做一个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设及所有的业务逻辑,之间可以互相调用。这四层也可以用代码生成工具自动生成。
1using System;
2using System.Configuration ;
3using Palau.DAL ;
4using System.Data ;
5using System.IO ;
6
7namespace 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
2using System.Configuration ;
3using Palau.DAL ;
4using System.Data ;
5using System.IO ;
6
7namespace 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
改进后的模型,可支持分布式应用,MS 的Remoting问题太多,WSE打完补丁后性能有所提升,还可以。