我在服务契约中定义了IReferenceContract接口,有 double DisplayBalance();void GetMoney(double Money); void SetMoney(double Money);
在服务中,实现了这个接口,并且有个double类型的非静态变量:balance,初始值为0.
在客户端中先进行存钱然后再显示余额,可是余额还是为0。
如果我把balance变量改成静态变量的话就可以更新。
如果我用最简单的模式而不用分布式,balance变量不需要为静态的余额还是可以更新的。
想请教一个这个是为什么?跟分布式的原理有关吗?
------解决方案--------------------
这跟wcf的session配置有关系的,有三种
PerCall:WCF为每个Serivce调用创建 一个Service Instance,调用完成后回收该Instance。
PerSession:在Session期间的所有Service调用绑定到某一个Service Instance,Session被终止后,Service Instance被回收。
Singleton:为具体的Service type进行Host的时候,与之对应的Service Instance就被创建出来,此后所有的Service调用都被关联到该Instance。
默认为PerCall,所以会出现你描述的现象
------解决方案--------------------
http://www.codeproject.com/Articles/86007/3-ways-to-do-WCF-instance-management-Per-call-Per