也谈企业级软件架构

     一直认为,系统架构包括软件架构和部署架构。今天来谈谈软件架构。
     软件公司,如果拥有一套能够适用于不同项目的软件基础架构,那么可以大大节省开发和维护成本。  
    目前看来,企业应用系统包括两大结构:B/S和C/S。B/S即浏览器服务器结构,包括PC上的web应用,目前应用比较广泛,还有手机上的wap应用,应用不是很多;C/S即客户端服务器结构,包括PC上的客户端,也包括移动客户端,随着iphone,ipad,android的普及,移动客户端应用是个大趋势。
    那么,企业级的软件结构应该使用这两大结构的应用,才能最大限度地达到复用,节约成本。
    下面为本人设想的总体架构图:

   

    首先,把软件分为客户端和服务器端,B/S结构也只是客户端服务器结构的一个特例。
    其次,把框架划分为6大层次:表现层;安全层;服务层;业务层;数据访问层;数据层。
    最后,定义每个层次中处理模块。

    为什么要分层呢?我想目的就是为了可复用,以扩展,说白了就是降低成本。下面简单说说这几个层次。
    一、 表现层。大部分处理位于客户端,表现层之后的层次都位于服务端。如果是通过外网调用服务器端的服务接口,有时候要考虑安全性和远程调用网络性能。采用加解密方式一定程度上会提高安全性,但是没有绝对的安全。考虑网络性能必须考虑延迟和吞吐量。从发送数据到首字节到达目的服务器需要一段时间(T1,延迟时间),首字节到达目的地后到数据传输完毕需要一段时间(T2)。我们的目标是减小T1和T2。一般情况下,T1远大于T2,所以我们优先考虑减小T1。通过DTO模型或XML来实现参数标准化,力图通过每次调用传输最多的数据来减少远程调用次数,从而减小T1。通过压缩数传输数据量来减小T2。
表现层需要学习的知识很多,针对不同客户端有不同的表现,如果是iphone,ipad则需要objective—c在macos平台开发。如果是android,还好,用java那套就可以。如果是pc或wince那么.net可以搞定。如果能搞写出公共模块能够提供不同的客户端平台应用,那就更好了。
    二、 安全层。采用加解密和用户密码认证方法。目前的加密算法有DES、RSA。
    三、 服务层。封装业务,提高接口给外部系统调用,实现面向服务的SOA架构。考虑到外部系统可能要以接口方式接入本框架,因此提供接口注册中心模块。
    四、 业务层。提供一个业务注册中心来接入外部系统的业务。结合服务层,外部系统可以通过业务和接口两种方式接入框架。
    五、 数据访问层。可以使用一些ORM框架,如entity framework。也可以直接写sql,或存储过程。
    六、 数据层。定义和设计数据库、数据文件。存储数据。

   软件开发离不开管理,代码管理,各种风险的管理,决定着开发的成败。 

 

 

 

posted @ 2011-05-28 23:00  太平洋的风  阅读(1059)  评论(0编辑  收藏  举报