【问题标题】:Should I make Enterprise Library Data Block Database object static?我应该将企业库数据块数据库对象设为静态吗?
【发布时间】:2010-11-04 05:41:08
【问题描述】:

谁能澄清企业库的数据库对象是否可以在没有任何线程安全问题的情况下设为静态?

【问题讨论】:

    标签: enterprise-library


    【解决方案1】:

    是的,Database 实例是线程安全的。它只是一个生产连接等新对象的大工厂。实例本身在创建后不会更改状态。当您查看源代码时,您可以清楚地看到这一点。它产生的对象当然不是线程安全的。

    【讨论】:

    • 谢谢。我想确认一下。
    • 我们如何确保它产生的对象,例如参数或命令对象是线程安全的?
    【解决方案2】:

    你可以,但没有重要的理由。数据库实例的创建成本很低,并且不保存任何状态。

    【讨论】:

    • 是的,但我希望整个域库只使用一个通用数据库
    【解决方案3】:

    不,不要这样做。我试过了,很抱歉我做了。虽然它是线程安全的,但它大大减慢了我来自网络应用程序的查询请求。我以为我很聪明地避开了元数据的创建,但它反而把事情搞砸了。现在,我为每个请求提供了一个全新的实例,它既快乐又快速。

    【讨论】:

    • 我没有经历过任何这种情况,但公平地说,我也没有机会在大型项目中对其进行测试。您确定数据库对象是导致速度下降的原因吗?
    • 我将它作为我的静态数据库提供程序类的静态属性。也许另一种方式可行,但似乎人们倾向于在每个请求中重新创建上下文(无论如何都是 Webwise)。它工作得足以认为它还可以。当您提出几个快速请求时它失败了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多