I'm a happy user of RO/DA. I made a presentation (in spanish) about RO, so I will point some important stuff that make Ro the best remoting library, in any language/framework, IMHO:
- Multi-EVERYTHING: You can create servers in .NET, Mono, Delphi, FreePascal. You can make clientes in the all previous + in Obj-C (iOS too), javascript, any REST-capable, any SOAP-capable language
I have now, 2 servers (one delphi, one net/mono) with clients in delphi, iOS, python. This is a big plus.
Support multi-database drivers for DB, like odbc, ado, anydac, devart, .net ones, etc. Truly a lot
Support multi-protocol: SOAP, REST, XML-RPC, oData, and binary. Not need to choose between fast, small but proprietary and open but slow text protocol. Is possible to serve the SAME server with SEVERAL protocols, not code change necessary. Seriously, this one rocks.
Support multi-channel: So http of curse, but also SuperHTTP (two-way), TCP/IP, UDP, Name pipes, in-memory, windows messages, IIS SYS, etc (channels vary if are on .net or in delphi)
And you can publish the server in several channels, at once. So, you can have HTTP + UDP at the same time.
2- Data abstract:
Is like a kind ORM, but for N-Tier. DA is a "virtual" representation of a database, and the physical database (or databases, you can connect to multiples ones) could be VERY different.
Let say you have a crappy schema of a DB from a previous developer. The customer table is called "CUST" and the name field is called "1" (that is how is named in a open source POS, seriously). But you can have the virtual table "Customer" with field "Name".
So, you can so "SELECT Name FROM Customer" and DA will execute "SELECT 1 FROM CUST". This is called "DA SQL". Is very neat. Specially for migration of crappy schemas that are in a production database.
The tables are more like views, but updateables.
DA generated strongly-typed LINQ classes for you (or Delphi Classes), so you have the nice OO support of a ORM, but not tied to 2-tier.
You can query 2 databases and join data in a single virtual table, and post back the updates.
You can use JS for embed logic validation and stream it to the clients.
3- Fast
With the support of the BIN format, everything is faster. Compression + encryption (if can't use SSL) included.
Async calls + sync call. You can choses per method what to use.
4- Other neat stuff
Support for publishing and auto-discovering of servers with Bonjour support. Load-balancing + Failover easy to add. Publish to oData. Publish html+js pages. Good support in http://connect.remobjects.com/.
The only bad stuff is that the docs are a bit hard to follow (IMHO) (but great videos). Mainly, the basic stuff is what will look hard at first (not because the code is hard to understand, is because the lib is big).
Sourcecode is included. The demos are good.
But in general the lib is great. So great, that for a recent project I'm using C#.NET (despite I hate the language) instead of use python (my favorite, after delphi) just to use this lib. That good ;)