淺談快速開發框架的分層(WinForm)


對於B/S都是MVC好不好 不多說了,反正大家都這么用

這里簡單說下C/S

首先常用的幾種:

  • 模仿B/S的MVC  也有人稱之為 MVP  
  • 還有MVVM這種真心覺得夠夠的了,當然也有其優勢所在,這里不討論孰優孰劣
  • 。。。好吧剛吃過早飯腦子不想動,想不起來了,歡迎大神補充

分層的目的是為了實現高內聚低耦合,而我嘛就是想讓代碼好看一點……

如何分層才能夠比較快速地開發呢?好吧似乎兩者根本沒有任何關系

沒有嗎?有嗎?

可以說沒有,但實際上應該是多多少少有點的(咋感覺像莫須有的趕腳)

以我的MyRapid為例,說下我的分層

首先是WCF實現C/S分離,有人把C/S分開也算一種分層(呵呵)

這里要涉及到分層了,有的人在服務端分層,WCF作為Control 下面可能有BLL, BLL再下面還有一個DAL,這種情況個人認為就會影響開發速度了,團隊里面多個人同時在修改服務層,沒經歷過真心不知道有多痛苦,小心不能再小心了,每次修改一定要先更新到最新的,還要吆喝一下我改了哪個,有修改過的抓緊上傳,要不該沖突了

所以說分層還是和開發效率有關系的……

我的解決方案是WCF寫死,不動,WCF只有2個方法,讀、寫,最近增加了一個執行,其實用讀也可以實現,讀就是執行Sql並且返回數據表,寫就是執行但是不返回(也可以返回int),執行就是執行后不管了,有點異步的意思(整體感覺有點SqlHelper再次封裝的意思)

那么需要考慮的就是讀寫的參數問題了

這個時候先來一個前端UI,下面跟一個BLL,在下面一個DAL,DAL調用的不再是SqlHelper而是WCF(WCF數據源是不是就是這個思路?沒深入了解,嘿嘿)

這樣在一定程度上解決了團隊開發的版本沖突問題,當然也存在了業務邏輯暴露的危險,必定BLL、DAL都放在了  客戶端,在一定程度上犧牲了安全性,至於解決方案以后再說

再來說下DAL的優化,BLL個人沒有發現優化的可能,倒是發現不少毫無疑義的轉接,前面調用一個GET()  到了BLL   BLL啥也不干直接調DAL的GET()   也有優化空間,不過都是代碼生成器,實際上沒什么優化價值

直接說DAL的優化,DAL說白了就是傳Sql語句的,現在用EF的話都不怎么需要了,我的框架沒有用EF所以還是要說下(關於EF的優缺點歡迎百度,不多說了)

首先Sql的參數,有人喜歡拼接字符串,我是強烈反對的,參數化查詢的優點可以直接百度

如果使用參數化查詢這里涉及到一個空參數的問題,我的解決方案是

WHERE 1 = 1

AND ISNULL(A.Page_Name,'') LIKE '%'+ ISNULL(@cPage_Name,ISNULL(A.Page_Name,'')) +'%'

可以看出如果是空的化會過濾掉,當然缺點也是有的,就是會多過濾一次篩選   可能會導致查詢速度下降,再實際測試時候沒有發現問題,上百萬級時沒試過(待會試試)

代碼也更好看了   再VS里面是紅彤彤的一大塊  沒有  sb.Append什么的

然后就可以將實體用反射傳參過來了

基本就是這些  歡迎大神補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM