2009-12-04 114 views
1

在我的代码中,我检查一个文件是否存在并将其存储在asp.net中的Application对象中。在WCF中模拟应用程序

后来我访问这个布尔值来在我的web服务中执行某些操作。

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

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

回答

1

最后的后here提供了一个选项用于调用之间共享状态:

静态类总是存在于应用程序的生命周期中。它们是 在WCF中用于​​维护状态 ,因为每次进行呼叫或建立新的WCF连接时,它们都不会重新生成 。

+1

应禁止所有编程语言的静态状态。 – 2009-12-04 18:25:43

+1

拿了点。像所有锤子一样,通过静态功能,您可以建造房屋或粉碎拇指。 – 2009-12-04 18:59:10

1

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

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

如果您将注入的类作为长寿命对象(通常称为Singleton,但不要与Singleton设计模式混淆),您可以继续询问有关该值的信息,每次都有同样的答案。

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

1

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

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

您可以轻松地将您的应用程序范围的状态存储在任何合适的静态字段中,以便在需要时提供自己的锁定。那么,如果您正在以ASP.NET应用程序,WCF应用程序或其他方式运行,则无需担心。

相关问题