【发布时间】:2016-10-17 12:10:21
【问题描述】:
我已经构建了 WCF 应用程序,现在我想将此服务作为多线程运行。 我正在并行运行三个线程,每个线程都有 WCF 服务对象。在每个线程开始时,我正在执行登录功能以检查用户是否有效&一旦有效,则其余方法将使用服务对象执行。 我的问题是,我如何创建单例模式来创建 WCF 服务对象,它将登录是返回我服务对象和相同的对象,然后与多个线程共享。 我查看了一些文章,但他们有带锁语句的单例。但是锁会阻止其他线程使用实例。 我需要与所有线程共享服务实例,当所有线程释放服务对象时,我必须调用注销方法。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
使用 TCP 监听器作为服务。每个客户端将使用不同的端口号。有两种实现方式。服务器可以列出一个端口号,然后在客户端连接时将客户端移动到另一个端口。或者让服务器打开多个端口号,然后让客户端尝试不同的端口号,直到建立连接。请参阅以下网页上的示例。示例使用套接字类,但您可以使用继承套接字的类,例如 TcpListener 和 TcpClient :msdn.microsoft.com/en-us/library/w89fhyex(v=vs.110).aspx
-
单线程和多线程几乎是互斥的术语。为什么要共享“服务对象”?为什么不为每个线程创建对象?
-
@jdweng:TCP监听器和WCF有什么关系? WCF 可以使用任何传输方式吗?
-
感谢您的回复,我无法为每个线程创建新对象,因为登录对用户有第三方 api 验证,这将返回活动会话对象。所以我只想创建一个由所有线程共享的对象。
标签: c# multithreading wcf singleton