Ресценый бинарные данные
-
27-10-2019 - |
Вопрос
Я строю услугу отдыха, принимающую Foo
объекты, содержащие смесь строки а также двоичные данные. Это XML, который я получил до сих пор.
<foo>
<text>regular text</text>
<text mime="application/octet-stream">base64 encododed binary data</text>
</foo>
Это хорошая идея или есть недостатки, внедряющие большие количества (МБ) двоичных данных?
В качестве небольшого дизайна, я пытаюсь устроиться между использованием <text mime=".."/>
или выделенное имя <binary>...</binary>
Для бинарных данных. Что было бы более последовательным?
Решение
Я бы порекомендовал включить в ваш запрос/ответ XML только в том месте, где вы будете хранить двоичные данные, которые вы хотите передать, а затем получить эти данные, выполняющие другой запрос. Минусы этого решения состоят в том, чтобы выполнить другой запрос, но профессионалы на вашей стороне:
- Нет необходимости сериализовать/десериализовать ваши 64 строки
- более легкое тестирование вашего отдыха ws
- Менее раздутый XML
Другие советы
HTTP предназначен для передачи полезных нагрузок произвольной длины. Отправка MBS данных будет в порядке. Передавать данные с помощью кодирования BASE64 не рекомендуется, потому что это будет увеличивать Количество байтов, которые вы должны отправить через проволоку, снижая пропускную способность.
Я бы посоветовал вместо этого рассмотреть Multipart Mime Type а не XML.
Какой у вас контейнер веб -сервиса? Формат XML будет генерироваться вашим бинарным сериализатором. Axis2 может быть полезен для вас. Он основан на аксиоме, предлагая прямую бинарную поддержку