2

在 ASP.NET 应用程序中,我有少量相当复杂、经常使用的操作来对数据库执行。在这些操作中,几个表中的一个或多个需要基于对某些表的输入参数和值的逻辑评估来更新或插入。我一直保持逻辑和数据访问的分离,所以目前的操作是这样的:

  1. 从客户端收到的请求
  2. 业务层调用数据层从数据库中检索数据
  3. 业务层处理结果并确定执行哪个操作
  4. 业务层调用适当的数据操作
  5. 响应发送给客户端

如您所见,客户端在向数据库发出两个单独的请求时一直在等待。在寻找解决方案时,我找到了 CLR 存储过程,但我不确定我是否对它们的用途有正确的认识。

我已经为上面的代码编写了一个替换,特别是在 CLR SP 中放置了步骤 2-4。我的理解是 SP 将由 SQL Server 在本地执行,并且只对服务器进行一次调用。

我的问题基本上是,这是 CLR SP 的预期用途还是我遗漏了什么?

我意识到这在结构上有点妥协,所以如果有更好的方法来做到这一点,我很乐意听到它。

4

1 回答 1

3

CLR procs 旨在进行高级查询处理,而存储过程确实很难做到。我遇到过非常少的情况,它们更有益。它们不适用于业务层工作,尽管您可以这样做。我不会将所有内容都嵌入到 CLR proc 中。层分离在应用程序中非常有用。如果您需要加快代码速度,请查看可用的内存/代码分析器,它可以帮助您识别代码中的故障点。

如果可能,用 AJAX 回调、Web 服务等替换服务器端代码,因为这会真正加快它的速度(至少允许你做更多的异步工作)。

HTH。

于 2010-03-22T15:13:51.293 回答