文章出處

好多技術人員都有一個通病,不關注用戶的需求,產品的可用性,只看使用的技術的新不新,潮不潮,這就是所謂的技術發燒友。

這段時間,斷斷續續的開發一個WPF的軟件,也拿出來Show一下。要不放在硬盤里就發霉了。

熱點一:SOA的分布式理念

  現在的開發理念,不管是企業級的ERP,還是網站式的應用,都涉及到了SOA的分布式。就拿一個比較典型的網站來說吧,做網站的童鞋們對CAS,SSO這些關鍵字并不陌生吧,實質就是應用了SOA的理念,把一個網站平臺的認證授權單獨抽取出來獨立成一個系統,其它業務網站的認證授權都以這個為基礎,實現了單點的登錄,授權。其實在企業級的ERP中,我們也是這么干的,我們把認證授權提取成一個獨立的基礎平臺(這個甚而平臺有可能包括:公共基礎數據系統,消息系統,工作流,報表)的一個子系統,其它業務系統都圍繞著這個基礎平臺進行開發。如下圖所示,把每個業務系統的權限都提取出來,放在基礎平臺。

 

因為這是一個基礎開發平臺,所以必須為別的應用程序留下服務接口,方便的與別的應用程序通信,實現其軟件的價值。

熱點二:WCF的安全機制(攔截器)

我們把通用的功能都提取出來組成了一個基礎開發平臺,以后的業務系統都只關心業務固然是好。不過有點烏托邦了。你想想,業務系統與基礎系統怎樣通信?怎和樣保證通信的安全,這個問題曾經困擾了我好久。系統之間的通信,大家不約而同的可能都想到了Web Service或者WCF吧,不過怎樣保證Web Service,WCF的安全呢?我還看到過有人用javascript來調用web Service(Web Service做的是CRUD的操作),這是把自己的衣服脫了赤裸裸的讓別人來攻擊,給我嚇出了一身冷汗呀!

那我們怎樣來保證Web Service 或者WCF的安全呢?最笨的方法可以為每個WCF或者Web Service定義兩個參數(一個用戶名,一個加密碼的密碼), 或者再改進一下定義一個Token的參數(這個方法我這樣做過,鄙視自己一下),有的為了代碼看起來更優雅一些,在請求服務時把這個Token寫在Header里。然后在執行Web Service 或者  WCF的主體之前,根據傳過來的參數在數據庫里查詢一下,判斷這個請求是否有權限。不過一些中大型的系統,一般都會有上百甚至幾千個Web Service,每個服務都定義一個參數,或者在Header里定義一個鍵值對,是不是顯得代碼很臃腫呢?我們針對這樣的問題,我們采用WCF特別的機制攔截器。 WCF中的攔截器其實就是AOP的一個實現,當然這個實現我們也可以自己來寫。

 

在調用每個Web Service或者WCF之前,我都加一個Token在Header里,這個動作,我們完全可以公用,就是采用AOP技術。

在公共基礎平臺接收到請求的時候,同樣可以用AOP的技術,判斷Token是否有效。具全實現看源碼。

熱點三:WPF

在bs結構的系統中,HTML5的UI比較有前景,在cs結構的UI中,我想WPF應該有她獨特的優勢,在這兒我們暫時不討論平臺的好壞,技術優劣。且看我怎樣用WPF來實現一個軟件的UI。

1)個性化的菜單:

2)炫耀的表單驗證

3)自定義,動態生成xaml的模板

4)目前正在用mvvmlight改寫原有的代碼。

這些亮點都不得不讓我用WPF,這是一個技術愛好者的執著追求,是我的理念。

熱點四:Code First

我們什么SOA, AOP, IOC等熱點技術都用上了,千萬不要拉下了ORM,ORM有Ibatis, hibernate,daper等,但是從性能,可使用性上來說各有千秋,沒有優劣,但是我感覺在.net平臺上,只有entity framework才是真正的可用orm。entity framework有三種模式,mode first, database first, code first。我為什么在這個項目中選擇code first是有原因的。因為我定義的實體,既想作為生成數據庫的定義,又想作為WCF中數據傳輸的數據契約。往往單方面從一個技術角度來看并不難,但是技術與技術疊加,就會出現很多稀奇的問題。我上一段代碼片段:

其中紅色的是WCF數據契約的標識,藍色的是Code First的數據定義。把這兩種定義都集中在Model上,減少了業務層代碼,業務層重點放在了處理業務上。

 

總結:

此軟件在用戶操作體驗,代碼結構上都有待改進的地方,在上文的介紹中,你對某個東西感興趣可以在博客園發短消息聯系我,一起探討,共同進步。

如果想獲取源碼,可以請我喝一杯,畢竟辛苦了好久,支持我一下。^_^  源碼下載

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()