我正在制作一个无状态 Web 服务,它使用 Microsoft SQL Server 读取数据(并且只读取),而不使用事务。以下是最好的:
- 在每次调用 Web 服务时启动 SqlConnection,或者
- 将 SqlConnection 存储在静态字段中。
恕我直言,第一种方法会消耗太多资源(如果十个客户端向 Web 服务发出十个请求,它会打开一百次数据库......),但第二种方法可能有一些问题?也许比赛条件?还是安全问题?
我正在制作一个无状态 Web 服务,它使用 Microsoft SQL Server 读取数据(并且只读取),而不使用事务。以下是最好的:
恕我直言,第一种方法会消耗太多资源(如果十个客户端向 Web 服务发出十个请求,它会打开一百次数据库......),但第二种方法可能有一些问题?也许比赛条件?还是安全问题?
添加最大/最小池大小允许 SQL 服务器池连接,因此即使您创建新的 SqlConnection 对象,数据库也可以为您池连接。
例如。ConnectionString="目录=MyDb;MinPoolSize=10;MaxPoolSize=10..."
就个人而言,默认情况下,我会在每次调用时打开连接,并依靠连接池为我解决问题。
我不会担心连接成本,除非您发现由于某种原因有问题。连接池将使大部分问题变得不那么重要。
如果您正在大量使用数据库,或者检索大量静态数据,您可能需要考虑实施某种缓存以减少联系数据库期间的总体成本。即使使用无状态 Web 服务,您可以在应用程序缓存中保留的数据越多越好。