我正在尝试使用Web服务来实现我的想法。
在调试中,每当客户端调用Web服务方法时,Web服务类似乎都会被实例化。我可以通过看到每次调用方法时构造函数被调用来证实这一点。
在客户端中,我只实例化代理Web服务一次。
这意味着我必须在调用之间存储所有数据,并且如果我使用数据库,每次调用方法都需要重新连接。 这不可能是正确的吧?
这意味着我必须在调用之间存储所有数据,并且如果我使用数据库,每次调用方法都需要重新连接。 这不可能是正确的吧?
这是正确的。
Web服务(在面向服务的架构中)应该是无状态的(它们不会在调用之间记住任何东西...所有数据持久性都由您自己控制)。
如果您在网络上搜索足够长的时间,您可能会发现尝试创建有状态Web服务的企图(虽然它们确实有其位置,但违反了SOA的核心原则)。 但是,您会发现它们无法缓解您的担忧。 每次调用都会得到一个新的类实例,并且必须重新创建与数据库的任何连接。
是的,这是100%正确的。每当服务器接收到请求时,都会实例化一个新对象在单独的线程上处理该请求。
这与基本的ASP.NET Web表单发生的事情相同。