将 XML 从 Oracle 发布到 WebAPI
Posted
技术标签:
【中文标题】将 XML 从 Oracle 发布到 WebAPI【英文标题】:POSTing XML from Oracle to WebAPI's 【发布时间】:2013-09-27 14:05:21 【问题描述】:我们公司正在创建一个 ASP.NET 服务来接受从 Oracle 等 ERP 系统发送的 XML 数据。我们(根本没有)使用 Oracle 的经验,所以请原谅这个问题的简单性。
我在网上看到 Oracle 有一个名为 JDeveloper 的工具,它可以hook up to WCF Services 使用 DataContract/WSDL 相对轻松地发送/接收数据。
任何人都可以就没有 WSDL 或 DataContracts 的 WebAPI 的情况提出建议吗?在 Oracle 中制作 POST 以发送到 WebAPI 是否简单,还是前一个选项更好/更容易使用?
提前致谢。
【问题讨论】:
您想从 Oracle(从您的服务)中提取 XML,对吗? XML 来自 Oracle,而是作为计划作业而不是“拉”操作。我猜是更多的“推动”。 把它推到哪里?为什么不在需要时将 XML 从您的服务中提取出来? 因为它需要跨来自不同公司的许多不同模式工作,这些模式可能都不同。因此,通过指定 XML 模式,我们可以保证满足某些规则并避免与内部 IT 障碍相关的复杂情况。 定义模式很好,我只是说不要通过尝试从 Oracle 推送 XML 来提供 XML。您应该有一个服务层来提取数据(可能来自许多数据库实例),格式化正确的 XML,并使其可用于应用层。 【参考方案1】:直接从 Oracle 调用 Web 服务很简单:
很好地支持 XML/XSLT/XQuery 来构造请求和解析响应 (XML DB)
Oracle 有一个 API 可以处理 HTTP/HTTPS 请求 (UTL_HTTP
package)。
因此,如果您决定从 Oracle 调用 Web 服务 - SOAP 和 REST Web 服务是可能的,而且相对简单。 您可以在 *** 上的 this answer 中找到示例代码。
更新 - 评论回复
为了清楚起见,上面的示例不适用于“数据库查询级别”,因为它是在 PL/SQL 上实现的。 Oracle 数据库引擎原生支持两种不同的语言:
传统的SQL,即ANSI SQL标准实现(traditionally with some incompatibilities and extensions); PL/SQL,这是一种与传统 SQL 紧密集成的过程编程语言。这两件事确实不同。甚至还有a common questions about performance受到SQL和PL/SQL引擎之间切换上下文的影响,而且大多是由于程序设计不当造成的。
PL/SQL 作为一种过程语言可以访问一组丰富的 API,由 Oracle 作为一组built-in packages 提供。其中有许多与网络通信协议和标准直接相关的包:UTL_TCP
、UTL_URL
、UTL_SMTP
、UTL_MAIL
、UTL_INADDR
、UTL_HTTP
、HTP
、HTF
、@ 987654343@。
需要说明的是,有一组 API 用于支持在 Web 上发布 PL/SQL 代码。一组OWA_
xxxx 包supports access through mod_plsql
。另一件事是a support for publishing SOAP web services in Oracle XML DB。
如果您需要按计划将数据从 Oracle 卸载到 Web 服务,请查看 DBMS_SCHEDULE
和 DBMS_JOB
包以定期启动卸载过程。
这个系统的大部分包都是在 Java 上实现的,write your own Java extensions callable from PL/SQL 是可能的。
附:有一个 UTL_DBWS
包专门用于实现从 Oracle 数据库调用 SOAP 服务,但似乎它产生的问题多于解决的问题,我在 11g 文档(仅限 10g)中找不到对它的引用。
P.P.S.有些陈述可能有点不准确或有些夸大其词,但这足以理解整体情况。
【讨论】:
超级,谢谢。只是一个快速的; UTL_HTTP 显然发生在数据库查询级别,但是是否可以在应用程序堆栈更高的位置创建功能以实现相同的功能,或者这是否会建立在您已经注意到的功能之上? @EvilDr 我试图回答,但对我来说不清楚你在寻找什么可能性。因此,如果我没有抓住重点,请查看更新的答案并完善问题。 惊人的更新,谢谢。我们的软件 (ASP.NET) 有两种“接受”通过 HTTP 发送的数据的方式,即 WebAPI 或 WCF (WSDL)。我们的客户有责任更改他们的 Oracle(等)实施以利用我们选择的方法。因此,我试图理解的基本点是,在 Oracle 中通过 WebApi 还是通过 WCF (WSDL) 发送数据是否更简单,或者因为优秀的 Oracle 开发人员会接受其中任何一个而这无关紧要?我们只是想让我们的客户的生活变得简单。再次感谢,非常感谢您的帮助。 @EvilDr 是一样的,但是避免在 WebAPI 接口中使用JSON serialization,因为 Oracle 中没有对这种数据格式的原生支持。 优秀。一组很棒的回复,真的很有帮助。谢谢:-)以上是关于将 XML 从 Oracle 发布到 WebAPI的主要内容,如果未能解决你的问题,请参考以下文章
从 WebAPI 调用的正文中读取 XML 内容在开始时被中断
将 XML 文档从 SQL SERVER 插入到 Oracle
如何将 xml 文件从 Internet 直接导入 Oracle 表