系统架构中的纵向划分(一)

来源:互联网 发布:淘宝宝贝图片美工 编辑:程序博客网 时间:2024/05/22 05:15

     系统架构中的纵向划分一般都称为系统分层。系统分层主要是为了系统能更好得适应复杂多变的软硬件环境。比如说一个常见的企业信息化系统,如果以前这个系统使用的SqlServer,现在因为种种原因需要使用oracle,那么你的系统对这样的变化能很好的适应吗?

    让我们看看不同的系统架构对这样的变化的适应程度。

a)系统没有划分层次,在UI界面的事件中直接调用相关的数据库连接代码(比如在添加按钮的Click事件中连接数据库,并且传送Insert语句或者执行存储过程)。当前面的变化出现时,我们的程序人员,不得不在所有的代码中找到相关的数据库操作代码,并且改成符合Orcacle规范的操作。

b)系统专门设一个数据库访问层,在UI界面的事件中调用数据库访问层中的类来执行操作。当前面的变化出现时,我们的程序人员只需要修改数据库访问层的类的具体实现就可以了,至于UI界面部分的代码不需要改变。

c)系统专门设一个数据库访问层,这个层中设立一个通用数据库访问接口(IDataAccess),设立一个DataAccessFactory class,此class设一个方法:IDataAccess GetDataAccess(),这个类方法可以返回一个特定的IDataAccess实现,至于返回什么样的具体实现,可以设立一个配置文件,GetDataAccess方法可以根据配置文件的要求来返回一个适当的实例,当使用SqlServer时,我们一定是返回一个SqlServerAccess(一个IDataAccess的具体实现类),现在我们如果改用Oracle,那么我们仅仅需要新增一个OracleAccess类,并且改动一下配置文件,其余事情什么也不用做。

        可以看出a)情况最差,因为它需要在全体代码中进行修改,这样范围的修改会牵扯到好多代码,因而极其容易出错。b)情况就好了很多,因为我们把代码的修改局限在了数据库访问层的几个类中,这样很好控制了Bug的出现。c)的情况那就非常好了,因为我们根本不需要修改任何已有代码,而仅仅是新添一些类,并且修改一个配置文件即可。

       无疑c)的设计是最复杂的,但它的可扩展性是最好的,看来一个好的架构对于大型的,易变的,需要不断扩展的系统是极其重要的。

原创粉丝点击