连接对象

时间:2011-06-17 08:10:33

标签: c# asp.net ado.net

任何人都可以说出使用的缺点是什么 MicrosoftApplicationsDataBlock.dll(SQLHelper类)。

我们如何在.net应用程序中维持最大连接请求

如果我们一次有多十万个请求 可以使用吗 MicrosoftApplicationsDataBlock.dll(SQLHelper类)。

2 个答案:

答案 0 :(得分:0)

通常更喜欢“现代”数据访问库,它们提供更好的性能,灵活性和可用性。如果可能的话,我通常会避免使用旧的SQLHelper类。 :)我参与了一个旧项目,其中对SQLHelper类的依赖使我们无法从.NET 1.1升级到.NET 4.

为了获得出色的性能,您可能需要查看Dapper,它在Stackoverflow中使用,并且非常快速且易于使用。

但是,如果您正在查看10万个并发请求(第二,每分钟,每天??),您可能希望完全避免使用该数据库。查看缓存,ASP.NET内置的内置或类似Windows Server AppFabric Cache的内容。

答案 1 :(得分:0)

SQlHelper的失败 - >不要以为有什么。你可以免费打开和关闭连接,交易处理等等,你可以获得很多代码......没有你自己不能写的东西,但你可以从你的应用程序发送的连接数量不是SQLhelper或你使用的任何其他DbHelper的因素。在任何情况下,您调用system.data.sqlclient这是一个连接和使用sqlserver的API ... 当您启动N个连接时,它们都将运行SQL Server Scheduler服务。如果所有CPU都忙于处理可用的SPID(进程),则新的SPID将进入队列。您可以看到使用sp_who2,或从sys.sysprocesses中选择*。 等待的SPID每隔一段时间提供一次CPU周期(基于我不确定的某种算法)。这称为SOS Scheduler Yeild,其中一个进程将调度程序发送给其他进程...现在这将很好,直到您没有达到服务器可以容纳的最大并发连接。对于不同版本的SQL Server(开发人员/企业等),这是不同的。当你达到这个MAX并没有并发连接SQL Server,因为它的线程池中没有剩余的线程允许你的应用程序获得新连接..在这些场景中你将得到SQL.Exception连接超时......

长话短说,只要你想使用sqlhelper或传统的connection.open,就可以打开尽可能多的连接并保持打开状态。在良好的实践中,你应该打开一个连接,做一个原子事务,关闭连接,不要打开太多的连接因为你的盒子(sql)将用完连接句柄提供给你的应用程序.. SQL帮助程序只是一个帮助程序,无论您使用它还是不使用ADO.NET编程的最佳实践仍然适用。