在此,笔者以DATASNAP为例,其它中间件以此类推。
中间件为什么要使用对象池?
对象池——让所有的对象免堕轮回之苦,对象不再为其生和死而烦恼。
要想让中间件长久稳定地运行,做到无人值守,对象池很重要,对象池大致分为以下几类。
1)线程池,DATASNAP使用INDY10作为其通讯控件,其线程池实际上就是使用INDY10的,只是DATASNAP在其基础上再封装了一层壳罢了,留给我们的只需要设置相关控件的属性即可,在些不多说;
2)服务对象池,DATASNAP向导会生成一个ServerMethodsUnit1.pas单元,该单元中有一个类:TServerMethods1,它就是中间件服务对象,该类PUBLIC里面的方法就是将要为客户端提供服务的远程服务方法。
3)数据模块池,这个池有点特殊,它本身是一个大的对象集容器池,在数据模块窗体上放有数据库连接对象、数据集对象、巢状对象,因此数据模块池=数据库连接池+数据集对象池+巢状对象池等其它对象池。对于这个池大家可能有争议,为什么不搞成几个独立的池:数据库连接池、数据集对象池、巢状对象池等?答案就是:省事。做成一个池既然可以做到很多个池的效果,那就一个池好了。
当然还可以有其它的对象池,在此略过。