最近对公司的原有系统进行了重构,系统需要同时支持Web和Winform,由于系统的数据量较大,所以采用了缓存技术,保证Web和Winform 可以共享缓存,逻辑上Web层直接访问Business层(DLL类库),Winform通过Web Service访问Business层,在实际测试中发现Winform可以很好的使用文件依赖缓存,但是Web层却不能使用文件依赖缓存,每次访问缓存都是空。但是普通的缓存存取都正常。由于Winforom是通过WebService访问Business,所以在设计包括代码编写上Web层和WebService层基本上是一样的。但是Web层却不能正常使用文件依赖。而WebService和Web中对Business中相关类的访问我都采用的是临时实例化的方式,即 (new Class()).Methond()
经过不断的测试,我发现如果在Web层对Business层进行访问时,把相关的类写成静态实例作为类的一个全局变量来使用,则缓存的文件依赖正常。
因此,我考虑问题产生的原因可能是这样的:Winform在访问WebServce时,它创建的对Web Service的引用是一直存在的,但是在Web层中,每次都去重新实例化相关类,导致缓存实际上丢失了。当然,这只是我猜测的原因,如果有哪位看官知道,请不吝笔墨。谢!
经过不断的测试,我发现如果在Web层对Business层进行访问时,把相关的类写成静态实例作为类的一个全局变量来使用,则缓存的文件依赖正常。
因此,我考虑问题产生的原因可能是这样的:Winform在访问WebServce时,它创建的对Web Service的引用是一直存在的,但是在Web层中,每次都去重新实例化相关类,导致缓存实际上丢失了。当然,这只是我猜测的原因,如果有哪位看官知道,请不吝笔墨。谢!
浙公网安备 33010602011771号