способы связи клиент-сервер - PullRequest
0 голосов
/ 26 марта 2011

Сколько возможных способов отправки / загрузки данных в / из источников данных на стороне сервера и каковы условия использования каждого метода.

Ответы [ 2 ]

2 голосов
/ 27 марта 2011

Для простого общения существует три распространенных способа:

LoadVar (AS2) / URLLoader (AS3)

Это исторически первый метод, используемый Flash для получения данных с помощьюHTTP с сервера.

ex:

//params.txt is a local file that includes: firstName=Tom&lastName=Jones
var lbl:TextField = new TextField();
var urlRequest:URLRequest = new URLRequest("params.txt");
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(urlRequest);

function urlLoader_complete(evt:Event):void {
    lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName;
    addChild(lbl);
}

Это довольно быстро для чтения из Flash, но это не так просто сделать на стороне сервера, так как синтаксис действительно специфичен для Flash.И становится действительно плохо, когда имеешь дело со сложными объектами.Если вам нужно отправить некоторые данные на сервер, вы можете либо поместить их в виде GET-параметров в URL, либо использовать URLVariables , что очень похоже на URLLoader.data.

XML

Легко читается человеком, многие библиотеки существуют на стороне сервера.В AS3 синтаксис E4X облегчает анализ, чем в прежней AS2.В любом случае это полезно для данных, напечатанных вручную, не так просто использовать с динамическими данными.Основной кон остается

Ну, это огромная трата времени;тратится много ресурсов на выяснение, какую схему использовать, реализацию кода на сервере и клиенте и отладку.Все это с целью создания на сервере чего-то, что вы немедленно уничтожаете на стороне клиента.

Эта цитата взята из AMFPHP, который является ... третьим способом!

AMFPHP (сейчас Zend AMF)

Это лучший (среди простых способов) способ связи с сервером через Flash.Связь осуществляется с помощью веб-сервисов.Флэш-сторона реализация существует изначально (посмотрите NetConnection ).На стороне сервера AMF [независимо от того, какой язык вы используете на стороне сервера], позволит вам использовать типизированный объект и отправлять их непосредственно на флэш-память без какого-либо ручного преобразования.Вы также можете отправить некоторые данные из Flash, не преобразовывая их, и вы найдете типизированный объект на сервере.Это совершенно идеально.


Подводя итог: URLLoader хорошо, если у вас есть, скажем, 3 переменные (для очень маленьких проектов). XML идеально подходит, если у вас достаточно большой объем статических данных (файл конфигурации). AMF идеально подходит для работы с сервером, который вводит динамические данные (из базы данных).

0 голосов
/ 27 марта 2011

HTTP: Это то, что получает URLLoader.Вы можете отправлять HTTP-запросы веб-серверу и получать результаты.Запрос может быть как простым извлечением текстового файла, так и сложным, как вызов сценария на стороне сервера (PHP, ASP, Python и т. Д.) И получение всего, что вы можете отправить по HTTP.

XMLSocket: Вы можете использовать класс XMLSocket, чтобы установить прямое TCP / IP-соединение с сервером на выбранном вами порту и обмениваться данными XML напрямую через постоянное соединение.

Сокет: Класс сокета работает так же, как XMLSocket, но для необработанных двоичных данных через TCP / IP.Класс Socket предоставляет ряд вспомогательных функций для интерпретации данных как распространенных типов данных, а также возможность получения необработанных данных в виде ByteArray.Таким способом вы можете отправлять все, что хотите.

То, к чему Flash не имеет поддержки в настоящее время (насколько мне известно), является полной встроенной поддержкой UDP.Обычно это используется для P2P-игр с низкой задержкой, и я слышал, что он находится в разработке и частично поддерживается в бета-версии Flash Player 10, но я не рассматривал это.

...