系统软件架构的认识

作为一个互联网系统,软件方面由几个层次构成。我们要做一个框架,把各层的调用管理起来,而不是上层直接调用下层这么赤裸裸的关系。

实际上,配置信息类、管理类、控制类、门面类、代理类通常被设计为单例类。像Java的Struts、Spring框架,.Net的Spring.Net框架,以及Php的Zend框架都大量使用了单例模式。

数据层:持久数据层(DB或文件)、缓存数据层(内存或缓存系统)

结构化数据:用关系型DB存储,可以方便做统计,有现成的一套SQL理论。

非结构化数据:如用户操作的日志,用文件形式保存,必须用hadoop技术才能做大数据的统计,在学习中。

目前,对DB的访问,都是靠各DB驱动去实现,可以理解为DB的客户端代理。我们的应用的数据访问层就是调用DB客户端代理类去跟DB打交道。

由于DB不同,在构造DB代理类时要用设计模式,简单工厂、工厂方法、抽象工厂等三种设计模式可供选择。


缓存:cache的做法:定义接口ICache、CacheManager实现。


服务层:实现业务的地方。

调用数据层的类创建对象,通过对象调用方法实现获取数据,做进一步加工处理。


应用交互层:调用服务层获取交互数据呈现视图,并把用户的交互数据通过服务层保存。这一层往往跟服务层不是部署在同一台物理机上,所以是采用服务的代理类

实现远程调用。这一层要是是本地APP,要么是IIS端部署的网站。


在各层的调用中,为了去除直接调用产生的依赖。而依赖使得系统以后不好扩展,必须使用设计模式。IOC(inversion of control),控制反转,具体技术用依赖注入实现。

依赖注入的3中技术:构造器注入、属性注入、接口注入。构造器和属性注入都要通过配置文件来实现,维护配置文件本省就是一件麻烦的事情。如果类有成千上万以后,

配置文件臃肿庞大,就算分类也不是那么好管理。所以最好用接口注入方式实现。


通过IOC创建了对象后,服务端要把对象包装成服务对象,而客户端要把对象包装成代理类对象,两者通过通信实现远程调用和数据的传输,数据类型必须可序列化。


而服务层和数据访问层往往都是部署在同一物理机上,所以只需要把服务层做成接口注入的IOC就可以了,数据访问层不用做成IOC给服务层调用,而是直接new的方式调用。

但在创建每个表的数据访问驱动时,最好支持多线程,但往往很多时候都是采用单例模式提供某个表的数据访问驱动实例。


如果涉及多个数据库的系统,那么还要进一步封装,提取一个facade层,这是门面模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值