我很好奇其他商店在基礎應用框架方面正在做些什麼?我將應用程序框架看作是能夠提供額外的或擴展的功能來提高從中構建的應用程序的質量。應用程序框架 - 購買,構建還是同化?
有很多開箱即用的框架,比如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。
只是想知道其他人可能做了什麼以及關於您的框架的問題,解決了您沒有找到滿意的工具?至於我們的經驗,我們肯定會從新框架中獲益,並且滿足於我們所採取的方法。
這與我們正在做的和我們的要求非常相似。唯一的區別是我是擔任這項任務的技術人員的「團隊」。 ;-) – 2008-12-07 20:14:14