Публикация графических и текстовых данных в сервисе wcf - PullRequest
0 голосов
/ 05 мая 2010

У меня есть требование написать веб-сервис, который позволяет мне публиковать изображение на сервере вместе с дополнительной информацией об этом изображении.

Я совершенно новичок в разработке веб-сервисов (обычно на стороне клиента), поэтому я немного озадачен тем, что мне нужно изучить и попробовать.

Как вы отправляете двоичные данные и простой текст в сервис? Что RequestFormat мне следует использовать?
Похоже, мои варианты XML или JSON. Могу ли я использовать любой из них?

Немного странный вопрос, но мне просто нужно какое-то направление, а не решение, так как я не могу найти много онлайн.

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Прочитав это руководство по созданию сервисов для восстановления Я подумал, что неправильно понял проблему. Изображение и текст на самом деле являются двумя отдельными ресурсами, и поэтому, вероятно, должны обрабатываться отдельно. Теперь у меня есть служба, которая загружает изображение и возвращает URI для этого изображения, и отдельная служба для публикации текстовых данных, относящихся к этому изображению, вместе с URI для этого изображения.

1 голос
/ 08 мая 2010

Хотя у меня нет опыта работы с WCF, я могу сказать вам, что безболезненный способ обработки POSTing / PUTting двоичных данных в REST API (особенно с сочетанием текста и двоичных файлов) заключается в кодировании двоичных данных как base64 и относитесь к ним так же, как к любым другим текстовым данным в вашем API.

Да, есть небольшие издержки с base64 с точки зрения размера и дополнительного процесса кодирования / декодирования, однако base64 обычно только 1,37x больше двоичного.

Я считаю, что во многих случаях издержки стоит избегать проблем, которые могут быть связаны с двоичными данными в API, особенно когда вам нужно POST / PUT сочетание двоичных и текстовых данных. Если вы хотите поместить POST-изображение и дополнительные мета-текстовые данные, вы можете легко сделать это с помощью строки json («image» будет вашим изображением в кодировке base64) ...

{
    "image":"aGVsbG8...gd29ybGQ=", 
    "user" : 1234, 
    "sub_title": "A picture from my trip to Pittsburgh"
}

Это ни в коем случае не лучшее решение для всех случаев, и, как я уже сказал, я не эксперт WCF, но в общем случае это, безусловно, что-то, что нужно сделать, чтобы облегчить вашу жизнь.

0 голосов
/ 05 мая 2010

Если вы используете WebServiceHost в WCF 3.5, вам нужно прочитать this . Если вам нужно использовать WCF для работы с HTTP, попробуйте перейти на .Net 4. Я считаю, что они значительно упростили многие вещи.

Если вы застряли с 3.5, добро пожаловать в мир боли. Найдите все, что вы можете написать Аарон Сконнард на эту тему. И, как я предложил в комментариях к другому вопросу, узнайте, как использовать SvcTrace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...