2009-10-26 67 views
1

我們的業務涉及房屋,多年來我們已經創建了幾個業務對象來代表它們。我們還從外部收到大量數據,並將數據發送給外部消費者。它們中的每一個以不同的方式代表房子,我們花費大量的時間和精力將一種格式轉換成另一種格式。我正在尋找一些關於如何處理這種情況的一般模式或最佳實踐。如何編寫靈活,可擴展和快速的通用數據轉換器?背景:房屋通常具有30-40個屬性,例如大小,臥室數量,屋頂類型,建築材料,壁板材料等,這些屬性通常被表示爲鍵/值組。一個典型的翻譯問題是,一個供應商會將臥室的數量表示爲單個關鍵字/值對:NumBedrooms = 3,而不同的供應商每個臥室會有一個關鍵/值對:臥室=主臥室,臥室=小臥室,臥室=小。 翻譯沒什麼特別難的,但我們花了很多時間和精力編寫和測試翻譯。我怎樣才能優化這個?優化數據翻譯

感謝

(我的環境是.NET)

回答

2

開始的最佳位置是通過創建一個「內部表示」這是表示你的處理總是會。然後根據需要創建翻譯者「外部表示」。我想這就是你已經在做的事情,但應該提到完整性。優化來自於能夠有選擇地只在需要時寫入導入和導出。

一個好的實施策略是如果可以的話,將轉化外化。如果您可以將輸入和輸出獲取到XML文檔中,則可以在內部和外部表示之間編寫XSLT轉換。目標是能夠建立從輸入XML文檔到內部表示的轉換管道。如果所有內容都以XML表示,並使用通用協議(例如...... HMM ... HTTP),則可以使用配置來控制該進程。順便說一句 - 這實質上是Pipes and Filters的設計模式。

看看Yahoo pipes,Apache Cocoon,XML pipelineNetKernel的靈感。

0

我90年代的僱主面臨這個問題。正如D.Shawley所建議的那樣,我們有一個標準格式來轉換客戶的數據。

我進一步設計了一種簡單的格式描述語言,我們用那種語言描述了我們的標準格式,然後,對於一個新的數據集,我們也會寫出它的格式。然後一個程序將採取兩種描述並將數據從一種格式轉換爲另一種格式,並進行自動類型轉換,安全檢查等。(這對於其他一些操作也非常方便,而不僅僅是這些初始/最終轉換。)

這些細節可能不會幫助你 - 你有可能處理完全不同類型的數據。不過,你可能會從一般原則中獲利。 「數據定義語言」不一定是解析器和掃描儀的花哨的東西;你可以直接用IronPython中的數據結構來定義它。