XAF優缺點介紹
一、一次編碼,多種平台同時使用
通過一次代碼編碼寫,可以同時產生四種項目:
1,Web項目(b/s)
2,win項目(c/s)
3,平板電腦(beta)
4,移動端(beta)
其中web/win是兩個項目,3,4都是web項目,只是使用了不同的適應界面可以在移動設備和平板電腦上進行浏覽操作等。
在Sliverlight剛出現的一段時間內,XAF曾試圖支持Silverlight版本,不過由於HTML5的興起,微軟至今應該把Sliverlight放到角落裡了,所以也導致了Dev公司不支持Sliverlight了。不過他們有些Sliverlight的控件。
WPF也算是不死不活的狀態,至少我看到的應用很少。VS除外,那是MS自己的東西:D
sliverlight如果沒有HTML5的出現,是個不錯的東西,太可惜了,HTML5的興起,又將我們拉回該死的javascript開發中來了。
二、數據庫支持
這應該是XPO的優點,支持14種數據庫,SqlServer,Oracle,MySql,DB2.....常見的庫都支持了。切換數據庫時,無需修改源碼,當然如果你開始用了Oracle並且手工調用了SQL語句,在sqlserver中肯定是不能正確執行的。
支持Entity Framework,雖然我不用這個,但是DEV還是支持了,可能是因為M$太強的原因吧。
三、國際化本地化支持
XAF支持多國語言版本,應用程序開發完成後,可以在應用程序模型中生成各種語言的本地化翻譯文件,這也算是高大上的支持了吧。
四、自動機制
•由領域對象開始 •自動建立數據庫 •自動建立界面 ▫列表界面 ▫詳細界面 ▫搜索界面 •內置增刪改查,無需SQL編程 五、AOP應用 AOP是面向方面的應用,XAF中被應用到了極致,比如,系統內置的 保存按鈕,無論你有多少個業務對象,只要這一個保存按鈕,它們的行為是一致的,都是保存到數據庫的表中去,如果你需要修改保存按鈕的文字,只要在一個地方修改,整個系統中都變了。 模塊化應用: 假如我們開發一個Excel數據導入功能,同樣,我們可以應用於所有業務對象中去,做一次導入功能,所有地方立即使用。XAF內置了非常豐富的元數據,我們可以使來用。 控件的復用: 系統中有很多地方需要用到一個控件,比如時間選擇,XAF默認沒有這些控件時,我們可以開發出來,並可以設置為默認控件,例如應用到Timespan類型上去,只需一步,整個系統都會應用此控件。 XAF中有許多這樣的自動機制,能一次解決的,堅決不用做兩次,拒決重復,拒決復制。 六、元數據管理 元數據是指我們的程序中代碼自身的信息,比如類叫什麼名字,它繼承自哪個類,實現了哪些接口,有哪些Attribute,有哪些屬性? 是在,在.net中,用反射可以取得到這些信息。在信息系統開發中,這個元數據會得到擴展,比如這個類將會在界面上顯示的文字是什麼,填寫數據時有哪些要求,過濾條件是什麼等等 。 你會說,這不就是我們自己寫的代碼嗎? 在XAF中這些信息也是需要維護的,我們在給客戶寫程序時是在幫助客戶管理他們的信息。他們是信息化水平提高了。但我們自己的代碼,自己的系統本身也是一個信息量龐大的需要管理的內容。我們如果不是處處考慮規劃程序本身的內容,那後面亂做一團也是很正常的事情了。 看面向對象的軟件設計中,不正是使用了各種概念對這些內容進行了規劃嗎? 於是有了一個名詞叫元編程,也是讓人著迷的東西。 那麼元數據管理有什麼用呢?它還是和AOP概念結合使用方顯功效的。 比如:我想讓所有擁有“名稱”屬性的類型,都在界面顯示為紅色,我們可以使用編程方式foreach(var x in classes) { if(x.members.contains('名稱')){ var member = x.members["名稱"]; member.backColor = Color.Red; } }
這只是一段偽代碼,如果用傳統的開發方式,每個界面這樣操作一次,可能會產生很多錯誤吧,最大的問題是,我們需要那麼笨的處理日常問題嗎? 我們為什麼沒有簡單方法,節省出時間,不做那種無聊的修改呢? 另外,元數據也是可以擴展的,內置的沒有提供的,我們可以自己實現。 七、DomainComponents技術 通常被XAF開發人員簡稱為DC技術,DC技術是使用接口定義業務邏輯對象的,在EF中,我們通常是用class來定義一個業務對象,使用接口來定義業務邏輯會更快更簡捷,我認為最大的一個好處是實現了多繼承,如:
public interface 客戶{ ...... } public interface 公司{ } public interface 個人{ } public interface 公司客戶:公司,客戶 { } public interface 個人客戶:個人,客戶 { }
這樣是多麼簡單,如果使用class,只支持單繼承,另一個接口中的內容,只能手工再次重復敲出代碼,那是多麼無聊的事情。 有一點小小遺憾的是,DC技術還不支持泛型機制,如果以後能夠支持,那它是完美的。在一個進銷存系統中,單據無比多,但無非是出庫類,入庫類,不出不入庫類,這三種,然後就有了各種可以想出來的組合,組合出了N多張單據,我們若是使用了DC技術,天空瞬間晴朗了。 八、內置功能模塊 一、權限模塊: 1.支持業務對象級別的權限,增刪改查看權限。 2.支持字段級權限,某個字段可讀可寫。 3.支持行級權限,某個業務對象中某些條件的記錄是否有權限進行 刪 、改、查看 4.支持上述4種混合權限 5.支持角色,並支持角色嵌套,即,角色3=角色2+角色1 二、審記模塊 用於實現業務對象的變更的每個環境,創建時間、修改時間、刪除時間,修改內容,每個屬性從什麼值變更為什麼值,何人操作的。 生成的記錄相當多,不過可以選擇性記錄,或自定義。 三、 Business Class Library Customization Module 業務對象支持