我实现了WCF服务,连接工作正常.我用BasicHttpBinding.
[ServiceContract]
public interface IScannerInput
{
[OperationContract]
string ScannedPRX(string barcode, string user, int color);
}
public class ProcessPRX : IScannerInput
{
ProcessClass c = new ProcessClass(); // every time a call ScannedPRX() this class is made again
public string ScannedPRX(string barcode, string user, int color)
{
c.PrxScannedInput(barcode, user, color);
return "Bussy processing: " + barcode;
}
}
Run Code Online (Sandbox Code Playgroud)
在正常的课程中,我可以做ProcessClass c一次.但现在每次调用方法时都会反复出现ScannedPRX().我究竟做错了什么?它不仅仅是针对方法而是针对整个班级.
有三种实例化WCF服务对象的方法:
PerCall:为每个客户端请求创建一个新的InstanceContext(以及服务对象).
PerSession:为每个新客户端会话创建一个新的InstanceContext(以及服务对象),并在该会话的生命周期内维护(这需要一个支持会话的绑定).
单个:单个InstanceContext(以及服务对象)处理应用程序生命周期内的所有客户端请求.
PerCall是默认的,这就是你所拥有的.
如果您想要其他行为,请阅读以下文章.
http://msdn.microsoft.com/en-us/library/ms731193.aspx
考虑到对您的服务进行的并发请求,就像您选择单实例化模式一样,您需要自己注意所有方法都是线程安全的.
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |