BLH结构分析

BLH结构

入参:RequestEvent
出参:ResponseEvent
业务接受者:FacadeGateWayService
业务处理类:***BLH extends BaseBizLogicHandler
业务处理代理类:BizDelegate

职责:
RequestEvent:构造函数(BLH名,方法名),可设置请求来源(渠道类型),用户ID,事务类型,地区代码,

BizDelegate:将RequestEvent发送至FacadeGateWayService(可配置为本地或远程的FacadeGateWayService)
在这里记录日志(比如耗时,等),统一异常、错误码的处理

FacadeGateWayService:需注入dbsessionFactory,事务处理,异常记录,调用BaseBizLogicHandler.execute(RequestEvent req, CTPDBSession ss)处理RequestEvent

BaseBizLogicHandler:统一处理验证(意义不大);运用spring代理技术,记录每个dao方法的访问时间

***BLH:业务处理类的每个方法,作为一个业务单元,处理RequestEvent

***DAO:数据库操作;


优点:降低了controller到biz层耦合;测试简单;能够监控系统的性能;追踪用户访问时系统的性能瓶颈;学习成本低,使用简单,上手速度快;
在系统逐步扩张为多种接入渠道(如:手机、web、终端等)时很适用;
在controller到biz层的业务参数经常变化或需统一调控的情况下很适用。
业务模块独立性强的情况下适用;
适用于垂直业务开发;

缺点:设计理念导致blh复用不理想;blh调blh会出现事务不一致问题;反射的性能问题;开发效率不高;blh重构不方便;多数据源支持不是很方便。


改进建议:blh、dao做成单例加缓存解决性能问题,使用ThreadLocal解决事务问题,适当的情况下增加配置式的sql或者增加mybatis的支持。

猜你喜欢

转载自jiangshaolin.iteye.com/blog/1740423