如果我在Web服务方法的一次调用中打开一些全局可行的数据库连接,并且如果同时在第二次调用此方法时它会在这个全局可行的情况下看到这个实例吗?这些资源是共享的还是每次调用都拥有自己的资源?
由于
答案 0 :(得分:3)
全球变量往往只是全球变量。如果您的全局变量是C#static
,它将由AppDomain中的webservice方法共享。这显然容易出错 - 如果每个webservice方法在需要时获得新连接,并在方法完成之前关闭它,则更好。
答案 1 :(得分:1)
通常Web服务使用Http请求。 在这种情况下,您可能需要定义对象的每个调用,因为该服务是无状态的......
答案 2 :(得分:1)
对于服务,最好使用某种数据库连接管理。通常,您可以根据请求调整打开/关闭新连接。请注意,您很可能会使用逻辑连接和连接池。这些有助于显着减少打开物理连接的负载。在没有您直接控制的情况下创建物理连接,并且操作非常重。
不要将连接放在共享的静态变量中,因为连接通常是一次性资源,这意味着您必须处置它。如果出现问题并且您与数据库的连接已损坏,则所有后续调用都将被视为死命。