使用 Google 搜尋本站文章:
首頁 | CodeCharge 討論板 | 部落格 | ASP.NET 電子書 | 所有文章 | 相簿 | News | 網站導讀 | 聯絡 Allen | 訂閱 RSS
Microsoft MVP 
since 2004 
 

Blog 分類 :


新手上路須知...

By Allen Kuo, 建立日期:2009/03/11 16:10 ,最後修改日期:2009/03/12 10:26
有網友熱心地列出了他認為新手需要會的東西,我想在這裡做一點簡單的說明
    加入書籤: 收進你的MyShare個人書籤

原文請參考 : http://www.dotblogs.com.tw/hatelove/archive/2009/03/06/7401.aspx

由於就算是初學者也有程度的不同, 所以初學者看了這篇, 搞不好部份東西連它在講什麼都不明白, 所以我想在這裡做一點點說明, 希望對初學者能有所幫助, 清單有點長, 有些我也不懂, 所以我會日後再慢慢補充。

 

什麼是postback?

初學者應該對 HTML 有基礎的了解, HTML 裡,可以做表單, 一個網頁裡可以做 0~多個表單(<form...>...</form>), 不允許巢狀表單( <form> .... <form>..</form> ... </form> )。如果要將表單裡的資訊送出, 方法之一就是在表單裡放一個 <input type=submit...>的按鈕....其他剩下的知識, 就請初學者自行學習 HTML 了。 在 ASP.NET 裡, 如果您在表單拉入一個 Button 控制項, 它會自動 Render 成上述的 submit 按鈕, 按它就會送出表單, 而這個 submit 的行為, 在 ASP.NET 裡的措詞, 叫做 postback。

 

Viewstate與Session差異?

可以參考我以前寫的 《如何暫存資料

 

Server control與HTML control差異?

寫 web 無論是用 ASP, PHP, JSP, ASP.NET , .... 最後生成, 大多都會是一大坨的 HTML, 因此對 HTML 一定要有基本的認識, 而 Microsoft 在發展 ASP.NET 時, 為我們這群開發者準備了一些控制項, 以方便我們使用, 這些控制項會幫我們生成( Render ) 出 Browser 看得懂的 HTML。例如拉入一個TextBox, 稍後就可以 Render 成TextBox(能輸入一行文字的文字方塊) 或 TextArea(能輸入多行文字的文字方塊); 若拉入 DropDownList , 稍後可以 Render 成下拉清單; 若拉入 Calendar 控制項, 可以 Render 出一大坨 HTML, 呈現月曆。若使用 ASP.NET 開發, 學會如何操控 Server Control 就變得挺重要(也就是最好要學會啦)
http://www.microsoft.com/taiwan/msdn/columns/jhu_ming_jhong/ASPNET_Control_Architecture.htm 這篇文章裡有提到, ASP.NET 控制項有分三種:

  • ASP.NET 內建控制項(Built-in Control):由 Web Server 控制項與 HTML Server 控制項所組成,為 ASP.NET 提供的基本控制項服務,包含按鈕、核取方塊、選項按鈕、連結、文字方塊、驗證控制項(Validation Control)、Tree View、Menu、Multi-View、Grid-View 等等。
  • ASP.NET 使用者控制項(User Control):這是一個很簡單的複合型控制項(Composite Control),由 HTML 組成,可以把它當成小型的 ASP.NET 網頁,開發人員可以簡單的使用 HTML 組合發展,它可以被許多頁面重覆使用,但其適用的範圍只在 ASP.NET 網站專案本身而已,而且它無法自訂繪製控制項的能力。
  • ASP.NET 自訂控制項(Custom Control):這是一個具有可跨越專案,高度重覆使用性(Reusability)的控制項,它給程式開發人員更多可以揮灑的空間,並且有更多與 IDE 溝通的方法,以及幾近完全自訂的繪製能力(customized rendering),也因為這麼強的能力,讓開發自訂控制項變得複雜許多,也更花費開發人員的心力。

 一般的 ASP.NET 開發者, 應該需要學會 Server Control ,比較少用到 HTML Server Control; 至於 User Control,也務必要學會,它是很好用的東西, 最後 Custom Control, 由於難度稍高, 初學者倒不必急著就立刻學會。

 

 如何取得Web.config上appsetting區塊的值?

寫 ASP.NET, 一定多用都會用上 web.config 這個檔案, 就算您沒在裡面寫東西, 裡面也放了些重要的東西, 原則上整個 web.config 裡的值,您都可以寫程式取得, 但大多數的文章及書籍都只會介紹您如何存取 appsetting 這個區段。您可以將網站裡的一些可能會異動的參數放在這區段裡, 並在程式裡存取它, 至於如何存取, google一下,或看書就很容易找得到了。但由於網站上線後, 您可能會用到 Session 來記錄一些值, 而異動 web.config 又會造成這些 Session 不見, 因此您可以考慮在 appsetting 寫一些"通常上線後就一定不會變的東西", 例如資料庫的連線字串(應該沒有網站一天到晚改帳號密碼的), 如果你有一些參數是需要改變的, 不妨就將它們寫在別的 xml file 裡, 並在 appsetting 區段裡寫下這支 xml file 的檔案名稱, 而要讀取值時, 就先到 appsetting 裡找到檔名, 再去該檔案讀取值, 那麼 web.config 被異動的機會就會比較少了。

 

什麼是 try catch?

有時寫程式會遇到不可預期的錯誤, 例如您假設網址裡一定會傳入一個 id 值( default.aspx?id=99 ), 但使用者卻亂打( default.aspx?id=我是Allen ), 我通常是會去做檢查(防止使用者亂搞....), 您可以在網頁裡呈現"id 值必需為數字"等警語, 但有時錯誤是真的會發生, 例如您想連結到別人網站擷取 feed 內容, 但對方網站在某天卻斷線了, 因此您在 coding 時, 一定會需要擷取錯誤(而不是直接當掉),將它處理或呈現較易懂的訊息(例如xx 網站暫時無法連結, 請稍後再試), 其他較技術性的細節, 就請您自己去看 VB.NET  or  C# 的語法書,或 google 一下。

 

設定屬性(property)時,Get與Set的差異?

可以參考

http://www.allenkuo.com/EBook5/view.aspx?TreeNodeID=27&id=279

http://www.allenkuo.com/forum/viewthread.asp?mid=1910&

 

舉出所知道的Page events,依序排列

.NET 的類別, 會視需要而內建一些事件, 例如Button有Click , Command 事件, Page, User Control, 等也是類別, 它們也有提供不少事件, 對於常用的事件, 您最好盡快熟悉它們(包括發生的順序及時機), 以我個人為例, 以下是我較常用到的事件:
Page : Load(也是大家最常用的), Init(若要動態地加入控制項,最好寫在這裡), PreRender(算是比較少用到,偶爾會用到而已)
User Control 常用到的事件也跟 Page 差不多, 但您一開始或許會很在意 Page,UC裡的事件哪一個比較早發生, 例如二者的 Load 事件哪一個先發生, UC裡button click事件與Page 的Load 哪一個先,.....。但我目前已經很少去在意這件事了, 我也忘了為什麼變得不必去在意了, 如果您也覺得Page / UC事件先後對您是困擾, 請您告訴我狀況, 我來想想我是如何解決的。

動態建立控制項的相關文章》 ,《想動態建立控制項必讀的文章

http://www.allenkuo.com/forum/viewthread.asp?mid=2150&

http://www.allenkuo.com/forum/viewthread.asp?mid=1368&

 

什麼是DB的Index?什麼是transaction?如何使用?

在設計 Database 時, 若能針對實際需要來建立索引(index), 可以加快查詢的速度(也就是感覺上, 程式很快就取得資料啦), 這類知識, 可以去找找 SQL Server 的書(但不是每一本都會寫到)

交易(Transaction),最常被用來舉例的就是銀行轉帳, 當你想將A帳戶的100元轉到B帳戶時, 最正常的結果就是一邊少100, 一邊增加100。如果A帳戶扣掉100元後,立刻停電或電腦立刻當機, 導致B帳戶沒新增100元, 就會造成你的損失。因此 Transaction 的用意,就是在確保多筆資料異動時,能保證"一定全部完成,或全部取消", 以上一個轉帳的例子, 系統可能的運作方式是

  • 將"減100元"的動作先存到log, 另一部電腦也將"新增100元"的動作存入log
  • 當2部電腦都回應"我們都存入log了", 此時系統下指令"開始執行這個動作"
  • 接下來2部電腦就同時去做各自的動作, 並在完成時回報
  • 系統在接到2部都回報"已完成"時, 再下指令"確認這動作生效"
  • 最後完成

這中間如果停電,電腦開機後,可能會去讀log並試圖完成工作,而系統這邊如果收不到2部的完成回報(或收到其中一部的失敗回報), 則會下指令"請大家取消這個動作"

藉由上述的過程, 來達成"一定全部完成,或全部取消", 因此, 如果你的程式需要修改多個table裡的記錄,或修改多部database裡的記錄, 就可以考慮使用 Transaction, 來確保資料不會錯亂。


Copyright © AllenKuo.com , 2000 - 2010