【问题标题】:Using SOAP web services to get data from SQL Server 2008 database使用 SOAP Web 服务从 SQL Server 2008 数据库中获取数据
【发布时间】:2015-04-29 23:14:42
【问题描述】:

我是 SOAP 和 Web 服务的新手(2 天经验)。

我使用 Bonita Open Solution 作为 BPMS,其中有一个“WebServer SOAP 1.2”连接器。我需要使用 SOAP 从/向数据库中获取和写入数据。我不想使用基于 JDBC 的“SQL Server”连接器,因为系统将紧密耦合。

在 SQL Server 2008 中是否有任何已经实现的 SOAP Web 服务可以做到这一点,或者我应该自己开发吗?如果我应该自己开发,我猜最好的方法是使用 ASP.NET,对吗?

【问题讨论】:

  • 没有(也不应该有),并且您想使用 WCF 开发自己的。您确实想通过 Web 服务疯狂地公开整个数据库。创建一个服务以公开您的 BPMS 系统所需的内容。
  • 我可以将 WCF 与 SOAP 结合起来吗?我读到 WCF 使用开放数据协议,它是一种 RESTful 数据访问协议。我需要使用 SOAP,因为我的 BPMS 只在他的连接器中提供了这个协议。
  • WCF 支持许多协议,包括 SOAP 和 REST。你一定读过“WCF Data Services”。

标签: sql-server web-services soap bonita


【解决方案1】:

在您进行任何事情之前,您需要准确地确定 BPMS 系统需要哪些数据以及它需要哪些访问权限。例如,它可能需要对某些数据进行读取访问,但对其他数据进行读取和写入。您的服务应该只公开实际必需的数据和操作,仅此而已。

您的数据很宝贵 - 不要暴露过多的数据。

我建议您在数据库优先模式下使用实体框架,但只将所需的表添加到模型中。然后,通过删除不需要的列、简化关系等来简化模型。因此,您公开了一个对消费者有意义的数据概念模型,而不是必须公开数据库的每个实现细节(你是例如,真的需要公开每个联结表吗?)

然后编写一个使用实体框架来完成数据访问的艰苦工作的 WCF 服务非常简单。

【讨论】:

  • 我仍然很困惑,为什么我不能开发一个独立于数据库的 Web 服务。我的意思是不坚持微软的 WCF,例如 JAX-WS(事实上,在新的环境/框架中开发更难)。当然这可能有风险,但有了 WS-Security 支持,我认为应该不会有问题,不是吗?
【解决方案2】:

即使已弃用,Sql Server 2008 也具有本机 SOAP Web 服务(请参阅Native XML Web Services: Deprecated in SQL Server 2008)。

您需要平衡 Sql Server 升级的风险与开发(和维护)自定义服务的成本。

【讨论】:

  • 所以,如果我使用原生的 XML Web Services,将会与 SQL Server 的版本紧密耦合;而如果我使用 WCF,将有紧耦合只使用 SQL Server 数据库...?
  • 如果你使用 WCF 将没有耦合。只要您不更改服务和数据合同(WSDL),您就可以在每次需要/需要时更改 Web 服务实现,您也可以用另一个数据库服务器替换 SQL Server。
  • 我认为 WCF 只能与 SQL Server 一起使用。感谢您的澄清。
  • 这不是解决问题的好办法。 OP 应该简单地创建一个 WCF 服务来访问数据,并根据需要公开 SOAP 端点和/或 REST。没有紧耦合。
  • 此外,这些服务不会自动公开任何数据!必须编写存储过程来执行操作,然后将存储过程作为合同的一部分。我根本不明白这是如何解决 OP 的问题的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多