分布式与实体控制层

多层结构的业务实体在层间传递时常常需要根据层次裁减,或者根据功能选择某些信息,特别时在分布式层部署环境中,如果实体包含的信息太多,势必增加序列化与传递的开销,然后,如果把实体拆开,传递时使用简单变量,又有可能造成变量过多,或者对需求变化不灵活的麻烦

在这种情况下,使用实体控制层能够解决这个问题

你可以把实体控制层设想为一个衔接外部接口和内部功能的桥梁

实体控制层根据具体功能和层次,从传入的实体中,选择必要的信息,以新实体,或者简单变量,或者直接使用清理过的原实体这集中方式传递到具体的内部功能

举个例子TopicDataCenterEntry有这样一个方法,Post(TopicInfo,ConfigInfo)传入一个帖子和该论坛的配置,而TopicDataCenter需要根据配置中的信息,选取合适的缓存策略,比如内存缓存MemCache.Post,静态文件机制StaticFile.Post,这些都是分布式的实现,所以传入的实体必然需要尽量精简,而ConfigInfo包含了一个论坛所有的配置信息,所以传入的信息量很大,而使用的只是很少一部分.

看到这里,有的看官可能会想,那么TopicDataCenterEntry的Post方法里面不要传入ConfigInfo,直接传入需要使用的信息不就可以了吗?

假如所需要的信息是很确定的,那么却是应该这样做,然而,由于内部需要实现切换机制,不同的机制需要配置文件的不同信息,而且一旦修改为简单变量的传递,以后凡是发现某些内容需要配置在配置文件里,而不写死,就必须修改函数签名,导致上层结构的变化

这个时候实体控制层就派上用场了,TopicDataCenterEntry里面加上对应的逻辑,对于内存缓存,调用Post(TopicInfo,ConfigInfo.LifeTime)传入该帖子的存活时间,而对应静态帖子,传入ConfigInfo.TemplateFilename模版文件名,Encoding等等不同的信息,这样TopicDataCenterEntry就成为了实体控制层,保证了对上层的不变与灵活性,而又保证了在分布式结构中的性能

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值