EAServer 组件的生命周期
EAServer 组件的生命周期
会哭的鳄鱼 发表于6个月前
EAServer 组件的生命周期
  • 发表于 6个月前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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

首先,当客户端连接上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的组件,必须要选择绑定线程,切记!

共有 人打赏支持
粉丝 3
博文 38
码字总数 38724
×
会哭的鳄鱼
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: