Delphi
TMS XData v5.20.0.0 (April 15, 2025) Full Source
Delphi framework for multi-tier REST/JSON HTTP/HTTPS application server development and ORM remoting.
Feature overview
Server based on REST/JSON architecture style
Easily accessible...
Description
Delphi framework for multi-tier REST/JSON HTTP/HTTPS application server development and ORM remoting.
Feature overview
Server based on REST/JSON architecture style
Easily accessible from different client platforms like .NET, Java, jаvascript, since it's REST/JSON based
Uses standard POST, GET, PUT and DELETE HTTP methods for data request and data modification operations
Partial update of objects (PATCH)
Full-featured query mechanism
Multi-Model design makes it easy to create multiple servers with different mapping, types and service operations
Service Operations allow adding custom business logic to your server using interfaces and methods
Well-defined JSON representation of resources including entities, associations, streams and proxies
Support for streams (blobs)
Several databases supported in back end: SQL Server, MySQL, PostgreSQL, Oracle, Firebird, etc.. (through TMS Aurelius)
Design based on standard OData protocol
Based on TMS Sparkle HTTP/HTPS server architecture, which provides:
HTTP(s) server based on Windows http.sys stack
Support for HTTP Secure (HTTPS)
Kernel-mode caching and kernel-mode request queuing (less overhead in context switching)
Multiple applications/process can share (respond) the same port (at different addresses)
Secure Sockets Layer (SSL) support in kernel-mode
Example of an Aurelius class mapped:
[Entity, Automapping]
TCustomer = class
strict private
FId: integer;
FName: string;
FTitle: string;
FBirthday: TDateTime;
FCountry: TCountry;
public
property Id: Integer read FId write FId;
property Name: string read FName write FName;
property Title: string read FTitle write FTitle;
property Birthday: TDateTime read FDateTime write FDateTime;
property Country: TCountry read FCountry write FCountry;
end;
XData enables access via a simple HTTP GET:
GET /tms/xdata/Customer(3) HTTP/1.1
Host: server:2001
Example JSON representation of the customer object returned in the body of HTTP response:
{
"$id": 1,
"@xdata.type": "XData.Default.Customer",
"Id": 3,
"Name": "Maria Anders",
"Title": "Sales Representative",
"Birthday": "1980-05-20",
"Country": null
}
Use a HTTP POST to create new objects, HTTP DELETE to remove objects, HTTP PUT or HTTP PATCH to update objects.
Example: Change the value of Title property of the customer resource:
PATCH /tms/xdata/Customer(1) HTTP/1.1
Host: server:2001
{
"Title": "Marketing Manager"
}
Easily perform queries on existing objects.
Example of retrieving customers with country name equal to "USA", ordered by customer's name:
GET /tms/xdata/Customer?$filter=Country/Name eq 'USA'&$orderby=Name&$top=10 HTTP/1.1
Host: server:2001
v5.20
New : Support for the 64-bit IDE.
New : Methods TXDataWebDataset.LoadAsync and TXDataWebDataset.ApplyUpdatesAsync makes it easier to code such operations (loading and applying updates) using the async/await pattern. Request #23441.
Improved : When loading invalid XML files for building Swagger documentation, the error message would not indicate the offending XML file, for Delphi 11 and earlier. This was improved to add the file name to the exception message. From Delphi 12 and on this is not needed as the file name is already present in the exception message.
Improved : IXDataQueryBuilder now provides the Build method to create a TXDataQuery object in addition to a query string. Documentation has been fixed to explain how to invoke a service operation receiving a TXDataQuery object. Ticket #24904.
Fixed : TXDataWebDataset.GetPendingUpdates method was not being recognized by the IDE code insight. Ticket #15173
Fixed : TXDataWebDataset now displays context menu (right click) in TMS Web Core new web designer, allowing to open fields editor.
Fixed : TXDataWebClient.Connection component not showing list of available connections in object inspector. Ticket #24721
Fixed : Application generated by TMS XData Web Application Wizard was not showing message in login form. Ticket #24887.