簡體   English   中英

將混合/Web 客戶端應用程序與由一組 WSDL 描述的現有遠程 Web 服務連接起來

[英]Interfacing a hybrid/web client application with existing remote web services described by a set of WSDL

簡而言之這個問題

我必須集成一個可能基於 Ionic 的移動混合應用程序,並且必須(間接)使用許多 SOAP Web 服務。 我希望移動應用程序 Typescript 客戶端了解由描述 Web 服務的 XSD 和 WSDL 文件定義的 bean。

一些額外的解釋

在以下說明中,我將參考解決方案中的以下對象:

  • 移動應用 Typescript 客戶端 [A]
  • 移動專用服務器端 Java 應用程序 [B]
  • 公開業務功能的遠程 SOAP Web 服務 [C]

以下限制生效:

  • 移動應用程序客戶端 [A] 將通過 REST 調用與專用服務器端應用程序進行通信 [B]
  • 專用服務器端應用程序 [B] 將使用 Java 開發專用服務器端應用程序 [B] 將負責使用現有的 Web 服務 [C],因此充當 Typescript 應用程序客戶端之間的集成層 [A]和 SOAP 網絡服務 [C]
  • SOAP Web 服務 [C] 由許多 WSDL 文件描述,由一些 XSD 文件支持,后端團隊不願意將他們的文檔重寫為 WSDL 和 XSD 以外的任何內容

假設 Web 服務 [C] 使用的一些請求和響應涉及以下 Java 對象

public class MyElement {
    private ElementColor color;
}

其中 ElementColor 是一個 Java 枚舉,例如

public enum ElementColor {
    RED,
    GREEN,
    BLUE,
}

這些 Java 對象在 WSDL 和 XSD 文件中定義,因此我們可以構建一個 JAR 文件,將其導入服務器端應用程序 [B],因此我們的服務器端應用程序 [B] 將知道可能的值“顏色”屬性可以在 MyElement 類中使用。 都好。

我的問題是 Typescript 移動客戶端 [A] 不導入 JAR 文件(顯然),因此當客戶端開發人員必須編寫請求或解析涉及 MyElement 對象的響應時,他要么

  • 將“顏色”字段視為字符串(但他可以向其中寫入任何值,而不僅僅是有效的“紅色”、“綠色”和“藍色”值)
  • 定義一個模仿 ElementColor Java 枚舉的 Typescript 枚舉。

第二個選項更簡潔,但仍然沒有與 WSDL 和 XSD 文件中定義的實際模型緊密相關,即客戶端開發人員仍然可以在他的 Typescript 枚舉中添加一個“黃色”值並將其發送到后端。

我想在我的 Typescript 代碼庫中自動導入/繼承由 WSDL 和 XSD 文件定義的模型,或者從這些相同的 WSDL 和 XSD 文件生成的 Java 類的 Typescript 映射。 請注意,在運行時檢索這些對象是不夠的(我可以編寫一個轉儲它們的服務),因為客戶端開發人員在開發時仍然無法看到它們。

預先感謝您的幫助。

到目前為止,我發現解決這個問題的最佳方法是利用類似 typescript generator plugin 的東西,它將 Java 類轉換為 Typescript 類。

為了將 WSDL 和 XSD 文件轉換為 Java 代碼,我已經有了一個使用 cxf codegen 插件的 Maven pom,我只需要將 typescript 生成器插件執行添加到進程中,以便將 Java 文件依次轉換為 Typescript 文件. 然后,我可以在我的混合應用程序項目中導入 Typescript 定義文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM