Datasnap XE与Remobjects DataAbstract的比较

16

在询问这个问题后,我意识到为了构建我所需要的内容,最好依赖于一些“REST和JSON准备就绪”的框架。

由于我拥有Delphi Professional,所以我应该升级到Enterprise才能使用DataSnap。

现在升级成本与DataAbstract的成本相当。 更新:此外,将来升级到Delphi Professional的新版本+DA的新版本的成本将低于购买笨重的Enterprise升级(例如从XE到XE2)的成本。

由于RemObjects的人说“可以与Professional版本一起使用”,因此我也会考虑这个框架。 此外,DataSnap似乎非常好(我读过这篇文章,但没有尝试过),仅适用于XE版本,而RemObjects具有更为可靠的历史记录。

那么谁知道所有产品可以比较它们,特别是以下功能:

  • REST服务器(用于提供JSON)
  • 易用性

您会推荐哪个产品?

赏金说明:由于我不喜欢这没有被回答,所以我发起了一个赏金。 我希望原始问题可以得到回答,是否有人正在使用DataSnap或RemObjects?


请查看Delphi Relax。这是一个扩展了 Delphi 的 WebBroker 和 DataSnap REST 应用程序架构的工具,它可能符合您的需求并依赖于 DataSnap。虽然仍处于原型阶段,但 Marco 正在努力完善它。 - Arnaud Bouchez
4个回答

10

我将被迫将我们的Synopse SQLite3框架(后来更新:更名为MORMOT)添加到列表中...

自从您发布问题以来,一些要点已得到加强(例如安全性或使用的http服务器)。

以下是两者之间的一些差异:

更新:框架现在可以使用 任何其他数据库引擎,而不仅限于 SQlite3


3
致DownVoter先生:我的帖子不是垃圾邮件,而是对一个公开问题的回答,因为该问题的OP最后一次研究关于REST框架的内容是在去年12月(https://dev59.com/Qm855IYBdhLWcg3wSSOl),而这些东西发展得很快... - Arnaud Bouchez
我看到这个框架可以满足我的需求,但是我有很多代码和数据模块,我想要使用它们。据我所知,你们采用ORM方法,所以如果不是为了一个新项目,我就不能使用你们的框架。 - UnDiUdin
3
A.Bouchez的开源项目非常优秀。开源自动不是垃圾邮件。 - Warren P
@user193655,您可以仅使用我们框架的SOA方面:它不依赖于ORM(但如果您希望,可以在对象级别定义服务)。ORM只是其中的一部分。您可以在不使用ORM或SQLite3的情况下使用框架的RESTful部分:您只需要SynCommons和SQLite3Commons单元。如果您想要,稍后可以切换到ORM。请注意,我们的RESTful实现处理每个请求的身份验证和签名,而DataSnap则不会。将适用于Delphi 6至XE。 - Arnaud Bouchez
1
@user193655 我刚刚添加了能够使用任何数据库,而不仅限于SQLite3的功能。你可以使用类似的功能重用你现有的代码源和数据模块,并将ORM架构添加到你现有的项目中,结合SOA方法。请查看文档(参见链接),特别是SOA、ORM、RESTful和外部数据库章节。 - Arnaud Bouchez
显示剩余5条评论

7
我只能说你应该下载试用版并尝试一下,看哪个适合你。我们不能做出心理预测。
(免责声明:我在2011年写下以下部分时是Embarcadero的员工)
DataSnap框架的优点:
  • 随Delphi一起提供(有些人喜欢拥有一个全能解决方案)
  • 正在不断扩展,并且在XE2中具有重要新功能
RemObjects DataAbstract的优点:
  • 正如你所说,可以使用低端SKU(例如Pro),而DataSnap仅适用于RAD Enterprise/Architect。
  • 有一个针对Oxygene(以前称为Prism)的.NET版本
  • 如果你喜欢他们的工作流程,包括模式建模器,你可能更喜欢它。
我建议你多读一些内容,自己弄清楚。

可能对您有影响但您未指定的因素:

  • 需要易于配置的SSL支持-现在RemObjects和DataSnap都有SSL
  • “真正疯狂地REST”或“如果它使用HTTP get / post,则对我来说足够REST风格了”?

2013年5月更新

我现在已经广泛使用了这两个产品,并且我不再在Embarcadero工作。 我认为这两个产品都很棒,但是我刚刚完成了一个大型项目,在该项目中我选择了RemObjects,因为iPhone和Mac客户端(RemObjects DataAbstract for XCode)是一个完整的Mac / XCode / objective-C产品,并且由于RemObject的关键开发人员知道Mac,知道Objective-C,并且可以支持XCode用户,这是我过去三个月一直在做的事情。

如果你只考虑Windows平台而不是移动和多平台,那么我仍然能想到一些Data Abstract比Data-Snap更优越的方面。但是,DataSnap在于那些需要一家公司提供完整解决方案的人中保持明显优势。对于某些企业开发决策,坚持使用DataSnap和Delphi企业版可能是个理智的选择。就像我之前说的,有些人会发现其中一个更符合他们的要求,而任何称其中一个更好或更差的人都是错的。话虽如此,我会被指责说上面说了 "Data Abstract更好" ,但我显然没有这么说。对于我刚完成的项目来说,它是完美的。

我完全同意!我会称这两种解决方案为“一刀切”。你应该尝试两种方案,并确定哪一种最适合你的目的。 - LaKraven
好的,我选择这个作为答案。虽然不是非常完整,但至少回答了问题。 - UnDiUdin
也许应该将这个设为社区维基,这样人们可以随后添加更多内容。事实上,任何有知识的人都可以编辑这个答案以添加更多细节。 - Warren P

7
我是RO/DA的快乐用户。我做了一个关于RO的演示(西班牙语),所以我会指出一些重要的东西,使Ro成为最好的远程库,在任何语言/框架中,这是我的个人意见:
  1. 多语言支持:您可以在.NET、Mono、Delphi和FreePascal中创建服务器。您可以在前面所有语言和Obj-C(iOS也是如此)、javascript、任何支持REST和SOAP的语言中创建客户端。

我现在有两个服务器(一个delphi,一个net/mono),客户端分别是delphi、iOS、python。这是一个很大的优势。

支持多种数据库驱动程序,如odbc、ado、anydac、devart、.net等,真正多种多样

支持多协议:SOAP、REST、XML-RPC、oData和二进制。不需要在快速、小但专有和开放但慢的文本协议之间进行选择。可以使用多个协议服务相同的服务器,无需更改代码。说真的,这太棒了。

支持多通道:因此,当然有http,但还有SuperHTTP(双向)、TCP/IP、UDP、Name pipes、内存、Windows消息,IIS SYS等(通道因是在.net还是在delphi上而有所不同)

您可以同时在多个通道上发布服务器。因此,您可以同时拥有HTTP + UDP。

2-数据抽象:

就像一种ORM,但用于N-Tier。DA是数据库的“虚拟”表示形式,物理数据库(或多个数据库,您可以连接到多个数据库)可能非常不同。

假设您有一个来自先前开发人员的糟糕的DB模式。客户表称为“CUST”,名称字段称为“1”(在开源POS中是这样命名的,严肃地说)。但是您可以使用虚拟表“Customer”和字段“Name”。

因此,您可以使用“SELECT Name FROM Customer”,DA将执行“SELECT 1 FROM CUST”。这称为“DA SQL”。非常整洁。特别是针对生产数据库中存在的糟糕模式的迁移。

表更像视图,但可更新。

DA会为您生成强类型的LINQ类(或Delphi类),因此您可以获得ORM的良好OO支持,但不受2层限制。

您可以查询2个数据库并将数据连接到单个虚拟表中,并将更新发送回。

您可以使用JS进行嵌入式逻辑验证并将其流式传输到客户端。

3-快速

使用BIN格式的支持,一切都更快。包括压缩+加密(如果无法使用SSL)。

异步调用+同步调用。您可以根据需要选择每种方法。

4-其他整洁的东西

支持使用Bonjour自动发布和发现服务器。易于添加负载平衡和故障转移。发布到oData。发布html+js页面。在http://connect.remobjects.com/中提供良好的支持。

唯一不好的是文档有点难以理解(仅我个人观点)(但有优秀视频)。主要是基础知识看起来比较困难(不是因为代码难以理解,而是库很大)。

源代码已包含。演示很好。

但总的来说,这个库非常棒。非常棒,以至于最近的一个项目中,我使用C#.NET(尽管我讨厌这种语言),而不是使用Python(我的最爱之一,紧随Delphi之后),只是为了使用这个库。那么好;)


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接