Developer Resources:

Customer Quotes:

Overview

The topic of Remoting/AMF vs. Web Services frequently comes up as developers consider pros and cons of these integration techniques. Indeed, conceptually Web Services are very similar to Remoting: the client-side APIs are almost identical, both center around the concept of remote procedure calls (RPCs), Flex/Flash Builder provides built-in plugins for both. Yet the differences become stunningly clear once you understand the internal details of the approaches.

What is AMF/Remoting?

If you are not familiar with AMF (odds are you have heard of or used Web Services), it is a binary protocol designed by Macromedia/Adobe enabling Flash/Flex clients to communicate with backend services. When a Flex/Flash client performs a remoting invocation, the data about the call is encoded in the AMF format and carried in HTTP request to the server. The message contains information about what method should be invoked, values for the arguments, etc. Since AMF is binary and includes a lot of optimizations to keep the size of the AMF messages small, it becomes very compact in comparison to SOAP/XML used by Web Services. 

WebORB and AMF

When a Flex/Flash client sends a Remoting/AMF invocation to the web server, it is an HTTP request with binary payload. Web servers do not have built-in knowledge of how to handle and parse AMF messages. As a result, there must be something plugged into web server to enable processing of the AMF messages. Conceptually that piece of software is commonly referred as 'Remoting Gateway'. A gateway is responsible for parsing and AMF messages, understanding what method should be invoked, handling method invocation and serializing return value back to the client. WebORB is an example of a remoting gateway. However, the product has evolved to provide significantly more functionality to enable other forms of client-server integration.

AMF/Remoting vs. Web Services Benchmark

Below is a live Flex application which utilizes three available client/server integration approaches: Web Service, HTTP Service and AMF/Remoting. To keep things equal, the server-side uses the same C# class exposed as a .NET Web Service, HTTP Service, and Remoting service exposed via WebORB, all hosted in IIS. The source code for the benchmark is available for download:

Download client code
Download server code