天天看點

WinForms開發人員的WebForms開發總結。

作者:黃啟清(www.cnblogs.com/happyqq)

個人網站:http://mama520.cn

日期:2008-11-20

寫這篇文章,我感覺确實有點是班門弄斧的感覺。(WEB開發人員可以略過)

我這個一直以來都很專注WinForms開發的人一下子跑WebForms開發了,說實話,我除了在網絡安全研究方面時去看看WEB程式,還真沒開發過什麼大型WEB項目。^_^

好了,接下來,我就聊聊WinForms開發人員如何快速地進入到WebForms開發當中去——這也是我寫這篇文章的目的所在。

(備注:文章中所介紹的内容與開發語言以及開發工具無關。)

在開發WebForms之前,WinForms開發人員必須

  1. 了解WEB應用程式的原理。(當使用者浏覽我們的應用程式時,浏覽器首先向Web伺服器送出請求,Web伺服器對請求做出響應,将響應資料發送給用戶端浏覽器,通常是一個HTML檔案,然後通過浏覽器把HTML檔案資訊顯示在螢幕上。這是最基本的網絡應用原理。詳細請參考http://book.51cto.com/art/200809/89317.htm))
  2. 了解常用的Browser(IE,FireFox)
  3. 了解HTML、JavaScript。
  4. 了解IIS,或者其他WEB伺服器的簡單配置。

系統設計總結:

  • 1、抽取WinForms應用的公共類,比如SQLhelper。
  • 2、抽取WinForms應用的相關Business層。其中包括SourceCode以及資料庫層次部分Business部分,
  • 3、由于WinForms開發人員,對WebForms開發經驗不是很足,可以先從OpenSource社群,如SourceForge,CodePlex等下載下傳相關參考項目,以便快速應用到項目當中去。
  • 4、安全方面的考慮。
    • 保證資料庫安全(不允許在WEB應用程式中使用SA(root權限)使用者登陸,就算是在WinForms應用程式當中,這種錯誤也是不允許犯的。)
    • 保證資料庫連接配接字串的安全(可以采用加密方式存儲)
    • 登陸安全(可以采用驗證碼方式,我們這次WEB項目的開發中在登陸安全這方面,讨論了三種方式)
      • 1、使用者名,密碼,驗證碼(項目中采用了此方式,并且驗證碼是很難OCR的那種)
      • 2、使用者名,密碼,郵件發送碼(使用者在第一次登陸時,獲得系統發送的随機密碼到使用者的登陸郵箱,然後使用者才可以使用此郵件發送碼登陸系統——有點像網站上激活賬号的方式)
      • 3、使用者名,密碼,加密狗。
    • 通訊安全(我們這次項目中采用了配置Windows2003Server的HTTPS,以保證通訊方式,防止網絡監聽。)

系統開發總結:

  • 1、考慮全局修改的友善性,
    • 頁面設計:通過引入CSS檔案中樣式來控制頁面布局樣式,而不是去為每個頁面樣式去寫很多重複的HTML代碼。
    • 腳本設計:通過引入JS檔案中代碼來實作想要的功能。
    • 模闆設計:通過修改模闆檔案來統一整個風格以及引入公共的檔案。(如Vs2008的模闆頁)
  • 2、考虎多遊覽器的相容性。(WinForms開發人員一般很少會考慮這些,因為他們可能之前考慮較多是OS級别上,比如應用程式是否能夠在Windows9x,Windows2000/XP,Windows Vista下正常穩定的運作。)
  • 3、在資料修改或者錄入界面,不要認為鎖定了控件,使用者就不能夠操作了。(這是WinForms開發人員最容易犯的錯誤,有些駭客級别的使用者安全可以打破這一正常。)

比如某使用者隻擁有修改産品數量的權限,而且隻有檢視産品單價的權限(但不允許修改):

産品數量:_________________    産品單價:_____________________(此處輸入框被鎖定了,但是儲存的時候還是以所有的使用者輸入控件的内容儲存入到資料庫當中去的,在WinForms中這樣做可能不會産生什麼太大的問題,但是在WebFroms中這樣做,會讓你的資料全部亂掉的。)

  • 4、不要把使用者登陸資訊儲存Cookies中,這個甜餅别人也是可以吃,别人也是可以改動的。(這也是WinForms開發人員容易忽略的地方。)
  • 5、不要相信呈現給使用者端的腳本驗證,我們需要在背景WEB程式中也要加上相應的驗證。(HTML腳本代碼不允許輸入數字,但是,我們卻可以通過POST資料包來繞過此關,是以我們需要在背景WEB程式中再加入相關的驗證,以確定資料的合法性,正确性等)
  • 6、與其他程式的互動的資料,我們可以使用生成XML給其他程式調用的方式,(可能很多朋友會推薦我使用Web Service,沒錯,這是一個很好的辦法。)
  • 7、不要将一大堆的HTML模闆代碼與我們WEB應用程式捆綁在一起,我們應該使用讀取HTML模闆檔案,并通過相關内容替換模闆檔案的特征字串,來達到我們相要的效果。

比如發送使用者注冊成功模闆檔案SendMail.model.txt如下:

<html code...

親愛的<<UserName>>

您好!你的使用者名<UserID>已經申請通過,請速登陸系統進行檢視。<br>

UserID:<<UserID>><br>

PassWord:<<Password>><br>

      • <<SendDate>>
<html code...
  • 當我們需要對發送使用者注冊成功資訊的樣式做相應調整時,我們隻需要修改此模闆檔案,而不要動任何WEB程式代碼。
  • 8、永遠别相信使用者從Browser送給你的資料是合法的,正确的。

好了,我這名不合格的WebForms開發人員就将總結寫到這了,日後有什麼新的學習進展,再寫吧。

下面想罵的,想說的,隻管吼出來,我不會在意的,隻有你們的批評才能夠讓我進步更快速。

轉載于:https://www.cnblogs.com/HappyQQ/archive/2008/11/20/1337136.html