gpt4 book ai didi

c# - wcf 接口(interface) : why doesn't it 'just' go to the methode but to the whole class

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:30 25 4
gpt4 key购买 nike

我已经实现了 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;
}
}

在一个普通的类中,我只需制作一次ProcessClass c。但现在每次调用方法 ScannedPRX() 时都会一次又一次地生成它。我究竟做错了什么?它不仅适用于方法,而且适用于整个类(class)。

最佳答案

实例化WCF服务对象的三种方式:

  • PerCall:为每个客户端请求创建一个新的 InstanceContext(以及服务对象)。

  • PerSession:为每个新的客户端 session 创建一个新的 InstanceContext(以及服务对象)并在该 session 的生命周期内维护(这需要支持 session 的绑定(bind))。

  • 单一:单一 InstanceContext(因此也是服务对象)在应用程序的生命周期内处理所有客户端请求。

PerCall 是默认的,这就是您所拥有的。

如果您想要其他行为,请阅读下面的文章。

http://msdn.microsoft.com/en-us/library/ms731193.aspx

考虑到对您的服务发出的并发请求,就像您选择单实例化模式一样,您需要自己注意所有方法都是线程安全的。

关于c# - wcf 接口(interface) : why doesn't it 'just' go to the methode but to the whole class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com