3

我很好奇其他商店在基礎應用框架方面正在做些什麼?我將應用程序框架看作是能夠提供額外的或擴展的功能來提高從中構建的應用程序的質量。應用程序框架 - 購買,構建還是同化?

有很多開箱即用的框架,比如Spring(或Spring.NET)等等。我發現這些問題最大的問題是他們不是單點菜單。基本上,他們有太多的功能,除非每一項功能都是最好的實現,否則很可能你最終會使用多個框架拼湊來完成這些任務 - 導致膨脹和混亂。我認爲這適用於免費和商業系統。

當然,寫作主要是重新發明輪子。不過,我認爲這不是沒有道理的,因爲它提供了最可定製的選項。但是,有些事情太大而無法開發,而且由於猶豫承擔了開發的前期成本,在這種情況下似乎執行不力或根本沒有實施。

有許多開源項目可以解決可能的應用程序框架的各個部分。這些可以通過或同化(顯然取決於許可協議),以幫助框架在來自不同來源的綜合框架中。

我們通過在整個企業中查看應用程序中的一些較大的問題來處理這種情況,並提出了一系列有效的橫切關注點和反覆出現的實施問題。最後,我們想出了部分開源的混合解決方案,部分基於現有的開源選項,並部分定製開發。

的事情是在我們的框架是一些例子:

  • 異常和事件記錄供應商。一個簡單而統一的方法,通過它,每個應用程序都可以用最少的編碼工作以相同的方式記錄異常和事件。開箱即用,它可以登錄到SQL Server,文本文件,事件查看器等。它還包含可擴展點以記錄到其他來源。
  • 變量賦值強制執行。使用受JUnit啓發的語法,基於對象類型公開擴展方法的泛型類。例如,要確定myObject是否不爲null,我們可以做一個簡單的Enforce.That(myObject).IsNotNull();或通過執行一個簡單的Enforce.That(myObject).IsOfType(typeof(Hashtable))來確定它是否是特定類型;執法失敗會引發相應的例外,既減少了代碼量,又保證了實現的一致性。
  • 單元測試助手。一系列基於反射的類,可以自動測試類和它們的屬性。 (受CodePlex的Automatic Class Tester啓發),但從頭開始編寫。有助於簡化傳統上難以測試或耗時測試的單元測試的創建。

我們也完全採用了一些其他功能,就像。例如,我們對AOP使用PostSharp,對嘲笑使用moq,對DI使用autofaq

只是想知道其他人可能做了什麼以及關於您的框架的問題,解決了您沒有找到滿意的工具?至於我們的經驗,我們肯定會從新框架中獲益,並且滿足於我們所採取的方法。

回答

1

我們的方法是投入建築師的整個團隊(即「Technical Architects」)爲:

  • 無論是調整現有的開源框架,在某些情況下,它們封裝在一個內部的API,以能夠在需要時更改框架
  • 或根據特定需求創建新框架,爲幾個項目找到了幾個團隊。

不管是什麼方式,這些框架需要被很好的記錄(至少有一個完整的public API),並釋放他們需要得到很好的廣告:
由於所有隊伍將根據這些框架他們的工作,他們需要儘快升級他們的框架版本,以建立他們自己的交付。

+0

這與我們正在做的和我們的要求非常相似。唯一的區別是我是擔任這項任務的技術人員的「團隊」。 ;-) – 2008-12-07 20:14:14

1

我的簡單建議是您使用的框架適合您的需求。當然,爲了做到這一點,你必須事先試驗並知道你在找什麼。即使框架的配置比你需要的要多得多,這個成本是多少?對於平均的問題,成本只是一個jar中的少量多餘的Mbs,我認爲大多數項目都可以。最後,您應該選擇一個能夠正確執行工作的框架,以便您專注於提供用戶價值並簡化開發人員的維護工作。當然,沒有一個解決所有人問題的框架,但是有一些框架在他們所追求的目標上達到了最佳狀態。這是一個妥協最好的問題。

+0

沒錯。這就是爲什麼我們採取了儘可能多的方式尋找難題並圍繞它們構建的方法。 – 2008-12-07 15:20:12