|Delphi Clinic||C++Builder Gate||Training & Consultancy||Delphi Notes Weblog||Dr.Bob's Webshop|
RemObjects Software is the company that provides tools and software solutions to make your software development tasks easier, especially for Delphi and/or .NET developers.
See also my earlier detailed review of RemObjects SDK 1.0 and summary overview of Data Abstract.
RemObjects SDK is a library of software components and utilities that help you to create multi-tier applications. A multi-tier application typically consists of a server tier, which usually connects and works with a database and contains your business logic, as well as a client tier (often called "thin client"), which usually contains the presentation layer for the end-users. Usually, several thin clients are connected to one server. The client and the server can run on the same machine, but often the clients run on different machines and are connected to the server machine using a network like a LAN or even the internet.
In this architecture, RemObjects SDK can be used to design and build the communication infrastructure between the clients and the server tier. You can use the easy to use yet very powerful RemObjects Service Builder to define the interface "contract" between the server objects and the clients that use this server interface. This results in a RODL (RemObjects Definition Language) file with your interface definition as well as skeleton code for the server objects that you need to implement, and the client stubs that the thin-clients can call to work with the server objects. The method calls that the thin client makes are actually remote method calls - sent from the client to the server with a request, and returning to the client with the answer to the request (all transparent, and taken care of by the RemObjects SDK components).
When it comes to the actual communication between the clients and the server, there are two parameters in play: the communication protocol and the message format. Both the server and the clients must agree and use the same choices here. Regarding the communication protocol, RemObjects SDK offers a choice of TCP/IP, HTTP, UDP, Windows messages, named pipes, SMTP/POP3, and you can even define your own communication protocol if you wish. For message formats the choice is between binary and SOAP formats. RemObjects SDK offers the ability to compress (using ZLib) and/or encrypt (using Blowfish, Rijndael, DES, or TwoFish) the message with standard algorithms, but also open to custom extensions. Again, both the server and client must use the same settings (public encryption key for example) in order to establish a successful communication.
RemObjects SDK includes integrated load balancing and fail-over capabilities, to ensure a 24x7 availability and connectivity.
RemObjects SDK supports both Windows (with Delphi 6, 7 and 2005), Linux (with Kylix 3), and.NET (any .NET language, including Delphi 8 and 2005, Chrome and C#), and you can also build clients in C/Turbo Pascal, on Mono, and soon also in Java. The ServiceBuilder supports Delphi, Delphi for . NET, C#, Chrome and VB. This truly means that the platform for your clients and servers can be your choice. You can even have different clients (running on different platforms) connecting to the same server. Note that the RemObjects Service Builder only runs on Windows. Best of all, you get full source code and there are no runtime license fees involved.
One of the choices that you are facing when building applications that use information stored in databases is: which database to use. Even if the choice is already made, you may want to reserve the freedom of choice, allowing you to switch to another database at a later time, without having to rebuild your entire application. Sure, some data access drivers that are available (including dbExpress and ADO) allow you to connect to different databases, but they don't help you deal with the different SQL dialects or help you handle different database schemas. They might also offer a limited set of connections, or a less-optimised driver (compared to a database specific optimised driver - which is then hardcoded to that particular database).
RemObjects' Data Abstract is a data access framework that consists of two parts: the Data Abstracts drivers layer, and the high level components (BIN/XML adapters (Shared), data tables (Client), connection manager etc (Server), with the Data Abstract Schema Modeler as tool in between.
The Data Abstract drivers layer will use a very wide range of data access technologies - including Borland's dbExpress, but also IBObjects, SDAC, ODAC, DOA, IBExpress, dbGo for ADO, etc. - and abstracts access to them in a unified manner. This allows you even more freedom of choice between database specific (optimised) drivers and more database independent drivers, and still work in a uniform way with one set of high level components.
Apart from the ability to use any data access technology, the true power of Data Abstract comes from the Schema Modeler on top of the database tables. Using the Schema Modeler you can design your data model in a database-independent way. This supports the ability to switch data access technologies in the Data Abstract drivers layer.
The Schema Modeler can be used to design a data access layer in a database independent way, and will automatically generate the SQL for you. However, when needed, Data Abstract offers a macro processor to allow you to specify database specific SQL commands (in case of database-specific SQL dialect differences).
Data Abstract supports both Windows (with Delphi 6 and 7) and Linux (with Kylix 3), so the platform for your applications can be your choice. The Schema Modeler runs only on Windows.
And of course there are no runtime license fees involved (except perhaps for the third-party data access libraries that you want to use with Data Abstract).
Hydra is a plugin framework, that allows you to split your application into different parts that can be plugged into a host application. This offers the ability to have a near-empty host application plus several separate plugins (called Hydra Modules) that can be loaded at runtime. There are several benefits of using Hydra Modules. First of all, your application can be partitioned into logical parts, which increases maintainability. These logical parts can be developed and deployed independent of other parts, so when new functionality (or bug fixes) are made available in one module, you only have to redeploy that particular module. This greatly reduces both the time and size of updates (although it could lead to more updates, since multiple modules could be updated independently - still resulting in a custom experience of many helpful patches).
Hydra comes in two editions: Hydra Standard and Hydra Server. The later is built with RemObjects in mind, allowing you to turn RemObjects services into plugins that can be loaded and unloaded by your host application at will.
Hydra comes with full source code, and no runtime license fees are involved. Note that Hydra Server requires RemObjects SDK.
About the Sum of the Parts
There's a famous saying that the whole is bigger than the sum of the parts. This saying is especially true if you look at RemObjects SDK, Data Abstract and Hydra. You don't have to look hard to see how they can be combined: they are built from the start to work together and extend each other. Data Abstract allows RemObjects SDK to build distributed solutions that are also database independent, and RemObjects SDK can be used to turn Data Abstract applications into multi-tier solutions with a clear separation between the business rules and the data access layer. Adding Hydra to the equation results in applications that are easier to develop, maintain and deploy. The fact that all three are "aware" of each other certainly helps to realise that the total is bigger than just the sum (although that doesn't apply to the purchase price if you take a subscription to all RemObjects' products).