2014 相信自己能做的更好

---------------------------------------------------------------------------------------------------------
Everything is possible    Nothing is Impossible     
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

企业应用分层模型之讨论

Posted on 2005-08-22 09:20  Arping.Net探索  阅读(1652)  评论(3编辑  收藏  举报
最近做一个Project,考虑到时间紧迫,对以前的分层结构做了些修改,没想到开发效率比以前提高75%,以前两天一个功能点,现在只需要半天甚至更少了。
具体来看一下,以前的分层如下

业务单元在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

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