All Blog Posts  |  Next Post  |  Previous Post

Native SQL Server access and more! TMS Aurelius 4.0 has been released!


Wednesday, September 19, 2018

Photo by Makarios Tang on Unsplash

TMS Aurelius 4.0 has just been released! It's a major update with exciting new features:

TAureliusConnection component
First, a new TAureliusConnection component is now available. Even though creating a database connection in TMS Aurelius has always been as easy as writing one line of code, with TAureliusConnection you can now do it at design-time. Just drop a TAureliusConnection component on the form and double-click it to configure (or set properties in object inspector, of course):

As expected, you can adapt any supported database-access component (like TFDConnection from FireDAC), set SQL dialect, and you are done.

This makes it even easier to configure a connection, test it in advance at design-time, and provide further design-time support for both Aurelius and XData. Expect lots of new components for both frameworks with great design-time support!

But TAureliusConnection component already brings great stuff for this 4.0 version:

Generate entities from existing database, from the IDE
It is now possible to generate TMS Aurelius entity classes from an existing database directly from the IDE. Creating classes from database has always been possible by using the great TMS Data Modeler tool. It is a database modeling tool which can import existing database structure to the model, and then generate Delphi source code with TMS Aurelius classes. It's very powerful, with a scripting system to customize the source code output, ability to separate classes by units, among other things. But now you don't need to use a separate tool, and not even leave Delphi IDE, you can quickly generate entity classes using TAureliusConnection component. Simply configure the database connection on it, then right-click the component and choose "Generate entities from database..."

This will connect to the database, import the existing database structure, and open the export dialog with several options to customize the output source code. You can then select tables to export, choose naming policy for classes and properties, among other options. You can even preview the final source code in the "Preview" tab, before confirming.

When you click "Ok" button, a new unit with the declared entities will be created in the same project of TAureliusConnection component. You can start using your Aurelius classes in your project without even saving it!

But, for me personally, the greatest feature of this release is direct Microsoft SQL Server access.

Direct Microsoft SQL Server database access
TMS Aurelius (and TAureliusConnection) now has the concept of "adapter mode" and "driver mode". The former is the one you are used to: use an existing db component library and Aurelius will adapt and abstract it. But now you can also use "driver mode" which is a direct connection to the database without needing such components! Yes: to access Microsoft SQL Server with Aurelius, you don't need FireDAC, dbExpress or ADO anymore!

Here is how the TAureliusConnection configuration dialog looks for driver mode:

If you prefer not to use the TAureliusConnection and just create the IDBConnection interface yourself like you are used to, just use the new TMSSQLConnection class, which implements IDBConnection, and pass the parameters to it:
Conn := TMSSQLConnection.Create('Server=.SQLEXPRESS;Database=Northwnd;TrustedConnection=True');
That's the greatest feature of this release in my opinion. And stay tuned to support for more databases in upcoming releases!

Finally, the short video below will show you the new features in action. You can try TMS Aurelius and all the other TMS Business products right now! Download the trial version, watch tutorial videos and many more from the TMS Business main page.

Wagner Landgraf


This blog post has received 8 comments.

1. Thursday, September 20, 2018 at 7:31:56 PM

Please add MariaDb in driver mode and then I can use Aurelius every day! :-)

Monterisi Stefano

2. Thursday, September 20, 2018 at 7:35:26 PM

Stefano, What prevents you from using Aurelius every day now? :-)

Wagner R. Landgraf

3. Monday, September 24, 2018 at 12:27:38 PM

Hi Wagner,
performance... :-)
I hope that "driver mode" is a connection with Aurelius entities that remove the dataset bottleneck performances not necessary at server level when i request a json result... (Mormot docet :-))
If I can obtain better performances possible, I use dataset only at client level for UI, with a flash server response for intensive operations.
(Furthermore I can then also write the result directly in a Json field on MariaDb, if the project require use of mix of techologies).

Monterisi Stefano

4. Monday, September 24, 2018 at 1:17:01 PM

Is that just a theoretical claim or a real one? Are you having performance issues? Those should be addressed, actually. I''m not sure if just changing the driver makes a decision for a complete change of framework or paradigm. Having said that, something I forgot to mention is that our driver is around 20% faster than the dataset ones (FireDac, for example). But even if it was 100%, it''s "still" double. It feels like if the cost/benefit of current solution is no good for you "only" because of performance, it will probably still not be. There are lots of other benefits on using XData/Aurelius.

Wagner R. Landgraf

5. Monday, September 24, 2018 at 2:21:21 PM

Hi Wagner,
Stefano is right that performance is a very important factor to decide for a framework. For example in my area (Stock Market) every millisecond is important. As you might know mORMot performance is really excellent and one of the reasons is because it does not use dataset. The question is if you under the hood of Aurelius with the "drive mode" still used Dataset or not which could explain the performance boost.
Besides that, could you please list some benefits from your point of view for a new person deciding for a framework to use XData/Aurelius instead mORMot?


6. Tuesday, September 25, 2018 at 12:19:50 PM

Hi Andre,
you wrote what I wanted before me! :-)
Wagner, I write applications since 1985... so I known that milliseconds are not very important in a Desktop application with one o few user.
The music changes when I must develope a very intensive system with a remote server that performs a lot of queries (sometimes with thousand of records) for 1000-2000 users. In this scenario every millisecond is important because you have to MULTIPLY it for every single operation (other than network and serialize/deserialize time) ; so, if I can obtain a query of 10000 records remotely in 0,4 seconds, I am happy and also my customers ; if instead I obtain the same query in 10 seconds..... I have to rethink the app for remote users.
So every "boost" on performance (in this discussion, avoidind dataset in internal code or "drive" mode) approach remote apps to "desktop standalone" performance .
A Fast framework can be used from desktop, local, remote, intensive or critical projects (like IOT) without bothering...
I never said that Aurelius is slow, and a 20% of performance gain is welcome. Faster is, better is :-)
Please add MariaDb and Mongo support in "driver mode".

Monterisi Stefano

7. Tuesday, September 25, 2018 at 2:29:02 PM

Andre and Stefano, I''m not saying performance is not important. I''m saying it''s not the only factor and it should be obvious. Otherwise we would all be writing code in assembly. Why don''t you? Because you decide to trade performance for something else. So if you gain 20% performance "for free", that is fine. If you gain 20% performance at the expense of something else (like in this example, not using a specific framework), then you have to weight. What if it''s 5% improvement? 1%? 80%? What is the magic number? There isn''t. So my question about how a 20% increase could be a decision factor, since in *my opinion*, it''s not a life-changing performance improvement compared to use a complete new framework - which has a much bigger impact, for the bad or for the good. I have never used mormot. I can only speak about what I read here and there. Basically, it seems XData/Aurelius is easier to use and start with. Also it''s a completely different approach - mormot is open source, again with all its benefits and cons. Aurelius/XData is commercial - our intention is always serve the customer with best features and best support.

Wagner R. Landgraf

8. Tuesday, September 25, 2018 at 4:56:33 PM

Nice! The missing piece. Some weeks back I mentioned a need for this outside Data Modeler simply because I was too lazy to switch between tools and thought it would be ''nice'' to have. And here it is.... So any advice on using the new features when the database resides on Linux and the development is on Windows?


Scott Frazor

Add a new comment

You will receive a confirmation mail with a link to validate your comment, please use a valid email address.
All fields are required.

All Blog Posts  |  Next Post  |  Previous Post