2009-09-16 3 views
0

Я разрабатываю веб-сервис с использованием WCF, к которому я хочу получить доступ, используя клиент, написанный на Java. Я буду кодировать сообщения с помощью протокольных буферов (точнее, с protobuf-net от Marc Gravell).Доступ к WCF-сервису с использованием Java

Возможно ли это для достижения или должен быть написан клиент на .NET? Я знаю, что данные, сериализованные с помощью протокольных буферов, являются бинарными, но я не знаю, добавляет ли WCF какие-либо метаданные конкретной платформы поверх кодированных протокольных сообщений.

Мне все равно, если WCF-сервис RESTful, SOAP или любые другие формы WCF-поддержки, я просто хочу, чтобы фактическая полезная нагрузка была закодирована с использованием PB. Возможно ли это, и если это так, я очень признателен за краткий пример.

ответ

1

Если запрограммировать службы WCF принять массив байтов, вы можете запихнуть все, что вы хотите там, как у Protobuf message.Could быть как простой в

[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 должны быть прямым предисловием. Wether WCF/Soap будет излишним, потому что это другое дело, iirc protobuf имеет собственную инфраструктуру для простого RPC.

+0

Спасибо, это вариант. Я бы предпочел, если бы я мог разделить его на несколько методов, иначе я бы потерял смысл использования WCF. – Yrlec

-1

Я никогда не использовал protobuf-net, но interop был целым.

зависит от платформы - портативный между различными архитектурами программирования