2013-09-27 33 views
2

我們公司正在創建一個ASP.NET服務來接受從ERP系統(如Oracle)發送的XML數據。我們對Oracle沒有任何經驗(所有),所以請原諒這個問題的簡單性。將XML從Oracle發佈到WebAPI的

我在網上看到Oracle有一個名爲JDeveloper的工具,它可以使用DataContract/WSDL來相對容易地發送/接收數據,它可以是hook up to WCF Services

任何人都可以建議有關WebAPI的情況,沒有WSDL或DataContracts存在?在Oracle中創建POST以發送到WebAPI很簡單嗎,還是前者更好/更容易使用?

在此先感謝。

+0

您想將XML從您的服務中提取出來,對嗎? – tbone

+0

XML不在Oracle中,而是作爲計劃作業而不是「拉」操作。我想更多'推'。 – EvilDr

+0

推它在哪裏?爲什麼不在需要時將XML從您的服務中提取出來? – tbone

回答

2

這是很簡單的,直接從Oracle調用Web服務:

  1. 有很好的支持XML/XSLT/XQuery的的建設要求和解析響應(XML DB

  2. 甲骨文有API來處理HTTP/HTTPS請求(UTL_HTTP package)。

因此,如果您決定從Oracle調用Web服務 - 這對SOAP和REST Web服務來說可能並且相對簡單。
您可以在StackOverflow上的this answer找到示例代碼。

更新 - 答案在評論

要清楚,上面的例子並不在「數據庫查詢級別」工作,因爲它是在PL/SQL實現。 Oracle數據庫引擎本身融入了兩種不同的語言支持:

這兩件事情真的不一樣。即使存在a common questions about performance受SQL和PL/SQL引擎之間切換上下文的影響,主要是由於不正確的過程設計造成的。

作爲過程語言的PL/SQL可以訪問由Oracle提供的豐富的一組API,作爲一組built-in packages。除其他還有一些直接關係到網絡通信協議和標準套餐:UTL_TCPUTL_URLUTL_SMTPUTL_MAILUTL_INADDRUTL_HTTPHTPHTFDBMS_LDAP

需要說的是,有一組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_SCHEDULEDBMS_JOB程序包以定期啓動卸載過程。

這個系統包中的大部分都是用Java實現的,可以通過write your own Java extensions callable from PL/SQL

P.S.有一個UTL_DBWS包專門用於實現從Oracle數據庫調用SOAP服務,但似乎產生的問題多於解決問題,而我在11g文檔(僅限10g)中找不到它的參考。

P.P.S.有些陳述可能會有些不準確或含有誇張,但這應該足以瞭解整體情況。

+0

超級,謝謝。只是一個快速的; UTL_HTTP顯然發生在數據庫查詢級別,但是是否有可能在應用程序堆棧上創建更高的功能以實現相同的功能,還是可以在已經記錄的功能之上構建這種功能? – EvilDr

+1

@EvilDr我試着回答,但對於我來說不清楚你在找什麼可能性。因此,如果我錯過了觀點,請查看更新後的答案並完善一個問題。 – ThinkJet

+0

驚人的更新,謝謝。我們的軟件(ASP.NET)有兩種「接受」通過HTTP發送的數據的方式,即WebAPI或WCF(WSDL)。我們的客戶有責任改變他們的Oracle(等)實施方式,以利用我們選擇的方法。因此,我想要了解的基本點是,在Oracle中通過WebApi發送數據還是發送到WCF(WSDL)更簡單,還是沒有關係,因爲優秀的Oracle開發人員會對這兩者都感到滿意?我們只是試圖讓我們的客戶生活變得簡單。再次感謝,我非常感謝你的幫助。 – EvilDr