我收到一个 WCF 服务进行通信,因此,我需要在 java 或 python 中创建一个客户端来获取该服务提供的信息,该服务是一个 WCF TCP 服务。可能吗?
2 回答
我假设当您说该服务“是 WCF TCP 服务”时,您的意思是它使用了 netTcpBinding (方案net.tcp
)。
除了 SOAP 等公共标准之外,此绑定还依赖于一些专有的 Microsoft 协议。它们提供消息帧,支持各种编码方案,以及在消息流上分层安全协议。这类似于 netNamedPipe 绑定,这些协议的更多细节在我的博客上进行了解释。
您的问题的答案是“是的,这是可能的”,但坏消息是,为了这样做,您必须在您选择的客户端平台中实现所有专有的 Microsoft 协议。您几乎肯定会希望避免这样做,因为它需要做很多工作(尽管可能有人已经为 Java 或 Python 编写了一个开源库)。
如果您找不到库,并且能够在您的客户端平台上运行任何风格的 .NET(或者如果在您的客户端和服务之间插入单独的 Windows 机器作为代理是可行的)我会考虑在 .NET 中创建一个适配器,以代理您对服务的访问。这样的东西可以为服务提供一个纯粹的基于标准的接口(例如 WS-*),在内部将调用转发给真正的服务,以使其能够从其他平台使用。
编辑:我以前不知道另一个答案提到并链接到的 Windows HPC 的 Java 互操作库。这似乎很有希望:开源和微软支持,为此目的可能更好。
net.tcp 绑定是专有的。这是一个在其他上下文中提到它 的网站。
文章指向一个发布在 Github互操作库下载链接上的 Java 互操作库
希望这会有所帮助...我也很想知道答案,因为我恰好参与了业务的 Web 服务方面。