Welcome to the Embarcadero Developer Network (EDN), the community site for developers where you can access, leverage and contribute valuable information and knowledge at any time. The knowledge, systems, and membership that are EDN exist to enhance the effectiveness of your day-to-day job performance, enrich the career of anyone involved in systems development and management, and extend the breadth and depth of our industry.

In this article we are going to have a look at different types of parameters you can pass between DataSnap client and server applications. As a demo project we are going to pass parameters that are plain Delphi classes. In Java Enterprise Edition there is a concept of “Plain Old Java Objects” for passing data between applications. Here we are going to use the same pattern for exchanging data between clients and servers, so it should be OK to call parameter types used in the demo: “Plain Old Delphi Objects” or in short “PODOs”!

Today we are using "Delphi REST Application" wizard to generate a complete project consisting of a web application running in the stand-alone VCL Forms web server application and a pure JavaScript client embedded in the html markup.

In DataSnap architecture you can use different communication protocols, like TCP/IP, HTTP or HTTPS, and you can also use transport filters that make it possible to programmatically access the raw stream of bytes that are transmitted between client and the server over the wire. Delphi XE comes with three DataSnap communication filters preinstalled: two for encryption and one for compression. In this lab we are going to build a simple system consisting of a server and a client application. Both applications will be standalone Delphi VCL Forms applications and they are going to communicate using TCP/IP as the transport protocol and use ZLib compression filters. The article for this demo is available at the http://edn.embarcadero.com/delphi and the source code at Embarcadero Code Central (http://cc.embarcadero.com/item/28232)