項目很小,就是一個企業站的前后台,主要包括新聞模塊、產品模塊、視頻模塊、留言。沒有什么技術上的難點,大部分就是CRUD操作。開始之前評估開發時間為4天,實際coding時間為3天,debug時間為2天,關於debug時間較長的問題,后面有較為詳細的分析。
所用技術和工具
- Visual Studio 2012
- ASP.NET MVC 4
- Entify Framework 5
- Sqlite
- Uploadify
關於ASP.NET MVC 4
相比MVC 3,個人感覺並沒有太大的變化,也許是一些新特性沒有用到。
debug花費時間分析
除開沒有后台頁面等其他因素,自身原因分析如下:
拿到需求后沒有進行較為詳細的確認
雖然項目需求簡單,但有些地方開始時疏於溝通,最終所省掉的時間還是用在了debug上,甚至更多。
瀏覽器兼容性問題
僅在開發階段使用chrome瀏覽器,ie系也僅測試ie10,其余未考慮,后續在瀏覽器兼容性方面的調試花費了較多的時間。
例如如下的問題:
- ie7下jquery.validate報錯
將
this.attr("novalidate", "novalidate");
修改為:if (typeof (Worker) !== "undefined") { this.attr('novalidate', 'novalidate'); }
- ie7下ckeditor的dialog加載iframe窗口高度不正常問題
嘗試了很多網上的解決方案,均不管用,后來使用了一個非常規手段,就是給瀏覽器加上強制使用ie8模式的meta信息
- ie8下jquery.validate不起作用
版本匹配問題:經測試:jquery-1.8.2 with jquery.validate-1.9正常
uploadify控件使用不是很熟練
很多api需要現查官方文檔,而且官方站點還需翻牆。同時在集成uploadify到ckeditor里面的時候,也花費了較多的時間,主要是用在查官方文檔上面。這塊寫了較多的js代碼,在后續瀏覽器兼容性方面調試也比較麻煩。
- firefox下上傳文件出現http error 302
網上大部分的情況是firefox和chrome同時出現此問題,基本都是說session的原因,但我的環境chrome卻沒有出問題。我的解決方案比較簡單,就是對上傳文件的后台action取消授權檢查。應該還是跟session有關,更好的解決方案可查詢谷歌。
Entity Framework sqlite數據源適配問題
主要是開始無法新建sqlite數據源,ef的設計器總是報錯,無法通過數據庫更新實體等。另外sqlite中文模糊查詢問題。
- 設計器報錯問題
需要到sqlite官網下載合適的數據源驅動程序http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
- sqlite中文字符串模糊查詢問題
原來使用的方式:dbcontext.Post.Where(t=>t.Name.Contains(s)),對應的sql語句為charindex,改為:list = context.Database.SqlQuery(string.Format("select * from product where name like '%{0}%'",arcTitle)).AsQueryable();