在WCF中模拟应用程序

时间:2009-12-04 17:55:41

标签: .net wcf

在我的代码中,我检查文件是否存在并将其存储在asp.net的Application对象中。

稍后我访问此布尔值以在我的Web服务中执行某些操作。

现在我想在wcf中重写我的web服务,这里的情况有所不同。应用程序对象不存在。

执行此任务的最佳方法是: 在网站应用程序启动记录一个布尔值。 将它传递给我的wcf,以便它在调用函数时知道它(没有布尔值是方法参数的一部分)

3 个答案:

答案 0 :(得分:1)

最后一篇帖子here提供了一种在呼叫之间共享状态的选项:

  

静态类总是存在的   申请的有效期。他们是   在WCF中用于​​维护状态   因为他们没有得到重新实施   每次呼叫或新的WCF   建立联系。

答案 1 :(得分:1)

很多人都没有意识到WCF支持依赖注入(DI)模式,例如构造函数注入而没有太多麻烦。

定义一个类,该类封装了您想要了解的知识(布尔值),并将该类的实例注入到您的WCF服务中,并询问它的值(以及您想要了解的任何其他内容)。

如果将注入的类作为一个长期存在的对象(通常称为 Singleton ,但不要与Singleton设计模式混淆),您可以继续询问它的值和你每次都会得到同样的答案。

在许多其他事情中,this post描述了如何在没有默认构造函数的情况下将依赖项注入WCF服务实现。

答案 2 :(得分:1)

ASP.NET中的Application对象主要用于向后兼容传统ASP应用程序。

它本质上是一个静态Dictionary<string, object>,具有与传统ASP兼容的锁定语义。

您可以通过将应用程序范围的状态存储在任何合适的静态字段中来轻松替换它,并在需要时提供您自己的锁定。然后,如果您作为ASP.NET应用程序,WCF应用程序或其他东西运行,则无需担心。