我正在尝试使用Web服务来实现我的想法.在调试中运行看起来每次客户端调用Web服务中的方法时,Web服务类都会实例化.通过看到每次调用方法时都会调用构造函数,我可以看到这一点.我只在客户端实例化一次代理Web服务.
这意味着我必须在调用之间存储所有数据,这意味着如果我使用数据库,我将不得不为每次调用方法重新连接.
这不可能是正确的?
这确实是正确的.
Web服务(在面向服务的体系结构中)意味着无状态(它们在调用之间不记得任何内容......所有数据持久性都取决于您).
如果你在网上搜索足够长的时间,你会发现尝试创建有状态的Web服务(它确实有自己的位置,但却违背了SOA的核心原则).但是,你会发现它们并没有减轻你的担忧.每次调用都会得到一个新的类instantianciation,并且必须重新创建与DB的任何连接.
对于 ASMX 来说,这是正确的,而且很大程度上是一件好事。服务应该尽可能无状态,如果您确实需要在调用之间存储某些内容,那么您可以使用单例。不过,我认为保留数据库连接并不符合条件,因为它们已被缓存,并且无论如何您都想限制使用范围。
如果您希望单个对象在调用之间保持活动状态,WCF 确实提供了此选项。鉴于 ASMX 已过时,您可能希望迁移到 WCF。
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |