3

在 ASP.NET 中使用 Web 服务(我们专门使用 asmx 和 WCF)时,建立 SQL 连接的最佳方式是什么?现在,我正在为每个 Web 服务调用建立一个新的连接,但是当有成千上万的用户连接时,我不相信这会太有效。对此主题的任何见解将不胜感激。

4

4 回答 4

3

你正在做的是相当标准的。

假设您使用相同的连接字符串,则连接将来自连接池,这是获得连接的最有效方式。

只做所需的工作并在每次调用时关闭连接是一种很好的做法。

您可以做的一件事是缓存结果并为在缓存项的整个生命周期内不太可能导致数据更改的调用返回缓存结果。这将减少数据库调用。

于 2012-09-14T17:54:32.800 回答
2

强烈建议您在使用完连接后始终关闭连接,以便将连接返回到池中。您可以使用 Connection 对象的 Close 或 Dispose 方法,或者通过在 C# 中的 using 语句中打开所有连接来执行此操作。未明确关闭的连接可能不会添加或返回到池中。

您应该在连接字符串中添加“Pooling = true”(并添加一个非零的“Min Pool Size”)。

于 2012-09-14T17:59:46.220 回答
1

让提供者为您处理连接池;不要试图做得比它更好——你会失败。

使用默认连接设置,提供者将维护一个连接池。当您关闭/处置时,连接实际上只是释放到池中。它不一定是真正关闭的。

于 2012-09-14T17:55:51.227 回答
1

默认情况下,SqlConnections 使用连接,这将允许系统管理对先前连接对象的重用,而不是为每个请求真正创建“新”连接——达到池最大值。并且它是内置的,所以你不需要做任何事情来利用它。

编写自己的池/连接管理器充满危险,并导致各种邪恶,所以在我看来,允许系统管理池中的连接可能是你最好的选择。

于 2012-09-14T17:56:46.483 回答