2014-01-31 40 views
3

我在網上閱讀所有內容,你將你的「外部模式」從你的「內部模式」中分離出來,並且不要將「內部模式」暴露給任何外部參與者。BizTalk內部和外部模式

如果我的解決方案只能作爲一個消息總線來創建2個現有系統之間的鬆散耦合,我是否真的需要任何內部模式?

System A makes a Request(Message with SchemaA) to Biztalk 

Biztalk Maps SchemaA to SchemaB 

Biztalk forwards request of type SchemaB to SystemB 

SystemB returns ResponseB 

Biztalk maps ResponeB to ResponeA 

Biztalk routes the result back to System A 

我看不到具有內部架構和映射的親的:

SchemaA - > SchemaInternal - > SchemaB

回答

2

術語canonical schema通常用於描述在BizTalk等集成機制中創建內部架構(在上例中爲SchemaInternal)。

使用經典模式被廣泛認爲是一個best practice,因爲它能夠消除任何「其他」系統的架構您的BizTalk流量控制映射(其它系統在這裏可以是組織內部的或外部的,如供應商,客戶或合作伙伴系統)。這樣,如果任何通過BizTalk集成的系統發生更改,它只是外部模式,並映射到需要更改的規範模式。它還可以防止外部架構中固有的外部約定,命名和層次差異泄露到您的內部BizTalk文物中。

通常,傳入消息到規範模式的轉換儘可能早地完成,例如,在接收和類似的情況下,儘可能晚地進行標準化的轉換,例如,在發送端口映射上。

典型模式(CS)的一個常見場景是單個業務流程或消息流對於多個交易方而言是共同的(例如,您可能有許多供應商使用不同的系統,但他們都提交了處理髮票)。在這種情況下,每個新供應商系統都需要與您的CS集成 - 不需要添加或複製新的處理邏輯 - CS實際上可以減少此類情況下的總體工作量。 (詳細解釋n×m問題here)。 CS的重要性的另一個例子是您的業務是在哪裏切換消息 - 例如,醫療行業轉換將會有許多醫生和執業系統發送授權請求和發票,這些系統需要被映射併發送到多個醫療基金(醫療援助)系統。

而且FWIW:

  • IMO CS使在最有意義時的BizTalk處於EAI或ESB場景中,例如端到端解決方案直接整合2個或更多的業務系統。否則,如果BizTalk只是較大企業ESB上的一個端點,那麼使用公司ESB模式內部可能是有意義的,因此將外部模式直接映射到ESB模式(即不需要另一個一組CS在BizTalk中,假設您在企業中擁有良好的變更管理/版本控制機制)。
  • 如果您的行業存在標準模式(例如EDIFACT),那麼採用這些模式作爲內部CS是否是一個目標是沒有意義的。一般而言,這些可能與Canonical的含義相沖突,因爲「簡單」的原因在於,爲了對文檔的所有風味和「邊緣情況」進行建模,行業模式通常需要是冗長的。我個人會確保我有一個映射到/來自所述行業模式的映射,但會在內部使用自定義模式。
1

在描述的解決方案中,您不需要內部模式。那麼你可以從系統Y的用戶隱藏System X的模式,但這並不重要。

+0

從systemB中隱藏systemA中的模式?他們彼此不知道,唯一知道不同模式的人是他們之間的映射,還是我誤解了你的答案? – jonnep

+1

我的意思是,如果這種模式是一些超級祕密的東西,那麼你可以限制對接收位置和WCF服務的訪問。但我認爲這個建議是關於保持內部架構和邏輯與外部系統對象分開的。所以你會有內部的biztalk對象與外部系統無關,有變化的趨勢。在你的情況下,我會建議不要打擾一切:) –

1

在這種情況下,External = Public,意思是在組織外部。

該指南旨在保護內部實施細節,命名約定等等。

如果系統A和系統B都位於您的組織內部,那麼'安全'不是問題,但您的應用程序仍然可以向消費者提供'外部'模式,以保護它們免受應用程序內部更改的影響。

+0

我不知道如何內部的變化可能會影響任何東西,如果我有一個內部模式?我沒有依賴於模式的業務流程。如果SystemA或SystemB發生更改,我需要更改的唯一事情是部署新的映射?即使我有內部模式,這也是需要的嗎? – jonnep

+1

這很大程度上取決於可能/不可能發生的事情。你永遠不知道。我曾經有過一些場合,我們不得不在BizTalk應用中維護某種「狀態」,其他應用不知道也不關心。最簡單的是添加到「內部」模式。我也做了沒有「外部」模式的應用程序,也沒有問題。所以,你的里程可能有所不同。 –