问了这个问题后,我意识到要构建我需要的东西,我最好依赖一些"REST和JSON就绪"的框架。
由于我拥有Delphi Professional,我应该升级到Enterprise以拥有DataSnap。
现在升级成本与DataAbstract成本在相同的范围内更新:此外,在未来升级到Delphi Professional的新版本+DA的新版本的成本将低于购买庞大的Enterprise升级(如从XE到XE2)。
既然这里RemObjects的人说"与专业人士合作",我也会考虑这个框架。此外,DataSnap似乎只在XE版本中表现得很好(我读过这个,我没有尝试过),而RemObjects有着更坚实的过去。
所以谁知道所有的产品都可以在以下功能上进行比较:
- REST服务器(用于提供JSON)
- 易用性
你推荐哪种产品?
绑定注意事项:既然我不喜欢这个没有答案,我开始悬赏。我希望最初的问题能得到回答,有人在使用Datasnap或RemObjects吗?
我将被迫将Synapse SQLite3 Framework(稍后更新:重命名MORMOT)添加到列表中。。。
自从您发布了您的问题后,一些要点得到了增强(比如使用了安全性或http服务器)。
以下是上面列出的两个之间的一些差异:
- 没有RAD方法,而是真正的ORM方法(这可能是原型设计的一个缺点,但当应用程序增长时会有所帮助)
- 非常快速的JSON生成器和解析器,具有SQL级别的缓存
- 使用HTTP.sys内核模式服务器的最快可用HTTP服务器
- 真正的RESTful身份验证,具有双会话+每次查询的安全模型
- 多层架构,集成业务规则作为基于ORM的快速类(不通过外部脚本等)
- 能够对任何类型的数据使用SQL和RESTful请求(得益于SQLite3独特的虚拟表机制)
- 包括全文搜索引擎,具有类似谷歌的增强排名算法
- 集成报告系统,可以为您的应用程序提供复杂的PDF报告
- 可以轻松创建自定义RESTful JSON服务-您可以将任何
TStrings, TCollection, TPersistent
实例甚至动态数组内容作为JSON发送,并集成JSON序列化 - 尽可能快(需要时使用asm,缓冲读写避免了大部分内存消耗,多线程就绪架构…)
- 700多页的文件
- Delphi和AJAX客户端可以共享同一服务器
- 为64位和跨操作系统DelphiXE2准备
- 提供了完整的源代码,因此您可以增强它以满足任何需求
- 从Delphi 6到XE,真正的Unicode(在内核中使用UTF-8编码,就像JSON一样),与任何版本的Delphi配合使用,包括XE入门版(无需购买任何Entreprise版本)
更新:Framework现在可以使用任何其他数据库引擎,而不仅仅是SQlite3。
我只能说你应该下载试用版并尝试一下,看看哪一个适合你。我们不能做心理预测。
(免责声明:2011年,当我写下一部分时,我是Embarcadero的一名员工)。
支持DataSnap框架的要点:
- 带有delphi(有些人喜欢有一个一体化的解决方案)
- 正在不断扩展,并在XE2中具有重要的新功能
支持RemObjects数据摘要的要点
- 正如您所说,它适用于像Pro这样的低端SKU,而DataSnap仅适用于RAD Enterprise/Architer
- Oxygene(以前称为Prism)有一个.Net版本
- 如果你喜欢他们的工作流程,包括模式建模器,你可能更喜欢它
我建议你多读一些,自己想办法。
- Bob博士的DataSnap书
- RemObjects白皮书
可能对你很重要但你没有具体说明的因素:
- 需要易于配置的SSL支持-RemObjects和DataSnap现在都有SSL
- "真正疯狂的深度REST"还是"如果它使用HTTPget/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和DelphiEnterprise版本。就像我之前说的,会有一些人发现其中一个更符合他们的要求,或者另一个,任何人说两者中的一个更好,另一个更差,都是错的。话虽如此,我会被指责在上面说"数据摘要更好",但我显然没有这么说。不过,对于我刚刚完成的项目来说,它是完美的。
我是RO/DA的快乐用户。我做了一个关于RO的演示(西班牙语),所以我将指出一些重要的东西,使RO成为任何语言/框架中最好的远程处理库,IMHO:
- MultiEverything:您可以在.NET、Mono、Delphi、FreePascal中创建服务器。您可以在Obj-C(iOS)、javascript、任何支持REST的语言、任何支持SOAP的语言中使用所有以前的+来创建客户端
我现在有2台服务器(一台delphi,一台net/mono),客户端在delphi、iOS、python中。这是一大优势。
支持DB的多数据库驱动程序,如odbc、ado、anydac、devart、.net等。确实有很多
支持多种协议:SOAP、REST、XML-RPC、oData和二进制。不需要在快速、小型但专有和开放但缓慢的文本协议之间进行选择。可以使用SEVERAL协议为同一服务器提供服务,而无需更改代码。说真的,这个太棒了。
支持多通道:所以诅咒的http,但也SuperHTTP(双向),TCP/IP,UDP,名称管道,在内存,windows消息,IIS SYS,等等(通道不同,如果在.net或在delphi)
您可以同时在多个通道中发布服务器。因此,您可以同时使用HTTP+UDP。
2-数据摘要:
就像一种ORM,但适用于N层。DA是数据库的"虚拟"表示,而物理数据库(或多个数据库,您可以连接到多个数据库)可能会非常不同。
假设您有一个来自以前的开发人员的糟糕的DB模式。客户表称为"CUST",名称字段称为"1"(这是开源POS的命名方式)。但是您可以使用字段为"Name"的虚拟表"Customer"。
因此,您可以执行"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/.
唯一糟糕的是文档有点难以理解(IMHO)(但很棒的视频)。主要是,基本的东西一开始看起来很难(不是因为代码很难理解,而是因为lib很大)。
包含源代码。演示很好。
但总的来说,自由是伟大的。太棒了,以至于在最近的一个项目中,我使用C#.NET(尽管我讨厌这种语言)而不是使用python(我最喜欢的,在delphi之后)来使用这个库。太好了;)
您还可以查看delphionrails
关于这个项目的评论