问题 如何通过REST查询SQL Server来获取XML


我们一直在使用Web应用程序框架来构建需要能够查询SQL Server数据库并将结果作为XML获取的应用程序。

过去,框架提供了这种能力。但该功能现已弃用。

所以我们在想,框架允许我们通过HTTP轻松查询REST服务,所以为什么不使用SQL Server HTTP端点。但是,我们从SQL Server 2008开始就读到了不推荐使用HTTP端点。不是一个可以为将来设计架构的平台。

Azure(以前的SQL数据服务)将提供类似的服务,但现在只支持TDS协议,而不支持http。因此,在Azure中找不到REST。

建议的替代方法是使用WCF数据服务(以前称为ADO.NET数据服务)开发自定义应用程序。但这意味着需要开发,部署和维护一个完整的附加应用程序,可能是它自己的身份验证设置与SQL Server分开,以及它自己的源代码库...使用我们没有经验的技术,因此有自己的漂亮深度学习曲线。

你能否建议通过REST / HTTP查询SQL Server数据库的任何其他方法,这是不被弃用的,并且会以XML格式返回结果?

谢谢你的帮助。


7356
2017-08-22 20:49


起源



答案:


在这里阅读: 在30分钟内为StackOverflow创建包含XML和JSON的OData API。基本上,前进的道路是由应用层提供REST(WCF驱动提供OData映射的EF)。恕我直言HTTP访问引擎是一个非常糟糕的想法开始,没有人喜欢SQL Server 2005的HTTPEndpoints,他们是误入歧途。无法将HTTP错误模型,安全性,类型系统映射到SQL中,并期望顺利的互操作性。将HTTP层置于专用应用程序中会将处理HTTP生态系统的责任推向专用于该(WCF)的组件,以及将REST模型映射到专用于该作业(EF)的组件中的DB模型的逻辑。


6
2017-08-22 20:53



好的,谢谢,如果我们决定采用WCF / ADO.NET路线,本教程将使其更容易。但是,正如问题所述,我们不愿意这样做,因为它需要在我们的开发过程中添加一个全新的工具链(VS及其组件/扩展),并跟踪,部署和管理相关的工件集。更糟糕的是,作为这项技术的新手,我们甚至不知道工件将是什么以及需要跟踪哪些工件。 - LarsH
好的,您已经为HTTP端点消失的原因提供了一个很好的理由。至于“没人喜欢”,我会不同意,但也许喜欢的人是不明智的。无论如何,听起来似乎没有更好的选择。 - LarsH


答案:


在这里阅读: 在30分钟内为StackOverflow创建包含XML和JSON的OData API。基本上,前进的道路是由应用层提供REST(WCF驱动提供OData映射的EF)。恕我直言HTTP访问引擎是一个非常糟糕的想法开始,没有人喜欢SQL Server 2005的HTTPEndpoints,他们是误入歧途。无法将HTTP错误模型,安全性,类型系统映射到SQL中,并期望顺利的互操作性。将HTTP层置于专用应用程序中会将处理HTTP生态系统的责任推向专用于该(WCF)的组件,以及将REST模型映射到专用于该作业(EF)的组件中的DB模型的逻辑。


6
2017-08-22 20:53



好的,谢谢,如果我们决定采用WCF / ADO.NET路线,本教程将使其更容易。但是,正如问题所述,我们不愿意这样做,因为它需要在我们的开发过程中添加一个全新的工具链(VS及其组件/扩展),并跟踪,部署和管理相关的工件集。更糟糕的是,作为这项技术的新手,我们甚至不知道工件将是什么以及需要跟踪哪些工件。 - LarsH
好的,您已经为HTTP端点消失的原因提供了一个很好的理由。至于“没人喜欢”,我会不同意,但也许喜欢的人是不明智的。无论如何,听起来似乎没有更好的选择。 - LarsH


听起来你可能已经与MS堆栈结合了,但如果你不是,你可以在MySQL或PostgreSQL之上的Java EE容器(Tomcat,WebLogic等)中使用restSQL。 restSQL有一个带有JSON或XML编码的完整HTTP API。它提供了两个曲折:可更新的复合视图和分层复合视图。该框架可扩展到其他数据库,并且SQL Server的添加在其支持的演进中。查看 http://restsql.org


3
2017-08-03 00:18



谢谢......下次我们一看这个问题,我们一定会记住这一点。确实,我们暂时很好地与MS SQL Server结合在一起。 - LarsH
我需要这个,但是......有MS SQL Server支持:/ - Mr_LinDowsMac


另一种选择是类似的 Dreamfactory。它们具有SOAP to REST解决方案,允许您连接到任何数据库或服务。我用过他们的 免费托管解决方案 在过去的项目。他们还提供开源解决方案。关于该服务的一个很酷的事情是他们使用Swagger 3.0在一个不错的前端解决方案中创建服务定义,以便您可以测试和创建新的端点。

我已经使用OpenAPI 3.0定义连接到第三方SOAP和REST服务。它们还支持SQL Server环境中的存储过程和服务器端脚本。

无论如何,对你来说可能是另一种选择。


1
2018-04-28 15:39