EAServer 组件的生命周期

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

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

相关文章
相关标签/搜索