Any opinion on RAD Server vs Node.js/LoopBack vs TMS XData vs other?

Comments

  1. # TELELIST As I understand UniGUI, it's more a client/app hosting solution.

    All,

    I'm looking for a multi-platform REST server solution with user security which can easily access and wrap databases, be they SQL or document-oriented.

    There are number of frameworks to create REST servers. RAD Server comes with a number of features of the box. Second in features, maybe, is LoopBack.

    Jacek Laskowski How is the learning curve with mORMot? How quickly can you develop with it, e.g. from zero code to working REST server?

    ReplyDelete
  2. Kyle Miller, have you seen this video showing how to setup XData from existing database in a few minutes? youtube.com - From Database to Web App through REST server with TMS XData and TMS Web Core

    ReplyDelete
  3. Unigui with rest-server(Radserver or anyone server)

    ReplyDelete
  4. I have an add on for RAD Server that lets you automatically generate a REST API (and OpenAPI docs) for your entire database in a few clicks. Also generates a client SDK. Looks somewhat similar to what LoopBack (and DreamFactory) might do. Supports most FireDAC databases and the Enterprise Connectors. Will be MIT licensed. Let me know if you want to beta test it.

    ReplyDelete
  5. Kyle Miller The learning curve is steep, but the server will fire in 5 minutes:

    github.com - mORMot

    ReplyDelete
  6. I'm glad I'm not the only one with that question Kyle Miller ... currently investigating the same thing.

    ReplyDelete
  7. If time was no issue, I'd probably go with LoopBack or DreamFactory. I'd build TypeScript/Javascript skills and have a product some have heard of on my resume. Node.js support is huge. Tons of functionality to plug-in at npmjs.com.

    XData is rapid development. It's a product that looks like it's well thought out and polished. It falls short in functionality out of the box when compared to RAD Server. So, I could develop solutions to fill in the gaps, but again... time.

    mORMot looks to be powerful and flexible. Its shortcomings are non-RAD and support. The documentation is not bad and not good. I tried to find YouTube videos discussing or demonstrating mORMot. Best I could find were 4 and 5 year old videos that did not demonstrate the product well enough. The product looks like it has all the parts to build something, but definitely "some assembly required" to get it all together.

    RAD Server comes with a lot of functionality out of the box. It's polished, under continual development (I like what I'm reading about latest improvements and in roadmap.), and has support. There's very good videos demonstrating the product. You can even download a working server, client app, and manager from GetIt. Its shortcoming is price. Damn. It's expensive. On the flip side, Delphi Enterprise and Architect come with a single site deployment license. Very nice.

    I sent a proposal in. We'll see if it gets approved. The client wants something ASAP and is willing to pay a price for it, which works in RAD Server's favor.

    ReplyDelete
  8. Kyle Miller Would you mind sharing which out of the box functionality that you miss from XData compared to RAD Server?

    ReplyDelete
  9. Kyle Miller Any chance for you to consider MARS? What's your feeling about it (don't worry about hurting my feelings, I am interested in unbiased opinions)

    ReplyDelete
  10. RAD Server is a joke from a licensing perspective.

    IMHO, it's really just mORMot or XDATA...

    but to be honest, I don't want to spend another day coding in Delphi (which is useless on a Resume) and I use IPC Server in Delphi to communicate to GoLang via IPC Client, then provide a REST API in GoLang and code the UI in Angular/React/JS.

    ReplyDelete
  11. Arimateia Jr Sure. I'll list features I am looking for in a solution. I know XData hits the mark on some of these, so this is not directed at any particular library.

    - User management, authentication, and authorization solution.
    - Authorization definable access to REST API down to resources and operations.
    - Provide default, universally compatible/acceptable authentication scheme but also allow others via plug-in like OAuth2.
    - Push notifications
    - Data synchronization/replication. Useful for mobile apps.
    - Usage and performance monitoring
    - Client side components/SDK which make tying into server built with kit plug-n-play.
    - Multi-tenet support.
    - Easy wrapping and publishing of existing tables.
    - Built-in data querying system. Supports filtering, ordering, field selection. Something like this... https://loopback.io/doc/en/lb3/Querying-data.html
    - Custom URL addresses. I saw RAD Server adding this. Important when wanting to define v1, v2, v3 of interfaces. I think this is what RAD Server update addresses.

    EDIT: Forgot 2 more.
    - Support running in a cloud, Amazon EC2, Azure, etc.
    - Support container deployment.

    ReplyDelete
  12. Kyle Miller, This:
    1. Data synchronization/replication. Useful for mobile apps.
    2. Client side components/SDK which make tying into server built with kit plug-n-play.
    3. Easy wrapping and publishing of existing tables.
    4. Built-in data querying system. Supports filtering, ordering, field selection.
    Is where XData really shines and everything above is ready out-of-the-box with few lines of code. I really wonder if RAD Server has such ready-to-use features like that.

    ReplyDelete
  13. Vin Colgin which is useless on a Resume

    You bring up a valid point and a reason why Node.js is in the list. My time is limited. Let's say I devote 40 hours getting up to speed with a solution. Do I spend the 40 hours where the only value on a resume is having built a REST server? Or do I spend the hours with a Node.js solution where the value is building a REST server, Node.js and Javascript?

    The reason Node.js falls out of favor is time is tight on this, and I don't think I'll be able to get up to speed, develop, and deliver on time with Node.js.

    ReplyDelete
  14. Ok, I will say it a last time then I will give up. Most items on your list are available in MARS as well.
    The items not in the box (i.e. Push notifications) can be easily added as MARS is really easy to extend.

    ReplyDelete
  15. Andrea Magni Thanks Andrea. The point of this post was for me to find out what options are available and what they can do. Rather than give a review of each one, I gave Arimateia Jr a list of what I'm looking for. If someone says X can do Y and I didn't know, I'll go research X some more.

    Could you copy/paste the items from my list which are in MARS?

    ReplyDelete
  16. Kyle Miller

    - User management, authentication, and authorization solution.

    MARS has built-in support for JWT with a RBAC (Role Based Access Control) functionality easy and ready to use.

    - Authorization definable access to REST API down to resources and operations.

    You can specify access control attributes (Allow, Deny) to resources down to single methods (with a fallback mechanism).

    - Provide default, universally compatible/acceptable authentication scheme but also allow others via plug-in like OAuth2.

    You can plugin whatever authentication schema you like (I am not a fan of OAuth in general but you have all you need to implement it in MARS without too much effort).

    - Push notifications

    This is out (and I believe this should not be part of a REST library, maybe of a larger framework but out of my scope). However, in the past I made some proofs of concept using OneSignal provider and everything was smooth.

    - Data synchronization/replication. Useful for mobile apps.

    I would stay away from this topic. In my experience DB replication is a complex matter and quite overshooting for a mobile app. Better tailoring your data exchanges across client and server will achieve same results with much less effort, IMHO. However, I can't see any trouble in integrating some solution in this direction (MARS is easily extensible).

    - Usage and performance monitoring

    There are hooks to trace MARS activation (request arrival/response leaving the server), so it is just a matter of choosing the storage solution for your statistics.

    - Client side components/SDK which make tying into server built with kit plug-n-play.

    MARS actually has a client library, component based. There are specific resource components to represent and send JSON and streams (binary data). There is a custom resource component that you can use to handle whatever format you need or you may want to inherit your own components.

    - Multi-tenet support.

    I guess you meant multi-tenant. In MARS you can have multiple engines (http instances listening on different ports) and each engine can server multiple applications (authentication is per-application). Also the built-in FireDAC integration has no limitations in handling multiple connections to different connection definition so I would say yes it is supported.

    - Easy wrapping and publishing of existing tables.

    The built-in FireDAC integration makes it very easy to deal with data and the client library will reconstitute datasets (TFDMemTable) on the client side. You can even work in cached update mode and post back the delta instead of the whole dataset.

    - Built-in data querying system. Supports filtering, ordering, field selection. Something like this... https://loopback.io/doc/en/lb3/Querying-data.html

    Again, not something I would bury into a REST library like MARS (but maybe appropriate on some larger framework built upon it). It should be easy enough to support most of the feature listed there, however.

    - Custom URL addresses. I saw RAD Server adding this. Important when wanting to define v1, v2, v3 of interfaces. I think this is what RAD Server update addresses.

    You can define your own resources and method paths. You can even completely customize the algorithm matching your resources and methods if you need it.

    EDIT: Forgot 2 more.
    - Support running in a cloud, Amazon EC2, Azure, etc.

    MARS supports several deployment options including all those coming from WebBroker technology (VCL standalone app, FMX standalone app, console app, Apache module, ISAPI) and some custom made (a Linux daemon and a Windows Service).
    Can you please more specific about this?

    - Support container deployment.

    ReplyDelete

  17. It should run without effort (still never actually tried myself). I remember some of MARS users tried and succeeded using Docker.

    Currently, the worst side of MARS is it lacks documentation. A lot of features are available but not easy to discover and this is my fault. I am currently a bit busy with other tasks but I will try to fill this gap soon.

    I am not interested in "this library is better than this other" discussions but I would really love to get people trying MARS and providing some feedback (be cruel if you dare :-) ).
    A lot of feedback came from my customers and most of their feedback ended in feature development.

    Sincerely

    ReplyDelete

Post a Comment