2009-02-24 29 views
2

假設一家公司正在構建一個全新的應用程序。該應用程序遵循DDD原則。 舊的代碼庫有很多產品(或公司的另一個「實體」),他們想要轉換爲新的代碼庫。如何將舊數據轉換爲新系統?使用SQL或託管代碼?

這項工作應該如何完成?通常,使用例如ssis進行導入會更快,更容易 - 從一個數據庫傳輸到另一個數據庫。但這裏的主要問題是,很多BusinessRules(在DomainLayer中的託管代碼中實現)被跳過... 如果develeoper說:「我控制它,這些規則被複製爲sql腳本。 ..「

我們是否應該將託管代碼庫導入到SQL Server中(至少在.NET和MS SQL Server中這是可能的)? 或者我們應該在託管代碼中創建一個導入腳本,以便在實體保存在數據庫中時遍歷域中的所有圖層?...(可能需要很多小時..)

您的想法是什麼?

回答

1

我建議你在.NET中編寫一個小小的導入應用程序,您可以在其中應用業務規則。由於這個任務(至少我認爲是這樣)只能運行一次(或兩次)),速度並不重要 - 爲了加快速度 - 如果可能的話,將其設計爲多線程。

不,它不夠好 - 如果有人說「我有它在控制之下」 - 這是一個熱門詞彙,我所有的警鐘都響了。一些細節將永遠被遺忘,這大多是一個小災難;)

+0

tnx爲答案。我同意你的看法,但是我發現人們/開發人員爲了這些目的而開始使用ssis,而不是考慮所有複雜的業務規則......(規則當進口轉換項目開始時不存在某些人,但稍後添加在一個並行項目中..) – ThorHalvor 2009-02-24 14:37:00

0

這兩個選項並不相互排斥。 SQL Server可以使用Web服務。您可以將您的導入服務創建爲Web服務,然後從SQL Server調用它。當然,你甚至可以用SSIS來做到這一點。

0

就像聯盟中的很多其他問題一樣(這是最好的方法,這是選擇哪種語言,ORM與否)如果不知道舊應用程序的細節,新的答案很難回答應用程序,數據模型(關係和OO)....或簡單:仔細分析您的任務,然後選擇您的工具。

  • 將新的應用程序是建立在新關係層的頂部,它也擁有新的域層或將提及的領域層留?
  • 我們在談論什麼樣的業務規則和多少業務規則?
  • ...?

不知道太多這一切,我會說:新的應用程序必須遵循舊的業務規則以及新的關係層必須爲域設計。開發人員應該知道業務和域規則,(sql-)腳本應該是一個可行的方法。

相關問題