0

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

我可能可以在台式机上对此进行测试,但我认为有经验的人可以为我节省大量的编码时间,只是想弄清楚它。

更新(为清楚起见):

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

4

1 回答 1

1

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

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

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

我建议当应用程序“对”启动时,它可以做的第一件事是从服务请求一个唯一的 ID。从那时起,发送到服务的所有消息都将包含此 ID,并且服务将相应地处理它们。如果服务应用程序正在维护状态,它将使用此 ID 作为密钥来识别要访问哪些信息来处理呼叫。

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

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

于 2013-09-27T18:08:28.920 回答