Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Я никогда не пользовался protobuf-net, но все дело в взаимодействии.

  

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top