04 Mar A comparison of two REST API backends for mobile and web applications
Recently we were tasked with finding a solution to have a mobile application interact with an Oracle database. Not too many bells and whistles, just simple CRUD operations and the ability to execute Stored Procedures through SOAP/Restful services.
The solution had to be simple and lightweight. Usability was a key component so our client could get it up and running without having any lengthy training courses for their employees. Lastly, innate LDAP functionality was a plus.
To this end we came across two potential candidates that fit the criteria: Dreamfactory and WSO2, or to be more specific: the Data Services Server component of the WSO2 platform. For ease of reading I will simply refer to it as ‘WSO2’. Both are open source products under the Apache license.
Below you can find a short comparison. This is not a comprehensive comparison of both product’s features and flaws. Rather, we see how they hold up against each other when keeping our simple use case in mind.
Both products are very lightweight and easy to install. It should take no longer than ten minutes each.
WSO2 requires you to download a zip file and extract it to a folder of your choice. That’s it. Quick and simple, it will work out of the box with the default configuration. Configuration is stored in carbon.xml, should you wish to change anything. Next, you can run wso2server.bat or wso2server.sh to start the server.
Dreamfactory on the other hand makes use of an install wizard. You’ll have to download a different one depending on your OS (Linux, Mac, and Windows are available). During the install wizard, you will be given the chance to change the default configuration, but it will work perfectly fine with the default settings. In order to start the server you simply run manager-windows.exe or the Linux/Mac equivalent.
In short, both are very lightweight and easy to install. Neither has a clear advantage over the other.
Both products utilize a web interface where you will be spending most of your time. Luckily, both are fairly intuitive with mostly the same structure: sections like users, configuration, services, etc.
The look and feel sets them slightly apart. Aesthetically, WSO2’s interface looks a little old-fashioned, while Dreamfactory is more pleasant to look at and a little easier to navigate. This is of course merely a personal opinion. You can judge for yourself in the following screenshots:
In addition to how it looks, Dreamfactory also feels more responsive than WSO2, although the difference is very minor.
There is however one feature that Dreamfactory (open source edition) is missing: monitoring tools. WSO2 provides several built-in monitoring utilities, like displaying system statistics, response times and SOAP tracing to name a few. Note that Dreamfactory does have monitoring tools, just not in the open source edition. It is tied exclusively to the Enterprise Subscription, which is a separate commercial software package.
Each product supports the most commonly used databases, as well as some distinct ones:
|Microsoft SQL Server||Microsoft SQL Server|
|IBM DB2||IBM DB2|
|HSQLDB||SAP SQL Anywhere|
|Sybase ASE||Several cloud platforms such as Salesforce|
*The one we need for our use-case
For WSO2, establishing a connection to the Oracle database and executing basic CRUD operations or Stored Procedures is significantly easier for someone with no prior experience. The connection string is of type JDBC and in order to get it to work, you are required to download a connector (jar file) and copy it to the extensions folder; then reboot the server. Simple stuff.
After that, the WSO2 interface offers a wizard that will guide you through the process of setting up the connection and the database operation. It will ask you for the data source and the SQL statement to execute, among other parameters. You require only some basic knowledge of SQL language.
Dreamfactory works differently. It uses an OCI8 connection string (at least for the Oracle database). Getting it to work proved a minor obstacle. It required some configuration tweaking, as well as the installation of the Oracle Instant Client, which was already installed on my machine. However the connection did not seem to work. Eventually I was able to find a blog explaining what was wrong. Apparently Dreamfactory requires the 32bit version of the Oracle Instant Client. Easily fixed, but a minor annoyance nevertheless.
Furthermore, Dreamfactory uses swagger (and by extension, JSON) to interact with the database. For someone inexperienced with these technologies, it will take some time getting used to, although it works just as well once you get the hang of it.
To summarize: when it comes to database interaction, WSO2 offers better usability for people who are just getting started.
Now that we got the basics covered, let’s look at the more advanced features.
Both solutions are cloud capable or can be deployed on premise. They also offer a notification system, which is a handy feature to have. The ability to integrate LDAP is likewise supported by both, which was important for our use-case.
Both Dreamfactory and WSO2 have the ability to display the database’s schema and table contents in the web interface itself, as well as make manual changes directly. The difference lies in the fact that Dreamfactory uses a fancier graphical interface whereas WSO2 requires the use of SQL statements. WSO2 is much like SQL developer in this regard. Take a look:
For WSO2, it does not seem possible to add any extra logic to operations, while this feature is supported in Dreamfactory. Should this be required for WSO2, you can plug in another component that offers this functionality (like the ESB) although that may have an impact on the subscription price.
In short, for the more advanced functionalities, Dreamfactory pulls ahead. That said, these extras (besides LDAP) are not required for our particular use-case.
Both candidates make a distinction between production and development support subscriptions.
In both cases, the production support is a yearly subscription.
For WSO2, it includes 24x7x365 unlimited incident support (on-line and phone) with response and resolution times based on the issue severity. There is a guaranteed response time of one hour for critical problems.
Dreamfactory’s subscription unfortunately does not provide 24x7x365 support. It is only available during American business hours: 8am-8pm EST Monday through Friday. When we account for the time difference, this means a European company would only be able to get support between roughly 14:00 and 02:00 GMT. Dreamfactory informed me they have some partners in Germany that could provide assistance, but any co-operation like this will have to be arranged on a case by case basis.
Dreamfactory has two different levels of subscription: silver and gold. This choice has an impact on response time (1 business day vs half a business day), emergency patch support, phone support, and so on. More importantly, silver production support has a limit on the amount of incidents supported, while gold has unlimited support. Of course there is also a difference in price.
Dreamfactory also has an Enterprise subscription which is technically a separate product from the open source edition. It has more features like governance, throttling and monitoring and is intended for larger-scale use. This subscription has three levels: small, medium and large. The difference here lies in several things, like the amount of users, instances and applications supported. This package has gold-level production support by default. The Enterprise subscription does not include development support, however, so that subscription will still need to be purchased separately if you require development assistance (see below).
WSO2 offers 24x7x365 development support in either 3month, 6month or 12month subscriptions. They do, however, put a usage cap on these subscriptions, which is 50 hours, 100 hours and 200 hours respectively.
Dreamfactory offers a one year subscription with no usage cap [confirmed as of 25/02/2016], again with silver and gold levels. The main difference between these levels is the availability of phone support and the response times being 2 business days vs 1 business day. The same limitation in regard to support availability is still present (8AM-8PM EST).
When we consider all the factors, WSO2 wins this category by a wide margin due to their 24x7x365 support model and faster response times. Their only downside is the usage cap on the development support subscription.
DISCLAIMER: I would like to stress, again, that this is for a very basic scenario and the more advanced features have been largely left out of scope. This comparison should not be regarded as a comprehensive review of both products.
Both products are, feature-wise, equal for the most part. Dreamfactory’s interface is more intuitive and responsive, however the difference is very minor. WSO2 on the other hand offers better usability when it comes to creating the database interactions.
Concerning general support, WSO2’s is strictly better. They offer 24x7x365 support, something Dreamfactory unfortunately does not. Their support is only available during American business hours. For production support, WSO2 comes out on top because of their faster response time. Dreamfactory does however have an edge when it comes to development support, because they do not have a maximum usage cap like WSO2 does.
Although I did not discuss pricing in the above comparison, it is of course an important factor. Essentially, WSO2 is the cheaper of the two in most scenarios where production support is concerned. For development support, the roles are reversed and Dreamfactory comes out on top.