如何将服务“绑定”到 .NET 远程处理服务器中的特定通道(tcp、http、ipc)

本文关键字:服务器 ipc http tcp 通道 处理 服务 绑定 程处理 NET | 更新日期: 2023-09-27 17:47:22

我有一个复杂的.NET Remoting服务器应用程序,它提供了一些服务。客户端当前可以使用 tcp 和 http 通道连接到服务器。

现在我需要实现一些新的管理服务,但我想限制它们对本地计算机的可用性,即我想创建一个可以使用这些新服务的管理工具,但我不希望敏感数据物理离开服务器,所以我需要限制在同一台服务器计算机上运行管理工具。

我考虑添加新服务,并将 ipc 通道注册到服务器以供管理工具使用。现在问题来了:如何防止远程客户端使用 tcp 或 http 通道连接到这些新的管理服务?我可以在 app.config 中说"注册服务 x,由程序集 A 中的 C 类实现,只能通过 IPC 使用","注册服务 y,由程序集 A 中的 D 类实现,可通过 tcp/http 使用"(或使用远程处理基础结构类)?

"只能通过IPC使用"的部分让我感到困惑。(不,目前无法移植到 WCF。

如何将服务“绑定”到 .NET 远程处理服务器中的特定通道(tcp、http、ipc)

RegisterWellKnownServiceType 没有重载允许您指定要在哪个通道上注册,IPCServerChannel 上也没有任何方法来注册服务,因此这些方法都不起作用。

我能想到的最好的方法是编写一个 ChannelSink 来过滤您的消息或提供安全性。这些可以添加到 TcpChannel 和 HttpChannel 的构造函数中,以过滤掉仅限管理员的调用。

获取调用它的服务的 IPAddress。 如果是 127.0.0.1 以外的任何内容,请拒绝呼叫。