Я новичок в AMF, и я узнал, что AMF якобы очень быстрый.
Мне было интересно, следует ли мне использовать его для всех моих веб-сервисов. Это все еще быстро без флэш-VM?
Я новичок в AMF, и я узнал, что AMF якобы очень быстрый.
Мне было интересно, следует ли мне использовать его для всех моих веб-сервисов. Это все еще быстро без флэш-VM?
Этот вопрос может иметь два ответа. Один ответ касается AMF как протокола, другой ответ касается реализации.
Как протокол, AMF выдает небольшие выходные данные, в которых удалена большая часть избыточности. По сравнению с аналогичной реализацией SOAP, AMF будет использовать меньше байтов сетевого трафика. В некоторых приложениях это можно рассматривать как «быстрее».
AMF также может быть быстрым, если реализация, которая кодирует AMF, является быстрой. Виртуальная машина Actionscript может кодировать его довольно быстро. Однако вы заявляете, что не будете использовать виртуальную машину Flash. В этом случае вы можете подумать об использовании Python. Для Python есть два варианта с открытым исходным кодом: PyAmf и AmFast. Сообщается, что AmFast в восемнадцать (18) раз быстрее, чем PyAmf для целей кодирования.
Итак, окончательный ответ таков: определите, какой «быстрый» вы хотите, сравните возможности кодировщиков, из которых вы можете выбрать.
AMF был специально разработан для ActionScript, но это всего лишь двоичный формат, основанный на SOAP. Вы можете использовать его где угодно, но и клиент, и сервер должны понимать AMF.
Существует множество библиотек для множества различных серверных языков для понимания AMF, но я я не слишком уверен, где еще вы хотели бы использовать AMF на стороне клиента, кроме Flash.
AMF быстр в том смысле, что по сравнению с другими форматами, которые вы могли бы использовать, он:
Хорошее сравнение производительности AMF с другими протоколами/форматами, используемыми с Flex, можно найти по адресу: http://www.jamesward.com/census2/, но я не видел сравнения производительности любого другого клиента AMF (даже собственный декодер чистого JavaScript AMF Джеймса Уорда).