【问题标题】:Accessing a WCF-service using Java使用 Java 访问 WCF 服务
【发布时间】:2009-09-16 16:38:47
【问题描述】:

我正在使用 WCF 开发一个 Web 服务,我想使用一个用 Java 编写的客户端来访问它。我将使用协议缓冲区对消息进行编码(准确地说是 Marc Gravell 的 protobuf-net)。

这是否可能实现,或者客户端也必须用 .NET 编写吗?我知道使用协议缓冲区序列化的数据是二进制互操作的,但我不知道 WCF 是否在编码的协议消息之上添加任何特定于平台的元数据。

我不在乎 WCF 服务是 RESTful、基于 SOAP 还是其他任何形式的 WCF 支持,我只希望使用 PB 对实际有效负载进行编码。这可能吗?如果可以,我将非常感谢一个简短的例子。

【问题讨论】:

    标签: java .net wcf protocols protocol-buffers


    【解决方案1】:

    如果您对 WCF 服务进行编程以获取字节数组,则可以在其中填充任何您想要的内容,例如 protobuf 消息。可以简单到

      [ServiceContract]
        public interface IMessageService{
            [OperationContract(IsOneWay = true)]
            void SendMessage(byte[] msg);
        }
    
      [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
       public class MessageService: IMessageService{
    
            public void SendMessage(byte[] msg) {
              //decode the protobuf msg and deal with it.
            }
    
        }
    

    将 WCF 端点配置为 SOAP,然后从 Java 应该是直截了当的。 WCF/Soap 是否会为此过度杀伤是另一回事,iirc protobuf 带有自己的简单 RPC 框架。

    【讨论】:

    • 谢谢,这是一个选项。如果我真的可以将它分成几个方法,我会更喜欢,否则我会失去使用 WCF 的意义。
    【解决方案2】:

    我从未使用过 protobuf-net,但互操作才是重点。

    平台无关 - 在不同的编程架构之间可移植

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多