.net教學筆記整理 [概念篇]

最近老闆要我幫忙把新(新?)技術帶進公司, 以乎合未來的發展, 先用.net為試點.
第一次授課難免有點小緊張, 所以每天先把筆記先弄一弄,
覺得有用歡迎轉載(記得註明出處喔), 為資訊業盡點綿力 XD.


[以下資料整理以公司環境為出發, 有些觀念可能會先被忽略.]


什麼是.NET框架?


.NET版本


  • 到2012年4月底共推出1.0, 1.1, 2.0, 3.0, 3.5, 4.0 共6個版本. 每一個新的 .NET Framework 版本都會保留舊版的功能並增加新的功能。
    .NET Framework 版本CLR 版本Visual Studio 版本描述
    1.0
    1.0
    VS.NET
    包含第一個版本的 CLR 以及第一個版本的基底類別庫。
    1.1
    1.1
    VS.NET 2003
    包含 ASP.NET 和 ADO.NET 的更新。 這個版本之後隨著 Service Pack 1 (SP1) 和 SP2 更新了兩次。 這個版本也引入了並存執行,此功能可讓單一電腦上的應用程式針對多個 CLR 版本執行。
    2.0
    2.0
    VS 2005
    隨著基底類別庫的新增引入了新的 CLR 版本,包括 ASP.NET 的泛型、泛型集合和重大新增。 這個版本之後已隨著 SP1 和 SP2 更新。
    3.0
    2.0
    VS 2005
    這個版本基本上是 .NET Framework 2.0 並加入 Windows Presentation Foundation (WPF)、Windows Communications Foundation (WCF)、Windows Workflow Foundation (WF) 和 CardSpace。 這個版本之後已隨著 SP1 和 SP2 更新。
    3.5
    2.0
    VS 2008
    已增加新的功能,例如具有 AJAX 功能的網站和 LINQ。 SP1 更新加入了 .NET Framework Client Profile、Dynamic Data 及一小組額外的增強功能。
    4
    4
    VS 2010
    包含新版的 CLR、擴充的基底類別庫和新的功能,例如 Managed Extensibility Framework (MEF)、Dynamic Language Runtime (DLR) 和程式碼合約。
  • 除了1.1, 4.0以外, 2.0, 3.0, 3.5是向下相容的.
    .NET Framework 版本的元件和各個層


ASP.NET vs WinForm
  • ASP.NET是內含於.NET Framework中,專門用來發展Web應用程式的一組類別庫集。
  • ASP.NET可以運行在安裝了.NET Framework的IIS伺服器上.
  • ASP.NET基本運作架構如下T01
  • Winform具高互動, 高反應, 執行迅速, 呈現快速的優點.
  • ASP.NET 跟 Winform 同樣是 event-driven application(事件驅動架構).


.NET中的事件程序
  • 事件驅動架構概念
    • 這種模型的程式執行流程是由使用者的動作(如滑鼠的按鍵,鍵盤的按鍵動作)或者是由其他程式的訊息來決定的。
    • 事件驅動程式模型下的系統,基本上的架構是預先設計一個事件迴圈所形成的程序,這個事件迴圈程序不斷地檢查目前要處理的資訊,根據要處理的資訊執行一個觸發函式進行必要的處理。其中這個外部資訊可能來自一個目錄夾中的檔案,可能來自鍵盤或滑鼠的動作,或者是一個時間事件。
    • 每樣物件皆有自己的事件順序。
  • 好處
    • 可以很方便地確定程序執行順序。
    •  當事件驅動程序等待事件時,它不占用很多資源。事件驅動程序與過程式程序最大的不同就在於,程序不再不停地檢查輸入設備,而是呆著不動,等待消息的到來,每個輸入的消息會被排進隊列,等待程序處理它。如果沒有消息在等待,則程序會把控制交回給操作系統,以運行其他程序。
    •  事件簡化了編程。操作系統只是簡單地將消息傳送給對象,由對象的事件驅動程序確定事件的處理方法。操作系統不必知道程序的內部工作機制,只是需要知道如何與對象進行對話,也就是如何傳遞消息。
  • 事件順序例子
    • ASP.NET
      PreInit 事件: 執行預先初始化的工作,在ASP.NET 2.0中,若要動態調整主版頁面 (Master Page)、佈景主題 (Theme) 時,要在這個事件中調整。
      Init 事件: 執行初始化工作。
      InitCompleted 事件: 在完成初始化工作後引發。
      Preload 事件: 執行預先載入的工作。
      Load 事件: 執行載入的工作,大多數的網頁都擁有 Page_Load 事件處理常式,使用者控制項 (user control) 中也有 Page_Load 事件常式,都會在此時呼叫。
      控制項的 PostBack 變更通知: 當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息通知的事件。
      控制項的 PostBack 相關事件: 當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息指定的控制項的事件。
      LoadCompleted 事件: 執行載入完成後的工作。
      PreRender 事件: 處理在產生 HTML 結果前的工作。
      SaveStateCompleted 事件: 處理頁面狀態(ViewState 與 ControlState)儲存完成後的事件。
      Render 事件: 處理產生 HTML 的工作。
      Unload 事件: 處理結束網頁處理時的工作。

    • Winform
      當Windows Form 應用程式啟動時,
      會以下列順序引發主要表單的啟動事件:

          * Control.HandleCreated
          * Control.BindingContextChanged
          * Form.Load
          * Control.VisibleChanged
          * Form.Activated
          * Form.Shown
      當應用程式關閉時,會以下列順序引發主要表單的關閉事件:
          * Form.Closing
          * Form.FormClosing
          * Form.Closed
          * Form.FormClosed
          * Form.Deactivate
參考文獻:
1. http://zh.wikipedia.org/zh-hant/.NET%E6%A1%86%E6%9E%B6 .NET Framework wiki 中文版
2. http://en.wikipedia.org/wiki/.NET_Framework .NET Framework wiki 英文版
3. http://www.dotblogs.com.tw/topcat/archive/2009/09/11/10577.aspx 淺談多層式架構
4. http://www.dotblogs.com.tw/jimmyyu/archive/2009/10/23/11256.aspx Webform Winform的選擇.
5. http://f402259699.blog.hexun.com.tw/54088233_d.html C#事件(event)解析
6. http://www.dotblogs.com.tw/atowngit/archive/2009/08/23/10199.aspx Window Form 事件順序

Popular posts from this blog

[SQL SERVER] 找出LOCK方法懶人包

[SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗

[Windows7] 跨距磁碟區, 等量磁碟區, 鏡像磁碟區之區別