Reputation: 15394
After asking this question I realized that to build what I need I'd better rely on some framework "REST and JSON ready".
Since I own Delphi Professional I should upgrade to Enterprise to have DataSnap.
Now the upgrade cost is in the same range as the DataAbstract cost. Update: moreover in future upgrade to newer versions of Delphi Professional + newer versions of DA will cost less than buying the bulky Enterprise upgrade (like from XE to XE2).
Since here RemObjects people say "Works with professional" I would consider also this framework. Moreover DataSnap seems to be quite good (i read this, I didn't try) only from the XE version, while RemObjects has a more solid past.
So who knows all the products can compare them expecially on these features:
Which product would you suggest?
NOTE FOR BOUNTY: Since I don't like this is not answered I start a bounty. I hope the original question acn be answered, anyone using Datasnap or RemObjects?
Upvotes: 16
Views: 6911
Reputation: 69092
I can only say that you should download the trials and try them and see which works for you. We can't make psychic predictions.
(Disclaimer: I was an employee at Embarcadero when I wrote the next part, in 2011).
Points in favor of the DataSnap framework:
Points in favor of the RemObjects DataAbstract
I suggest you read more and figure it out for yourself.
Factors that might matter to you that you haven't specified:
Update from May 2013
I have now used both products extensively, and I no longer work at Embarcadero. I think both products are great, but as I have just finished building a large project where I chose RemObjects, because the iPhone and Mac client (RemObjects DataAbstract for XCode) is a full-fledged Mac/XCode/objective-C product, and because RemObject's key developers know the Mac, know Objective-C, and can support XCode users, which for the last three months has been what I have been doing.
If you are not thinking about mobile and multi-platform, and only about Windows, then I can still think of a few ways where Data Abstract beats Data-Snap, but where DataSnap maintains a clear advantage is for those people who would want a solution all from one company. For certain Enterprise development decisions, I can easily see how the sensible choice might be to stick with DataSnap, and Delphi Enterprise edition. Like I said before, there are going to be some people who are going to find that one fits their requirements better, or the other, and anyone who says one of the two is better and the other is worse, is going about it all wrong. having said that, I will be accused of having said that "Data Abstract is better" above, but I clearly have not said that. For the project I just finished, it was perfect, though.
Upvotes: 7
Reputation: 43053
I'll be forced to add our Synopse SQLite3 Framework (later update: Renamed MORMOT) to the list...
Since you posted your questions, some points have been enhanced (like security or http server used).
Here are some differencies among the two listed above:
TStrings, TCollection, TPersistent
instance or even a dynamic array content, with integrated JSON serialization;Update: Framework is now able to use any other database engine, not only SQlite3.
Upvotes: 10
Reputation: 16196
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:
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 ;)
Upvotes: 7
Reputation: 6808
You can also take a look at delphionrails
A comment on this project
Upvotes: 1