Q
QSmile
Unregistered / Unconfirmed
GUEST, unregistred user!
关于 WebService 的一些疑问
以前做过 SocketConnection 的三层. 现在对 WebService 有些兴趣. 但同时也有更多的疑问.
因为与SocketConnection 方式比起来. 有很多不一样的地方.
1. 状态问题
我的 SocketConnection 是用长连接的方式. 也就是说: 客户端在进入系统时 SoctetConnection 就连接上了AppServer, 在操作期间不会断开. 这时 AppServer 对每个连接就会有一个 RemoteDataModule 与之对应. 我就用 RemoteDataMadule 来保存了一些状态. 比如: 用户是否已经登录, 用户身份, 用户权限等等, 这样的好处就是方便对用户操作权限进行管理. AppServer 中没有用到 DataSetProvider , 我不知道我这种方法是有状态三层,还是无状态的.
(问题一: 我现在用的方法,是"有状态"还是"无状态"
连接, 那"无状态"
连接是不是每次连了,操作了,马上就断开, 下次要用时, 再连? 如果这样效率不是比较低了? 在连接上比较耗时. 还有, 如何判断用户是否已登录? )
而现在看 WebService, 它是基于 HTTP. 这回是彻底的无状态的了. 因为 HTTP 每次连接都是新的. 需要数据时连接, 但连接了之后,马上就断开. 而我在 WebService 端的调试发现. 每次客户端调用服务器时, WebService 对象会创建. 但调用完成后, 服务器端的 WebSerivice 马上就释放了. 这样一来我就有疑问了. 那服务器如何检查客户端的身份呢? 如何判断这个客户权限呢? 不可能每次调用都加一个 UserID 与 Passwd 参数吧. 有没有别的方法? (问题二)
当然, 很多人提倡的无状态三层,我始终没太理解其精要,就是客户端用户身份如何得到检查?
2. 效率问题
用 WebService 时, WebSerivice对象 如何做成Pooling ? 因为如果频繁的创建释放,太浪费资源了. (问题三)
以前做过 SocketConnection 的三层. 现在对 WebService 有些兴趣. 但同时也有更多的疑问.
因为与SocketConnection 方式比起来. 有很多不一样的地方.
1. 状态问题
我的 SocketConnection 是用长连接的方式. 也就是说: 客户端在进入系统时 SoctetConnection 就连接上了AppServer, 在操作期间不会断开. 这时 AppServer 对每个连接就会有一个 RemoteDataModule 与之对应. 我就用 RemoteDataMadule 来保存了一些状态. 比如: 用户是否已经登录, 用户身份, 用户权限等等, 这样的好处就是方便对用户操作权限进行管理. AppServer 中没有用到 DataSetProvider , 我不知道我这种方法是有状态三层,还是无状态的.
(问题一: 我现在用的方法,是"有状态"还是"无状态"
连接, 那"无状态"
连接是不是每次连了,操作了,马上就断开, 下次要用时, 再连? 如果这样效率不是比较低了? 在连接上比较耗时. 还有, 如何判断用户是否已登录? )
而现在看 WebService, 它是基于 HTTP. 这回是彻底的无状态的了. 因为 HTTP 每次连接都是新的. 需要数据时连接, 但连接了之后,马上就断开. 而我在 WebService 端的调试发现. 每次客户端调用服务器时, WebService 对象会创建. 但调用完成后, 服务器端的 WebSerivice 马上就释放了. 这样一来我就有疑问了. 那服务器如何检查客户端的身份呢? 如何判断这个客户权限呢? 不可能每次调用都加一个 UserID 与 Passwd 参数吧. 有没有别的方法? (问题二)
当然, 很多人提倡的无状态三层,我始终没太理解其精要,就是客户端用户身份如何得到检查?
2. 效率问题
用 WebService 时, WebSerivice对象 如何做成Pooling ? 因为如果频繁的创建释放,太浪费资源了. (问题三)