2013-08-06 29 views
0

我試圖定義一個分佈式平臺我工作,這是基於以下架構規範數據模型:如何在分佈式平臺中設計規範數據模型?

  • 一個RESTful API的外觀,功能暴露給客戶
  • 底層中間件,基於Apache駱駝和用於路由和轉換客戶端請求由中間件

的想法是讓立面層翻譯傳入的請求調用我

  • REST風格的商務服務n要公共信息模型,其具有與報頭和有效載荷的自定義消息的形式:

    • 標題應包含由中間件(Apache的駱駝)所需的信息,以將消息路由到所請求的工作流程(所以基本上façade知道應該調用哪個業務流程來處理來自客戶端的每個傳入請求)。它可以被建模爲一個枚舉映射或作爲代表自定義消息的類的一組屬性。
    • 有效負載應該包含一個適當的Java bean,代表傳入請求的「業務模型」(例如TicketOrder或Customer對象)。它可以在代表自定義消息的類中作爲Object屬性建模,並且管理該消息的工作流中涉及的Camel的所有處理器/轉換器都應該期待該有效負載類型(選定的Java bean)。

    簡而言之,我試圖爲中間件定義一個業務數據模型,該模型僅包含Camel處理傳入請求並將它們路由到業務服務所需的相關信息。這些數據被建模爲一個Java bean,並作爲一個有效載荷附加到消息中,消息的頭部包含對Camel有意義的路由細節。

    你會如何改進上述解決方案?你會說這是一個好方法,足夠靈活嗎?非常感謝你。

  • 回答

    0

    如果你使用駱駝作爲(輕量級)ESB,我認爲沒有太多的事情需要擔心。在駱駝路線內部,您可以保持最適合的格式,甚至可以爲某些解決方案並行運行多個格式(例如,您可以使用Java Bean來完成某些業務邏輯,但也可以使用XSTL將消息轉換爲XML和XPath以獲得更好的解耦,並執行一些CBR處理)。

    如果您需要使用Java Bean模型工作很多,我建議您創建一個項目,以便從JSON中提取模型,以便可以控制此版本(例如Maven)工件,這可能是Java應用程序的規範模型(如果JSON請求發生更改,您需要更新此項目)。創建Java數據模型項目並使用OSGi容器將爲您提供更多解耦的好處,因爲OSGi可以爲不同的應用程序使用不同版本的模型。

    Regards, Luan

    +0

    感謝您的回覆。我的確在使用Camel作爲「輕量級ESB」,並且這個想法遲早會變成一個完整的SOA平臺。我知道Camel足夠靈活,可以讓我使用不同的數據格式,實際上它是一個集成框架。我的問題需要更「實用」的答案,那就是:建議的模型是否適合使用?我應該使用地圖,對象(例如,Java bean作爲DTO)還是其他一些方法(以JSON等形式表示的自定義有效內容)?基本上我需要對提議的設計進行一些驗證,以及替代方案:)非常感謝! –