Through a series of step-by-step instructional tutorials, Paweł Głowacki, veteran Delphi trainer, guides you to a deeper understanding of the powerful technologies in Delphi. You will gain the solid foundation of knowledge upon which to unleash your creative genius.

The beauty of rapid application development is that you can build complex systems by assembling components. This approach to building software applications shines when applied to Delphi DataSnap programming. In a matter of minutes, you can create a multithreaded server application, capable of servicing many concurrent clients and listening on multiple communication ports simultaneously.

Series 1: DataSnap

In the first series of tutorials Paweł demonstrates the Delphi DataSnap technology for building distributed, scalable, multi-tier applications accessible from a wide range of client technologies from pure Delphi Win32 VCL Forms applications to pure JavaScript clients running on mobile devices. DataSnap technology is only available in Enterprise and Architect versions of Delphi, C++Builder and RAD Studio.

These step-by-step tutorials are intentionally very simple, so even inexperienced Delphi programmers should be able to build projects described here and enjoy programming.

Our series continues with another DataSnap application, this time using an actual database (InterBase) The setup is very close to the original Delphi MIDAS approach with dataset providers on the server and client communicating with providers via "remote server" connection components.

In this first part, we have another multi-tier application. The server method instance has overridden constructor where its private FID is initialized with a generated GUID and "GetId" server method is implemented to be able to uniquely identify a server methods instance on the client. This way, every connected client has its own server methods instance inside the server application.

In this second part, both server and client are extended. Ultimately at the end of the demo, we verify that server method instances are global to all clients, session instances are unique per client, and invocation instances are created and destroyed on the fly.

In this episode, Pawel creates a DataSnap server listening on multiple TCP/IP and HTTP ports. Instead of building a client, however, Pawel shows you how he tests the server functionality using Data Explorer that is part of the RAD Studio IDE.

In DataSnap architecture, you can use different communication protocols like TCP/IP, HTTP or HTTPS, and you can also use transport filters to programmatically access the raw stream of bytes that are transmitted between client and the server over the wire.

In this lab, Pawel builds a simple system consisting of a server and a client application. They will be using TCP/IP as the transport protocol and ZLib as compression filter.

In this epidsode, 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.

Pawel has been working hard to produce this episode on how we can use Delphi XE to build a web application for displaying database data coming from a DataSnap server using jQuery Mobile JavaScript library. The episode got so big that it has to be divided. Here's the first part of the lesson, and stay tuned for the second part.

This is a continuation from the last episode. Pawel demonstrates practical steps for building jQuery Mobile web frontend application for displaying InterBase XE “Employees” database data from a standalone Delphi DataSnap server. The system described is based on the "Delphi WebBroker jQuery Mobile Boilerplate" project described in the previous Delphi Labs tutorial.

Pawel has uploaded the resulting application to Amazon EC2 cloud. You can find it at http://79.125.25.31:8080/. Please understand, however, that this link may not be there forever.

In this episode, Pawel implements and installs a Delphi DataSnap server, which is a Windows Service application. This scenario is very useful when your services are deployed in the cloud and new machine images are started and stopped automatically by a load balancer.

Today, Pawel shows us the use of TObject-descendant as parameter types in DataSnap server methods, a new feature in Delphi XE. Pawel will concentrate on this parameter type in this episode, if you are interested in seeing what other types are possible, please check out Jim Tierney's blog.

In Java Enterprise Edition (JEE) there is a concept of “Plain Old Java Object” for passing data between applications. Here we are going to use the same pattern for exchanging data between clients and servers written in Delphi, so it should be OK to call these parameter types: “Plain Old Delphi Objects” or “PODOs” in short.

In this bonus episode, Pawel has created a simple example of using callbacks. Both client and server are Delphi VCL Forms applications. To keep it simple, his is using TCP/IP and DBX. This tutorial covers broadcasting to a channel and notifying a specific callback.

About Our Expert Speaker

Paweł Głowacki Embarcadero Technologies.

Paweł Głowacki is Senior Software Consultant and EMEA Technical Lead for Delphi, RAD Studio and All-Access for Embarcadero Technologies. Previously, Paweł spent over 7 years working as a senior consultant and trainer within Borland Education Services and CodeGear. As well as working with Embarcadero customers across the region, he also represents Embarcadero internationally as a conference and seminar speaker