2009-12-24 49 views
7

讓我們想象一下,我開始開發一個項目。所以我必須認真關心未來更改ORM的可能性嗎?開發人員是否應該關心將來更改ORM的可能性?

或者更準確地說:

  1. 你想改變你在當前項目中使用的一些不同的一個ORM。如果是的話,原因是什麼?
  2. 你有沒有這樣做過?如果是這樣,原因是什麼?

說實話,我在考慮是否值得投入大量精力試圖開發ORM不可知的解決方案。

+0

對我而言,「寶貴」=如果遷移到另一個ORM的概率是10%,從頭開始遷移的成本(即如果項目的開發沒有關心遷移的可能性)是C,高達C * 10%的努力透明移民支持。 – 2009-12-24 06:26:27

+0

ORM代表什麼? – 2009-12-24 06:26:47

+0

對象關係映射器。 – 2009-12-24 06:28:01

回答

4

在項目過程中更改ORM的機率相當低。最後,您爲確保切換ORM所做的任何努力都有可能被浪費掉。您必須權衡改變ORM的輕微可能性,而不是額外的努力來改變ORM。

回答您的問題:

  1. 沒有
  2. 通常你會改變你的ORM,如果有一些實質性的需求沒有被你所使用的工具滿足。我無法真正想到任何有意義的例子 - 通常你可以解決這些問題。

在一天結束時,我會確保我選擇一個適合我的ORM(不能像NHibernate那樣真的出錯)並確保你的代碼是鬆散耦合的,這應該確保你的數據訪問代碼是孤立的。這不僅從可維護性角度來看,而且對於可測試性來說都是很好的。

+0

這取決於你如何定義「項目」和你的項目進行了多久。我認爲對於一些項目(永遠持續下去),這是非常可能的。 – GrayWizardx 2009-12-24 06:53:09

3

是的,我認爲你應該關心它,到什麼程度是一個完全主觀的問題。應該考慮應用程序的所有層次,特別是如果您認爲您的代碼將在相當長的時間內到位,或者如果您認爲應用程序將有顯着增長。

至於你的具體問題:

  1. 我有使用各種不同的存儲系統和框架來管理數據,如果有其中一個一致的策略,這將是很好的幾個項目,但我們的工作我們有時間完成。我對與我合作的團隊的一般指導是選擇一個ORM 只有,如果它對項目有意義並且提供抽象以便使用方便。一般來說,我更喜歡NHibernate(我有更多的經驗),但有很多好的解決方案可用
  2. 是的,我曾參與過至少兩個項目,我們的唯一目的是刪除現有的第三方組件包括ORM框架)並用其他組件替換它們。在一個案例中,我們從一個自制的ORM遷移到NHibernate,另一個我們從第三方ORM轉移到客戶要求我們爲他們設計的一個。這兩個項目都很複雜,涉及很多應用程序沒有正確處理的更改。其中一些(不是全部)可以歸因於代碼與其數據存儲策略緊密結合的事實。
+0

關於2 - 遷移到另一個ORM並不是您所描述的重構的主要原因,也就是說,有更重要的問題最終導致決定對項目項目進行如此重大的重構(通常幾乎所有組件都會改變= =完全重寫它)? – 2009-12-24 06:43:57

+0

其實DAL是重構一個項目的重要原因。有問題的客戶試圖將他們的應用程序放入比以前更有針對性的大型企業(即企業而不是SMB),並且客戶的要求是某些與數據庫相關的策略已到位,而DAL處理得不好。特別是允許運行SP而不是直接查詢等等。這些(當時)是他們選擇的ORM的主要限制。 – GrayWizardx 2009-12-24 06:52:20

+0

謝謝 - 同意,DAL是非常重要的部分。即那裏的問題可能容易導致重大的重構。 – 2009-12-24 07:03:55

相關問題