【问题标题】:how to create a singleton asmx service如何创建单例 asmx 服务
【发布时间】:2009-07-02 00:46:18
【问题描述】:

如何创建单例 asmx 网络服务? (请不要说使用 WCF 和 WWF :D)

【问题讨论】:

    标签: asp.net web-services asmx


    【解决方案1】:

    简短的回答:你不想。

    长答案:对 .ASMX 的请求将不确定地使用新的工作线程,因此即使您使用单例模式,也不会知道单例的生命周期。

    也许详细说明你想做什么,我可以指导你找到最好的模式。

    【讨论】:

    • 好吧,我有这个服务每秒从数据库请求数据,因为这会导致很大的性能问题,所有用户都会从服务中获得相同的数据,我认为单例是个好主意跨度>
    • 服务每秒调用一次,还是服务每秒都在进行数据库请求?
    【解决方案2】:

    我不确定单例如何解决您的性能问题,除非您在实例中缓存数据。在这种情况下,我同意上述在服务和数据库之间引入缓存的建议。这些数据的可变性如何?

    【讨论】:

      【解决方案3】:

      我不会建议 WCF,但这只是因为你很好地要求我们不要这样做。

      我会提到您找到了另一个使用 WCF 而不是 ASMX 的理由。您可能需要保留一份清单。

      您可能还希望保留使用 ASMX over WCF 的原因列表。出于不升级到 .NET 3.5 SP1 的原因,您甚至可能想要使用相同的列表。这不会是一个很长的列表。

      也许有一天,当管理层想知道为什么某些事情需要这么长时间才能完成时,你会想把你的清单发给他们。

      【讨论】:

        【解决方案4】:

        您可以使用 ashx (HttpHandler)。实现 IHttpHandler 并将 IsReusable 设置为 false。

        http://neilkilbride.blogspot.com/2008/01/ihttphandler-isreusable-property.html

        【讨论】:

          【解决方案5】:

          根据您想要做什么,也许您可​​以将引擎编写为一个单例,任何线程都可以访问它,该线程服务于 ASMX 调用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-07
            • 2016-07-11
            • 1970-01-01
            • 1970-01-01
            • 2020-08-17
            相关资源
            最近更新 更多