TMS Business 1.3.0.0 for XE7

TMS Business 1.3.0.0 for XE7 Contains:
TMS XData 1.1
TMS Sparkle 1.2
TMS RemoteDB 1.2
TMS Aurelius 2.5

TMS Sparkle is a Delphi framework for network, Internet programming. It provides classes for both client and server applications/services, allowing for example performing Http requests to servers, or building Http servers that receive and process client requests. It supports several platforms, including Microsoft Windows, Mac OS X, iOS and Android. TMS Sparkle is also the core framework used by several other TMS products such as TMS RemoteDB and TMS XData.

Delphi framework for multi-tier REST/JSON HTTP/HTTPS application server development and ORM remoting.

TMS RemoteDB allows you to create database applications that perform SQL operations on a remote http server, instead of a database server, using a TDataset descendant. This makes it easy to convert existing Delphi client-server applications into 3-tier applications with minimal changes in source code.

ORM framework for Delphi with full support for data manipulation, complex and advanced queries, inheritance, polymorphism, and more...

Trustworthy
It is the core building block for several other TMS products and technologies, such as TMS RemoteDB and TMS XData. Such products needed to be built from scratch, and rely on a robust framework for which TMS could have 100% control and also responsibility. For such products to work flawlessly, we needed to be sure to build such products in a framework that must be properly tested, and have fast response in performance improvement and bug fixing.

Fresh
It's a new product that doesn't carry any legacy applications behind it, thus classes and interfaces provide a simple, clean method of use.

Modern
It's target to new Delphi versions, and benefits from modern language features such as generics and anonymous methods.

Cross-platform
Supports multiple platforms such as Microsoft Windows, Mac OS X, iOS and Android.

Platform Native
In most of it, Sparkle is a thin, abstract layer over native API's from the underlying platform. Existing platforms already provide a lot in terms of native networking and internet programming. TMS Sparkle tries not to reinvent the wheel and use such technologies. This makes it easy for your applications to benefit from new platform versions and upgrades. Any bug fixes and improvements in the platform frameworks will be usually available in Sparkle. It also provides smoother integration with the platform, such as system-wide settings.

Client features:

Http client available in Windows, Mac OS X, iOS and Android
Support for Http Secure (Https)
Transparent handling of chunked and gzip-encoded responses

Server features:

Http server based on http.sys stack (Windows only - minimum Vista and Server 2008)
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
GUI tool for SSL certificate management



Feature overview

Server based on REST/JSON architecture style
Easily accessible from different client platforms like .NET, Java, javascript, 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


Overall features

Cross-platform
Scalable
Blazing fast
Optimized memory usage
Keeps existing component behavior (like TFieldDefs, for example)
Requires minimum code change in client application
Supports FireDac, dbExpress, UniDac, among others

The RemoteDB Server is a Delphi application/service that listen to http requests. When clients perform requests, the RemoteDB Server will forward the requests to the actual database server being used, using the specified database-access component. The SQL is performed and the results are returned back to the client. You can choose the components that will perform the SQL statements from a wide-range of options such as FireDac, dbExpress, dbGo (ADO), among others, using component adapters. The SQL database can be any database server supported by the components used, and must be thread-safe (most are).

From the Delphi client application, you can use as many TXDataset components as you need to perform the regular SQL operations. All TXDataset components are linked to a TRemoteDBDatabase component via a Database property. The RemoteDBDatabase component is the one in charge of forwarding the SQL requests to the RemoteDB Server and retrieving back the values. All operations on the client are transparent and just like any TDataset usage: you specify the SQL statement, Open the dataset (or ExecSQL), define the list TField components, Params, connect TDatasource components to it, etc..

Wide Range of Database Component Access at Server Side

When building the server, you can use a wide range of database-access component to connect to your database. This has many advantages:

You can use your existing know-how on a specific component set;
You can fine-tune your server side with specific options that your components provide to you;
Your client application will behave exactly like the component you use on server side. This allows you much bigger compatibility and easy transition to TMS RemoteDB. If your existing client application uses FireDAC, for example, you can use it at server side, making your client-side TXDataset behaves almost exactly as a TFDQuery. It's the same for all other components supported by TMS RemoteDB.

Client features:

Http client available in Windows, Mac OS X, iOS and Android
Support for Http Secure (Https)
Transparent handling of chunked and gzip-encoded responses

Server features:

Http server based on http.sys stack (Windows only - minimum Vista and Server 2008)
Support for Http Secure (Https)
TGenericDatabase component for direct database server connections, in a traditional client-server architecture
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

TMS Aurelius Integration
If your application is already using our ORM framework TMS Aurelius for database access, then making it a 3-tier application with TMS RemoteDB will require just a few lines of code. TMS Aurelius provides a new adapter for RemoteDB that you can use as the connection to your database (IDBConnection interface) pretty much like the other options like FireDac, dbExpress, UniDac, etc ... You don't need to change a single line in your Aurelius application - just change the connection to use TMS RemoteDB and it becomes 3-tier.
Supported Data-Access components

dbExpress
dbGo (ADO)
ElevateDB
FireDac
NexusDB
SQL-Direct
UniDac
Advantage Database server

    Query1.Sql.Text := 'SELECT I.ID AS INVOICE_ID, I.INVOICE_TYPE, I.INVOICE_NO, I.ISSUE_DATE, I.PRINT_DATE, ' +  
      'C.ID AS CUSTOMER_ID, C.CUSTOMER_NAME, C.SEX, C.BIRTHDAY, N.ID AS COUNTRY_ID, N.COUNTRY_NAME' +  
      'FROM INVOICE AS I INNER JOIN CUSTOMER AS C ON (C.ID = I.CUSTOMER_ID) ' +  
      'LEFT JOIN COUNTRY AS N ON (N.ID = C.COUNTRY_ID)' +  
      'WHERE I.ID = :INVOICE_ID;'  
    Query1.ParamByName('INVOICE_ID').AsInteger := 1;  
    Query1.Open;  
    ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',  
      [Query1.FieldByName('INVOICE_NO').AsInteger,  
      Query1.FieldByName('CUSTOMER_NAME').AsString,  
      Query1.FieldByName('COUNTRY_NAME').AsString]));   



Feature details

Several database servers supported (MS SQL Server, Firebird, MySQL, DB2, Interbase, Oracle,...)
Several database-access components supported (dbExpress, AnyDac, SQLDirect, ADO, IBX,...)
Multi-platform solution - Win32, Win64, Mac OS X, VCL, FireMonkey
Saving, updating and loading of entity objects in an object-oriented way
TAureliusDataSet for easy and fast interfacing to DB-aware controls in VCL
Multi-model design to allow different mapping models in a single application
Queries - Powerful query API using criteria expressions, projections, grouping, conditions and even logical operators in a LINQ-like approach
Inheritance mapping and polymorphism - map a full class hierarchy into the database
Cross-database development - use a single Delphi code to target multiple databases in a transparent way
Choose from classes-to-database approach (creating the database structure from classes) or database-to-classes approach (creating classes source code from database, using TMS Data Modeler )
Mapping directly in classes using custom attributes
Association mapping
Lifetime management of objects using object manager
Cached and identity-mapped objects
Automatic database structure generation
Nullable types support
Lazy loading for associations and blob fields
Allows logging of SQL commands
Allows mapping enumerated types to database values
Open architecture - easy extendable to use different component sets or database servers