不同主机实例和终结点的单独 WCF 服务实例

本文关键字:实例 单独 WCF 服务 结点 主机 | 更新日期: 2023-09-27 18:33:06

我有两个应用程序使用相同的 wcf 服务实例。 这两个应用程序将始终成对启动,因此我可以拥有这两个应用程序的第二个、第三个或第四个实例。 这是否意味着我需要让一个 wcf 服务由 Windows 服务、IIS 或控制台应用托管,使用所有四个实例对的公共终结点地址? 或者,如果我动态地对端点地址进行硬编码,以便每个单独的对在两个应用程序之一中都有自己的和自主机,这是否意味着每个对都可以访问自己的服务?

我可能会对此进行台式测试,但我认为有经验的人可以节省相当多的编码时间,只是试图弄清楚它。

更新(为清楚起见(:

这个问题的原因是由于我正在处理的特殊情况。 场景是这两个应用程序涉及我正在开发的一个客户端 exe 和一个我无法控制的第三方 exe。 我可以开发一个第三方exe可以加载的dll。 在我的第三方应用 dll 和客户端 exe 之间,WCF 服务旨在桥接进程空间,以允许两者传达事务信息。 这将允许客户端 exe 控制第三方 exe 及其管理的文件。

不同主机实例和终结点的单独 WCF 服务实例

这部分是一个答案,部分是一个很长的评论。 :)

考虑 WCF 服务的一种方法是,它在两个单独的应用程序之间来回传递消息。在非常一般的层面上,尽管有很多充分的理由进行有状态服务,但人们普遍认为最好是无状态的。这意味着每次调用它时,您都会传递执行其操作所需的所有信息,并且服务不需要记住之前执行的操作。

您担心单独的实例这一事实向我表明您的服务具有状态。我不认为多个端点是适合您的情况的方法。

我建议当应用程序"配对"启动时,它可以做的第一件事就是从服务请求唯一 ID。从那时起,发往服务的所有消息都将包含此 ID,服务将相应地处理它们。如果服务应用程序正在维护状态,它将使用此 ID 作为键来标识要访问哪些信息来处理调用。

此时,您最终会在一台服务器上使用一个服务应用程序和多个客户端应用程序,这是大多数 WCF 系统的设计方式。

更新了,我认为您应该谷歌"WCF:每个调用和每个会话的实例管理"客户端应该能够从客户端打开连接并保持打开状态。WCF 将自动在服务器上为您创建一个新实例。这意味着您不需要"应用程序对 ID",但需要保持会话打开。

相关文章: