EAServer 组件的生命周期

开发三层分布是应用,我们必须要了解组件的生命周期。

首先,当客户端连接上eas,并创建完组件实例的时候,eas并没有真正创建该组件的实例。客户端执行createinstance方法,eas仅仅是对用户指定的组件进行验证,看是否是有效的组件,并能在当前授权下有效创建,也即是说,客户端执行完createinstance后,eas并没有真正在内存中创建这个组件的实例。

当客户端开始调用组件第一个函数的时候,eas要做如下工作:

1,看指定的组件缓存池中是否有缓存的实例,如果没有将创建该组件的实例,并触发组件的构造事件。

2,一旦组件创建或则有可用的组件实例,则eas将把该组件实例和客户端线程邦定,并触发组件的activate事件。

3,执行客户端调用的函数。

4,如果是有状态组件,则函数执行完后,直接返回结果到客户端,并保留该组件和客户端线程的绑定,直到客户端调用setcomplete()和setabort()或则组件函数结尾处调用setcomplete()和setabort()。

5,当组件事务被提交或会滚后,将导致对数据的操作的提交和会滚。完成组件的客户端会话。

6,将组件和客户端线程解除绑定,并触发组件的deactivate事件。

7,判断当前组件属性中是否支持缓存池,如果不支持,或则当前缓存池已经超过了设置的最大缓存个数,默认不限制个数。则eas将会触发组件的析构事件,并将组件从内存中销毁。

8,如果组件可以缓存,将组件放入到缓存池中供下次调用

一旦客户端创建完组件并调用完函数,只要客户端不断开连接,则,客户端可以继续调用组件的函数,这就是eas的按需连接的功能。这个功能将大大节省服务器的资源消耗。

前面提到了客户端线程的概念,这里有必要特别说明一下。

当客户端执行连接到客户端,并通过授权认证后,eas将会自动创建一个服务器端线程来和该客户端进行通信,这个线程就是客户端线程(好像有点拗口哟!),在pb9,以及以后的版本中,默认是不要绑定客户端线程的,也就是说一旦完成一次函数的调用,组件和客户端线程解除绑定后,这个线程将进入到eas的线程池,共其他客户端使用。这样无形之中就提高了服务器的效能。因为在操作系统的线程资源也是有限的。尤其是windows,给每个进程分配的可用线程都是有限制的。

但在pb8的时候,因为pb8虚拟机的局限性,你必须要选择绑定线程,而绑定线程的结果,就是,就算客户端完成了一次函数调用,并把组件和线程解除绑定,则该线程也不会被其他客户端使用,直到该客户端断开连接,则该线程将被eas销毁掉。这是很浪费系统资源的。但pb8的组件,必须要选择绑定线程,切记!

转载于:https://my.oschina.net/u/1464512/blog/914350

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值