个人对于架构设计的理解
处在待业状态最适合做的事情就是对以前的工作和学习做一个总结。
读过一些开源的架构,比如PetShop的架构,Nhibernate的架构,ibatis.net的架构。
自己写过的架构,从最早的简单三层,到面向服务,面向对象,面向接口编程思想的架构的转变,顺便乘着空余时间做下总结,很分析。
也希望得到高人指点,给初学者一些帮助。
我个人不是太过喜欢于ORM框架,但如果在适合的时候或者对ORM有偏向的时候,我想我也会对架构做一个ORM设计,但目前不是。
从整体来说,整个架构设计采用服务的思想,比如ObjectService继承于IObjectService接口。这个就是接口服务层和实现服务层的组成。
接口服务层Company.Web.IService 实现服务层Company.Web.Service。
在整个业务系统中包括业务层 Company.Web.Business,在业务层中做基类BaseDao,所有的业务DAO继承于BaseDao。
业务系统模块还包括 实体层 Company.Web.Model,
该实体层作用包括三个方面,Entity用来定义实体,Collect用来存放实体集合,Table用来规范数据库字段名称。
对于接口与实现分离的衔接,通过服务适配器来实现,在boot.config中做接口和实现的配置,让适配器读取服务做缓存处理。
对于数据库访问层可以通过DbProvider实现多数据库的通用性,通过如下配置以什么方式如何做数据库访问处理。
<Service Type="Company.Web.IDbUtilities.IDbService, Company.Web.IDbUtilities" Driver="Company.Web.DbUtilities.SqlService, Company.Web.DbUtilities" />
/// <summary>
/// 数据库访问服务
/// </summary>
public static IDbService DbService
{
get
{
return (IDbService)ServiceManager.Instance.GetService(typeof(IDbService));
}
}
在基于提供的基础服务中,除了DbUtilities,还包括Company.Web.IConfiguration,Company.Web.ICache服务。
Configuration服务主要作用是记录基本客户信息和系统处理基础信息,必要时当然包括系统运行方式的选择比如基于Local,或者Remoting,或者WebService。
业务层包括2块,是基于服务端的业务层和客户端的业务层。目前实现的方式是通过WebService。
以下为架构截图