【发布时间】:2016-06-22 06:38:58
【问题描述】:
使用 WCF、.NET 4.5、Visual Studio 2015,并希望使用按会话实例化,而不是单例。提供的服务是全双工的,通过 tcp.net。
假设我有两台机器,A 和 B...
B 作为客户端,连接到同一台机器 B 上作为 WCF 服务提供的“服务”,并开始与其对话,将其称为对象“X”。它还连接到同一服务的另一个实例,称之为对象“Y”
A 作为客户端,想要连接并使用 B 正在与之交谈的完全相同的对象,即对象“X”和“Y”,但现在它是远程远程的,而不是本地远程的。
“X”和“Y”其实是一个视频服务器,都有“状态”。
我可以这样做吗?当我是客户时,如何指定要连接到哪个服务实例?
显然,在机器“B”上,我可以通过让服务只是没有“状态”的前端来解决这个问题,这些服务与在“B”上运行的一些进程通信,但这需要我编写一堆进程间代码,我讨厌。
机器 B 预计将运行 100 个这样的“视频服务器”实例,每个实例都与本地主(单例)服务通信,并与最终用户机器通信。
我意识到这个问题有点笼统,但它也解决了我在互联网上找不到的问题。
我只是想到了一种可能的,但很杂乱的解决方案:由于主服务是单例的,当最终用户创建服务实例“X”时,它可以通过代理连接到单例主服务给单身人士。然后,单例可以通过回调通道回与实例“X”交谈。是的,那会奏效!混乱,但可能。
我仍然想知道最终用户 A 和最终用户 B 是否可以通过一些时髦的通道操作或其他方式与机器 C 上的同一个(非单例)服务实例通信。据我了解 WCF 的规则,这根本是不可能的。如果您自己托管服务而不是 IIS,也许也许,但即便如此,我认为这不可能?
【问题讨论】: